Bill Allombert on Thu, 10 Oct 2013 20:45:23 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Degree extension


On Thu, Oct 10, 2013 at 05:57:06PM +0200, paladino@mat.unical.it wrote:
> Dear All,
> 
> I am Laura, a new member of the list of the
> users of PARI.

Welcome!

> I have a question. I have the roots of
> some polynomials of the form y^2=x^3+Ax+B.
> For example p:=y^2=x^3+2*x+5.
> I call a, b and c the roots of p.
> I would like to calculate the degree
> of the number field
> 
> Q(sqrt(a-b),sqrt(a-c),sqrt(b-c),sqrt(-1)).
> 
> Is it possible with PARI?

Yes, this is possible 
Let P=x^3+A*x+B be your polynomial
and K=Q(sqrt(a-b),sqrt(a-c),sqrt(b-c),sqrt(-1))

1) Build the Galois closure of P as follow:
S=polcompositum(P,P)[2];
  (This depends on the Galois group of P, but this will work in both case)

2) Compute the roots of P in the field Q[X]/P:
N=nfroots(subst(S,x,'alpha),P);
  Now the roots are given by a=N[1], b=N[2], c=N[3]
  in term of a root alpha of S.

3) Compute the minimal polynomial of a-b as follow
Mab=minpoly(N[1]-N[2]);
  By Galois theory, it has the same degree as S.

4) The minimal polynomial of sqrt(a-b) is a factor of Mab(x^2)
Msab=factor(subst(Mab,x,x^2))[1,1]

5) Build the tensor product Q[x]/Msab \otimes Q(sqrt(-1))
MsabI = polcompositum(Msab,x^2+1)[1]

6) Factor Msab over L=Q[X]/MsabI:
R=nffactor(subst(MsabI,x,'beta),Msab);
  This will be given in term of a root beta of MsabI.

7.1) If Msab split in linear factor, then K=L and the degree
is poldegree(MsabI). This can be checked with
poldegree(Msab)==#R[,1]

7.2) otherwise, we have to go one step higher. Set 
MsabcI=rnfequation(subst(MsabI,x,'beta),R[3,1]);

In that case K=Q[X]/MsabcI and the degree is poldegree(MsabcI)

Cheers,
Bill.