Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I think this is because (-1)^(1/3) is not considered to be real.

sage: solve(x^3+1==0,x)
[x == 1/2*I*(-1)^(1/3)*sqrt(3) - 1/2*(-1)^(1/3), x == -1/2*I*(-1)^(1/3)*sqrt(3) - 1/2*(-1)^(1/3), x == (-1)^(1/3)]
sage: assume(x,'real')
sage: solve(x^3+1==0,x)
[]

Note that Maxima (which does our solving) doesn't actually care about x being real, since it's a dummy variable.

(%i1) declare(x,real);
(%o1)                                done
(%i2) solve(x^3+1=0,x);
                     sqrt(3) %i - 1      sqrt(3) %i + 1
(%o2)         [x = - --------------, x = --------------, x = - 1]
                           2                   2

But when it's returned to Sage, somehow it doesn't keeps the x=-1 syntax and gets the cube root again, and it falls prey to

sage: (-1)^(1/3).n()
0.500000000000000 + 0.866025403784439*I