Processing math: 100%
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

answered 5 years ago

dan_fulea gravatar image

We can start with a default version of F=Fq, q=p12, construct w inside it, ask for the minimal polynomial P of w, and work further with F. Or construct KF by using K=Fp[X]/(P). Let us construct w in the "default" world.

F = GF(0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab)
p = F.characteristic()
F12.<G> = GF(p^12)    # G is the generator, we will not need it below

u = sqrt(F12(-1))
R12.<Y> = PolynomialRing(F12)

v = (Y^3 - (u+1)).roots(multiplicities=False)[0]
w = sqrt(v)

P = w.minpoly()

As expected, we get a polynomial P of degree 12, and now we may want to switch to

K.<W> = GF(p^12, modulus=P)

Here,

sage: P                                                                                                                              
x^12 + 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559785*x^6 + 2
sage: