![]() | 1 | initial version |
Same answer as above. I am only making the parallel to the mathematical situation maybe more clear.
I will define first F2
=F2, then F4
=F4 as F2[X]/(X2+X+1), and a is taken to be the class of X w.r.t. the ideal generated by the "modulus" X2+X+1.
F2 = GF(2)
R2.<X> = PolynomialRing(F2)
F4.<a> = GF(4, modulus=X^2 + X + 1)
So X
is specifically the transcendent variable of a polynomial ring R2
over F2.
Now we proceed in the same manner to introduce the ring R4
=F4[Y], and then the field
F16
=F4[Y]/(Y2+Y+a). The class of Y modulo (Y2+Y+a) will be denoted by b.
R4.<Y> = PolynomialRing(F4)
F16.<b> = F4.extension(Y^2 + Y + a)
And finally, F256
=F16[Z]/(Z2+Z+ab), and the class of Z is c:
R16.<Z> = PolynomialRing(F16)
F256.<c> = F16.extension(Z^2 + Z + a*b)
We ask for the information of the three fields:
print(f'F4 is {F4}')
print(f'F16 is {F16}')
print(f'F256 is {F256}')
Results (manually rearranged):
F4 is Finite Field in a of size 2^2
F16 is Univariate Quotient Polynomial Ring in b
over Finite Field in a of size 2^2 with modulus b^2 + b + a
F256 is Univariate Quotient Polynomial Ring in c
over Univariate Quotient Polynomial Ring in b
over Finite Field in a of size 2^2 with modulus b^2 + b + a with modulus c^2 + c + a*b
![]() | 2 | No.2 Revision |
Same answer as above. I am only making introducing the parallel to the mathematical situation maybe more clear.objects for comparison.
I will define first F2
=F2, then F4
=F4 as F2[X]/(X2+X+1), and a is taken to be the class of X w.r.t. the ideal generated by the "modulus" X2+X+1.
F2 = GF(2)
R2.<X> = PolynomialRing(F2)
F4.<a> = GF(4, modulus=X^2 + X + 1)
So X
is specifically the transcendent variable of a polynomial ring R2
over F2.
Now we proceed in the same manner to introduce the ring R4
=F4[Y], and then the field
F16
=F4[Y]/(Y2+Y+a). The class of Y modulo (Y2+Y+a) will be denoted by b.
R4.<Y> = PolynomialRing(F4)
F16.<b> = F4.extension(Y^2 + Y + a)
And finally, F256
=F16[Z]/(Z2+Z+ab), and the class of Z is c:
R16.<Z> = PolynomialRing(F16)
F256.<c> = F16.extension(Z^2 + Z + a*b)
We ask for the information of the three fields:
print(f'F4 is {F4}')
print(f'F16 is {F16}')
print(f'F256 is {F256}')
Results (manually rearranged):
F4 is Finite Field in a of size 2^2
F16 is Univariate Quotient Polynomial Ring in b
over Finite Field in a of size 2^2 with modulus b^2 + b + a
F256 is Univariate Quotient Polynomial Ring in c
over Univariate Quotient Polynomial Ring in b
over Finite Field in a of size 2^2 with modulus b^2 + b + a with modulus c^2 + c + a*b