> But some of the transformations that radcan does won't preserve what you
> want. ?In particular sqrt(x^2) -> x, which is not right if x is
According to http://maxima.sourceforge.net/docs/manual/en/maxima_7.html,
this is only true if you assume x>0. Hmm... but, with CVS from last
week:
(%i10) radexpand:false;
(%o10) false
(%i12) radcan(sqrt(x^2));
(%o12) x
(%i13) radexpand:true;
(%o13) true
(%i14) radcan(sqrt(x^2));
(%o14) abs(x)
(%i15) radexpand:all;
(%o15) all
(%i16) radcan(sqrt(x^2));
(%o16) x
This is counter the documentation. See the previous discussion of
this at http://www.math.utexas.edu/pipermail/maxima/2008/011754.html
However, at least this clarifies why radcan behaves as it does, since
it is looking at limits. How does radcan choose which square root of
-1 to use, based on the limits (this is for anyone who knows)? It is
consistent that
(%i36) radcan(sqrt(25-x)/sqrt(x-25));
(%o36) %i
(%i37) radcan(sqrt(x-25)/sqrt(25-x));
(%o37) - %i
but how does radcan choose which one is which?