"Testing simple powers"

clear

check(prefixform(0 ^ 0) == "1")
check(prefixform(0 ^ 0.0) == "1")
check(prefixform(0.0 ^ 0) == "1")
check(prefixform(0.0 ^ 0.0) == "1")

check(prefixform(0 ^ 1) == "0")
check(prefixform(0 ^ 1.0) == "0")
check(prefixform(0.0 ^ 1) == "0")
check(prefixform(0.0 ^ 1.0) == "0")

check(prefixform(0 ^ 2) == "0")
check(prefixform(0 ^ 2.0) == "0")
check(prefixform(0.0 ^ 2) == "0")
check(prefixform(0.0 ^ 2.0) == "0")

check(prefixform(1 ^ 0) == "1")
check(prefixform(1 ^ 0.0) == "1")
check(prefixform(1.0 ^ 0) == "1")
check(prefixform(1.0 ^ 0.0) == "1")

check(prefixform(1 ^ 1) == "1")
check(prefixform(1 ^ 1.0) == "1")
check(prefixform(1.0 ^ 1) == "1")
check(prefixform(1.0 ^ 1.0) == "1")

check(prefixform(1 ^ 2) == "1")
check(prefixform(1 ^ 2.0) == "1")
check(prefixform(1.0 ^ 2) == "1")
check(prefixform(1.0 ^ 2.0) == "1")

check(prefixform(2 ^ 0) == "1")
check(prefixform(2 ^ 0.0) == "1")
check(prefixform(2.0 ^ 0) == "1")
check(prefixform(2.0 ^ 0.0) == "1")

check(prefixform(2 ^ 1) == "2")
check(prefixform(2 ^ 1.0) == "2")
check(prefixform(2.0 ^ 1) == "2.0")
check(prefixform(2.0 ^ 1.0) == "2.0")

check(prefixform(2 ^ 2) == "4")
check(prefixform(2 ^ 2.0) == "4.0")
check(prefixform(2.0 ^ 2) == "4.0")
check(prefixform(2.0 ^ 2.0) == "4.0")

check(prefixform(x ^ 0) == "1")
check(prefixform(x ^ 0.0) == "1")

check(prefixform(0 ^ x) == "(^ 0 x)")
check(prefixform(0.0 ^ x) == "(^ 0.0 x)")

check(prefixform(1 ^ x) == "1")
check(prefixform(1.0 ^ x) == "1")

check(prefixform(x ^ 1) == "x")
check(prefixform(x ^ 1.0) == "x")

check((-1)^(1/9) == -1)
check((-1)^(2/9) == 1)
check((-1)^(3/9) == -1)
check((-1)^(4/9) == 1)
check((-1)^(5/9) == -1)
check((-1)^(6/9) == 1)
check((-1)^(7/9) == -1)
check((-1)^(8/9) == 1)

A = ((1,2),(3,4))
check(1/A == ((1,1/2),(1/3,1/4)))
check(A^(-1) == ((1,1/2),(1/3,1/4)))

check(infixform(1 / ((a + b) (c + d))^2) == "1 / ((a + b)^2 (c + d)^2)")

check(prefixform((-2)^(3/2)) == "(* -2 (^ 2 1/2) (^ -1 1/2))") -- bug fix
check(prefixform((-2)^(7/2)) == "(* -8 (^ 2 1/2) (^ -1 1/2))") -- bug fix
N = 46349 46349
check(sqrt(N) == 46349) -- bug fix
