Bill Allombert on Wed, 31 Jul 2019 11:06:53 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: nfgaloisconj |
On Wed, Jul 31, 2019 at 10:40:45AM +0900, macsyma wrote: > Thank you, Bill. > > > nfsplittingaut > > > The following simple one seems to be slightly faster than it > as far as experiments using x^n-1, polcyclo() and galoisgetpol(). > > G12p(f) = > { > my(g = nfsplitting(f), d = poldegree(g), > R = nfisincl(f, g), v = variable(f), P, N, M, G1, K, G2); > forprime(p = 2, oo, P = polrootsmod(g, p)~; > if(#P == d && Mod(poldisc(f), p), break)); > N = subst(R, v, P); > M = Map(Mat([N[1]~, [1..poldegree(f)]~])); > G1 = [Vecsmall([mapget(M, s)|s <- t])|t <- N]; > K = matinverseimage(matconcat(vector(d, i, subst(R, v, i))~), [1..d]~); > G2 = [R*[K[s]|s <- Vec(t^(-1))]~|t <- G1]; > [G1, G2] > }; > > In what kind of case is it faster to use the quotient ring ? I was expecting that if the degree of g get large, finding p would be costly. In your experiments, g = f, so g is never really large in any case. (galoisinit always do as you do). Cheers, Bill