changevar gives imaginary unit



Robert Marik wrote:
> Hello all
> 
> the command
> 
> changevar('integrate(sqrt(9-x^2),x),x = 3*sin(t),t,x)
> 
> 
> gives imaginary unit. Is it what we want?
> rootscontract solves this problem but ....

I don't have a solution, but I think the issue is caused by a call to 
radcan within changevar.  You can see this if you trace(radcan).

Setting radexpand:false doesn't affect this, even though the 
documentation for radexpand seems to imply that sqrt(9-9*sin(t)^2) 
shouldn't be changed to %i*sqrt(3*sin(t)-3)*sqrt(3+3*sin(t)).

There also seems to be an inconsistency.  radcan(sqrt(1-x^2)) is 
sqrt(1-x)*sqrt(1+x).  But radcan(sqrt(4-4*x^2)) is 
2*%i*sqrt(x-1)*sqrt(x+1).  And this happens even if radexpand : false.


Ray