algebrite
Version:
Computer Algebra System in Coffeescript
103 lines (74 loc) • 1.5 kB
text/coffeescript
test_arg = ->
run_test [
# wrong
#"arg(-1)",
#"-pi",
"arg(pi)",
"0",
"arg(1+i)",
"1/4*pi",
"arg(1-i)",
"-1/4*pi",
"arg(-1+i)",
"3/4*pi",
"arg(-1-i)",
"-3/4*pi",
"arg((-1)^(1/3))",
"1/3*pi",
"arg(1+exp(i*pi/3))",
"1/6*pi",
"arg((-1)^(1/6)*exp(i*pi/6))",
"1/3*pi",
# check when not assuming real variables ----------
"assumeRealVariables = 0",
"",
"arg(a)",
"arg(a)",
# TODO this is wrong
#"arg(a*exp(b+i*pi/5))",
#"1/5*pi",
# this is wrong
#"arg(-1)",
#"-pi",
# this is also highly debatable
# take the example
# a = -1-i
# then arg(a) - arg(-a) should give pi
# but arg(1+i) - arg(-1-i) gives -pi instead
# "arg(-a)",
# "-pi+arg(a)",
"assumeRealVariables = 1",
"",
# --------------------------------------------------
# TODO this is wrong.
#"arg(a*exp(b+i*pi/5))",
#"1/5*pi",
# referencing the test above, if
# a is positive:
"arg(abs(a)*exp(b+i*pi/5))",
"1/5*pi",
# otherwise, if negative, we get:
"arg((-8)*exp(b+i*pi/5))",
"-4/5*pi",
# if a is positive, zero
# if a is negative, -pi, so
# we can't say much
"arg(a)",
"arg(a)",
# this is also wrong, this should
# be either zero or pi
#"arg(-a)",
#"-pi+arg(a)",
"arg(-(-1)^(1/3))",
"-2/3*pi",
"arg(-exp(i*pi/3))",
"-2/3*pi",
"arg(-i)",
"-1/2*pi",
"arg((a+b*i)/(c+d*i))",
"arctan(b/a)-arctan(d/c)",
"arg(((-1)^(1/2) / (3^(1/2)))^(1/2))",
"1/4*pi",
"arg((-1)^(1/6))",
"1/6*pi",
]