Bill Allombert on Sat, 03 Aug 2019 00:44:27 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: nfgaloisconj |
On Thu, Aug 01, 2019 at 11:40:20AM +0900, macsyma wrote: > > Bill Allombert on Wed, 31 Jul 2019 11:06:53 +0200 > > 2) if the order of the Galois group is not given and the group is not > > the symmetric group, then nfsplitting already computes a large part of > > nfisincl to check that the tower stops, so we could arrange for > > nfsplitting to return also the embeddings. > > That is good news. I created a git branch 'bill-nfsplitting' that implement this. This adds a flag to nfpslitting to also get the embedding: ? P=x^3-2;[Q,S]=nfsplitting(P,,1) %4 = [x^6+108,[-1/36*x^4-1/2*x,-1/36*x^4+1/2*x,1/18*x^4]] ? liftpol(subst(P,x,S*Mod(1,Q))) %5 = [0,0,0] nfsplittingaut() can be modified as follow to use it: nfsplittingaut(f,deg=0)= { my([g,R]=if(deg,nfsplitting(f,deg,1),nfsplitting(f,,1))); my(d=poldegree(g),v=variable(f)); my(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]; return([g,G1,G2]); } with this version, nfsplittingaut(x^17-2); and nfsplittingaut(x^17-2,17*16); should have very close running time. Cheers, Bill.