algebrite
Version:
Computer Algebra System in Coffeescript
71 lines (46 loc) • 1.02 kB
text/coffeescript
test_expand = ->
run_test [
# general cases
"expand(1/(x+1)/(x+2))",
"1/(x+1)-1/(x+2)",
"expand((2x^3-x+2)/(x^2-2x+1))",
"4+2*x+5/(x-1)+3/(x^2-2*x+1)",
"expand(1/x^2/(x-1))",
"-1/(x^2)-1/x+1/(x-1)",
"p=5s+2",
"",
"q=(s+1)(s+2)^2",
"",
"expand(p/q)",
"-3/(s+1)+3/(s+2)+8/(s^2+4*s+4)",
# ensure denominators are expanded (result seems preferable that way)
"q=(x-1)(x-2)^3",
"",
"expand(1/q)",
"1/(x^3-6*x^2+12*x-8)+1/(x-2)-1/(x-1)-1/(x^2-4*x+4)",
# fractional poles
"expand(1/(x+1/2)/(x+1/3))",
"-12/(2*x+1)+18/(3*x+1)",
# expand tensor
"f=1/(x+1)/(x+2)",
"",
"g=1/(x+1)-1/(x+2)",
"",
"expand(((f,f),(f,f)))-((g,g),(g,g))",
"((0,0),(0,0))",
# denominator normalized?
"expand(1/(1+1/x))",
"1-1/(x+1)",
# poles at zero
"expand(1/x/(x+1))",
"1/x-1/(x+1)",
"expand(1/x^2/(x+1))",
"x^(-2)-1/x+1/(x+1)",
# other corner cases
"expand(1/x)",
"1/x",
"expand(1/x^2)",
"x^(-2)",
"expand(1/(x^2-4x+4))",
"1/(x^2-4*x+4)",
]