galois.is_primitive_element¶
- galois.is_primitive_element(element, irreducible_poly)¶
Determines if \(g\) is a primitive element of the Galois field \(\mathrm{GF}(q^m)\) with degree-\(m\) irreducible polynomial \(f(x)\) over \(\mathrm{GF}(q)\).
- Parameters¶
- element : Union[int, str, Sequence[int], ndarray, FieldArray, Poly]¶
An element \(g\) of \(\mathrm{GF}(q^m)\) is a polynomial over \(\mathrm{GF}(q)\) with degree less than \(m\).
int
: The integer representation of the primitive element.str
: The primitive element expressed as a string, e.g."x + 1"
.galois.Poly
: The primitive element as a polynomial object.
- irreducible_poly : Poly¶
The degree-\(m\) irreducible polynomial \(f(x)\) over \(\mathrm{GF}(q)\) that defines the extension field \(\mathrm{GF}(q^m)\).
- Returns¶
True
if \(g\) is a primitive element of \(\mathrm{GF}(q^m)\).- Return type¶
Examples
Find all primitive elements for the degree \(4\) extension of \(\mathrm{GF}(3)\).
In [1]: f = galois.conway_poly(3, 4); f Out[1]: Poly(x^4 + 2x^3 + 2, GF(3)) In [2]: g = galois.primitive_elements(f); g Out[2]: [Poly(x, GF(3)), Poly(x + 2, GF(3)), Poly(2x, GF(3)), Poly(2x + 1, GF(3)), Poly(x^2 + x, GF(3)), Poly(x^2 + 2x + 2, GF(3)), Poly(2x^2 + x + 1, GF(3)), Poly(2x^2 + 2x, GF(3)), Poly(x^3, GF(3)), Poly(x^3 + 2, GF(3)), Poly(x^3 + x, GF(3)), Poly(x^3 + x + 2, GF(3)), Poly(x^3 + 2x + 2, GF(3)), Poly(x^3 + x^2 + 2x, GF(3)), Poly(x^3 + x^2 + 2x + 2, GF(3)), Poly(x^3 + 2x^2, GF(3)), Poly(x^3 + 2x^2 + 1, GF(3)), Poly(x^3 + 2x^2 + x, GF(3)), Poly(x^3 + 2x^2 + x + 1, GF(3)), Poly(x^3 + 2x^2 + 2x + 2, GF(3)), Poly(2x^3, GF(3)), Poly(2x^3 + 1, GF(3)), Poly(2x^3 + x + 1, GF(3)), Poly(2x^3 + 2x, GF(3)), Poly(2x^3 + 2x + 1, GF(3)), Poly(2x^3 + x^2, GF(3)), Poly(2x^3 + x^2 + 2, GF(3)), Poly(2x^3 + x^2 + x + 1, GF(3)), Poly(2x^3 + x^2 + 2x, GF(3)), Poly(2x^3 + x^2 + 2x + 2, GF(3)), Poly(2x^3 + 2x^2 + x, GF(3)), Poly(2x^3 + 2x^2 + x + 1, GF(3))]
Note from the list above that \(x + 2\) is a primitive element, but \(x + 1\) is not.
In [3]: galois.is_primitive_element("x + 2", f) Out[3]: True # x + 1 over GF(3) has integer equivalent of 4 In [4]: galois.is_primitive_element(4, f) Out[4]: False