If radcan() can change the sign of the answer with no notice that would
confuse a lot of people, and it is not a simpler answer. The original
expressions (both of them) are positive when you plot from zero to 1 or 10
or 100, the radcan'ed expression is negative when you plot from zero to 1,
or 10 or 100. Most people, like me, who think that radcan() is another kind
of simplify command will be confused by this. They may have a hard time
figuring out why the answer has a different sign. You say it is okay to
change the sign when you radcan(). At the very least there should be a
warning about this in the help. Something that says that radcan may do more
than simplify because it might change the sign if it wants to. Some notice
of when this sign change may occur should be in the help too.
You can argue that there is no sign change problem because the answer is
correct if you consider that 1/sqrt(x) could mean the negative root of x,
but other Maxima functions like integrate, plot and draw do not choose that
answer. All maxima commands should respect a common sign convention for
sqrt().
Rich
From: Richard Fateman
Sent: Friday, November 12, 2010 10:23 AM
To: Richard Hennessy ; Maxima - list
Subject: Re: [Maxima] caps complex tests
On 11/12/2010 6:19 AM, Richard Hennessy wrote: Is this a related bug?
radcan(sqrt((x^2-2*x+1)/x));
(x - 1)/sqrt(x)
radcan(sqrt(x-2+1/x));
(x - 1)/sqrt(x)
both answers are below the x axis from zero to 1. So integrate gives -4/3.
shouldn't there be a minus sign in front?
No.
Radcan uses what it calls a Positive Real Interpretation on the radicand.
As x-> positive (real) inf,
the 3 expressions are equivalent, and that is what radcan simplifies them
to.
The Macsyma documentation has this ...
%E_TO_NUMLOG default: FALSE
When set to TRUE, for "r" some rational number, and "x" some
expression, %E^(r*LOG(x)) will be simplified into x^r .
Caveat: RADCAN makes assumptions which can cause problems with
branches. So it needs to be used with care.
E.g. When LOGEXPAND is ALL, RADCAN((a^b)^c); gives a^(b*c)
which is not valid when a=-1,b=2,c=1/2 .
RADCAN((a*b)^c); gives a^c*b^c which is not valid when
a=-1,b=-1,c=1/2 .
RADCAN(log((c-b)^2)); gives 2*log(c-b) which is not
valid when b=2,c=1 .
RADCAN(sqrt(1/x)); gives 1/sqrt(x) which is not valid
when x=-1 .
.........
more info in in my thesis, online at
http://portal.acm.org/citation.cfm?id=888687
or
Simplification of radical expressions
Authors: B. F. Caviness
R. J. Fateman
Published in: ? Proceeding SYMSAC '76 Proceedings of the third ACM
symposium on Symbolic and algebraic computation