# Conjugate multiplication of square root

Is there a simple way to simplify a formula using conjugate multiplication of the square roots? For example, when I perform

var('a,b,d')
exp = 1/(a+b*sqrt(d))
exp.full_simplify()


I would like to get

(b*sqrt(d) - a)/(b^2*d - a^2)


but what I actually get is just the form that I started with. Even if I specify the assumptions

assume(d,'real')
assume(d>0)


the conjugate multiplication does not happen automatically. I would like to be able to tell Sage, that I want the conjugate multiplication. In some cases that are relevant to me, the conjugate multiplication would simplify my expressions significantly.

edit retag close merge delete

Sort by » oldest newest most voted

Well...

sage: var("a,b,d")
(a, b, d)
sage: E=1/(a-b*sqrt(d));E
-1/(b*sqrt(d) - a)
def cm(x):
W=[SR.wild(u) for u in range(2)]
def cm1(x):
W=[SR.wild(u) for u in range(4)]
return x.subs(W/(W+W*sqrt(W))==\
(W*(W-W*sqrt(W)))/(W^2-W^2*W))
return x.subs(W+W==W+cm1(W))


This should do the job.

sage: cm(E)
-1/(b*sqrt(d) - a)


But be aware that recursing in subexpressions isn't especially Sage's forte.

more