Igor Schein on Fri, 17 Jun 2005 18:47:15 +0200


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

Re: Galois test


On Fri, Jun 17, 2005 at 06:31:58PM +0200, Karim Belabas wrote:
> * Igor Schein [2005-06-17 17:47]:
> > On Fri, Jun 17, 2005 at 03:38:56PM +0200, Karim Belabas wrote:
> >> * Ariel Pacetti [2005-06-17 13:56]:
> >>> Is there a routine for checking wether a number field extension is Galois?
> >>> I couldn´t find one, but probably there is some "naive" way to do that
> >>> like:
> >>>
> >>> nffactor(nfinit(P),P)
> >>>
> >>> and check wether all the factors have degree one or not. Is there a better
> >>> (or faster) way? (like no using nfinit which takes too long if the
> >>> polynomial is big enough).
> >>
> >> There's no built-in routine.  You may
> >>
> >> -- check factorisation pattern mod a few primes first, which quickly
> >>    weeds out (most) non-Galois fields.
> >>
> >> -- use nfroots instead of nffactor (smaller bounds used).
> >>
> >> -- possibly use factornf when you want to skip the 'nfinit' part.
> >>
> >> -- still use nfinit _but_ read
> >>
> >>      http://www.math.u-psud.fr/~belabas/pari/doc/faq.html#nfpartialfact
> >>
> >>    first. In particular the following hack is often helpful:
> >>
> >>         nfinitpartial(P) = nfinit( [P, nfbasis(P,1)] )
> >
> > I am using the following function:
> >
> > isgalois(pol, gal) = if(polisirreducible(pol),if(!gal,gal=nfgaloisconj(pol,4));if(#Set(gal)==poldegree(pol),return(1)));return(0)
> 
> 1) This returns the wrong answer if the Galois group is not weakly super
> solvable (it's OK in degree < 36, then...).

True, but it'll give a warning, which is a good safeguard.  The speed
advantage for large polynomials is enormous though.


> 
> 2) Why do you need #Set(gal) instead of #gal ?

If only unique automorphisms are returned, then clearly it's not
needed.  Maybe I was in doubt about it back when I started using it. 

Igor