- class galois.FieldArray(galois.Array)
An abstract
ndarray
subclass over \(\mathrm{GF}(p^m)\).Abstract
FieldArray
is an abstract base class and cannot be instantiated directly. Instead,FieldArray
subclasses are created using the class factoryGF()
.Examples¶
Create a
FieldArray
subclass over \(\mathrm{GF}(3^5)\) using the class factoryGF()
.In [1]: GF = galois.GF(3**5) In [2]: issubclass(GF, galois.FieldArray) Out[2]: True In [3]: print(GF.properties) Galois Field: name: GF(3^5) characteristic: 3 degree: 5 order: 243 irreducible_poly: x^5 + 2x + 1 is_primitive_poly: True primitive_element: x
In [4]: GF = galois.GF(3**5, repr="poly") In [5]: issubclass(GF, galois.FieldArray) Out[5]: True In [6]: print(GF.properties) Galois Field: name: GF(3^5) characteristic: 3 degree: 5 order: 243 irreducible_poly: x^5 + 2x + 1 is_primitive_poly: True primitive_element: x
In [7]: GF = galois.GF(3**5, repr="power") In [8]: issubclass(GF, galois.FieldArray) Out[8]: True In [9]: print(GF.properties) Galois Field: name: GF(3^5) characteristic: 3 degree: 5 order: 243 irreducible_poly: x^5 + 2x + 1 is_primitive_poly: True primitive_element: x
Create a
FieldArray
instance usingGF
’s constructor.In [10]: x = GF([44, 236, 206, 138]); x Out[10]: GF([ 44, 236, 206, 138], order=3^5) In [11]: isinstance(x, GF) Out[11]: True
In [12]: x = GF([44, 236, 206, 138]); x Out[12]: GF([ α^3 + α^2 + 2α + 2, 2α^4 + 2α^3 + 2α^2 + 2, 2α^4 + α^3 + α^2 + 2α + 2, α^4 + 2α^3 + α], order=3^5) In [13]: isinstance(x, GF) Out[13]: True
In [14]: x = GF([44, 236, 206, 138]); x Out[14]: GF([α^143, α^204, α^55, α^113], order=3^5) In [15]: isinstance(x, GF) Out[15]: True
Constructors¶
- FieldArray(x: ElementLike | ArrayLike, ...)
Creates an array over \(\mathrm{GF}(p^m)\).
- classmethod Range(start: ElementLike, stop, ...) Self
Creates a 1-D array with a range of elements.
- classmethod Vandermonde(element: ElementLike, rows, ...) Self
Creates an \(m \times n\) Vandermonde matrix of \(a \in \mathrm{GF}(q)\).
Conversions¶
- classmethod Vector(array: ArrayLike, ...) FieldArray
Converts length-\(m\) vectors over the prime subfield \(\mathrm{GF}(p)\) to an array over \(\mathrm{GF}(p^m)\).
-
vector(dtype: DTypeLike | None =
None
) FieldArray Converts an array over \(\mathrm{GF}(p^m)\) to length-\(m\) vectors over the prime subfield \(\mathrm{GF}(p)\).
Elements¶
- class property elements : FieldArray
All of the finite field’s elements \(\{0, \dots, p^m-1\}\).
- class property non_squares : FieldArray
All non-squares in the Galois field.
- class property primitive_element : FieldArray
A primitive element \(\alpha\) of the Galois field \(\mathrm{GF}(p^m)\).
- class property primitive_elements : FieldArray
All primitive elements \(\alpha\) of the Galois field \(\mathrm{GF}(p^m)\).
- classmethod primitive_root_of_unity(n: int) Self
Finds a primitive \(n\)-th root of unity in the finite field.
- classmethod primitive_roots_of_unity(n: int) Self
Finds all primitive \(n\)-th roots of unity in the finite field.
- class property squares : FieldArray
All squares in the finite field.
- class property units : FieldArray
All of the finite field’s units \(\{1, \dots, p^m-1\}\).
String representation¶
- classmethod arithmetic_table(operation, ...) str
Generates the specified arithmetic table for the finite field.
- class property properties : str
A formatted string of relevant properties of the Galois field.
- classmethod repr_table(...) str
Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations.
Element representation¶
- class property element_repr : 'int' | 'poly' | 'power'
The current finite field element representation.
- classmethod repr(...) Generator[None, None, None]
Sets the element representation for all arrays from this
FieldArray
subclass.
Arithmetic compilation¶
- class property default_ufunc_mode : 'jit-lookup' | 'jit-calculate' | 'python-calculate'
The default ufunc compilation mode for this
FieldArray
subclass.
- class property dtypes : list[numpy.dtype]
List of valid integer
numpy.dtype
values that are compatible with this finite field.
- class property ufunc_mode : 'jit-lookup' | 'jit-calculate' | 'python-calculate'
The current ufunc compilation mode for this
FieldArray
subclass.
- class property ufunc_modes : list[str]
All supported ufunc compilation modes for this
FieldArray
subclass.
Methods¶
- additive_order() int | numpy.ndarray
Computes the additive order of each element in \(x\).
- characteristic_poly() Poly
Computes the characteristic polynomial of a finite field element \(a\) or a square matrix \(\mathbf{A}\).
- field_norm() FieldArray
Computes the field norm \(\mathrm{N}_{L / K}(x)\) of the elements of \(x\).
- field_trace() FieldArray
Computes the field trace \(\mathrm{Tr}_{L / K}(x)\) of the elements of \(x\).
-
log(base: ElementLike | ArrayLike | None =
None
) int | ndarray Computes the discrete logarithm of the array \(x\) base \(\beta\).
- minimal_poly() Poly
Computes the minimal polynomial of a finite field element \(a\).
- multiplicative_order() int | numpy.ndarray
Computes the multiplicative order \(\textrm{ord}(x)\) of each element in \(x\).
Linear algebra¶
- column_space() Self
Computes the column space of the matrix \(\mathbf{A}\).
- left_null_space() Self
Computes the left null space of the matrix \(\mathbf{A}\).
- lu_decompose() tuple[Self, Self]
Decomposes the input array into the product of lower and upper triangular matrices.
- null_space() Self
Computes the null space of the matrix \(\mathbf{A}\).
- plu_decompose() tuple[Self, Self, Self]
Decomposes the input array into the product of lower and upper triangular matrices using partial pivoting.
-
row_reduce(ncols: int | None =
None
, ...) Self Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF).
Properties¶
- class property characteristic : int
The prime characteristic \(p\) of the Galois field \(\mathrm{GF}(p^m)\).
- class property irreducible_poly : Poly
The irreducible polynomial \(f(x)\) of the Galois field \(\mathrm{GF}(p^m)\).
- class property prime_subfield : type[FieldArray]
The prime subfield \(\mathrm{GF}(p)\) of the extension field \(\mathrm{GF}(p^m)\).
Attributes¶
- class property is_extension_field : bool
Indicates if the finite field is an extension field, having prime power order.
- class property is_prime_field : bool
Indicates if the finite field is a prime field, having prime order.
- class property is_primitive_poly : bool
Indicates whether the
irreducible_poly
is a primitive polynomial.
- is_square() bool | numpy.ndarray
Determines if the elements of \(x\) are squares in the finite field.