Bill Allombert on Thu, 19 Mar 2020 13:33:44 +0100


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

Re: Tower field extensions in libPARI


On Thu, Mar 19, 2020 at 11:56:02AM +0000, John Cremona wrote:
> If instead you construct F2 by giving just its degree over F1 and not a
> specific polynomial, all is well:
> sage: F2 = F1.extension(6)
> sage: F2
> Finite Field in z12 of size 11^12
> sage: E2 = E.change_ring(F2)
> sage: E2.cardinality()
> 3138424833600
> 
> but the polynomial is not the one you wanted:
> 
> sage: F2.gen().minpoly()
> x^12 + x^8 + x^7 + 4*x^6 + 2*x^5 + 5*x^4 + 5*x^3 + 6*x^2 + 5*x + 2

Note that you are not actually building a relative model in this 
variant, so of course it works.

To avoid this issue, GP ffextend returns a absolute model and a map from
the relative model.

 a=ffgen((x^2+1)*Mod(1,11),'a);
 Ea=ellinit([0,1],a);
 [r,m]=ffextend(a,x^6 + (a + 3),'b);
 Eb=ellinit(ffmap(m,Ea[1..5]),r);
 ellcard(Eb)
%12 = 3138424833600
 mi=ffinvmap(m);
 minpoly(ffmaprel(mi,r))
%14 = x^6+(a+3)

Cheers,
Bill