"Testing simplify"

clear

check(infixform(simplify(2 a / (2 b + 2 c))) == "a / (b + c)")
check(infixform(simplify(4 a / (2 b + 2 c))) == "2 a / (b + c)")
check(infixform(simplify(2 a / (4 b + 4 c))) == "a / (2 b + 2 c)")

-- ratio of expressions
check(infixform(simplify((a x + a) / (x + 1))) == "a")

-- continued fraction
check(infixform(simplify(1 / (1 + 1 / x))) == "x / (x + 1)")

-- another continued fraction
check(infixform(simplify(1 / (x + y^2 / x))) == "x / (x^2 + y^2)")

-- mixed forms of complex numbers
check(exp(i pi / 4) == (1 + i) / sqrt(2))

check(infixform(simplify(sqrt(1 + x^2 / (1 - x^2)))) == "1 / (-x^2 + 1)^(1/2)")

T = simplify((A^2 C^2 + A^2 D^2 + B^2 C^2 + B^2 D^2)/(A^2+B^2)/(C^2+D^2))
check(T = 1)

T = simplify(-3*x*A/(A-B) + 3*x*B/(A-B))
check(infixform(T)="-3 x")

T = simplify(-y/(x^2*(y^2/x^2+1)))
check(infixform(T) = "-y / (x^2 + y^2)")

T = simplify(1/(x*(y^2/x^2+1)))
check(infixform(T) = "x / (x^2 + y^2)")

T = simplify(tan(x) - sin(x)/cos(x))
check(infixform(T) = "0")

T = simplify(sin(x)^2 + cos(x)^2)
check(infixform(T) = "1")

T = simplify(sinh(x)^2 - cosh(x)^2)
check(infixform(T) = "-1")

T = simplify(((sin(x)^2 + cos(x)^2,0),(0,sin(x))))
check(T = ((1,0),(0,sin(x))))

T = simplify(2 * M / (-2 * M * r^2 + r^3) + r^(-2) - 1 / (-2 * M * r + r^2))
check(T = 0)

T = rationalize(2 * M / (-2 * M * r^2 + r^3) + r^(-2) - 1 / (-2 * M * r + r^2) + 1)
check(T = (4 * M^2 * r^3 - 4 * M * r^4 + r^5) / ((-2 * M * r + r^2) * (-2 * M * r^2 + r^3)))
T = simplify(T)
check(T = 1)

T = -3 exp(-1/3 r + i phi) cos(theta) / sin(theta) + 3 exp(-1/3 r + i phi) cos(theta) sin(theta) + 3 exp(-1/3 r + i phi) cos(theta)^3 / sin(theta)
check(T == 0)
check(simplify(sqrt(1 + x^2 / (1 - x^2))) == 1 / sqrt(1 - x^2))

-- simplify tensors

A = ((A11,A12),(A21,A22))
T = simplify(dot(A,inv(A)))
check(T=unit(2))

A = ((A11,A12,A13),(A21,A22,A23),(A31,A32,A33))
T = simplify(dot(A,inv(A)))
check(T=unit(3))

A = ((A11,A12,A13,A14),(A21,A22,A23,A24),(A31,A32,A33,A34),(A41,A42,A43,A44))
T = simplify(dot(A,inv(A)))
check(T=unit(4))

clear
T = 2 m / hbar^2 abs(E - V)
T1 = (+sqrt(+T))^(-1/2)
T2 = (+sqrt(-T))^(-1/2)
T3 = (-sqrt(+T))^(-1/2)
T4 = (-sqrt(-T))^(-1/2)
check(T1 == T^(-1/4))
check(T2 == exp(-1/4 i pi) T^(-1/4))
check(T3 == exp(-1/2 i pi) T^(-1/4))
check(T4 == exp(-3/4 i pi) T^(-1/4))

check(infixform(simplify(c / (a c + b c))) == "1 / (a + b)") -- version 3.24

clear
T = exp(-x^2 + i omega + 1/4 i pi) / (sqrt(sqrt(-1)) pi)
T = simplify(T)
check(infixform(T) == "exp(-x^2 + i omega) / pi")

clear
A = -i m omega exp(i omega T) / (2 hbar sin(omega T))
B = -i m omega xb / (hbar sin(omega T))
C = i m omega xb^2 cos(omega T) / (2 hbar sin(omega T))
D = -m^(5/4) omega^(5/4) / ((-1)^(1/4) hbar^(5/4) pi^(3/4) *
     sin(omega T)^(1/2))
I = 1/2 sqrt(pi) D B A^(-3/2) exp(B^2 / (4 A) + C)
I = simplify(I)
check(infixform(I) == "2^(1/2) m^(3/4) omega^(3/4) xb exp(-m omega xb^2 / (2 hbar) - 3/2 i T omega) / (hbar^(3/4) pi^(1/4))")

clear
x = theta - sin(theta)
z = 1 - cos(theta)
a = d(x,theta)^2 + d(z,theta)^2
f = simplify(sqrt(a / (2 g z)))
check(infixform(f) == "1 / g^(1/2)")

clear
T = hbar^2 kappa x^2 f(x,y,z) / (m (x^2 + y^2 + z^2)^(3/2)) + hbar^2 kappa y^2 f(x,y,z) / (m (x^2 + y^2 + z^2)^(3/2)) + hbar^2 kappa z^2 f(x,y,z) / (m (x^2 + y^2 + z^2)^(3/2)) - hbar^2 kappa f(x,y,z) / (m (x^2 + y^2 + z^2)^(1/2)) + kappa^2 x^2 f(x,y,z) / (x^2 + y^2 + z^2) + kappa^2 y^2 f(x,y,z) / (x^2 + y^2 + z^2) + kappa^2 z^2 f(x,y,z) / (x^2 + y^2 + z^2) - kappa^2 f(x,y,z)
T = simplify(T)
check(infixform(T) == "0")

-- T = kappa^2 m x^2 (x^2 + y^2 + z^2)^(1/2) f(x,y,z) + kappa^2 m y^2 (x^2 + y^2 + z^2)^(1/2) f(x,y,z) + kappa^2 m z^2 (x^2 + y^2 + z^2)^(1/2) f(x,y,z) - kappa^2 m (x^2 + y^2 + z^2)^(3/2) f(x,y,z)
-- T^2 simplifies to 0

clear
check(infixform(simplify((i - z) / (i + z))) == "exp(-i arctan(1,z) + i arctan(1,-z))")
