| 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