[Fact] public void ArcSecCosec() => TestSimplify(@"\arccos\left(\frac{1}{\arcsin\left(\frac{1}{x}\right)}\right)", MathS.Arcsec(MathS.Arccosec(x)));
[Fact] public void Limit4() => Test(@"\lim_{xf\to 1+x} \left[\frac{1}{x}\right]", MathS.Limit("1/x", "xf", "1+x"));
[Fact] public void Signum() => Test(@"\operatorname{sgn}\left(x\right)", MathS.Signum(x));
[Fact] public void Integral4() => Test(@"\int \left[\frac{1}{x}\right] d\left[xf\right]", MathS.Integral("1/x", "xf"));
[Fact] public void Limit3() => Test(@"\lim_{x\to \infty } \left[x+y\right]", MathS.Limit("x + y", x, Real.PositiveInfinity));
[Fact] public void Derivative4() => Test(@"\frac{d\left[\frac{1}{x}\right]}{d\left[xf\right]}", MathS.Derivative("1/x", "xf"));
[Fact] public void Integral2() => Test(@"\int \int \left[x+1\right] dx dx", MathS.Integral("x + 1", x, 2));
[Fact] public void Factorial23() => Test(@"23!", MathS.Factorial(23));
[Fact] public void FactorialM23() => Test(@"\left(-23\right)!", MathS.Factorial(-23));
[Fact] public void Log() => Test(@"\log_{2}\left(10\right)", MathS.Log(2, 10));
[Fact] public void Factorial1() => Test(@"1!", MathS.Factorial(1));
[Fact] public void LnAlternate() => Test(@"\ln\left(10\right)", MathS.Log(MathS.e, 10));
[Fact] public void Ln() => Test(@"\ln\left(10\right)", MathS.Ln(10));
[Fact] public void Log10() => Test(@"\log\left(10\right)", MathS.Log(10, 10));
[Fact] public void Derivative2() => Test(@"\frac{d\left[x+y\right]}{d\left[quack\right]}", MathS.Derivative("x + y", "quack"));
[Fact] public void FactorialI() => Test(@"i!", MathS.Factorial(MathS.i));
[Fact] public void Derivative3() => Test(@"\frac{d^{3}\left[x+1\right]}{dx^{3}}", MathS.Derivative("x + 1", x, 3));
[Fact] public void Factorial1MI() => Test(@"\left(1 - i\right)!", MathS.Factorial(1 - MathS.i));
[Fact] public void Derivative5() => Test(@"\frac{d\left[{x}^{23}-x_{16}\right]}{d\left[xf\right]}", MathS.Derivative("x^23-x_16", "xf"));
[Fact] public void Factorial1PI() => Test(@"\left(1 + i\right)!", MathS.Factorial(1 + MathS.i));
[Fact] public void Integral3() => Test(@"\int \left[x+1\right] d\left[xf\right]", MathS.Integral("x + 1", "xf"));
[Fact] public void FactorialX() => Test(@"x!", MathS.Factorial(x));
[Fact] public void Integral5() => Test(@"\int \left[{x}^{23}-x_{16}\right] d\left[xf\right]", MathS.Integral("x^23-x_16", "xf"));
[Fact] public void FactorialSinX() => Test(@"\sin\left(x\right)!", MathS.Factorial(MathS.Sin(x)));
[Fact] public void I() => TestSimplify("i", MathS.Sqrt(-1));
// x!! is the double factorial, (x!)! is factorial appplied twice which is different [Fact] public void FactorialFactorialX() => Test(@"\left(x!\right)!", MathS.Factorial(MathS.Factorial(x)));
[Fact] public void Limit5() => Test(@"\lim_{xf\to {x_{2}}^{3}} \left[{x}^{23}-x_{16}\right]", MathS.Limit("x^23-x_16", "xf", "x_2^3"));
[Fact] public void Derivative1() => Test(@"\frac{d\left[x+1\right]}{dx}", MathS.Derivative("x + 1", x));
[Fact] public void Abs() => Test(@"\left|x\right|", MathS.Abs(x));
[Fact] public void ArcTrig() => TestSimplify(@"\arcsin\left(\arccos\left(\arctan\left(\arccot\left(x\right)\right)\right)\right)", MathS.Arcsin(MathS.Arccos(MathS.Arctan(MathS.Arccotan(x)))));