| 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.