![]() | 1 | initial version |
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 K≅F 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: