# sqrt function not working properly This post is a wiki. Anyone with karma >750 is welcome to improve it.

I have the following code where I want to substitute a, b, c into s. Since s factors as a square, I want to get the square root of it :

p, t= var('p t')
a=(-2*p*t^2-p^2*t)+(2*t*p-p^2)+t+1
b=(p*t^2+2*p^2*t)+(2*t*p-t^2)-p+1
c=(p*t^2-p^2*t)+(t^2+2*t*p+p^2)+t-p  #3 sides (a,b,c) in terms of theta and phi [equation (1.1)]
s=(factor(2*c^2+2*a^2-b^2));s
S=s.sqrt();S


Unfortunately the answer I get is

sqrt((3*p*t^2 - 2*p^2 - 2*p*t + t^2 + p + 2*t + 1)^2)


The sqrt and the square power does not cancel off which I want it to cancel. I tried using the code S.simplify_full() to simplify it hoping the sqrt and square power will cancel off but no luck. Is there any other specific code I can use for that.

edit retag close merge delete

Sort by » oldest newest most voted

The square root of a square is not the same as the number. (There is controversy over whether it is the absolute value of the number, or either plus or minus the number. Don't ask.)

But if you want to make it do that, use this:

sage: S.canonicalize_radical()
(3*p + 1)*t^2 - 2*p^2 - 2*(p - 1)*t + p + 1


which even does some factoring for you as a bonus.

more

1