Galois fields
Nemo allows the creation of Galois fields of the form $\mathbb{Z}/p\mathbb{Z}$ for a prime $p$. Note that these are not the same as finite fields of degree 1, as Conway polynomials are not used.
For convenience, the following constructors are provided.
GF(n::UInt)
GF(n::Int)For example, one can create the Galois field of characteristic $7$ as follows.
R = GF(7)Elements of the field are then created in the usual way.
a = R(3)Elements of Galois fields have type gfp_elem, and the type of the parent objects is GaloisField.
The modulus $p$ of an element of a Galois field is stored in its parent object.
The gfp_elem type belong to the abstract type FinFieldElem and the GaloisField parent object type belongs to the abstract type FinField.
Galois field functionality
Galois fields in Nemo implement the residue ring interface of AbstractAlgebra.jl:
https://nemocas.github.io/AbstractAlgebra.jl/residue_rings.html
In addition, all the functionality for generic residue rings is available:
https://nemocas.github.io/AbstractAlgebra.jl/residue.html
Below we describe the functionality that is provided in addition to this interface.
Basic manipulation
AbstractAlgebra.Generic.characteristic โ Method.characteristic(R::GaloisField) -> fmpzReturn the characteristic of the given Galois field.
AbstractAlgebra.Generic.order โ Method.order(R::GaloisField) -> fmpzReturn the order, i.e. the number of elements in, the given Galois field.
Examples
F = GF(3)
a = characteristic(F)
b = order(F)