# How to handle elements of two different Galois fields simultaneously?

I would like to operate the elements of two different fields simultaneously. I have used the following codes, both are not working at the same time whereas only one work at a time.

G.<x> = GF(2^8, name='x', modulus=x^8 + x^5 + x^3 + x + 1)
F.<x> = GF(2^3, name='x', modulus=x^3 + x^2 + 1)

for i in range(2^3):
print G.fetch_int(i).integer_representation(), '=', G.fetch_int(i)
print  F.fetch_int(i).integer_representation(), '=', F.fetch_int(i)

edit retag close merge delete

Use different names..

( 2019-06-01 12:24:03 +0200 )edit

@FrédéricC I have used different names, but this also gives error: raise ValueError("the degree of the modulus does not equal the degree of the field") ValueError: the degree of the modulus does not equal the degree of the field

( 2019-06-01 12:29:34 +0200 )edit

Sort by » oldest newest most voted

The modulus should be a polynomial over the prime field.

R.<x> = PolynomialRing(GF(2))
G = GF(2^8, name='x', modulus=x^8 + x^5 + x^3 + x + 1)
F = GF(2^3, name='x', modulus=x^3 + x^2 + 1)

for i in range(2^3):
print G.fetch_int(i).integer_representation(), '=', G.fetch_int(i)
print F.fetch_int(i).integer_representation(), '=', F.fetch_int(i)


To get the generator of, say, F, use F.gen(). Or give them different names like so (still using x in R):

G.<a> = GF(2^8, modulus=x^8 + x^5 + x^3 + x + 1)
F.<b> = GF(2^3, modulus=x^3 + x^2 + 1)

more