caps complex tests



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