galois.FieldArray.field_norm()

Computes the field norm $$\mathrm{N}_{L / K}(x)$$ of the elements of $$x$$.

Returns:

The field norm of $$x$$ in the prime subfield $$\mathrm{GF}(p)$$.

The self array $$x$$ is over the extension field $$L = \mathrm{GF}(p^m)$$. The field norm of $$x$$ is over the subfield $$K = \mathrm{GF}(p)$$. In other words, $$\mathrm{N}_{L / K}(x) : L \rightarrow K$$.

For finite fields, since $$L$$ is a Galois extension of $$K$$, the field norm of $$x$$ is defined as a product of the Galois conjugates of $$x$$.

$\mathrm{N}_{L / K}(x) = \prod_{i=0}^{m-1} x^{p^i} = x^{(p^m - 1) / (p - 1)}$

Examples

Compute the field norm of the elements of $$\mathrm{GF}(3^2)$$.

In : GF = galois.GF(3**2)

In : x = GF.elements; x
Out: GF([0, 1, 2, 3, 4, 5, 6, 7, 8], order=3^2)

In : y = x.field_norm(); y
Out: GF([0, 1, 1, 2, 1, 2, 2, 2, 1], order=3)

In : GF = galois.GF(3**2, repr="poly")

In : x = GF.elements; x
Out:
GF([     0,      1,      2,      α,  α + 1,  α + 2,     2α, 2α + 1,
2α + 2], order=3^2)

In : y = x.field_norm(); y
Out: GF([0, 1, 1, 2, 1, 2, 2, 2, 1], order=3)

In : GF = galois.GF(3**2, repr="power")

In : x = GF.elements; x
Out: GF([  0,   1, α^4,   α, α^2, α^7, α^5, α^3, α^6], order=3^2)

In : y = x.field_norm(); y
Out: GF([0, 1, 1, 2, 1, 2, 2, 2, 1], order=3)