galois.GF2¶
-
class
galois.
GF2
(array, dtype=None)[source]¶ Bases:
galois.gf.GF
,galois.gf.GFArray
Galois field array class for \(\mathrm{GF}(2)\) fields.
- Parameters
array (array_like) – The input array to be converted to a Galois field array. The input array is copied, so the original array is unmodified by changes to the Galois field array. Valid input array types are
numpy.ndarray
,list
,tuple
, orint
.dtype (numpy.dtype, optional) – The
numpy.dtype
of the array elements. The default isnumpy.int64
.
- Returns
The copied input array as a \(\mathrm{GF}(2)\) field array.
- Return type
Examples
GF2 class properties
In [10]: print(galois.GF2) <Galois Field: GF(2^1), prim_poly = x + 1 (3 decimal)> In [11]: galois.GF2.characteristic Out[11]: 2 In [12]: galois.GF2.degree Out[12]: 1 In [13]: galois.GF2.order Out[13]: 2 In [14]: galois.GF2.prim_poly Out[14]: Poly(x + 1, GF2)
Construct arrays in GF2
In [15]: a = galois.GF2([1,0,1,1]); a Out[15]: GF([1, 0, 1, 1], order=2) In [16]: b = galois.GF2([1,1,1,1]); b Out[16]: GF([1, 1, 1, 1], order=2)
Arithmetic with GF2 arrays
# Element-wise addition In [1]: a + b Out[1]: GF([0, 1, 0, 0], order=2) # Element-wise subtraction In [2]: a - b Out[2]: GF([0, 1, 0, 0], order=2) # Element-wise multiplication In [3]: a * b Out[3]: GF([1, 0, 1, 1], order=2) # Element-wise division In [4]: a / b Out[4]: GF([1, 0, 1, 1], order=2)
-
classmethod
Elements
(dtype=None)¶ Create a Galois field array of the field’s elements \(\{0, \dots, p^m-1\}\).
- Parameters
dtype (numpy.dtype, optional) – The
numpy.dtype
of the array elements. The default isNone
which represents the smallest valid dtype for this field class, i.e.cls.dtypes[0]
.
-
classmethod
Ones
(shape, dtype=None)¶ Create a Galois field array with all ones.
- Parameters
shape (tuple) – A numpy-compliant
shape
tuple, seenumpy.ndarray.shape
. An empty tuple()
represents a scalar. A single integer or 1-tuple, e.g.N
or(N,)
, represents the size of a 1-dim array. An n-tuple, e.g.(M,N)
, represents an n-dim array with each element indicating the size in each dimension.dtype (numpy.dtype, optional) – The
numpy.dtype
of the array elements. The default isNone
which represents the smallest valid dtype for this field class, i.e.cls.dtypes[0]
.
-
classmethod
Random
(shape=(), low=0, high=None, dtype=None)¶ Create a Galois field array with random field elements.
- Parameters
shape (tuple) – A numpy-compliant
shape
tuple, seenumpy.ndarray.shape
. An empty tuple()
represents a scalar. A single integer or 1-tuple, e.g.N
or(N,)
, represents the size of a 1-dim array. An n-tuple, e.g.(M,N)
, represents an n-dim array with each element indicating the size in each dimension.low (int, optional) – The lowest value (inclusive) of a random field element. The default is 0.
high (int, optional) – The highest value (exclusive) of a random field element. The default is
None
which represents the field’s order \(p^m\).dtype (numpy.dtype, optional) – The
numpy.dtype
of the array elements. The default isNone
which represents the smallest valid dtype for this field class, i.e.cls.dtypes[0]
.
-
classmethod
Zeros
(shape, dtype=None)¶ Create a Galois field array with all zeros.
- Parameters
shape (tuple) – A numpy-compliant
shape
tuple, seenumpy.ndarray.shape
. An empty tuple()
represents a scalar. A single integer or 1-tuple, e.g.N
or(N,)
, represents the size of a 1-dim array. An n-tuple, e.g.(M,N)
, represents an n-dim array with each element indicating the size in each dimension.dtype (numpy.dtype, optional) – The
numpy.dtype
of the array elements. The default isNone
which represents the smallest valid dtype for this field class, i.e.cls.dtypes[0]
.
-
classmethod
display
(mode='int', poly_var='x')¶ Sets the printing mode for arrays.
- Parameters
Examples
In [1]: GF = galois.GF_factory(2, 3) In [2]: a = GF.Random(4); a Out[2]: GF([0, 7, 1, 7], order=2^3) In [3]: GF.display("poly"); a Out[3]: GF([0, x^2 + x + 1, 1, x^2 + x + 1], order=2^3) In [4]: GF.display("poly", "r"); a Out[4]: GF([0, r^2 + r + 1, 1, r^2 + r + 1], order=2^3) # Reset the print mode In [5]: GF.display(); a Out[5]: GF([0, 7, 1, 7], order=2^3)
-
classmethod
target
(target)[source]¶ Retarget the just-in-time compiled
numba
ufuncs.- Parameters
target (str) – The
target
keyword argument fromnumba.vectorize
, either"cpu"
,"parallel"
, or"cuda"
.
-
alpha
= GF(1, order=2)¶ The primitive element of the Galois field \(\mathrm{GF}(p^m)\). The primitive element is a root of the primitive polynomial \(p(x)\), such that \(p(\alpha) = 0\). The primitive element is also a multiplicative generator of the field, such that \(\mathrm{GF}(p^m) = \{0, 1, \alpha^1, \alpha^2, \dots, \alpha^{p^m - 2}\}\).
- Type
-
characteristic
= 2¶ The prime characteristic \(p\) of the Galois field \(\mathrm{GF}(p^m)\). Adding \(p\) copies of any element will always result in \(0\).
- Type
-
degree
= 1¶ The prime characteristic’s degree \(m\) of the Galois field \(\mathrm{GF}(p^m)\). The degree is a positive integer.
- Type
-
dtypes
= [<class 'numpy.uint8'>, <class 'numpy.uint16'>, <class 'numpy.uint32'>, <class 'numpy.int8'>, <class 'numpy.int16'>, <class 'numpy.int32'>, <class 'numpy.int64'>]¶ List of valid integer
numpy.dtype
objects that are compatible with this Galois field array class. Valid data types are signed and unsinged integers that can represent decimal values in \([0, p^m)\).- Type
-
order
= 2¶ The order \(p^m\) of the Galois field \(\mathrm{GF}(p^m)\). The order of the field is also equal to the field’s size.
- Type
-
prim_poly
= Poly(x + 1, GF2)¶ The primitive polynomial \(p(x)\) of the Galois field \(\mathrm{GF}(p^m)\). The primitive polynomial is of degree \(m\) in \(\mathrm{GF}(p)[x]\).
- Type