diff --git a/v0.3.x/.doctrees/api/galois.BCH.decode.doctree b/v0.3.x/.doctrees/api/galois.BCH.decode.doctree index ebaa991ae..0996dc722 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.decode.doctree and b/v0.3.x/.doctrees/api/galois.BCH.decode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.detect.doctree b/v0.3.x/.doctrees/api/galois.BCH.detect.doctree index 5ff6a7084..b142f8fa7 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.detect.doctree and b/v0.3.x/.doctrees/api/galois.BCH.detect.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.doctree b/v0.3.x/.doctrees/api/galois.BCH.doctree index f1e40cd23..7f49f3a8f 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.doctree and b/v0.3.x/.doctrees/api/galois.BCH.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.encode.doctree b/v0.3.x/.doctrees/api/galois.BCH.encode.doctree index 166948712..720f86059 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.encode.doctree and b/v0.3.x/.doctrees/api/galois.BCH.encode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree index ba8b2a445..c99e35122 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree index 0689122d7..ac242b7ea 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree index 5f9cb24a6..b8fe92e77 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree index f1a51e473..e2f403b59 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree index 217b0b046..380e20e51 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree index e6078d527..09fb3e0b2 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree index f6d9344ec..9f2e32afd 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree index 5015119f3..91605a4e2 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.Random.doctree b/v0.3.x/.doctrees/api/galois.Poly.Random.doctree index 06d94ff1a..8dc3a0786 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Random.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Random.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree b/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree index cd782fa3d..116506755 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree and b/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.field.doctree b/v0.3.x/.doctrees/api/galois.Poly.field.doctree index 98eb5d3f3..eb58c2403 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.field.doctree and b/v0.3.x/.doctrees/api/galois.Poly.field.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree b/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree index 1bdbbd05e..627ab1a1e 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree and b/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree index 632bf8c8a..22beb4dfd 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree index f3603f79a..33a8983ae 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree index 00a925a79..868b3620c 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree index 4bfb436d5..f76d10ba5 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.crt.doctree b/v0.3.x/.doctrees/api/galois.crt.doctree index 3bc2d15b3..4776da0f6 100644 Binary files a/v0.3.x/.doctrees/api/galois.crt.doctree and b/v0.3.x/.doctrees/api/galois.crt.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree b/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree index 550fe8225..39f07c7a2 100644 Binary files a/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree and b/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree b/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree index ee73926fa..1981af969 100644 Binary files a/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree and b/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree b/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree index a27234010..f2c1982ef 100644 Binary files a/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree and b/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree b/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree index 2b2a3a2fc..76554eb52 100644 Binary files a/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree and b/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_element.doctree b/v0.3.x/.doctrees/api/galois.primitive_element.doctree index 206782a4b..1aa8a8206 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_element.doctree and b/v0.3.x/.doctrees/api/galois.primitive_element.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_poly.doctree b/v0.3.x/.doctrees/api/galois.primitive_poly.doctree index 428423747..18a796af4 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_poly.doctree and b/v0.3.x/.doctrees/api/galois.primitive_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_polys.doctree b/v0.3.x/.doctrees/api/galois.primitive_polys.doctree index 2a9891415..54d420f12 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_polys.doctree and b/v0.3.x/.doctrees/api/galois.primitive_polys.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_root.doctree b/v0.3.x/.doctrees/api/galois.primitive_root.doctree index 47cf26fd4..8fc770561 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_root.doctree and b/v0.3.x/.doctrees/api/galois.primitive_root.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_roots.doctree b/v0.3.x/.doctrees/api/galois.primitive_roots.doctree index 1c4aa8c87..11e2e7730 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_roots.doctree and b/v0.3.x/.doctrees/api/galois.primitive_roots.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.prod.doctree b/v0.3.x/.doctrees/api/galois.prod.doctree index 71bae31a8..d9a0e52e2 100644 Binary files a/v0.3.x/.doctrees/api/galois.prod.doctree and b/v0.3.x/.doctrees/api/galois.prod.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree b/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree index c0bfe3f04..a2b685bd0 100644 Binary files a/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree and b/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree differ diff --git a/v0.3.x/.doctrees/basic-usage/array-creation.doctree b/v0.3.x/.doctrees/basic-usage/array-creation.doctree index 6410158ed..e633b8d3c 100644 Binary files a/v0.3.x/.doctrees/basic-usage/array-creation.doctree and b/v0.3.x/.doctrees/basic-usage/array-creation.doctree differ diff --git a/v0.3.x/.doctrees/basic-usage/element-representation.doctree b/v0.3.x/.doctrees/basic-usage/element-representation.doctree index 0f17e1a05..47a450aed 100644 Binary files a/v0.3.x/.doctrees/basic-usage/element-representation.doctree and b/v0.3.x/.doctrees/basic-usage/element-representation.doctree differ diff --git a/v0.3.x/.doctrees/basic-usage/poly.doctree b/v0.3.x/.doctrees/basic-usage/poly.doctree index 8d830f033..f764306ac 100644 Binary files a/v0.3.x/.doctrees/basic-usage/poly.doctree and b/v0.3.x/.doctrees/basic-usage/poly.doctree differ diff --git a/v0.3.x/.doctrees/environment.pickle b/v0.3.x/.doctrees/environment.pickle index c91d626e6..177e5b699 100644 Binary files a/v0.3.x/.doctrees/environment.pickle and b/v0.3.x/.doctrees/environment.pickle differ diff --git a/v0.3.x/.doctrees/getting-started.doctree b/v0.3.x/.doctrees/getting-started.doctree index d4afc5106..c829e53be 100644 Binary files a/v0.3.x/.doctrees/getting-started.doctree and b/v0.3.x/.doctrees/getting-started.doctree differ diff --git a/v0.3.x/api/galois.Array.Identity/index.html b/v0.3.x/api/galois.Array.Identity/index.html index 5e66e883e..854d1c668 100644 --- a/v0.3.x/api/galois.Array.Identity/index.html +++ b/v0.3.x/api/galois.Array.Identity/index.html @@ -7792,14 +7792,14 @@
-classmethod galois.Array.Identity(size: int, dtype: DTypeLike | None = None) Self
+classmethod galois.Array.Identity(size: int, dtype: DTypeLike | None = None) Self

Creates an \(n \times n\) identity matrix.

Parameters:
-
size: int

The size \(n\) along one dimension of the identity matrix.

+
size: int

The size \(n\) along one dimension of the identity matrix.

-
dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest +

dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes).

diff --git a/v0.3.x/api/galois.Array.Ones/index.html b/v0.3.x/api/galois.Array.Ones/index.html index b25cfdfa9..a986661b0 100644 --- a/v0.3.x/api/galois.Array.Ones/index.html +++ b/v0.3.x/api/galois.Array.Ones/index.html @@ -7792,14 +7792,14 @@
-classmethod galois.Array.Ones(shape: ShapeLike, dtype: DTypeLike | None = None) Self
+classmethod galois.Array.Ones(shape: ShapeLike, dtype: DTypeLike | None = None) Self

Creates an array of all ones.

Parameters:
shape: ShapeLike

A NumPy-compliant shape tuple.

-
dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest +

dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes).

diff --git a/v0.3.x/api/galois.Array.Random/index.html b/v0.3.x/api/galois.Array.Random/index.html index c96449241..e2985d228 100644 --- a/v0.3.x/api/galois.Array.Random/index.html +++ b/v0.3.x/api/galois.Array.Random/index.html @@ -7834,7 +7834,7 @@
-classmethod galois.Array.Random(shape: ShapeLike = (), low: ElementLike = 0, high: ElementLike | None = None, seed: int | Generator | None = None, dtype: DTypeLike | None = None) Self
+classmethod galois.Array.Random(shape: ShapeLike = (), low: ElementLike = 0, high: ElementLike | None = None, seed: int | Generator | None = None, dtype: DTypeLike | None = None) Self

Creates an array with random elements.

Parameters:
@@ -7843,13 +7843,13 @@
low: ElementLike = 0

The smallest element (inclusive). The default is 0.

-
high: ElementLike | None = None

The largest element (exclusive). The default is None which represents order.

+
high: ElementLike | None = None

The largest element (exclusive). The default is None which represents order.

-
seed: int | Generator | None = None

Non-negative integer used to initialize the PRNG. The default is None which means that +

seed: int | Generator | None = None

Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed.

-
dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest +

dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes).

diff --git a/v0.3.x/api/galois.Array.Range/index.html b/v0.3.x/api/galois.Array.Range/index.html index db50d5cf7..76b72da9f 100644 --- a/v0.3.x/api/galois.Array.Range/index.html +++ b/v0.3.x/api/galois.Array.Range/index.html @@ -7820,7 +7820,7 @@
-classmethod galois.Array.Range(start: ElementLike, stop: ElementLike, step: int = 1, dtype: DTypeLike | None = None) Self
+classmethod galois.Array.Range(start: ElementLike, stop: ElementLike, step: int = 1, dtype: DTypeLike | None = None) Self

Creates a 1-D array with a range of elements.

Parameters:
@@ -7829,9 +7829,9 @@
stop: ElementLike

The stopping element (exclusive).

-
step: int = 1

The increment between elements. The default is 1.

+
step: int = 1

The increment between elements. The default is 1.

-
dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest +

dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes).

diff --git a/v0.3.x/api/galois.Array.Zeros/index.html b/v0.3.x/api/galois.Array.Zeros/index.html index 9b7fe1eb2..5dcac9d38 100644 --- a/v0.3.x/api/galois.Array.Zeros/index.html +++ b/v0.3.x/api/galois.Array.Zeros/index.html @@ -7792,14 +7792,14 @@
-classmethod galois.Array.Zeros(shape: ShapeLike, dtype: DTypeLike | None = None) Self
+classmethod galois.Array.Zeros(shape: ShapeLike, dtype: DTypeLike | None = None) Self

Creates an array of all zeros.

Parameters:
shape: ShapeLike

A NumPy-compliant shape tuple.

-
dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest +

dtype: DTypeLike | None = None

The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes).

diff --git a/v0.3.x/api/galois.Array.characteristic/index.html b/v0.3.x/api/galois.Array.characteristic/index.html index bae389e99..6a90b1034 100644 --- a/v0.3.x/api/galois.Array.characteristic/index.html +++ b/v0.3.x/api/galois.Array.characteristic/index.html @@ -7688,7 +7688,7 @@
-class property galois.Array.characteristic : int
+class property galois.Array.characteristic : int

The characteristic \(p\) of the Galois field \(\mathrm{GF}(p^m)\) or \(p^e\) of the Galois ring \(\mathrm{GR}(p^e, m)\).

diff --git a/v0.3.x/api/galois.Array.compile/index.html b/v0.3.x/api/galois.Array.compile/index.html index d0bc1d5b1..faf1bbb60 100644 --- a/v0.3.x/api/galois.Array.compile/index.html +++ b/v0.3.x/api/galois.Array.compile/index.html @@ -7783,7 +7783,7 @@ the "jit-calculate" mode is slower than "jit-lookup".

  • "python-calculate": Uses pure-Python ufuncs with explicit calculation. This is reserved for fields whose elements cannot be represented with numpy.int64 and instead use numpy.object_ -with Python int (which has arbitrary precision).

  • +with Python int (which has arbitrary precision).

    diff --git a/v0.3.x/api/galois.Array.degree/index.html b/v0.3.x/api/galois.Array.degree/index.html index 9380785b3..af2b22ed3 100644 --- a/v0.3.x/api/galois.Array.degree/index.html +++ b/v0.3.x/api/galois.Array.degree/index.html @@ -7688,7 +7688,7 @@
    -class property galois.Array.degree : int
    +class property galois.Array.degree : int

    The degree \(m\) of the Galois field \(\mathrm{GF}(p^m)\) or Galois ring \(\mathrm{GR}(p^e, m)\).

    diff --git a/v0.3.x/api/galois.Array.dtypes/index.html b/v0.3.x/api/galois.Array.dtypes/index.html index 9f15f7963..6aa03ce00 100644 --- a/v0.3.x/api/galois.Array.dtypes/index.html +++ b/v0.3.x/api/galois.Array.dtypes/index.html @@ -7688,7 +7688,7 @@
    -class property galois.Array.dtypes : list[numpy.dtype]
    +class property galois.Array.dtypes : list[numpy.dtype]

    List of valid integer numpy.dtype values that are compatible with this Galois field or Galois ring.

    diff --git a/v0.3.x/api/galois.Array.name/index.html b/v0.3.x/api/galois.Array.name/index.html index 02a5cbe8a..f4b73d239 100644 --- a/v0.3.x/api/galois.Array.name/index.html +++ b/v0.3.x/api/galois.Array.name/index.html @@ -7688,7 +7688,7 @@
    -class property galois.Array.name : str
    +class property galois.Array.name : str

    The name of the Galois field or Galois ring.

    diff --git a/v0.3.x/api/galois.Array.order/index.html b/v0.3.x/api/galois.Array.order/index.html index 3aecb315a..6fd0cd581 100644 --- a/v0.3.x/api/galois.Array.order/index.html +++ b/v0.3.x/api/galois.Array.order/index.html @@ -7688,7 +7688,7 @@
    -class property galois.Array.order : int
    +class property galois.Array.order : int

    The order \(p^m\) of the Galois field \(\mathrm{GF}(p^m)\) or \(p^{em}\) of the Galois ring \(\mathrm{GR}(p^e, m)\).

    diff --git a/v0.3.x/api/galois.Array.repr/index.html b/v0.3.x/api/galois.Array.repr/index.html index 1768217e2..960bb12ef 100644 --- a/v0.3.x/api/galois.Array.repr/index.html +++ b/v0.3.x/api/galois.Array.repr/index.html @@ -7792,7 +7792,7 @@
    -classmethod galois.Array.repr(element_repr: 'int' | 'poly' | 'power' = 'int') Generator[None, None, None]
    +classmethod galois.Array.repr(element_repr: 'int' | 'poly' | 'power' = 'int') Generator[None, None, None]

    Sets the element representation for all arrays from this FieldArray subclass.

    Parameters:
    diff --git a/v0.3.x/api/galois.Array.ufunc_modes/index.html b/v0.3.x/api/galois.Array.ufunc_modes/index.html index 7e2577f2d..512cb6b6c 100644 --- a/v0.3.x/api/galois.Array.ufunc_modes/index.html +++ b/v0.3.x/api/galois.Array.ufunc_modes/index.html @@ -7688,7 +7688,7 @@
    -class property galois.Array.ufunc_modes : list[str]
    +class property galois.Array.ufunc_modes : list[str]

    All supported compilation modes of the Galois field or Galois ring.

    diff --git a/v0.3.x/api/galois.Array/index.html b/v0.3.x/api/galois.Array/index.html index 112db3626..f7138f778 100644 --- a/v0.3.x/api/galois.Array/index.html +++ b/v0.3.x/api/galois.Array/index.html @@ -7937,7 +7937,7 @@

    Constructors

    -classmethod Identity(size: int, ...) Self
    +classmethod Identity(size: int, ...) Self

    Creates an \(n \times n\) identity matrix.

    @@ -7976,7 +7976,7 @@

    Methods
    -classmethod repr(...) Generator[None, None, None]
    +classmethod repr(...) Generator[None, None, None]

    Sets the element representation for all arrays from this FieldArray subclass.

    @@ -7985,7 +7985,7 @@

    MethodsProperties

    -class property characteristic : int
    +class property characteristic : int

    The characteristic \(p\) of the Galois field \(\mathrm{GF}(p^m)\) or \(p^e\) of the Galois ring \(\mathrm{GR}(p^e, m)\).

    @@ -7998,13 +7998,13 @@

    Properties
    -class property degree : int
    +class property degree : int

    The degree \(m\) of the Galois field \(\mathrm{GF}(p^m)\) or Galois ring \(\mathrm{GR}(p^e, m)\).

    -class property dtypes : list[numpy.dtype]
    +class property dtypes : list[numpy.dtype]

    List of valid integer numpy.dtype values that are compatible with this Galois field or Galois ring.

    @@ -8028,13 +8028,13 @@

    Properties
    -class property name : str
    +class property name : str

    The name of the Galois field or Galois ring.

    -class property order : int
    +class property order : int

    The order \(p^m\) of the Galois field \(\mathrm{GF}(p^m)\) or \(p^{em}\) of the Galois ring \(\mathrm{GR}(p^e, m)\).

    @@ -8053,7 +8053,7 @@

    Properties
    -class property ufunc_modes : list[str]
    +class property ufunc_modes : list[str]

    All supported compilation modes of the Galois field or Galois ring.

    diff --git a/v0.3.x/api/galois.BCH.__init__/index.html b/v0.3.x/api/galois.BCH.__init__/index.html index a781d97b8..1696ec925 100644 --- a/v0.3.x/api/galois.BCH.__init__/index.html +++ b/v0.3.x/api/galois.BCH.__init__/index.html @@ -7876,14 +7876,14 @@
    -galois.BCH(n: int, k: int | None = None, d: int | None = None, field: type[FieldArray] | None = None, extension_field: type[FieldArray] | None = None, alpha: ElementLike | None = None, c: int = 1, systematic: bool = True)
    +galois.BCH(n: int, k: int | None = None, d: int | None = None, field: type[FieldArray] | None = None, extension_field: type[FieldArray] | None = None, alpha: ElementLike | None = None, c: int = 1, systematic: bool = True)

    Constructs a general \(\textrm{BCH}(n, k)\) code over \(\mathrm{GF}(q)\).

    Parameters:
    -
    n: int

    The codeword size \(n\). If \(n = q^m - 1\), the BCH code is primitive.

    +
    n: int

    The codeword size \(n\). If \(n = q^m - 1\), the BCH code is primitive.

    -
    k: int | None = None

    The message size \(k\).

    +
    k: int | None = None

    The message size \(k\).

    Important

    Either k or d must be provided to define the code. Both may be provided as long as they are @@ -7891,25 +7891,25 @@

    -
    d: int | None = None

    The design distance \(d\). This defines the number of roots \(d - 1\) in the generator +

    d: int | None = None

    The design distance \(d\). This defines the number of roots \(d - 1\) in the generator polynomial \(g(x)\) over \(\mathrm{GF}(q^m)\).

    -
    field: type[FieldArray] | None = None

    The Galois field \(\mathrm{GF}(q)\) that defines the alphabet of the codeword symbols. +

    field: type[FieldArray] | None = None

    The Galois field \(\mathrm{GF}(q)\) that defines the alphabet of the codeword symbols. The default is None which corresponds to \(\mathrm{GF}(2)\).

    -
    extension_field: type[FieldArray] | None = None

    The Galois field \(\mathrm{GF}(q^m)\) that defines the syndrome arithmetic. +

    extension_field: type[FieldArray] | None = None

    The Galois field \(\mathrm{GF}(q^m)\) that defines the syndrome arithmetic. The default is None which corresponds to \(\mathrm{GF}(q^m)\) where \(q^{m - 1} \le n < q^m\). The default extension field will use matlab_primitive_poly(q, m) for the irreducible polynomial.

    -
    alpha: ElementLike | None = None

    A primitive \(n\)-th root of unity \(\alpha\) in \(\mathrm{GF}(q^m)\) that defines the +

    alpha: ElementLike | None = None

    A primitive \(n\)-th root of unity \(\alpha\) in \(\mathrm{GF}(q^m)\) that defines the \(\alpha^c, \dots, \alpha^{c+d-2}\) roots of the generator polynomial \(g(x)\).

    -
    c: int = 1

    The first consecutive power \(c\) of \(\alpha\) that defines the +

    c: int = 1

    The first consecutive power \(c\) of \(\alpha\) that defines the \(\alpha^c, \dots, \alpha^{c+d-2}\) roots of the generator polynomial \(g(x)\). The default is 1. If \(c = 1\), the BCH code is narrow-sense.

    -
    systematic: bool = True

    Indicates if the encoding should be systematic, meaning the codeword is the message with +

    systematic: bool = True

    Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True.

    diff --git a/v0.3.x/api/galois.BCH.__repr__/index.html b/v0.3.x/api/galois.BCH.__repr__/index.html index e41de28b1..84183f1dd 100644 --- a/v0.3.x/api/galois.BCH.__repr__/index.html +++ b/v0.3.x/api/galois.BCH.__repr__/index.html @@ -7738,7 +7738,7 @@
    -galois.BCH.__repr__() str
    +galois.BCH.__repr__() str

    A terse representation of the BCH code.

    Examples

    Construct a binary primitive \(\textrm{BCH}(15, 7)\) code.

    diff --git a/v0.3.x/api/galois.BCH.__str__/index.html b/v0.3.x/api/galois.BCH.__str__/index.html index 00b6e57ee..f44d7e024 100644 --- a/v0.3.x/api/galois.BCH.__str__/index.html +++ b/v0.3.x/api/galois.BCH.__str__/index.html @@ -7738,7 +7738,7 @@
    -galois.BCH.__str__() str
    +galois.BCH.__str__() str

    A formatted string with relevant properties of the BCH code.

    Examples

    Construct a binary primitive \(\textrm{BCH}(15, 7)\) code.

    diff --git a/v0.3.x/api/galois.BCH.c/index.html b/v0.3.x/api/galois.BCH.c/index.html index d07c607be..c7bf007bb 100644 --- a/v0.3.x/api/galois.BCH.c/index.html +++ b/v0.3.x/api/galois.BCH.c/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.c : int
    +property galois.BCH.c : int

    The first consecutive power \(c\) of \(\alpha\) that defines the roots \(\alpha^c, \dots, \alpha^{c+d-2}\) of the generator polynomial \(g(x)\).

    Examples

    diff --git a/v0.3.x/api/galois.BCH.d/index.html b/v0.3.x/api/galois.BCH.d/index.html index 7da318041..768277eb0 100644 --- a/v0.3.x/api/galois.BCH.d/index.html +++ b/v0.3.x/api/galois.BCH.d/index.html @@ -7752,7 +7752,7 @@
    -property galois.BCH.d : int
    +property galois.BCH.d : int

    The minimum distance \(d\) of the \([n, k, d]_q\) code.

    Notes

    The minimum distance of a BCH code may be greater than the design distance, i.e. \(d_{min} \ge d\).

    diff --git a/v0.3.x/api/galois.BCH.decode/index.html b/v0.3.x/api/galois.BCH.decode/index.html index b3938ad28..1353fd380 100644 --- a/v0.3.x/api/galois.BCH.decode/index.html +++ b/v0.3.x/api/galois.BCH.decode/index.html @@ -7836,7 +7836,7 @@
    galois.BCH.decode(codeword: ArrayLike, output: 'message' | 'codeword' = 'message', errors: False = False) FieldArray
    -galois.BCH.decode(codeword: ArrayLike, output: 'message' | 'codeword' = 'message', errors: True = True) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]
    +galois.BCH.decode(codeword: ArrayLike, output: 'message' | 'codeword' = 'message', errors: True = True) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]

    Decodes the codeword \(\mathbf{c}\) into the message \(\mathbf{m}\).

    Parameters:
    @@ -7922,10 +7922,10 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([0, 0, 0, 1, 1, 0, 1], order=2) +Out[3]: GF([1, 1, 0, 0, 1, 0, 0], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0], order=2) +Out[4]: GF([1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0], order=2)

    Corrupt \(t\) symbols of the codeword.

    @@ -7933,12 +7933,12 @@ Out[5]: 2 In [6]: c[0:bch.t] ^= 1; c -Out[6]: GF([1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0], order=2) +Out[6]: GF([0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0], order=2)

    Decode the codeword and recover the message.

    In [7]: d = bch.decode(c); d
    -Out[7]: GF([0, 0, 0, 1, 1, 0, 1], order=2)
    +Out[7]: GF([1, 1, 0, 0, 1, 0, 0], order=2)
     
     In [8]: np.array_equal(d, m)
     Out[8]: True
    @@ -7946,7 +7946,7 @@
     

    Decode the codeword, specifying the number of corrected errors, and recover the message.

    In [9]: d, e = bch.decode(c, errors=True); d, e
    -Out[9]: (GF([0, 0, 0, 1, 1, 0, 1], order=2), 2)
    +Out[9]: (GF([1, 1, 0, 0, 1, 0, 0], order=2), 2)
     
     In [10]: np.array_equal(d, m)
     Out[10]: True
    @@ -7960,10 +7960,10 @@
     In [12]: GF = bch.field
     
     In [13]: m = GF.Random(bch.k - 3); m
    -Out[13]: GF([0, 1, 0, 0], order=2)
    +Out[13]: GF([1, 0, 1, 1], order=2)
     
     In [14]: c = bch.encode(m); c
    -Out[14]: GF([0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0], order=2)
    +Out[14]: GF([1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], order=2)
     

    Corrupt \(t\) symbols of the codeword.

    @@ -7971,12 +7971,12 @@ Out[15]: 2 In [16]: c[0:bch.t] ^= 1; c -Out[16]: GF([1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0], order=2) +Out[16]: GF([0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], order=2)

    Decode the codeword and recover the message.

    In [17]: d = bch.decode(c); d
    -Out[17]: GF([0, 1, 0, 0], order=2)
    +Out[17]: GF([1, 0, 1, 1], order=2)
     
     In [18]: np.array_equal(d, m)
     Out[18]: True
    @@ -7984,7 +7984,7 @@
     

    Decode the codeword, specifying the number of corrected errors, and recover the message.

    In [19]: d, e = bch.decode(c, errors=True); d, e
    -Out[19]: (GF([0, 1, 0, 0], order=2), 2)
    +Out[19]: (GF([1, 0, 1, 1], order=2), 2)
     
     In [20]: np.array_equal(d, m)
     Out[20]: True
    @@ -7999,15 +7999,15 @@
     
     In [23]: m = GF.Random((3, bch.k)); m
     Out[23]: 
    -GF([[1, 1, 0, 1, 1, 0, 0],
    -    [0, 1, 1, 0, 0, 0, 1],
    -    [0, 0, 1, 1, 0, 1, 0]], order=2)
    +GF([[1, 1, 0, 1, 1, 0, 1],
    +    [1, 1, 1, 1, 1, 0, 1],
    +    [0, 1, 0, 0, 1, 0, 0]], order=2)
     
     In [24]: c = bch.encode(m); c
     Out[24]: 
    -GF([[1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1],
    -    [0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1],
    -    [0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0]], order=2)
    +GF([[1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0],
    +    [1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0],
    +    [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]], order=2)
     

    Corrupt the codeword. Add zero errors to the first codeword, one to the second, and two to the @@ -8018,17 +8018,17 @@ In [27]: c Out[27]: -GF([[1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1], - [1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0]], order=2) +GF([[1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0], + [0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0], + [1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]], order=2)

    Decode the codeword and recover the message.

    In [28]: d = bch.decode(c); d
     Out[28]: 
    -GF([[1, 1, 0, 1, 1, 0, 0],
    -    [0, 1, 1, 0, 0, 0, 1],
    -    [0, 0, 1, 1, 0, 1, 0]], order=2)
    +GF([[1, 1, 0, 1, 1, 0, 1],
    +    [1, 1, 1, 1, 1, 0, 1],
    +    [0, 1, 0, 0, 1, 0, 0]], order=2)
     
     In [29]: np.array_equal(d, m)
     Out[29]: True
    @@ -8037,9 +8037,9 @@
     

    Decode the codeword, specifying the number of corrected errors, and recover the message.

    In [30]: d, e = bch.decode(c, errors=True); d, e
     Out[30]: 
    -(GF([[1, 1, 0, 1, 1, 0, 0],
    -     [0, 1, 1, 0, 0, 0, 1],
    -     [0, 0, 1, 1, 0, 1, 0]], order=2),
    +(GF([[1, 1, 0, 1, 1, 0, 1],
    +     [1, 1, 1, 1, 1, 0, 1],
    +     [0, 1, 0, 0, 1, 0, 0]], order=2),
      array([0, 1, 2]))
     
     In [31]: np.array_equal(d, m)
    @@ -8055,14 +8055,14 @@
     
     In [34]: m = GF.Random((3, bch.k - 3)); m
     Out[34]: 
    -GF([[0, 1, 0, 0],
    -    [0, 0, 1, 0],
    +GF([[0, 0, 0, 0],
    +    [1, 0, 1, 1],
         [0, 1, 0, 1]], order=2)
     
     In [35]: c = bch.encode(m); c
     Out[35]: 
    -GF([[0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0],
    -    [0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1],
    +GF([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    +    [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
         [0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1]], order=2)
     
    @@ -8074,16 +8074,16 @@ In [38]: c Out[38]: -GF([[0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0], - [1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1], +GF([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], [1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1]], order=2)

    Decode the codeword and recover the message.

    In [39]: d = bch.decode(c); d
     Out[39]: 
    -GF([[0, 1, 0, 0],
    -    [0, 0, 1, 0],
    +GF([[0, 0, 0, 0],
    +    [1, 0, 1, 1],
         [0, 1, 0, 1]], order=2)
     
     In [40]: np.array_equal(d, m)
    @@ -8093,8 +8093,8 @@
     

    Decode the codeword, specifying the number of corrected errors, and recover the message.

    In [41]: d, e = bch.decode(c, errors=True); d, e
     Out[41]: 
    -(GF([[0, 1, 0, 0],
    -     [0, 0, 1, 0],
    +(GF([[0, 0, 0, 0],
    +     [1, 0, 1, 1],
          [0, 1, 0, 1]], order=2),
      array([0, 1, 2]))
     
    diff --git a/v0.3.x/api/galois.BCH.detect/index.html b/v0.3.x/api/galois.BCH.detect/index.html
    index 5bc41465c..b0783c9d5 100644
    --- a/v0.3.x/api/galois.BCH.detect/index.html
    +++ b/v0.3.x/api/galois.BCH.detect/index.html
    @@ -7792,7 +7792,7 @@
     
     
    -galois.BCH.detect(codeword: ArrayLike) bool | numpy.ndarray
    +galois.BCH.detect(codeword: ArrayLike) bool | numpy.ndarray

    Detects if errors are present in the codeword \(\mathbf{c}\).

    Parameters:
    @@ -7828,10 +7828,10 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([1, 1, 1, 0, 0, 1, 0], order=2) +Out[3]: GF([0, 0, 1, 0, 0, 0, 0], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1], order=2) +Out[4]: GF([0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0], order=2)

    Detect no errors in the valid codeword.

    @@ -7844,7 +7844,7 @@ Out[6]: 5 In [7]: c[0:bch.d - 1] ^= 1; c -Out[7]: GF([0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1], order=2) +Out[7]: GF([1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0], order=2) In [8]: bch.detect(c) Out[8]: True @@ -7858,10 +7858,10 @@ In [10]: GF = bch.field In [11]: m = GF.Random(bch.k - 3); m -Out[11]: GF([1, 1, 0, 1], order=2) +Out[11]: GF([0, 0, 1, 0], order=2) In [12]: c = bch.encode(m); c -Out[12]: GF([1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0], order=2) +Out[12]: GF([0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1], order=2)

    Detect no errors in the valid codeword.

    @@ -7874,7 +7874,7 @@ Out[14]: 5 In [15]: c[0:bch.d - 1] ^= 1; c -Out[15]: GF([0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0], order=2) +Out[15]: GF([1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1], order=2) In [16]: bch.detect(c) Out[16]: True @@ -7889,15 +7889,15 @@ In [19]: m = GF.Random((3, bch.k)); m Out[19]: -GF([[0, 0, 0, 1, 1, 1, 0], - [0, 1, 0, 1, 1, 0, 1], - [1, 1, 1, 1, 0, 1, 1]], order=2) +GF([[1, 0, 1, 0, 1, 1, 0], + [0, 1, 0, 1, 1, 1, 0], + [0, 0, 1, 0, 0, 1, 1]], order=2) In [20]: c = bch.encode(m); c Out[20]: -GF([[0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0], - [0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0], - [1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1]], order=2) +GF([[1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1], + [0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0], + [0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0]], order=2)

    Detect no errors in the valid codewords.

    @@ -7917,9 +7917,9 @@ In [26]: c Out[26]: -GF([[1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0], - [1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0], - [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1]], order=2) +GF([[0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1], + [1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0], + [1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0]], order=2) In [27]: bch.detect(c) Out[27]: array([ True, True, True]) @@ -7934,15 +7934,15 @@ In [30]: m = GF.Random((3, bch.k - 3)); m Out[30]: -GF([[1, 0, 1, 0], - [1, 0, 0, 1], - [1, 1, 1, 1]], order=2) +GF([[1, 1, 0, 0], + [0, 1, 1, 1], + [0, 1, 0, 1]], order=2) In [31]: c = bch.encode(m); c Out[31]: -GF([[1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0], - [1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0], - [1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1]], order=2) +GF([[1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1], + [0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0], + [0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1]], order=2)

    Detect no errors in the valid codewords.

    @@ -7962,9 +7962,9 @@ In [37]: c Out[37]: -GF([[0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0], - [0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0], - [0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1]], order=2) +GF([[0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1], + [1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0], + [1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1]], order=2) In [38]: bch.detect(c) Out[38]: array([ True, True, True]) diff --git a/v0.3.x/api/galois.BCH.encode/index.html b/v0.3.x/api/galois.BCH.encode/index.html index 3cb9657aa..942c95b23 100644 --- a/v0.3.x/api/galois.BCH.encode/index.html +++ b/v0.3.x/api/galois.BCH.encode/index.html @@ -7885,15 +7885,15 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([1, 1, 1, 1, 0, 0, 0], order=2) +Out[3]: GF([1, 1, 1, 0, 1, 1, 1], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1], order=2) +Out[4]: GF([1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0], order=2)

    Compute the parity symbols only.

    In [5]: p = bch.encode(m, output="parity"); p
    -Out[5]: GF([1, 0, 1, 1, 1, 0, 1, 1], order=2)
    +Out[5]: GF([1, 1, 1, 0, 0, 0, 1, 0], order=2)
     
    @@ -7904,15 +7904,15 @@ In [7]: GF = bch.field In [8]: m = GF.Random(bch.k - 3); m -Out[8]: GF([0, 0, 0, 1], order=2) +Out[8]: GF([1, 1, 0, 1], order=2) In [9]: c = bch.encode(m); c -Out[9]: GF([0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1], order=2) +Out[9]: GF([1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0], order=2)

    Compute the parity symbols only.

    In [10]: p = bch.encode(m, output="parity"); p
    -Out[10]: GF([1, 1, 0, 1, 0, 0, 0, 1], order=2)
    +Out[10]: GF([0, 0, 1, 0, 1, 0, 1, 0], order=2)
     
    @@ -7924,23 +7924,23 @@ In [13]: m = GF.Random((3, bch.k)); m Out[13]: -GF([[1, 1, 0, 0, 0, 0, 0], - [0, 1, 0, 1, 1, 0, 1], - [0, 0, 1, 0, 1, 1, 0]], order=2) +GF([[1, 1, 1, 0, 0, 1, 0], + [0, 0, 1, 0, 1, 1, 0], + [1, 0, 1, 1, 0, 0, 0]], order=2) In [14]: c = bch.encode(m); c Out[14]: -GF([[1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0], - [0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0], - [0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1]], order=2) +GF([[1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1], + [0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1], + [1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1]], order=2)

    Compute the parity symbols only.

    In [15]: p = bch.encode(m, output="parity"); p
     Out[15]: 
    -GF([[1, 0, 0, 1, 1, 1, 0, 0],
    -    [0, 1, 0, 1, 1, 1, 1, 0],
    -    [1, 0, 1, 0, 1, 1, 1, 1]], order=2)
    +GF([[1, 1, 0, 1, 0, 1, 0, 1],
    +    [1, 0, 1, 0, 1, 1, 1, 1],
    +    [1, 1, 0, 0, 1, 1, 1, 1]], order=2)
     
    @@ -7952,23 +7952,23 @@ In [18]: m = GF.Random((3, bch.k - 3)); m Out[18]: -GF([[1, 0, 1, 1], - [0, 0, 0, 1], - [0, 1, 0, 1]], order=2) +GF([[1, 1, 1, 1], + [1, 0, 0, 0], + [1, 0, 1, 0]], order=2) In [19]: c = bch.encode(m); c Out[19]: -GF([[1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], - [0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1], - [0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1]], order=2) +GF([[1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1], + [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1], + [1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0]], order=2)

    Compute the parity symbols only.

    In [20]: p = bch.encode(m, output="parity"); p
     Out[20]: 
    -GF([[1, 0, 1, 1, 1, 1, 1, 1],
    -    [1, 1, 0, 1, 0, 0, 0, 1],
    -    [0, 0, 1, 1, 0, 1, 1, 1]], order=2)
    +GF([[0, 1, 0, 1, 1, 0, 0, 1],
    +    [0, 0, 0, 1, 1, 1, 0, 1],
    +    [0, 1, 1, 0, 1, 1, 1, 0]], order=2)
     
    diff --git a/v0.3.x/api/galois.BCH.extension_field/index.html b/v0.3.x/api/galois.BCH.extension_field/index.html index db7347bf5..dbc5db9bd 100644 --- a/v0.3.x/api/galois.BCH.extension_field/index.html +++ b/v0.3.x/api/galois.BCH.extension_field/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.extension_field : type[FieldArray]
    +property galois.BCH.extension_field : type[FieldArray]

    The Galois field \(\mathrm{GF}(q^m)\) that defines the BCH syndrome arithmetic.

    Examples

    Construct a binary \(\textrm{BCH}(15, 7)\) code.

    diff --git a/v0.3.x/api/galois.BCH.field/index.html b/v0.3.x/api/galois.BCH.field/index.html index 099a155d4..706224889 100644 --- a/v0.3.x/api/galois.BCH.field/index.html +++ b/v0.3.x/api/galois.BCH.field/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.field : type[FieldArray]
    +property galois.BCH.field : type[FieldArray]

    The Galois field \(\mathrm{GF}(q)\) that defines the codeword alphabet.

    Examples

    Construct a binary \(\textrm{BCH}(15, 7)\) code.

    diff --git a/v0.3.x/api/galois.BCH.is_narrow_sense/index.html b/v0.3.x/api/galois.BCH.is_narrow_sense/index.html index a4c09f4ec..7ec3f8398 100644 --- a/v0.3.x/api/galois.BCH.is_narrow_sense/index.html +++ b/v0.3.x/api/galois.BCH.is_narrow_sense/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.is_narrow_sense : bool
    +property galois.BCH.is_narrow_sense : bool

    Indicates if the BCH code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of \(\alpha\) starting at 1, that is \(\alpha, \dots, \alpha^{d-1}\).

    Examples

    diff --git a/v0.3.x/api/galois.BCH.is_primitive/index.html b/v0.3.x/api/galois.BCH.is_primitive/index.html index a7a9f7665..0a337fe21 100644 --- a/v0.3.x/api/galois.BCH.is_primitive/index.html +++ b/v0.3.x/api/galois.BCH.is_primitive/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.is_primitive : bool
    +property galois.BCH.is_primitive : bool

    Indicates if the BCH code is primitive, meaning \(n = q^m - 1\).

    Examples

    Construct a binary primitive \(\textrm{BCH}(15, 7)\) code.

    diff --git a/v0.3.x/api/galois.BCH.is_systematic/index.html b/v0.3.x/api/galois.BCH.is_systematic/index.html index 1f49555d1..00e0970dd 100644 --- a/v0.3.x/api/galois.BCH.is_systematic/index.html +++ b/v0.3.x/api/galois.BCH.is_systematic/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.is_systematic : bool
    +property galois.BCH.is_systematic : bool

    Indicates if the code is systematic, meaning the codewords have parity appended to the message.

    Examples

    Construct a non-primitive \(\textrm{BCH}(13, 4)\) systematic code over \(\mathrm{GF}(3)\).

    diff --git a/v0.3.x/api/galois.BCH.k/index.html b/v0.3.x/api/galois.BCH.k/index.html index 929290149..514016e96 100644 --- a/v0.3.x/api/galois.BCH.k/index.html +++ b/v0.3.x/api/galois.BCH.k/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.k : int
    +property galois.BCH.k : int

    The message size \(k\) of the \([n, k, d]_q\) code. This is also called the code dimension.

    Examples

    Construct a binary \(\textrm{BCH}(15, 7)\) code.

    diff --git a/v0.3.x/api/galois.BCH.n/index.html b/v0.3.x/api/galois.BCH.n/index.html index 8a0899bd7..e1e3dc427 100644 --- a/v0.3.x/api/galois.BCH.n/index.html +++ b/v0.3.x/api/galois.BCH.n/index.html @@ -7738,7 +7738,7 @@
    -property galois.BCH.n : int
    +property galois.BCH.n : int

    The codeword size \(n\) of the \([n, k, d]_q\) code. This is also called the code length.

    Examples

    Construct a binary \(\textrm{BCH}(15, 7)\) code.

    diff --git a/v0.3.x/api/galois.BCH.t/index.html b/v0.3.x/api/galois.BCH.t/index.html index 1a552bd11..42968fa5f 100644 --- a/v0.3.x/api/galois.BCH.t/index.html +++ b/v0.3.x/api/galois.BCH.t/index.html @@ -7752,7 +7752,7 @@
    -property galois.BCH.t : int
    +property galois.BCH.t : int

    The error-correcting capability \(t\) of the code.

    Notes

    The code can correct \(t\) symbol errors in a codeword.

    diff --git a/v0.3.x/api/galois.BCH/index.html b/v0.3.x/api/galois.BCH/index.html index 35a37d721..93db9bd77 100644 --- a/v0.3.x/api/galois.BCH/index.html +++ b/v0.3.x/api/galois.BCH/index.html @@ -8063,19 +8063,19 @@

    Encode a message.

    In [3]: m = GF.Random(bch.k); m
    -Out[3]: GF([0, 0, 1, 1, 0, 1, 1], order=2)
    +Out[3]: GF([1, 0, 0, 0, 1, 1, 1], order=2)
     
     In [4]: c = bch.encode(m); c
    -Out[4]: GF([0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1], order=2)
    +Out[4]: GF([1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0], order=2)
     

    Corrupt the codeword and decode the message.

    # Corrupt the first symbol in the codeword
     In [5]: c[0] ^= 1; c
    -Out[5]: GF([1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1], order=2)
    +Out[5]: GF([0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0], order=2)
     
     In [6]: dec_m = bch.decode(c); dec_m
    -Out[6]: GF([0, 0, 1, 1, 0, 1, 1], order=2)
    +Out[6]: GF([1, 0, 0, 0, 1, 1, 1], order=2)
     
     In [7]: np.array_equal(dec_m, m)
     Out[7]: True
    @@ -8083,7 +8083,7 @@
     

    Instruct the decoder to return the number of corrected symbol errors.

    In [8]: dec_m, N = bch.decode(c, errors=True); dec_m, N
    -Out[8]: (GF([0, 0, 1, 1, 0, 1, 1], order=2), 1)
    +Out[8]: (GF([1, 0, 0, 0, 1, 1, 1], order=2), 1)
     
     In [9]: np.array_equal(dec_m, m)
     Out[9]: True
    @@ -8092,7 +8092,7 @@
     

    Constructors

    -BCH(n: int, k: int | None = None, d: int | None = None, ...)
    +BCH(n: int, k: int | None = None, d: int | None = None, ...)

    Constructs a general \(\textrm{BCH}(n, k)\) code over \(\mathrm{GF}(q)\).

    @@ -8101,13 +8101,13 @@

    ConstructorsString representation

    -__repr__() str
    +__repr__() str

    A terse representation of the BCH code.

    -__str__() str
    +__str__() str

    A formatted string with relevant properties of the BCH code.

    @@ -8118,13 +8118,13 @@

    Methods decode(codeword: ArrayLike, ...) FieldArray
    -decode(...) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]
    +decode(...) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]

    Decodes the codeword \(\mathbf{c}\) into the message \(\mathbf{m}\).

    -detect(codeword: ArrayLike) bool | numpy.ndarray
    +detect(codeword: ArrayLike) bool | numpy.ndarray

    Detects if errors are present in the codeword \(\mathbf{c}\).

    @@ -8139,37 +8139,37 @@

    MethodsProperties

    -property d : int
    +property d : int

    The minimum distance \(d\) of the \([n, k, d]_q\) code.

    -property extension_field : type[FieldArray]
    +property extension_field : type[FieldArray]

    The Galois field \(\mathrm{GF}(q^m)\) that defines the BCH syndrome arithmetic.

    -property field : type[FieldArray]
    +property field : type[FieldArray]

    The Galois field \(\mathrm{GF}(q)\) that defines the codeword alphabet.

    -property k : int
    +property k : int

    The message size \(k\) of the \([n, k, d]_q\) code. This is also called the code dimension.

    -property n : int
    +property n : int

    The codeword size \(n\) of the \([n, k, d]_q\) code. This is also called the code length.

    -property t : int
    +property t : int

    The error-correcting capability \(t\) of the code.

    @@ -8178,20 +8178,20 @@

    PropertiesAttributes

    -property is_narrow_sense : bool
    +property is_narrow_sense : bool

    Indicates if the BCH code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of \(\alpha\) starting at 1, that is \(\alpha, \dots, \alpha^{d-1}\).

    -property is_primitive : bool
    +property is_primitive : bool

    Indicates if the BCH code is primitive, meaning \(n = q^m - 1\).

    -property is_systematic : bool
    +property is_systematic : bool

    Indicates if the code is systematic, meaning the codewords have parity appended to the message.

    @@ -8223,7 +8223,7 @@

    Polynomials
    -property c : int
    +property c : int

    The first consecutive power \(c\) of \(\alpha\) that defines the roots \(\alpha^c, \dots, \alpha^{c+d-2}\) of the generator polynomial \(g(x)\).

    diff --git a/v0.3.x/api/galois.FLFSR.Taps/index.html b/v0.3.x/api/galois.FLFSR.Taps/index.html index 0d1e5a1f7..538f39488 100644 --- a/v0.3.x/api/galois.FLFSR.Taps/index.html +++ b/v0.3.x/api/galois.FLFSR.Taps/index.html @@ -7806,14 +7806,14 @@
    -classmethod galois.FLFSR.Taps(taps: FieldArray, state: ArrayLike | None = None) Self
    +classmethod galois.FLFSR.Taps(taps: FieldArray, state: ArrayLike | None = None) Self

    Constructs a Fibonacci LFSR from its taps \(T = [c_{n-1}, c_{n-2}, \dots, c_1, c_0]\).

    Parameters:
    taps: FieldArray

    The shift register taps \(T = [c_{n-1}, c_{n-2}, \dots, c_1, c_0]\).

    -
    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None +

    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to all ones.

    diff --git a/v0.3.x/api/galois.FLFSR.__init__/index.html b/v0.3.x/api/galois.FLFSR.__init__/index.html index 5e2498753..0c92e2453 100644 --- a/v0.3.x/api/galois.FLFSR.__init__/index.html +++ b/v0.3.x/api/galois.FLFSR.__init__/index.html @@ -7792,7 +7792,7 @@
    -galois.FLFSR(feedback_poly: Poly, state: ArrayLike | None = None)
    +galois.FLFSR(feedback_poly: Poly, state: ArrayLike | None = None)

    Constructs a Fibonacci LFSR from its feedback polynomial \(f(x)\).

    Parameters:
    @@ -7800,7 +7800,7 @@
    feedback_poly: Poly

    The feedback polynomial \(f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - \dots - c_{n-2}x^{2} - c_{n-1}x + 1\).

    -
    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None +

    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to all ones.

    diff --git a/v0.3.x/api/galois.FLFSR.__repr__/index.html b/v0.3.x/api/galois.FLFSR.__repr__/index.html index 61b91a862..5bd04e948 100644 --- a/v0.3.x/api/galois.FLFSR.__repr__/index.html +++ b/v0.3.x/api/galois.FLFSR.__repr__/index.html @@ -7738,7 +7738,7 @@
    -galois.FLFSR.__repr__() str
    +galois.FLFSR.__repr__() str

    A terse representation of the Fibonacci LFSR.

    Examples

    In [1]: c = galois.primitive_poly(7, 4); c
    diff --git a/v0.3.x/api/galois.FLFSR.__str__/index.html b/v0.3.x/api/galois.FLFSR.__str__/index.html
    index ca1c63fbc..30baf521d 100644
    --- a/v0.3.x/api/galois.FLFSR.__str__/index.html
    +++ b/v0.3.x/api/galois.FLFSR.__str__/index.html
    @@ -7738,7 +7738,7 @@
     
     
    -galois.FLFSR.__str__() str
    +galois.FLFSR.__str__() str

    A formatted string of relevant properties of the Fibonacci LFSR.

    Examples

    In [1]: c = galois.primitive_poly(7, 4); c
    diff --git a/v0.3.x/api/galois.FLFSR.field/index.html b/v0.3.x/api/galois.FLFSR.field/index.html
    index 2a910d164..4b527862a 100644
    --- a/v0.3.x/api/galois.FLFSR.field/index.html
    +++ b/v0.3.x/api/galois.FLFSR.field/index.html
    @@ -7738,7 +7738,7 @@
     
     
    -property galois.FLFSR.field : type[FieldArray]
    +property galois.FLFSR.field : type[FieldArray]

    The FieldArray subclass for the finite field that defines the linear arithmetic.

    Examples

    In [1]: c = galois.primitive_poly(7, 4); c
    diff --git a/v0.3.x/api/galois.FLFSR.order/index.html b/v0.3.x/api/galois.FLFSR.order/index.html
    index 2261209f8..665cf8205 100644
    --- a/v0.3.x/api/galois.FLFSR.order/index.html
    +++ b/v0.3.x/api/galois.FLFSR.order/index.html
    @@ -7688,7 +7688,7 @@
     
     
    -property galois.FLFSR.order : int
    +property galois.FLFSR.order : int

    The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it.

    diff --git a/v0.3.x/api/galois.FLFSR.reset/index.html b/v0.3.x/api/galois.FLFSR.reset/index.html index d43dcc04c..17ac17777 100644 --- a/v0.3.x/api/galois.FLFSR.reset/index.html +++ b/v0.3.x/api/galois.FLFSR.reset/index.html @@ -7778,12 +7778,12 @@
    -galois.FLFSR.reset(state: ArrayLike | None = None)
    +galois.FLFSR.reset(state: ArrayLike | None = None)

    Resets the Fibonacci LFSR state to the specified state.

    Parameters:
    -
    state: ArrayLike | None = None

    The state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which +

    state: ArrayLike | None = None

    The state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to the initial state.

    diff --git a/v0.3.x/api/galois.FLFSR.step/index.html b/v0.3.x/api/galois.FLFSR.step/index.html index 4f6cf1c62..d95f05e81 100644 --- a/v0.3.x/api/galois.FLFSR.step/index.html +++ b/v0.3.x/api/galois.FLFSR.step/index.html @@ -7792,12 +7792,12 @@
    -galois.FLFSR.step(steps: int = 1) FieldArray
    +galois.FLFSR.step(steps: int = 1) FieldArray

    Produces the next steps output symbols.

    Parameters:
    -
    steps: int = 1

    The direction and number of output symbols to produce. The default is 1. If negative, the +

    steps: int = 1

    The direction and number of output symbols to produce. The default is 1. If negative, the Fibonacci LFSR will step backwards.

    diff --git a/v0.3.x/api/galois.FLFSR/index.html b/v0.3.x/api/galois.FLFSR/index.html index c25a5790d..a6f551ccc 100644 --- a/v0.3.x/api/galois.FLFSR/index.html +++ b/v0.3.x/api/galois.FLFSR/index.html @@ -8167,7 +8167,7 @@

    Constructors

    -FLFSR(feedback_poly: Poly, state: ArrayLike | None = None)
    +FLFSR(feedback_poly: Poly, state: ArrayLike | None = None)

    Constructs a Fibonacci LFSR from its feedback polynomial \(f(x)\).

    @@ -8182,13 +8182,13 @@

    String representation

    -__repr__() str
    +__repr__() str

    A terse representation of the Fibonacci LFSR.

    -__str__() str
    +__str__() str

    A formatted string of relevant properties of the Fibonacci LFSR.

    @@ -8197,13 +8197,13 @@

    String representationMethods

    -reset(state: ArrayLike | None = None)
    +reset(state: ArrayLike | None = None)

    Resets the Fibonacci LFSR state to the specified state.

    -step(steps: int = 1) FieldArray
    +step(steps: int = 1) FieldArray

    Produces the next steps output symbols.

    @@ -8218,13 +8218,13 @@

    MethodsProperties

    -property field : type[FieldArray]
    +property field : type[FieldArray]

    The FieldArray subclass for the finite field that defines the linear arithmetic.

    -property order : int
    +property order : int

    The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it.

    diff --git a/v0.3.x/api/galois.Field/index.html b/v0.3.x/api/galois.Field/index.html index a19adf6a8..cd8343740 100644 --- a/v0.3.x/api/galois.Field/index.html +++ b/v0.3.x/api/galois.Field/index.html @@ -7684,9 +7684,9 @@
    -galois.Field(order: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]
    +galois.Field(order: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]
    -galois.Field(characteristic: int, degree: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]
    +galois.Field(characteristic: int, degree: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]

    Alias of GF().

    diff --git a/v0.3.x/api/galois.FieldArray.Identity/index.html b/v0.3.x/api/galois.FieldArray.Identity/index.html index 8ec55fa3a..7286fb1c0 100644 --- a/v0.3.x/api/galois.FieldArray.Identity/index.html +++ b/v0.3.x/api/galois.FieldArray.Identity/index.html @@ -7806,14 +7806,14 @@
    -classmethod galois.FieldArray.Identity(size: int, dtype: DTypeLike | None = None) Self
    +classmethod galois.FieldArray.Identity(size: int, dtype: DTypeLike | None = None) Self

    Creates an \(n \times n\) identity matrix.

    Parameters:
    -
    size: int

    The size \(n\) along one dimension of the identity matrix.

    +
    size: int

    The size \(n\) along one dimension of the identity matrix.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    diff --git a/v0.3.x/api/galois.FieldArray.Ones/index.html b/v0.3.x/api/galois.FieldArray.Ones/index.html index c46503c9a..c11f66151 100644 --- a/v0.3.x/api/galois.FieldArray.Ones/index.html +++ b/v0.3.x/api/galois.FieldArray.Ones/index.html @@ -7806,14 +7806,14 @@
    -classmethod galois.FieldArray.Ones(shape: ShapeLike, dtype: DTypeLike | None = None) Self
    +classmethod galois.FieldArray.Ones(shape: ShapeLike, dtype: DTypeLike | None = None) Self

    Creates an array of all ones.

    Parameters:
    shape: ShapeLike

    A NumPy-compliant shape tuple.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    diff --git a/v0.3.x/api/galois.FieldArray.Random/index.html b/v0.3.x/api/galois.FieldArray.Random/index.html index 4cf7db52d..cd9c98425 100644 --- a/v0.3.x/api/galois.FieldArray.Random/index.html +++ b/v0.3.x/api/galois.FieldArray.Random/index.html @@ -7848,7 +7848,7 @@
    -classmethod galois.FieldArray.Random(shape: ShapeLike = (), low: ElementLike = 0, high: ElementLike | None = None, seed: int | Generator | None = None, dtype: DTypeLike | None = None) Self
    +classmethod galois.FieldArray.Random(shape: ShapeLike = (), low: ElementLike = 0, high: ElementLike | None = None, seed: int | Generator | None = None, dtype: DTypeLike | None = None) Self

    Creates an array with random elements.

    Parameters:
    @@ -7857,13 +7857,13 @@
    low: ElementLike = 0

    The smallest element (inclusive). The default is 0.

    -
    high: ElementLike | None = None

    The largest element (exclusive). The default is None which represents order.

    +
    high: ElementLike | None = None

    The largest element (exclusive). The default is None which represents order.

    -
    seed: int | Generator | None = None

    Non-negative integer used to initialize the PRNG. The default is None which means that +

    seed: int | Generator | None = None

    Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    @@ -7879,8 +7879,8 @@ In [2]: GF.Random((2, 5)) Out[2]: -GF([[18, 30, 16, 10, 21], - [ 9, 22, 26, 5, 30]], order=31) +GF([[ 1, 27, 15, 18, 25], + [29, 8, 19, 11, 25]], order=31)

    Generate a random array with a specified seed. This produces repeatable outputs.

    diff --git a/v0.3.x/api/galois.FieldArray.Range/index.html b/v0.3.x/api/galois.FieldArray.Range/index.html index 3fb22fc31..bf4fa1bc1 100644 --- a/v0.3.x/api/galois.FieldArray.Range/index.html +++ b/v0.3.x/api/galois.FieldArray.Range/index.html @@ -7834,7 +7834,7 @@
    -classmethod galois.FieldArray.Range(start: ElementLike, stop: ElementLike, step: int = 1, dtype: DTypeLike | None = None) Self
    +classmethod galois.FieldArray.Range(start: ElementLike, stop: ElementLike, step: int = 1, dtype: DTypeLike | None = None) Self

    Creates a 1-D array with a range of elements.

    Parameters:
    @@ -7843,9 +7843,9 @@
    stop: ElementLike

    The stopping element (exclusive).

    -
    step: int = 1

    The increment between elements. The default is 1.

    +
    step: int = 1

    The increment between elements. The default is 1.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    diff --git a/v0.3.x/api/galois.FieldArray.Vandermonde/index.html b/v0.3.x/api/galois.FieldArray.Vandermonde/index.html index a8edf325a..22d32de8f 100644 --- a/v0.3.x/api/galois.FieldArray.Vandermonde/index.html +++ b/v0.3.x/api/galois.FieldArray.Vandermonde/index.html @@ -7834,18 +7834,18 @@
    -classmethod galois.FieldArray.Vandermonde(element: ElementLike, rows: int, cols: int, dtype: DTypeLike | None = None) Self
    +classmethod galois.FieldArray.Vandermonde(element: ElementLike, rows: int, cols: int, dtype: DTypeLike | None = None) Self

    Creates an \(m \times n\) Vandermonde matrix of \(a \in \mathrm{GF}(q)\).

    Parameters:
    element: ElementLike

    An element \(a\) of \(\mathrm{GF}(q)\).

    -
    rows: int

    The number of rows \(m\) in the Vandermonde matrix.

    +
    rows: int

    The number of rows \(m\) in the Vandermonde matrix.

    -
    cols: int

    The number of columns \(n\) in the Vandermonde matrix.

    +
    cols: int

    The number of columns \(n\) in the Vandermonde matrix.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    diff --git a/v0.3.x/api/galois.FieldArray.Vector/index.html b/v0.3.x/api/galois.FieldArray.Vector/index.html index 3c849c0e9..80e70a263 100644 --- a/v0.3.x/api/galois.FieldArray.Vector/index.html +++ b/v0.3.x/api/galois.FieldArray.Vector/index.html @@ -7820,7 +7820,7 @@
    -classmethod galois.FieldArray.Vector(array: ArrayLike, dtype: DTypeLike | None = None) FieldArray
    +classmethod galois.FieldArray.Vector(array: ArrayLike, dtype: DTypeLike | None = None) FieldArray

    Converts length-\(m\) vectors over the prime subfield \(\mathrm{GF}(p)\) to an array over \(\mathrm{GF}(p^m)\).

    @@ -7830,7 +7830,7 @@ (n1, n2, m) has output shape (n1, n2). By convention, the vectors are ordered from degree \(m-1\) to degree 0.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    diff --git a/v0.3.x/api/galois.FieldArray.Zeros/index.html b/v0.3.x/api/galois.FieldArray.Zeros/index.html index 5af02da89..bc0b77d57 100644 --- a/v0.3.x/api/galois.FieldArray.Zeros/index.html +++ b/v0.3.x/api/galois.FieldArray.Zeros/index.html @@ -7806,14 +7806,14 @@
    -classmethod galois.FieldArray.Zeros(shape: ShapeLike, dtype: DTypeLike | None = None) Self
    +classmethod galois.FieldArray.Zeros(shape: ShapeLike, dtype: DTypeLike | None = None) Self

    Creates an array of all zeros.

    Parameters:
    shape: ShapeLike

    A NumPy-compliant shape tuple.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    diff --git a/v0.3.x/api/galois.FieldArray.__init__/index.html b/v0.3.x/api/galois.FieldArray.__init__/index.html index ebc3d10c5..1630740d9 100644 --- a/v0.3.x/api/galois.FieldArray.__init__/index.html +++ b/v0.3.x/api/galois.FieldArray.__init__/index.html @@ -7834,22 +7834,22 @@
    -galois.FieldArray(x: ElementLike | ArrayLike, dtype: DTypeLike | None = None, copy: bool = True, order: 'K' | 'A' | 'C' | 'F' = 'K', ndmin: int = 0)
    +galois.FieldArray(x: ElementLike | ArrayLike, dtype: DTypeLike | None = None, copy: bool = True, order: 'K' | 'A' | 'C' | 'F' = 'K', ndmin: int = 0)

    Creates an array over \(\mathrm{GF}(p^m)\).

    Parameters:
    x: ElementLike | ArrayLike

    A finite field scalar or array.

    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    -
    copy: bool = True

    The copy keyword argument from numpy.array(). The default is True.

    +
    copy: bool = True

    The copy keyword argument from numpy.array(). The default is True.

    order: 'K' | 'A' | 'C' | 'F' = 'K'

    The order keyword argument from numpy.array(). The default is "K".

    -
    ndmin: int = 0

    The ndmin keyword argument from numpy.array(). The default is 0.

    +
    ndmin: int = 0

    The ndmin keyword argument from numpy.array(). The default is 0.

    diff --git a/v0.3.x/api/galois.FieldArray.__repr__/index.html b/v0.3.x/api/galois.FieldArray.__repr__/index.html index f898baf9a..e399bcb5f 100644 --- a/v0.3.x/api/galois.FieldArray.__repr__/index.html +++ b/v0.3.x/api/galois.FieldArray.__repr__/index.html @@ -7752,7 +7752,7 @@
    -galois.FieldArray.__repr__() str
    +galois.FieldArray.__repr__() str

    Displays the array specifying the class and finite field order.

    Notes

    This function prepends GF( and appends , order=p^m).

    diff --git a/v0.3.x/api/galois.FieldArray.__str__/index.html b/v0.3.x/api/galois.FieldArray.__str__/index.html index 13ad9435e..bcc7c8654 100644 --- a/v0.3.x/api/galois.FieldArray.__str__/index.html +++ b/v0.3.x/api/galois.FieldArray.__str__/index.html @@ -7752,7 +7752,7 @@
    -galois.FieldArray.__str__() str
    +galois.FieldArray.__str__() str

    Displays the array without specifying the class or finite field order.

    Notes

    This function does not prepend GF( and or append , order=p^m). It also omits the comma separators.

    diff --git a/v0.3.x/api/galois.FieldArray.additive_order/index.html b/v0.3.x/api/galois.FieldArray.additive_order/index.html index d8980d651..998ce28a9 100644 --- a/v0.3.x/api/galois.FieldArray.additive_order/index.html +++ b/v0.3.x/api/galois.FieldArray.additive_order/index.html @@ -7766,7 +7766,7 @@
    -galois.FieldArray.additive_order() int | numpy.ndarray
    +galois.FieldArray.additive_order() int | numpy.ndarray

    Computes the additive order of each element in \(x\).

    Returns:
    diff --git a/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html b/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html index bbf96f1c9..08f19ccdd 100644 --- a/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html +++ b/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html @@ -7820,17 +7820,17 @@
    -classmethod galois.FieldArray.arithmetic_table(operation: '+' | '-' | '*' | '/', x: galois._fields._array.FieldArray | None = None, y: galois._fields._array.FieldArray | None = None) str
    +classmethod galois.FieldArray.arithmetic_table(operation: '+' | '-' | '*' | '/', x: galois._fields._array.FieldArray | None = None, y: galois._fields._array.FieldArray | None = None) str

    Generates the specified arithmetic table for the finite field.

    Parameters:
    operation: '+' | '-' | '*' | '/'

    The arithmetic operation.

    -
    x: galois._fields._array.FieldArray | None = None

    Optionally specify the \(x\) values for the arithmetic table. The default is None +

    x: galois._fields._array.FieldArray | None = None

    Optionally specify the \(x\) values for the arithmetic table. The default is None which represents \(\{0, \dots, p^m - 1\}\).

    -
    y: galois._fields._array.FieldArray | None = None

    Optionally specify the \(y\) values for the arithmetic table. The default is None +

    y: galois._fields._array.FieldArray | None = None

    Optionally specify the \(y\) values for the arithmetic table. The default is None which represents \(\{0, \dots, p^m - 1\}\) for addition, subtraction, and multiplication and \(\{1, \dots, p^m - 1\}\) for division.

    diff --git a/v0.3.x/api/galois.FieldArray.characteristic/index.html b/v0.3.x/api/galois.FieldArray.characteristic/index.html index 79260dd75..5b9bcd17e 100644 --- a/v0.3.x/api/galois.FieldArray.characteristic/index.html +++ b/v0.3.x/api/galois.FieldArray.characteristic/index.html @@ -7752,7 +7752,7 @@
    -class property galois.FieldArray.characteristic : int
    +class property galois.FieldArray.characteristic : int

    The prime characteristic \(p\) of the Galois field \(\mathrm{GF}(p^m)\).

    Notes

    Adding \(p\) copies of any element will always result in 0.

    diff --git a/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html b/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html index 02f1040a8..35fe84352 100644 --- a/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html +++ b/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html @@ -7804,7 +7804,7 @@ polynomial \(c_A(x)\) of \(\mathbf{A}\) over \(\mathrm{GF}(p^m)\).

    Raises:
    -

    ValueError – If the array is not a single finite field element (scalar 0-D array) or a square +

    ValueError – If the array is not a single finite field element (scalar 0-D array) or a square \(n \times n\) matrix (2-D array).

    @@ -7835,10 +7835,10 @@
    In [1]: GF = galois.GF(3**5)
     
     In [2]: a = GF.Random(); a
    -Out[2]: GF(204, order=3^5)
    +Out[2]: GF(105, order=3^5)
     
     In [3]: poly = a.characteristic_poly(); poly
    -Out[3]: Poly(x^5 + x^4 + x^2 + 1, GF(3))
    +Out[3]: Poly(x^5 + 2x^4 + 2x^3 + 2, GF(3))
     
     # The characteristic polynomial annihilates a
     In [4]: poly(a, field=GF)
    @@ -7850,10 +7850,10 @@
     
    In [5]: GF = galois.GF(3**5, repr="poly")
     
     In [6]: a = GF.Random(); a
    -Out[6]: GF(2α^4 + 2α, order=3^5)
    +Out[6]: GF(2α^4 + α^3 + 2α^2 + α + 2, order=3^5)
     
     In [7]: poly = a.characteristic_poly(); poly
    -Out[7]: Poly(x^5 + x^4 + 2x^3 + 1, GF(3))
    +Out[7]: Poly(x^5 + x^3 + 2x^2 + 1, GF(3))
     
     # The characteristic polynomial annihilates a
     In [8]: poly(a, field=GF)
    @@ -7865,10 +7865,10 @@
     
    In [9]: GF = galois.GF(3**5, repr="power")
     
     In [10]: a = GF.Random(); a
    -Out[10]: GF(α^228, order=3^5)
    +Out[10]: GF(α^225, order=3^5)
     
     In [11]: poly = a.characteristic_poly(); poly
    -Out[11]: Poly(x^5 + 2x^4 + x^3 + 2x^2 + 2x + 2, GF(3))
    +Out[11]: Poly(x^5 + x^3 + 2x^2 + 2x + 1, GF(3))
     
     # The characteristic polynomial annihilates a
     In [12]: poly(a, field=GF)
    @@ -7890,12 +7890,12 @@
     
     In [14]: A = GF.Random((3,3)); A
     Out[14]: 
    -GF([[185, 194, 118],
    -    [177, 228, 226],
    -    [ 76,  35, 135]], order=3^5)
    +GF([[ 27,  13, 217],
    +    [154, 140,  80],
    +    [190, 102, 192]], order=3^5)
     
     In [15]: poly = A.characteristic_poly(); poly
    -Out[15]: Poly(x^3 + 139x^2 + 4x + 240, GF(3^5))
    +Out[15]: Poly(x^3 + 58x^2 + 232x + 13, GF(3^5))
     
     # The x^0 coefficient is det(-A)
     In [16]: poly.coeffs[-1] == np.linalg.det(-A)
    @@ -7919,15 +7919,13 @@
     
     In [20]: A = GF.Random((3,3)); A
     Out[20]: 
    -GF([[2α^4 + 2α^3 + 2α^2 + 2α + 1,       α^4 + 2α^3 + 2α^2 + 2,
    -                 2α^3 + 2α^2 + α],
    -    [       α^4 + α^3 + 2α^2 + 2,                       α + 2,
    -                         α^2 + 1],
    -    [       2α^3 + 2α^2 + 2α + 1,               α^4 + α^2 + 1,
    -                  2α^4 + α^2 + 2]], order=3^5)
    +GF([[α^4 + 2α^3 + 2α^2 + 2,        2α^3 + α^2 + 2,    2α^3 + α^2 + α + 2],
    +    [     α^4 + α^3 + 2α^2,            2α^3 + α^2,               α^3 + α],
    +    [         α^4 + 2α + 1,    α^4 + α^3 + 2α + 1,  α^4 + α^3 + α^2 + 2α]],
    +   order=3^5)
     
     In [21]: poly = A.characteristic_poly(); poly
    -Out[21]: Poly(x^3 + (2α^4 + α^3 + 1)x^2 + (α^4 + 2α^2 + 2α + 1)x + (α^4 + α^3 + α^2 + 2α), GF(3^5))
    +Out[21]: Poly(x^3 + (α^4 + α^3 + 2α^2 + α + 1)x^2 + (α^2 + α + 2)x + (α^4 + α^3 + 2α^2 + 2α), GF(3^5))
     
     # The x^0 coefficient is det(-A)
     In [22]: poly.coeffs[-1] == np.linalg.det(-A)
    @@ -7951,12 +7949,12 @@
     
     In [26]: A = GF.Random((3,3)); A
     Out[26]: 
    -GF([[α^238,  α^56, α^160],
    -    [α^204,  α^62, α^214],
    -    [α^122, α^193, α^171]], order=3^5)
    +GF([[ α^38, α^196, α^149],
    +    [ α^61, α^101,  α^31],
    +    [α^139,  α^32, α^233]], order=3^5)
     
     In [27]: poly = A.characteristic_poly(); poly
    -Out[27]: Poly(x^3 + (α^57)x^2 + (α^44)x + α^234, GF(3^5))
    +Out[27]: Poly(x^3 + (α^64)x^2 + (α^212)x + α^37, GF(3^5))
     
     # The x^0 coefficient is det(-A)
     In [28]: poly.coeffs[-1] == np.linalg.det(-A)
    diff --git a/v0.3.x/api/galois.FieldArray.column_space/index.html b/v0.3.x/api/galois.FieldArray.column_space/index.html
    index 01588fb3f..b0f9b895a 100644
    --- a/v0.3.x/api/galois.FieldArray.column_space/index.html
    +++ b/v0.3.x/api/galois.FieldArray.column_space/index.html
    @@ -7766,7 +7766,7 @@
     
     
    -galois.FieldArray.column_space() Self
    +galois.FieldArray.column_space() Self

    Computes the column space of the matrix \(\mathbf{A}\).

    Returns:
    @@ -7790,9 +7790,9 @@ In [3]: A = GF.Random((m, n)); A Out[3]: -GF([[ 9, 15, 16, 30, 17], - [17, 22, 24, 24, 4], - [ 9, 28, 1, 8, 15]], order=31) +GF([[24, 14, 29, 29, 0], + [ 7, 9, 8, 5, 4], + [ 6, 26, 15, 11, 17]], order=31) In [4]: C = A.column_space(); C Out[4]: @@ -7804,8 +7804,8 @@

    The dimension of the column space and null space sum to \(n\).

    In [5]: N = A.null_space(); N
     Out[5]: 
    -GF([[ 1,  0, 25, 29,  5],
    -    [ 0,  1, 18, 28, 13]], order=31)
    +GF([[ 1,  0, 16, 27, 10],
    +    [ 0,  1,  9, 29, 21]], order=31)
     
     In [6]: C.shape[0] + N.shape[0] == n
     Out[6]: True
    diff --git a/v0.3.x/api/galois.FieldArray.compile/index.html b/v0.3.x/api/galois.FieldArray.compile/index.html
    index d176f46c0..8c71fbf83 100644
    --- a/v0.3.x/api/galois.FieldArray.compile/index.html
    +++ b/v0.3.x/api/galois.FieldArray.compile/index.html
    @@ -7783,7 +7783,7 @@
     the "jit-calculate" mode is slower than "jit-lookup".

  • "python-calculate": Uses pure-Python ufuncs with explicit calculation. This is reserved for fields whose elements cannot be represented with numpy.int64 and instead use numpy.object_ -with Python int (which has arbitrary precision).

  • +with Python int (which has arbitrary precision).

    diff --git a/v0.3.x/api/galois.FieldArray.degree/index.html b/v0.3.x/api/galois.FieldArray.degree/index.html index 8673a591b..9ca7c0069 100644 --- a/v0.3.x/api/galois.FieldArray.degree/index.html +++ b/v0.3.x/api/galois.FieldArray.degree/index.html @@ -7752,7 +7752,7 @@
    -class property galois.FieldArray.degree : int
    +class property galois.FieldArray.degree : int

    The extension degree \(m\) of the Galois field \(\mathrm{GF}(p^m)\).

    Notes

    The degree is a positive integer. For prime fields, the degree is 1.

    diff --git a/v0.3.x/api/galois.FieldArray.dtypes/index.html b/v0.3.x/api/galois.FieldArray.dtypes/index.html index cf39e0c9c..9b6b187a4 100644 --- a/v0.3.x/api/galois.FieldArray.dtypes/index.html +++ b/v0.3.x/api/galois.FieldArray.dtypes/index.html @@ -7752,7 +7752,7 @@
    -class property galois.FieldArray.dtypes : list[numpy.dtype]
    +class property galois.FieldArray.dtypes : list[numpy.dtype]

    List of valid integer numpy.dtype values that are compatible with this finite field.

    Notes

    Creating an array with an unsupported dtype will raise a TypeError exception.

    @@ -7778,7 +7778,7 @@ Out[2]: [numpy.uint16, numpy.uint32, numpy.int16, numpy.int32, numpy.int64]
    -

    Large fields must use numpy.object_ which uses Python int for its unlimited size.

    +

    Large fields must use numpy.object_ which uses Python int for its unlimited size.

    In [3]: GF = galois.GF(2**100); GF.dtypes
     Out[3]: [numpy.object_]
     
    diff --git a/v0.3.x/api/galois.FieldArray.is_extension_field/index.html b/v0.3.x/api/galois.FieldArray.is_extension_field/index.html
    index 25fa5752c..445cc914a 100644
    --- a/v0.3.x/api/galois.FieldArray.is_extension_field/index.html
    +++ b/v0.3.x/api/galois.FieldArray.is_extension_field/index.html
    @@ -7738,7 +7738,7 @@
     
     
    -class property galois.FieldArray.is_extension_field : bool
    +class property galois.FieldArray.is_extension_field : bool

    Indicates if the finite field is an extension field, having prime power order.

    Examples

    In [1]: galois.GF(2).is_extension_field
    diff --git a/v0.3.x/api/galois.FieldArray.is_prime_field/index.html b/v0.3.x/api/galois.FieldArray.is_prime_field/index.html
    index fd5e3b417..d6146d48e 100644
    --- a/v0.3.x/api/galois.FieldArray.is_prime_field/index.html
    +++ b/v0.3.x/api/galois.FieldArray.is_prime_field/index.html
    @@ -7738,7 +7738,7 @@
     
     
    -class property galois.FieldArray.is_prime_field : bool
    +class property galois.FieldArray.is_prime_field : bool

    Indicates if the finite field is a prime field, having prime order.

    Examples

    In [1]: galois.GF(2).is_prime_field
    diff --git a/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html b/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html
    index a6d971523..48949b981 100644
    --- a/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html
    +++ b/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html
    @@ -7752,7 +7752,7 @@
     
     
    -class property galois.FieldArray.is_primitive_poly : bool
    +class property galois.FieldArray.is_primitive_poly : bool

    Indicates whether the irreducible_poly is a primitive polynomial.

    Notes

    If the irreducible polynomial is primitive, then \(x\) is a primitive element of the finite field.

    diff --git a/v0.3.x/api/galois.FieldArray.is_square/index.html b/v0.3.x/api/galois.FieldArray.is_square/index.html index 4942e01bc..bdb6c6918 100644 --- a/v0.3.x/api/galois.FieldArray.is_square/index.html +++ b/v0.3.x/api/galois.FieldArray.is_square/index.html @@ -7780,7 +7780,7 @@
    -galois.FieldArray.is_square() bool | numpy.ndarray
    +galois.FieldArray.is_square() bool | numpy.ndarray

    Determines if the elements of \(x\) are squares in the finite field.

    Returns:
    diff --git a/v0.3.x/api/galois.FieldArray.left_null_space/index.html b/v0.3.x/api/galois.FieldArray.left_null_space/index.html index c880f5ea0..ea865a9fe 100644 --- a/v0.3.x/api/galois.FieldArray.left_null_space/index.html +++ b/v0.3.x/api/galois.FieldArray.left_null_space/index.html @@ -7766,7 +7766,7 @@
    -galois.FieldArray.left_null_space() Self
    +galois.FieldArray.left_null_space() Self

    Computes the left null space of the matrix \(\mathbf{A}\).

    Returns:
    @@ -7789,16 +7789,16 @@ In [3]: A = GF.Random((m, n)); A Out[3]: -GF([[ 1, 3, 27], - [22, 13, 1], - [12, 3, 22], - [17, 4, 7], - [ 1, 17, 3]], order=31) +GF([[ 7, 27, 8], + [27, 2, 10], + [ 7, 14, 7], + [23, 1, 29], + [ 5, 13, 30]], order=31) In [4]: LN = A.left_null_space(); LN Out[4]: -GF([[ 1, 0, 6, 24, 15], - [ 0, 1, 21, 1, 19]], order=31) +GF([[ 1, 0, 19, 28, 23], + [ 0, 1, 15, 10, 2]], order=31)

    The left null space is the set of vectors that sum the rows to 0.

    diff --git a/v0.3.x/api/galois.FieldArray.log/index.html b/v0.3.x/api/galois.FieldArray.log/index.html index 1e8baa23c..c586a9103 100644 --- a/v0.3.x/api/galois.FieldArray.log/index.html +++ b/v0.3.x/api/galois.FieldArray.log/index.html @@ -7792,12 +7792,12 @@
    -galois.FieldArray.log(base: ElementLike | ArrayLike | None = None) int | ndarray
    +galois.FieldArray.log(base: ElementLike | ArrayLike | None = None) int | ndarray

    Computes the discrete logarithm of the array \(x\) base \(\beta\).

    Parameters:
    -
    base: ElementLike | ArrayLike | None = None

    A primitive element or elements \(\beta\) of the finite field that is the base of the logarithm. +

    base: ElementLike | ArrayLike | None = None

    A primitive element or elements \(\beta\) of the finite field that is the base of the logarithm. The default is None which uses primitive_element.

    Slower performance

    @@ -7831,10 +7831,10 @@ Out[2]: GF(3, order=3^5) In [3]: x = GF.Random(10, low=1); x -Out[3]: GF([160, 65, 219, 100, 189, 191, 163, 110, 99, 32], order=3^5) +Out[3]: GF([ 52, 238, 29, 83, 6, 242, 148, 79, 41, 84], order=3^5) In [4]: i = x.log(); i -Out[4]: array([184, 233, 110, 92, 129, 220, 241, 119, 76, 49]) +Out[4]: array([ 79, 186, 15, 120, 122, 185, 54, 95, 216, 208]) In [5]: np.array_equal(alpha ** i, x) Out[5]: True @@ -7849,13 +7849,14 @@ In [8]: x = GF.Random(10, low=1); x Out[8]: -GF([ 2α^4 + 2α^2 + 1, α^4 + 2α^3 + α^2 + 2α, α^4 + α^2 + 2α + 1, - 2α^4 + α^3 + 2α^2, 2α^3 + 2α, 2α^4 + α, - 2α^4 + 2α, α + 2, α^3, - α^4 + 2α^2 + 1], order=3^5) +GF([ α^4 + α + 2, 2α^2 + 2, + 2α^4 + 2α^3, 2α^4 + α^2 + α + 1, + α^4 + 2α^3 + 2, α^4 + 2α^3 + α^2 + α + 2, + α^4 + 2α^3 + α + 2, 2α, + 2α^3 + α^2 + α, α^4 + 2], order=3^5) In [9]: i = x.log(); i -Out[9]: array([135, 52, 159, 19, 168, 137, 87, 5, 3, 92]) +Out[9]: array([ 73, 167, 193, 226, 67, 32, 212, 122, 102, 120]) In [10]: np.array_equal(alpha ** i, x) Out[10]: True @@ -7870,11 +7871,11 @@ In [13]: x = GF.Random(10, low=1); x Out[13]: -GF([α^187, α^58, α^9, α^90, α^11, α^70, α^75, α^26, α^95, α^210], +GF([α^165, α^117, α^31, α^183, α^144, α^65, α^163, α^159, α^176, α^72], order=3^5) In [14]: i = x.log(); i -Out[14]: array([187, 58, 9, 90, 11, 70, 75, 26, 95, 210]) +Out[14]: array([165, 117, 31, 183, 144, 65, 163, 159, 176, 72]) In [15]: np.array_equal(alpha ** i, x) Out[15]: True @@ -7901,7 +7902,7 @@ Out[17]: GF(242, order=3^5) In [18]: i = x.log(beta); i -Out[18]: array([209, 224, 89, 164, 55, 20, 177, 42, 79, 60]) +Out[18]: array([ 99, 189, 199, 35, 214, 105, 133, 201, 154, 228]) In [19]: np.array_equal(beta ** i, x) Out[19]: True @@ -7913,7 +7914,7 @@ Out[20]: GF(2α^4 + 2α^3 + 2α^2 + 2α + 2, order=3^5) In [21]: i = x.log(beta); i -Out[21]: array([209, 224, 89, 164, 55, 20, 177, 42, 79, 60]) +Out[21]: array([ 99, 189, 199, 35, 214, 105, 133, 201, 154, 228]) In [22]: np.array_equal(beta ** i, x) Out[22]: True @@ -7925,7 +7926,7 @@ Out[23]: GF(α^185, order=3^5) In [24]: i = x.log(beta); i -Out[24]: array([209, 224, 89, 164, 55, 20, 177, 42, 79, 60]) +Out[24]: array([ 99, 189, 199, 35, 214, 105, 133, 201, 154, 228]) In [25]: np.array_equal(beta ** i, x) Out[25]: True @@ -7943,21 +7944,21 @@
    In [26]: x = GF.Random(low=1); x
    -Out[26]: GF(193, order=3^5)
    +Out[26]: GF(44, order=3^5)
     
     In [27]: bases = GF.primitive_elements
     
     In [28]: i = x.log(bases); i
     Out[28]: 
    -array([147, 181, 223,  13, 105, 211,  85,  35, 151, 111,  51,  49, 141,
    -       155, 137,   3,  31, 217, 135,  87, 157,  21, 109, 173, 131,   5,
    -        57,  25, 115, 145,  41, 139,  37,  17, 241, 189, 235,  65, 129,
    -       119, 179, 101, 127,  81,  69, 221, 195, 229, 123,  63, 175, 149,
    -        39,  73, 167,  93,  75, 125,  27,  23,  89, 159, 183,  79, 161,
    -       233,  43, 201,  67,  95,  47, 213,  97, 227,  29,  45, 197, 191,
    -       177,  71, 113, 107,   7, 215,   1, 207, 225, 133,  83, 203, 237,
    -        61,  53, 219, 205, 117, 239, 153,  91, 171,  15,  59, 185, 199,
    -         9, 169, 103, 193,  19, 163])
    +array([143, 209,  77,  11,  33,  11, 165,  11, 165, 187,  99, 209, 231,
    +       187, 209,  77, 231, 165,  77,  55,  77,  55,  55, 165,  55, 209,
    +        11,  77, 209,  11, 165,  99, 143,  33,  55,  11, 143,  55, 165,
    +       231,  77,  11,  33, 143,  77, 187, 165, 231,  11, 165,  55,  33,
    +        33,  99,  11, 209, 231, 143, 209, 187, 187, 209,  99,  11,  99,
    +        11,  55,  77, 187,  99,  77, 143, 231,  99,  99, 187,  55, 143,
    +       187, 209,  77, 165,  99,  33, 187, 231, 209, 187,  33, 209,  33,
    +        33, 231,  55,  99,  99, 165,  55,  77,  33, 143, 143, 231, 187,
    +       231, 143, 143,  33, 165, 231])
     
     In [29]: np.all(bases ** i == x)
     Out[29]: True
    @@ -7966,21 +7967,21 @@
     
    In [30]: x = GF.Random(low=1); x
    -Out[30]: GF(α^4 + α^3 + α^2 + α + 1, order=3^5)
    +Out[30]: GF(2α^3 + α^2 + 2α + 2, order=3^5)
     
     In [31]: bases = GF.primitive_elements
     
     In [32]: i = x.log(bases); i
     Out[32]: 
    -array([ 64,  36, 158,  32, 184,  54, 172, 142,  18, 236, 200, 102,  12,
    -       214,  58,  26, 188, 106, 202,  28,  70, 182, 138, 128,   6, 124,
    -        10, 136, 190, 208, 194, 156, 240, 228,  72, 186,  20, 160, 150,
    -       144, 180, 230,  52, 218, 114,  60, 238, 210,  98,  62, 226, 162,
    -        96,  68,  76,  80, 166, 196, 234,  38, 126, 168, 134, 120,  24,
    -       164,  50,  48,  16, 178,   4, 152,  34, 112,  90, 148,  94,  42,
    -        82, 212,  92,  40, 222,   8, 170, 100,  14, 104,  74, 146, 118,
    -       206,  56, 204,   2,  46, 216, 116, 224,  30, 130, 108, 232, 192,
    -        78, 174,  86, 140,  84, 122])
    +array([182, 178, 230, 212, 130, 146, 232, 124, 210, 172, 236, 222, 140,
    +       238, 112, 142,  96, 188,  98,   4,  10,  26, 158, 122,  70, 156,
    +        36,  54, 200, 168, 166, 126, 138, 240, 114, 234,  72,  92,  56,
    +       228, 164, 102,  42, 204, 120, 216,  34,  30,  14,  78, 136, 196,
    +       152, 148,  80,  46, 162,  28,  68,  40,  18,  24, 192, 190,  38,
    +        58, 180,  76, 106,  60, 208, 160,  74,  16,  82, 194,  48,   6,
    +       150, 134, 186, 144, 170, 174, 128, 118,   2,  84, 218,  90,  86,
    +        64,   8, 202, 104, 214, 100, 224,  32, 108, 226,  50, 206,  62,
    +       184,  94, 116,  20,  12,  52])
     
     In [33]: np.all(bases ** i == x)
     Out[33]: True
    @@ -7989,21 +7990,21 @@
     
    In [34]: x = GF.Random(low=1); x
    -Out[34]: GF(α^83, order=3^5)
    +Out[34]: GF(α^167, order=3^5)
     
     In [35]: bases = GF.primitive_elements
     
     In [36]: i = x.log(bases); i
     Out[36]: 
    -array([ 83, 145,  65, 223, 163, 157, 155, 135, 133, 117,  93, 189, 129,
    -       183,  79, 219,  85, 111, 175,  59,  87,  81, 213,  45, 125, 123,
    -        47, 131, 167, 179,  89, 225,  39,  31, 169,   3, 215, 147, 221,
    -       217, 241, 113,  75, 105, 197, 161, 199,  19,  25,   1, 191, 229,
    -       185,   5,  91,  13, 151, 171,  35, 227, 205, 233,  49, 201, 137,
    -        69, 235, 153,  51, 159,  43,  61,  63, 115, 181, 139, 103, 149,
    -        95, 101,  21,  67,  27, 207,  73, 107, 211,  29,   9,  57, 119,
    -        97, 239,  15, 203,  71,  23,  37, 109, 141, 127, 193, 195,   7,
    -       173, 237,  17,  53, 177,  41])
    +array([167,  41, 227,  23, 223,   1, 169, 155,  81, 215,  53, 217, 175,
    +       237,  19, 117, 241, 235, 183,   5,  73,  93, 137, 213,  27, 195,
    +        45,   7, 129,  89, 147,  97, 233, 179, 203, 111, 211, 115, 191,
    +        43, 205,  67, 113,  13,  29, 149, 103, 219, 199,  37,  49,   3,
    +        69, 185, 221, 239,  21,  35,  85, 171,  83, 151, 119, 177, 229,
    +       133, 225,  95, 193,  75, 139,  79, 153, 141, 163,  61, 181, 189,
    +       127, 107,  51,  59,  31, 157,  39,  87,  63, 105,  91, 173,  47,
    +       201, 131,  71,   9, 207, 125, 159, 161, 135, 101, 123, 197,  17,
    +       109,  57, 145,  25,  15,  65])
     
     In [37]: np.all(bases ** i == x)
     Out[37]: True
    diff --git a/v0.3.x/api/galois.FieldArray.lu_decompose/index.html b/v0.3.x/api/galois.FieldArray.lu_decompose/index.html
    index e15be3e5d..87fedd59a 100644
    --- a/v0.3.x/api/galois.FieldArray.lu_decompose/index.html
    +++ b/v0.3.x/api/galois.FieldArray.lu_decompose/index.html
    @@ -7766,7 +7766,7 @@
     
     
    -galois.FieldArray.lu_decompose() tuple[Self, Self]
    +galois.FieldArray.lu_decompose() tuple[Self, Self]

    Decomposes the input array into the product of lower and upper triangular matrices.

    Returns:
    diff --git a/v0.3.x/api/galois.FieldArray.minimal_poly/index.html b/v0.3.x/api/galois.FieldArray.minimal_poly/index.html index 53aeb96e3..a10dda743 100644 --- a/v0.3.x/api/galois.FieldArray.minimal_poly/index.html +++ b/v0.3.x/api/galois.FieldArray.minimal_poly/index.html @@ -7802,8 +7802,8 @@
    Raises:
      -
    • NotImplementedError – If the array is a a square \(n \times n\) matrix (2-D array).

    • -
    • ValueError – If the array is not a single finite field element (scalar 0-D array).

    • +
    • NotImplementedError – If the array is a a square \(n \times n\) matrix (2-D array).

    • +
    • ValueError – If the array is not a single finite field element (scalar 0-D array).

    @@ -7831,10 +7831,10 @@
    In [1]: GF = galois.GF(3**5)
     
     In [2]: a = GF.Random(); a
    -Out[2]: GF(15, order=3^5)
    +Out[2]: GF(225, order=3^5)
     
     In [3]: poly = a.minimal_poly(); poly
    -Out[3]: Poly(x^5 + x^3 + x + 2, GF(3))
    +Out[3]: Poly(x^5 + x^4 + 2x^3 + 2x + 2, GF(3))
     
     # The minimal polynomial annihilates a
     In [4]: poly(a, field=GF)
    @@ -7850,10 +7850,10 @@
     
    In [6]: GF = galois.GF(3**5, repr="poly")
     
     In [7]: a = GF.Random(); a
    -Out[7]: GF(α^4 + α^3 + 2α + 2, order=3^5)
    +Out[7]: GF(α^4 + 2α^2 + α + 2, order=3^5)
     
     In [8]: poly = a.minimal_poly(); poly
    -Out[8]: Poly(x^5 + x^4 + 2x^3 + 2x + 2, GF(3))
    +Out[8]: Poly(x^5 + x^4 + x^2 + 2x + 2, GF(3))
     
     # The minimal polynomial annihilates a
     In [9]: poly(a, field=GF)
    @@ -7869,10 +7869,10 @@
     
    In [11]: GF = galois.GF(3**5, repr="power")
     
     In [12]: a = GF.Random(); a
    -Out[12]: GF(α^19, order=3^5)
    +Out[12]: GF(α^181, order=3^5)
     
     In [13]: poly = a.minimal_poly(); poly
    -Out[13]: Poly(x^5 + x^4 + 2x^3 + 1, GF(3))
    +Out[13]: Poly(x^5 + 2x^3 + 2x^2 + x + 1, GF(3))
     
     # The minimal polynomial annihilates a
     In [14]: poly(a, field=GF)
    diff --git a/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html b/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html
    index 126f08c51..71a425f19 100644
    --- a/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html
    +++ b/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html
    @@ -7780,7 +7780,7 @@
     
     
    -galois.FieldArray.multiplicative_order() int | numpy.ndarray
    +galois.FieldArray.multiplicative_order() int | numpy.ndarray

    Computes the multiplicative order \(\textrm{ord}(x)\) of each element in \(x\).

    Returns:
    @@ -7788,7 +7788,7 @@ integer if the input array \(x\) is a scalar.

    Raises:
    -

    ArithmeticError – If zero is provided as an input. The multiplicative order of 0 is not defined. There is +

    ArithmeticError – If zero is provided as an input. The multiplicative order of 0 is not defined. There is no power of 0 that ever results in 1.

    diff --git a/v0.3.x/api/galois.FieldArray.name/index.html b/v0.3.x/api/galois.FieldArray.name/index.html index ff3ca36b3..88a141add 100644 --- a/v0.3.x/api/galois.FieldArray.name/index.html +++ b/v0.3.x/api/galois.FieldArray.name/index.html @@ -7738,7 +7738,7 @@
    -class property galois.FieldArray.name : str
    +class property galois.FieldArray.name : str

    The finite field’s name as a string GF(p) or GF(p^m).

    Examples

    In [1]: galois.GF(2).name
    diff --git a/v0.3.x/api/galois.FieldArray.null_space/index.html b/v0.3.x/api/galois.FieldArray.null_space/index.html
    index 1afdfca6a..e6fcc3618 100644
    --- a/v0.3.x/api/galois.FieldArray.null_space/index.html
    +++ b/v0.3.x/api/galois.FieldArray.null_space/index.html
    @@ -7766,7 +7766,7 @@
     
     
    -galois.FieldArray.null_space() Self
    +galois.FieldArray.null_space() Self

    Computes the null space of the matrix \(\mathbf{A}\).

    Returns:
    @@ -7789,14 +7789,14 @@ In [3]: A = GF.Random((m, n)); A Out[3]: -GF([[ 0, 15, 8, 1, 28], - [30, 27, 15, 13, 8], - [14, 3, 3, 7, 8]], order=31) +GF([[14, 20, 5, 27, 22], + [28, 18, 3, 21, 0], + [ 9, 16, 24, 11, 29]], order=31) In [4]: N = A.null_space(); N Out[4]: -GF([[ 1, 0, 12, 25, 30], - [ 0, 1, 26, 6, 4]], order=31) +GF([[ 1, 0, 9, 21, 11], + [ 0, 1, 19, 23, 6]], order=31)

    The null space is the set of vectors that sum the columns to 0.

    diff --git a/v0.3.x/api/galois.FieldArray.order/index.html b/v0.3.x/api/galois.FieldArray.order/index.html index 251d52912..1a3b972cd 100644 --- a/v0.3.x/api/galois.FieldArray.order/index.html +++ b/v0.3.x/api/galois.FieldArray.order/index.html @@ -7752,7 +7752,7 @@
    -class property galois.FieldArray.order : int
    +class property galois.FieldArray.order : int

    The order \(p^m\) of the Galois field \(\mathrm{GF}(p^m)\).

    Notes

    The order of the field is equal to the field’s size.

    diff --git a/v0.3.x/api/galois.FieldArray.plu_decompose/index.html b/v0.3.x/api/galois.FieldArray.plu_decompose/index.html index 2025f5a0b..fcac36eed 100644 --- a/v0.3.x/api/galois.FieldArray.plu_decompose/index.html +++ b/v0.3.x/api/galois.FieldArray.plu_decompose/index.html @@ -7766,7 +7766,7 @@
    -galois.FieldArray.plu_decompose() tuple[Self, Self, Self]
    +galois.FieldArray.plu_decompose() tuple[Self, Self, Self]

    Decomposes the input array into the product of lower and upper triangular matrices using partial pivoting.

    Returns:
    diff --git a/v0.3.x/api/galois.FieldArray.prime_subfield/index.html b/v0.3.x/api/galois.FieldArray.prime_subfield/index.html index 8a99bb0f6..4c4e15e4d 100644 --- a/v0.3.x/api/galois.FieldArray.prime_subfield/index.html +++ b/v0.3.x/api/galois.FieldArray.prime_subfield/index.html @@ -7752,7 +7752,7 @@
    -class property galois.FieldArray.prime_subfield : type[FieldArray]
    +class property galois.FieldArray.prime_subfield : type[FieldArray]

    The prime subfield \(\mathrm{GF}(p)\) of the extension field \(\mathrm{GF}(p^m)\).

    Notes

    For the prime field \(\mathrm{GF}(p)\), the prime subfield is itself.

    diff --git a/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html b/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html index 1971ce7bc..08eb20a28 100644 --- a/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html +++ b/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html @@ -7820,12 +7820,12 @@
    -classmethod galois.FieldArray.primitive_root_of_unity(n: int) Self
    +classmethod galois.FieldArray.primitive_root_of_unity(n: int) Self

    Finds a primitive \(n\)-th root of unity in the finite field.

    Parameters:
    -
    n: int

    The root of unity.

    +
    n: int

    The root of unity.

    @@ -7833,7 +7833,7 @@

    The primitive \(n\)-th root of unity, a 0-D scalar array.

    Raises:
    -

    ValueError – If no primitive \(n\)-th roots of unity exist. This happens when \(n\) is not a +

    ValueError – If no primitive \(n\)-th roots of unity exist. This happens when \(n\) is not a divisor of \(p^m - 1\).

    diff --git a/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html b/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html index e4ec96e4f..b15b57323 100644 --- a/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html +++ b/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html @@ -7820,12 +7820,12 @@
    -classmethod galois.FieldArray.primitive_roots_of_unity(n: int) Self
    +classmethod galois.FieldArray.primitive_roots_of_unity(n: int) Self

    Finds all primitive \(n\)-th roots of unity in the finite field.

    Parameters:
    -
    n: int

    The root of unity.

    +
    n: int

    The root of unity.

    @@ -7833,7 +7833,7 @@

    All primitive \(n\)-th roots of unity, a 1-D array. The roots are sorted in lexicographical order.

    Raises:
    -

    ValueError – If no primitive \(n\)-th roots of unity exist. This happens when \(n\) is not a +

    ValueError – If no primitive \(n\)-th roots of unity exist. This happens when \(n\) is not a divisor of \(p^m - 1\).

    diff --git a/v0.3.x/api/galois.FieldArray.properties/index.html b/v0.3.x/api/galois.FieldArray.properties/index.html index 3ffc1a961..a250a2f20 100644 --- a/v0.3.x/api/galois.FieldArray.properties/index.html +++ b/v0.3.x/api/galois.FieldArray.properties/index.html @@ -7738,7 +7738,7 @@
    -class property galois.FieldArray.properties : str
    +class property galois.FieldArray.properties : str

    A formatted string of relevant properties of the Galois field.

    Examples

    In [1]: GF = galois.GF(7**5)
    diff --git a/v0.3.x/api/galois.FieldArray.repr/index.html b/v0.3.x/api/galois.FieldArray.repr/index.html
    index 7ff9d48d6..bf13a70f0 100644
    --- a/v0.3.x/api/galois.FieldArray.repr/index.html
    +++ b/v0.3.x/api/galois.FieldArray.repr/index.html
    @@ -7806,7 +7806,7 @@
     
     
    -classmethod galois.FieldArray.repr(element_repr: 'int' | 'poly' | 'power' = 'int') Generator[None, None, None]
    +classmethod galois.FieldArray.repr(element_repr: 'int' | 'poly' | 'power' = 'int') Generator[None, None, None]

    Sets the element representation for all arrays from this FieldArray subclass.

    Parameters:
    diff --git a/v0.3.x/api/galois.FieldArray.repr_table/index.html b/v0.3.x/api/galois.FieldArray.repr_table/index.html index 85cbbc43d..bb94b33ff 100644 --- a/v0.3.x/api/galois.FieldArray.repr_table/index.html +++ b/v0.3.x/api/galois.FieldArray.repr_table/index.html @@ -7806,13 +7806,13 @@
    -classmethod galois.FieldArray.repr_table(element: ElementLike | None = None, sort: 'power' | 'poly' | 'vector' | 'int' = 'power') str
    +classmethod galois.FieldArray.repr_table(element: ElementLike | None = None, sort: 'power' | 'poly' | 'vector' | 'int' = 'power') str

    Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations.

    Parameters:
    -
    element: ElementLike | None = None

    An element to use as the exponent base in the power representation. The default is None which +

    element: ElementLike | None = None

    An element to use as the exponent base in the power representation. The default is None which corresponds to primitive_element.

    sort: 'power' | 'poly' | 'vector' | 'int' = 'power'

    The sorting method for the table. The default is "power". Sorting by "power" will order the rows diff --git a/v0.3.x/api/galois.FieldArray.row_reduce/index.html b/v0.3.x/api/galois.FieldArray.row_reduce/index.html index 783a1d511..f383b1c6c 100644 --- a/v0.3.x/api/galois.FieldArray.row_reduce/index.html +++ b/v0.3.x/api/galois.FieldArray.row_reduce/index.html @@ -7820,12 +7820,12 @@

    -galois.FieldArray.row_reduce(ncols: int | None = None, eye: 'left' | 'right' = 'left') Self
    +galois.FieldArray.row_reduce(ncols: int | None = None, eye: 'left' | 'right' = 'left') Self

    Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF).

    Parameters:
    -
    ncols: int | None = None

    The number of columns to perform Gaussian elimination over. The default is None which represents +

    ncols: int | None = None

    The number of columns to perform Gaussian elimination over. The default is None which represents the number of columns of the matrix.

    eye: 'left' | 'right' = 'left'

    The location of the identity matrix \(\mathbf{I}\), either on the left or the right.

    diff --git a/v0.3.x/api/galois.FieldArray.row_space/index.html b/v0.3.x/api/galois.FieldArray.row_space/index.html index 29e375479..7cdb35fbd 100644 --- a/v0.3.x/api/galois.FieldArray.row_space/index.html +++ b/v0.3.x/api/galois.FieldArray.row_space/index.html @@ -7766,7 +7766,7 @@
    -galois.FieldArray.row_space() Self
    +galois.FieldArray.row_space() Self

    Computes the row space of the matrix \(\mathbf{A}\).

    Returns:
    @@ -7790,11 +7790,11 @@ In [3]: A = GF.Random((m, n)); A Out[3]: -GF([[18, 16, 25], - [19, 0, 16], - [ 0, 17, 20], - [ 0, 0, 22], - [18, 30, 4]], order=31) +GF([[ 7, 6, 14], + [27, 29, 4], + [14, 19, 1], + [ 8, 24, 24], + [ 3, 24, 24]], order=31) In [4]: R = A.row_space(); R Out[4]: @@ -7806,8 +7806,8 @@

    The dimension of the row space and left null space sum to \(m\).

    In [5]: LN = A.left_null_space(); LN
     Out[5]: 
    -GF([[ 1,  0, 30,  7, 30],
    -    [ 0,  1, 28,  0, 11]], order=31)
    +GF([[ 1,  0, 28, 22, 15],
    +    [ 0,  1, 21, 24, 15]], order=31)
     
     In [6]: R.shape[0] + LN.shape[0] == m
     Out[6]: True
    diff --git a/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html b/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html
    index 1f89a5785..c93650165 100644
    --- a/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html
    +++ b/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html
    @@ -7752,7 +7752,7 @@
     
     
    -class property galois.FieldArray.ufunc_modes : list[str]
    +class property galois.FieldArray.ufunc_modes : list[str]

    All supported ufunc compilation modes for this FieldArray subclass.

    Notes

    The ufuncs may be recompiled with compile().

    diff --git a/v0.3.x/api/galois.FieldArray.vector/index.html b/v0.3.x/api/galois.FieldArray.vector/index.html index d70642935..ca80de4e5 100644 --- a/v0.3.x/api/galois.FieldArray.vector/index.html +++ b/v0.3.x/api/galois.FieldArray.vector/index.html @@ -7806,13 +7806,13 @@
    -galois.FieldArray.vector(dtype: DTypeLike | None = None) FieldArray
    +galois.FieldArray.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)\).

    Parameters:
    -
    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest +

    dtype: DTypeLike | None = None

    The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes).

    diff --git a/v0.3.x/api/galois.FieldArray/index.html b/v0.3.x/api/galois.FieldArray/index.html index 74b509d3a..8f4d97037 100644 --- a/v0.3.x/api/galois.FieldArray/index.html +++ b/v0.3.x/api/galois.FieldArray/index.html @@ -8431,7 +8431,7 @@
    -classmethod Identity(size: int, ...) Self
    +classmethod Identity(size: int, ...) Self

    Creates an \(n \times n\) identity matrix.

    @@ -8477,7 +8477,7 @@

    Conversions
    -vector(dtype: DTypeLike | None = None) FieldArray
    +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)\).

    @@ -8511,13 +8511,13 @@

    Elements
    -classmethod primitive_root_of_unity(n: int) Self
    +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
    +classmethod primitive_roots_of_unity(n: int) Self

    Finds all primitive \(n\)-th roots of unity in the finite field.

    @@ -8538,31 +8538,31 @@

    ElementsString representation

    -__repr__() str
    +__repr__() str

    Displays the array specifying the class and finite field order.

    -__str__() str
    +__str__() str

    Displays the array without specifying the class or finite field order.

    -classmethod arithmetic_table(operation, ...) str
    +classmethod arithmetic_table(operation, ...) str

    Generates the specified arithmetic table for the finite field.

    -class property properties : str
    +class property properties : str

    A formatted string of relevant properties of the Galois field.

    -classmethod repr_table(...) str
    +classmethod repr_table(...) str

    Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations.

    @@ -8578,7 +8578,7 @@

    Element representation
    -classmethod repr(...) Generator[None, None, None]
    +classmethod repr(...) Generator[None, None, None]

    Sets the element representation for all arrays from this FieldArray subclass.

    @@ -8593,7 +8593,7 @@

    Arithmetic compilation
    -class property dtypes : list[numpy.dtype]
    +class property dtypes : list[numpy.dtype]

    List of valid integer numpy.dtype values that are compatible with this finite field.

    @@ -8605,7 +8605,7 @@

    Arithmetic compilation
    -class property ufunc_modes : list[str]
    +class property ufunc_modes : list[str]

    All supported ufunc compilation modes for this FieldArray subclass.

    @@ -8620,7 +8620,7 @@

    Arithmetic compilationMethods

    -additive_order() int | numpy.ndarray
    +additive_order() int | numpy.ndarray

    Computes the additive order of each element in \(x\).

    @@ -8645,7 +8645,7 @@

    Methods
    -log(base: ElementLike | ArrayLike | None = None) int | ndarray
    +log(base: ElementLike | ArrayLike | None = None) int | ndarray

    Computes the discrete logarithm of the array \(x\) base \(\beta\).

    @@ -8657,7 +8657,7 @@

    Methods
    -multiplicative_order() int | numpy.ndarray
    +multiplicative_order() int | numpy.ndarray

    Computes the multiplicative order \(\textrm{ord}(x)\) of each element in \(x\).

    @@ -8666,43 +8666,43 @@

    MethodsLinear algebra

    -column_space() Self
    +column_space() Self

    Computes the column space of the matrix \(\mathbf{A}\).

    -left_null_space() Self
    +left_null_space() Self

    Computes the left null space of the matrix \(\mathbf{A}\).

    -lu_decompose() tuple[Self, Self]
    +lu_decompose() tuple[Self, Self]

    Decomposes the input array into the product of lower and upper triangular matrices.

    -null_space() Self
    +null_space() Self

    Computes the null space of the matrix \(\mathbf{A}\).

    -plu_decompose() tuple[Self, Self, Self]
    +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
    +row_reduce(ncols: int | None = None, ...) Self

    Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF).

    -row_space() Self
    +row_space() Self

    Computes the row space of the matrix \(\mathbf{A}\).

    @@ -8711,13 +8711,13 @@

    Linear algebraProperties

    -class property characteristic : int
    +class property characteristic : int

    The prime characteristic \(p\) of the Galois field \(\mathrm{GF}(p^m)\).

    -class property degree : int
    +class property degree : int

    The extension degree \(m\) of the Galois field \(\mathrm{GF}(p^m)\).

    @@ -8729,19 +8729,19 @@

    Properties
    -class property name : str
    +class property name : str

    The finite field’s name as a string GF(p) or GF(p^m).

    -class property order : int
    +class property order : int

    The order \(p^m\) of the Galois field \(\mathrm{GF}(p^m)\).

    -class property prime_subfield : type[FieldArray]
    +class property prime_subfield : type[FieldArray]

    The prime subfield \(\mathrm{GF}(p)\) of the extension field \(\mathrm{GF}(p^m)\).

    @@ -8750,25 +8750,25 @@

    PropertiesAttributes

    -class property is_extension_field : bool
    +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
    +class property is_prime_field : bool

    Indicates if the finite field is a prime field, having prime order.

    -class property is_primitive_poly : bool
    +class property is_primitive_poly : bool

    Indicates whether the irreducible_poly is a primitive polynomial.

    -is_square() bool | numpy.ndarray
    +is_square() bool | numpy.ndarray

    Determines if the elements of \(x\) are squares in the finite field.

    diff --git a/v0.3.x/api/galois.GF/index.html b/v0.3.x/api/galois.GF/index.html index 0354ef179..cc22e94f3 100644 --- a/v0.3.x/api/galois.GF/index.html +++ b/v0.3.x/api/galois.GF/index.html @@ -7872,25 +7872,25 @@
    -galois.GF(order: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]
    +galois.GF(order: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]
    -galois.GF(characteristic: int, degree: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]
    +galois.GF(characteristic: int, degree: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]

    Creates a FieldArray subclass for \(\mathrm{GF}(p^m)\).

    Parameters:
    -
    order: int

    The order \(p^m\) of the field \(\mathrm{GF}(p^m)\). The order must be a prime power.

    +
    order: int

    The order \(p^m\) of the field \(\mathrm{GF}(p^m)\). The order must be a prime power.

    -
    characteristic: int

    The characteristic \(p\) of the field \(\mathrm{GF}(p^m)\). The characteristic must +

    characteristic: int

    The characteristic \(p\) of the field \(\mathrm{GF}(p^m)\). The characteristic must be prime.

    -
    degree: int

    The degree \(m\) of the field \(\mathrm{GF}(p^m)\). The degree must be a positive integer.

    +
    degree: int

    The degree \(m\) of the field \(\mathrm{GF}(p^m)\). The degree must be a positive integer.

    -
    irreducible_poly: PolyLike | None = None

    Optionally specify an irreducible polynomial of degree \(m\) over \(\mathrm{GF}(p)\) +

    irreducible_poly: PolyLike | None = None

    Optionally specify an irreducible polynomial of degree \(m\) over \(\mathrm{GF}(p)\) that defines the finite field arithmetic. The default is None which uses the Conway polynomial \(C_{p,m}\), see conway_poly().

    -
    primitive_element: int | PolyLike | None = None

    Optionally specify a primitive element of the field. This value is used when building the +

    primitive_element: int | PolyLike | None = None

    Optionally specify a primitive element of the field. This value is used when building the exponential and logarithm lookup tables and as the base of numpy.log. A primitive element is a generator of the multiplicative group of the field.

    For prime fields \(\mathrm{GF}(p)\), the primitive element must be an integer and is a primitive root @@ -7899,7 +7899,7 @@ \(m\) over \(\mathrm{GF}(p)\). The default is None which uses primitive_element().

    -
    verify: bool = True

    Indicates whether to verify that the user-provided irreducible polynomial is in fact irreducible and +

    verify: bool = True

    Indicates whether to verify that the user-provided irreducible polynomial is in fact irreducible and that the user-provided primitive element is in fact a generator of the multiplicative group. The default is True.

    For large fields and irreducible polynomials that are already known to be irreducible (which may take a @@ -7908,7 +7908,7 @@ to be irreducible and a multiplicative generator, respectively.

    -
    compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None

    The ufunc calculation mode. This can be modified after class construction with the +

    compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None

    The ufunc calculation mode. This can be modified after class construction with the compile() method. See Compilation Modes for a further discussion.

      @@ -7926,11 +7926,11 @@ "jit-calculate" mode is slower than "jit-lookup".

    • "python-calculate": Uses pure-Python ufuncs with explicit calculation. This is reserved for fields whose elements cannot be represented with numpy.int64 and instead use numpy.object_ with -Python int (which has arbitrary precision).

    • +Python int (which has arbitrary precision).

    -
    repr: 'int' | 'poly' | 'power' | None = None

    The field element representation. This can be modified after class construction with the +

    repr: 'int' | 'poly' | 'power' | None = None

    The field element representation. This can be modified after class construction with the repr() method. See Element Representation for a further discussion.

    @@ -7994,13 +7994,13 @@

    Elements
    -classmethod primitive_root_of_unity(n: int) Self
    +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
    +classmethod primitive_roots_of_unity(n: int) Self

    Finds all primitive \(n\)-th roots of unity in the finite field.

    @@ -8019,31 +8019,31 @@

    ElementsString representation

    -__repr__() str
    +__repr__() str

    Displays the array specifying the class and finite field order.

    -__str__() str
    +__str__() str

    Displays the array without specifying the class or finite field order.

    -classmethod arithmetic_table(operation, ...) str
    +classmethod arithmetic_table(operation, ...) str

    Generates the specified arithmetic table for the finite field.

    -class property properties : str
    +class property properties : str

    A formatted string of relevant properties of the Galois field.

    -classmethod repr_table(...) str
    +classmethod repr_table(...) str

    Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations.

    @@ -8057,7 +8057,7 @@

    Element representation
    -classmethod repr(...) Generator[None, None, None]
    +classmethod repr(...) Generator[None, None, None]

    Sets the element representation for all arrays from this FieldArray subclass.

    @@ -8070,7 +8070,7 @@

    Arithmetic compilation
    -class property dtypes : list[numpy.dtype]
    +class property dtypes : list[numpy.dtype]

    List of valid integer numpy.dtype values that are compatible with this finite field.

    @@ -8082,7 +8082,7 @@

    Arithmetic compilation
    -class property ufunc_modes : list[str]
    +class property ufunc_modes : list[str]

    All supported ufunc compilation modes for this FieldArray subclass.

    @@ -8095,7 +8095,7 @@

    Arithmetic compilationMethods

    -additive_order() int | numpy.ndarray
    +additive_order() int | numpy.ndarray

    Computes the additive order of each element in \(x\).

    @@ -8120,7 +8120,7 @@

    Methods
    -log(base: ElementLike | ArrayLike | None = None) int | ndarray
    +log(base: ElementLike | ArrayLike | None = None) int | ndarray

    Computes the discrete logarithm of the array \(x\) base \(\beta\).

    @@ -8132,63 +8132,63 @@

    Methods
    -multiplicative_order() int | numpy.ndarray
    +multiplicative_order() int | numpy.ndarray

    Computes the multiplicative order \(\textrm{ord}(x)\) of each element in \(x\).

    Linear algebra

    -column_space() Self
    +column_space() Self

    Computes the column space of the matrix \(\mathbf{A}\).

    -left_null_space() Self
    +left_null_space() Self

    Computes the left null space of the matrix \(\mathbf{A}\).

    -lu_decompose() tuple[Self, Self]
    +lu_decompose() tuple[Self, Self]

    Decomposes the input array into the product of lower and upper triangular matrices.

    -null_space() Self
    +null_space() Self

    Computes the null space of the matrix \(\mathbf{A}\).

    -plu_decompose() tuple[Self, Self, Self]
    +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
    +row_reduce(ncols: int | None = None, ...) Self

    Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF).

    -row_space() Self
    +row_space() Self

    Computes the row space of the matrix \(\mathbf{A}\).

    Properties

    -class property characteristic : int
    +class property characteristic : int

    The prime characteristic \(p\) of the Galois field \(\mathrm{GF}(p^m)\).

    -class property degree : int
    +class property degree : int

    The extension degree \(m\) of the Galois field \(\mathrm{GF}(p^m)\).

    @@ -8200,44 +8200,44 @@

    Properties
    -class property name : str
    +class property name : str

    The finite field’s name as a string GF(p) or GF(p^m).

    -class property order : int
    +class property order : int

    The order \(p^m\) of the Galois field \(\mathrm{GF}(p^m)\).

    -class property prime_subfield : type[FieldArray]
    +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
    +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
    +class property is_prime_field : bool

    Indicates if the finite field is a prime field, having prime order.

    -class property is_primitive_poly : bool
    +class property is_primitive_poly : bool

    Indicates whether the irreducible_poly is a primitive polynomial.

    -is_square() bool | numpy.ndarray
    +is_square() bool | numpy.ndarray

    Determines if the elements of \(x\) are squares in the finite field.

    diff --git a/v0.3.x/api/galois.GLFSR.Taps/index.html b/v0.3.x/api/galois.GLFSR.Taps/index.html index b29537318..c08541986 100644 --- a/v0.3.x/api/galois.GLFSR.Taps/index.html +++ b/v0.3.x/api/galois.GLFSR.Taps/index.html @@ -7806,14 +7806,14 @@
    -classmethod galois.GLFSR.Taps(taps: FieldArray, state: ArrayLike | None = None) Self
    +classmethod galois.GLFSR.Taps(taps: FieldArray, state: ArrayLike | None = None) Self

    Constructs a Galois LFSR from its taps \(T = [c_0, c_1, \dots, c_{n-2}, c_{n-1}]\).

    Parameters:
    taps: FieldArray

    The shift register taps \(T = [c_0, c_1, \dots, c_{n-2}, c_{n-1}]\).

    -
    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None +

    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to all ones.

    diff --git a/v0.3.x/api/galois.GLFSR.__init__/index.html b/v0.3.x/api/galois.GLFSR.__init__/index.html index 4ae736826..5c8e7bf1e 100644 --- a/v0.3.x/api/galois.GLFSR.__init__/index.html +++ b/v0.3.x/api/galois.GLFSR.__init__/index.html @@ -7792,7 +7792,7 @@
    -galois.GLFSR(feedback_poly: Poly, state: ArrayLike | None = None)
    +galois.GLFSR(feedback_poly: Poly, state: ArrayLike | None = None)

    Constructs a Galois LFSR from its feedback polynomial \(f(x)\).

    Parameters:
    @@ -7800,7 +7800,7 @@
    feedback_poly: Poly

    The feedback polynomial \(f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - \dots - c_{n-2}x^{2} - c_{n-1}x + 1\).

    -
    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None +

    state: ArrayLike | None = None

    The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to all ones.

    diff --git a/v0.3.x/api/galois.GLFSR.__repr__/index.html b/v0.3.x/api/galois.GLFSR.__repr__/index.html index c02eba398..8a82e586d 100644 --- a/v0.3.x/api/galois.GLFSR.__repr__/index.html +++ b/v0.3.x/api/galois.GLFSR.__repr__/index.html @@ -7738,7 +7738,7 @@
    -galois.GLFSR.__repr__() str
    +galois.GLFSR.__repr__() str

    A terse representation of the Galois LFSR.

    Examples

    In [1]: c = galois.primitive_poly(7, 4); c
    diff --git a/v0.3.x/api/galois.GLFSR.__str__/index.html b/v0.3.x/api/galois.GLFSR.__str__/index.html
    index db3b3cff0..978b7b0cf 100644
    --- a/v0.3.x/api/galois.GLFSR.__str__/index.html
    +++ b/v0.3.x/api/galois.GLFSR.__str__/index.html
    @@ -7738,7 +7738,7 @@
     
     
    -galois.GLFSR.__str__() str
    +galois.GLFSR.__str__() str

    A formatted string of relevant properties of the Galois LFSR.

    Examples

    In [1]: c = galois.primitive_poly(7, 4); c
    diff --git a/v0.3.x/api/galois.GLFSR.field/index.html b/v0.3.x/api/galois.GLFSR.field/index.html
    index 1bfb7c09d..37012868f 100644
    --- a/v0.3.x/api/galois.GLFSR.field/index.html
    +++ b/v0.3.x/api/galois.GLFSR.field/index.html
    @@ -7738,7 +7738,7 @@
     
     
    -property galois.GLFSR.field : type[FieldArray]
    +property galois.GLFSR.field : type[FieldArray]

    The FieldArray subclass for the finite field that defines the linear arithmetic.

    Examples

    In [1]: c = galois.primitive_poly(7, 4); c
    diff --git a/v0.3.x/api/galois.GLFSR.order/index.html b/v0.3.x/api/galois.GLFSR.order/index.html
    index 751e2c843..562fe9bf0 100644
    --- a/v0.3.x/api/galois.GLFSR.order/index.html
    +++ b/v0.3.x/api/galois.GLFSR.order/index.html
    @@ -7688,7 +7688,7 @@
     
     
    -property galois.GLFSR.order : int
    +property galois.GLFSR.order : int

    The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it.

    diff --git a/v0.3.x/api/galois.GLFSR.reset/index.html b/v0.3.x/api/galois.GLFSR.reset/index.html index 4099b8b71..5d30b1671 100644 --- a/v0.3.x/api/galois.GLFSR.reset/index.html +++ b/v0.3.x/api/galois.GLFSR.reset/index.html @@ -7778,12 +7778,12 @@
    -galois.GLFSR.reset(state: ArrayLike | None = None)
    +galois.GLFSR.reset(state: ArrayLike | None = None)

    Resets the Galois LFSR state to the specified state.

    Parameters:
    -
    state: ArrayLike | None = None

    The state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which +

    state: ArrayLike | None = None

    The state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to the initial state.

    diff --git a/v0.3.x/api/galois.GLFSR.step/index.html b/v0.3.x/api/galois.GLFSR.step/index.html index 85d7b8cb9..81496ec6a 100644 --- a/v0.3.x/api/galois.GLFSR.step/index.html +++ b/v0.3.x/api/galois.GLFSR.step/index.html @@ -7792,12 +7792,12 @@
    -galois.GLFSR.step(steps: int = 1) FieldArray
    +galois.GLFSR.step(steps: int = 1) FieldArray

    Produces the next steps output symbols.

    Parameters:
    -
    steps: int = 1

    The direction and number of output symbols to produce. The default is 1. If negative, the +

    steps: int = 1

    The direction and number of output symbols to produce. The default is 1. If negative, the Galois LFSR will step backwards.

    diff --git a/v0.3.x/api/galois.GLFSR/index.html b/v0.3.x/api/galois.GLFSR/index.html index 1932a5bab..ec96d4f56 100644 --- a/v0.3.x/api/galois.GLFSR/index.html +++ b/v0.3.x/api/galois.GLFSR/index.html @@ -8164,7 +8164,7 @@

    Constructors

    -GLFSR(feedback_poly: Poly, state: ArrayLike | None = None)
    +GLFSR(feedback_poly: Poly, state: ArrayLike | None = None)

    Constructs a Galois LFSR from its feedback polynomial \(f(x)\).

    @@ -8179,13 +8179,13 @@

    String representation

    -__repr__() str
    +__repr__() str

    A terse representation of the Galois LFSR.

    -__str__() str
    +__str__() str

    A formatted string of relevant properties of the Galois LFSR.

    @@ -8194,13 +8194,13 @@

    String representationMethods

    -reset(state: ArrayLike | None = None)
    +reset(state: ArrayLike | None = None)

    Resets the Galois LFSR state to the specified state.

    -step(steps: int = 1) FieldArray
    +step(steps: int = 1) FieldArray

    Produces the next steps output symbols.

    @@ -8215,13 +8215,13 @@

    MethodsProperties

    -property field : type[FieldArray]
    +property field : type[FieldArray]

    The FieldArray subclass for the finite field that defines the linear arithmetic.

    -property order : int
    +property order : int

    The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it.

    diff --git a/v0.3.x/api/galois.Poly.Degrees/index.html b/v0.3.x/api/galois.Poly.Degrees/index.html index 1958f7e76..6883cc98d 100644 --- a/v0.3.x/api/galois.Poly.Degrees/index.html +++ b/v0.3.x/api/galois.Poly.Degrees/index.html @@ -7820,19 +7820,19 @@
    -classmethod galois.Poly.Degrees(degrees: Sequence[int] | ndarray, coeffs: ArrayLike | None = None, field: type[Array] | None = None) Self
    +classmethod galois.Poly.Degrees(degrees: Sequence[int] | ndarray, coeffs: ArrayLike | None = None, field: type[Array] | None = None) Self

    Constructs a polynomial over \(\mathrm{GF}(p^m)\) from its non-zero degrees.

    Parameters:
    -
    degrees: Sequence[int] | ndarray

    The polynomial degrees with non-zero coefficients.

    +
    degrees: Sequence[int] | ndarray

    The polynomial degrees with non-zero coefficients.

    -
    coeffs: ArrayLike | None = None

    The corresponding non-zero polynomial coefficients. The default is None which corresponds to +

    coeffs: ArrayLike | None = None

    The corresponding non-zero polynomial coefficients. The default is None which corresponds to all ones.

    -
    field: type[Array] | None = None

    The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over.

    +
    field: type[Array] | None = None

    The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over.

      -
    • None (default): If the coefficients are an Array, they won’t be modified. +

    • None (default): If the coefficients are an Array, they won’t be modified. If the coefficients are not explicitly in a Galois field, they are assumed to be from \(\mathrm{GF}(2)\) and are converted using galois.GF2(coeffs).

    • Array subclass: The coefficients are explicitly converted to this Galois field diff --git a/v0.3.x/api/galois.Poly.Identity/index.html b/v0.3.x/api/galois.Poly.Identity/index.html index cbd73f69c..7b58d469d 100644 --- a/v0.3.x/api/galois.Poly.Identity/index.html +++ b/v0.3.x/api/galois.Poly.Identity/index.html @@ -7792,12 +7792,12 @@

      -classmethod galois.Poly.Identity(field: type[Array] | None = None) Self
      +classmethod galois.Poly.Identity(field: type[Array] | None = None) Self

      Constructs the polynomial \(f(x) = x\) over \(\mathrm{GF}(p^m)\).

      Parameters:
      -
      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which +

      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which corresponds to GF2.

      diff --git a/v0.3.x/api/galois.Poly.Int/index.html b/v0.3.x/api/galois.Poly.Int/index.html index cfd1b70e5..16a6f8dcb 100644 --- a/v0.3.x/api/galois.Poly.Int/index.html +++ b/v0.3.x/api/galois.Poly.Int/index.html @@ -7820,14 +7820,14 @@
      -classmethod galois.Poly.Int(integer: int, field: type[Array] | None = None) Self
      +classmethod galois.Poly.Int(integer: int, field: type[Array] | None = None) Self

      Constructs a polynomial over \(\mathrm{GF}(p^m)\) from its integer representation.

      Parameters:
      -
      integer: int

      The integer representation of the polynomial \(f(x)\).

      +
      integer: int

      The integer representation of the polynomial \(f(x)\).

      -
      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which +

      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which corresponds to GF2.

      diff --git a/v0.3.x/api/galois.Poly.One/index.html b/v0.3.x/api/galois.Poly.One/index.html index f1390d971..c4eeec38d 100644 --- a/v0.3.x/api/galois.Poly.One/index.html +++ b/v0.3.x/api/galois.Poly.One/index.html @@ -7792,12 +7792,12 @@
      -classmethod galois.Poly.One(field: type[Array] | None = None) Self
      +classmethod galois.Poly.One(field: type[Array] | None = None) Self

      Constructs the polynomial \(f(x) = 1\) over \(\mathrm{GF}(p^m)\).

      Parameters:
      -
      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which +

      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which corresponds to GF2.

      diff --git a/v0.3.x/api/galois.Poly.Random/index.html b/v0.3.x/api/galois.Poly.Random/index.html index d6e10b71d..6309fc67b 100644 --- a/v0.3.x/api/galois.Poly.Random/index.html +++ b/v0.3.x/api/galois.Poly.Random/index.html @@ -7820,18 +7820,18 @@
      -classmethod galois.Poly.Random(degree: int, seed: int | numpy.integer | numpy.random._generator.Generator | None = None, field: type[Array] | None = None) Self
      +classmethod galois.Poly.Random(degree: int, seed: int | numpy.integer | numpy.random._generator.Generator | None = None, field: type[Array] | None = None) Self

      Constructs a random polynomial over \(\mathrm{GF}(p^m)\) with degree \(d\).

      Parameters:
      -
      degree: int

      The degree of the polynomial.

      +
      degree: int

      The degree of the polynomial.

      -
      seed: int | numpy.integer | numpy.random._generator.Generator | None = None

      Non-negative integer used to initialize the PRNG. The default is None which means that +

      seed: int | numpy.integer | numpy.random._generator.Generator | None = None

      Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed.

      -
      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which +

      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which corresponds to GF2.

      @@ -7843,7 +7843,7 @@

      Examples

      Construct a random degree-5 polynomial over \(\mathrm{GF}(2)\).

      In [1]: galois.Poly.Random(5)
      -Out[1]: Poly(x^5 + x^3 + x^2, GF(2))
      +Out[1]: Poly(x^5 + x^4 + x^3 + x^2 + x + 1, GF(2))
       

      Construct a random degree-5 polynomial over \(\mathrm{GF}(3^5)\) with a given seed. This produces diff --git a/v0.3.x/api/galois.Poly.Roots/index.html b/v0.3.x/api/galois.Poly.Roots/index.html index 1d33652ad..d5e766063 100644 --- a/v0.3.x/api/galois.Poly.Roots/index.html +++ b/v0.3.x/api/galois.Poly.Roots/index.html @@ -7834,19 +7834,19 @@

      -classmethod galois.Poly.Roots(roots: ArrayLike, multiplicities: Sequence[int] | ndarray | None = None, field: type[Array] | None = None) Self
      +classmethod galois.Poly.Roots(roots: ArrayLike, multiplicities: Sequence[int] | ndarray | None = None, field: type[Array] | None = None) Self

      Constructs a monic polynomial over \(\mathrm{GF}(p^m)\) from its roots.

      Parameters:
      roots: ArrayLike

      The roots of the desired polynomial.

      -
      multiplicities: Sequence[int] | ndarray | None = None

      The corresponding root multiplicities. The default is None which corresponds to +

      multiplicities: Sequence[int] | ndarray | None = None

      The corresponding root multiplicities. The default is None which corresponds to all ones.

      -
      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over.

      +
      field: type[Array] | None = None

      The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over.

        -
      • None (default): If the roots are an Array, they won’t be modified. If the +

      • None (default): If the roots are an Array, they won’t be modified. If the roots are not explicitly in a Galois field, they are assumed to be from \(\mathrm{GF}(2)\) and are converted using galois.GF2(roots).

      • Array subclass: The roots are explicitly converted to this Galois field using diff --git a/v0.3.x/api/galois.Poly.Str/index.html b/v0.3.x/api/galois.Poly.Str/index.html index 1853c23f6..dffd8f7c3 100644 --- a/v0.3.x/api/galois.Poly.Str/index.html +++ b/v0.3.x/api/galois.Poly.Str/index.html @@ -7820,14 +7820,14 @@

        -classmethod galois.Poly.Str(string: str, field: type[Array] | None = None) Self
        +classmethod galois.Poly.Str(string: str, field: type[Array] | None = None) Self

        Constructs a polynomial over \(\mathrm{GF}(p^m)\) from its string representation.

        Parameters:
        -
        string: str

        The string representation of the polynomial \(f(x)\).

        +
        string: str

        The string representation of the polynomial \(f(x)\).

        -
        field: type[Array] | None = None

        The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which +

        field: type[Array] | None = None

        The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which corresponds to GF2.

        diff --git a/v0.3.x/api/galois.Poly.Zero/index.html b/v0.3.x/api/galois.Poly.Zero/index.html index e573e2971..d37026e9b 100644 --- a/v0.3.x/api/galois.Poly.Zero/index.html +++ b/v0.3.x/api/galois.Poly.Zero/index.html @@ -7792,12 +7792,12 @@
        -classmethod galois.Poly.Zero(field: type[Array] | None = None) Self
        +classmethod galois.Poly.Zero(field: type[Array] | None = None) Self

        Constructs the polynomial \(f(x) = 0\) over \(\mathrm{GF}(p^m)\).

        Parameters:
        -
        field: type[Array] | None = None

        The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None +

        field: type[Array] | None = None

        The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over. The default is None which corresponds to GF2.

        diff --git a/v0.3.x/api/galois.Poly.__call__/index.html b/v0.3.x/api/galois.Poly.__call__/index.html index f952d6f2f..bfe848388 100644 --- a/v0.3.x/api/galois.Poly.__call__/index.html +++ b/v0.3.x/api/galois.Poly.__call__/index.html @@ -7820,7 +7820,7 @@
        -galois.Poly.__call__(at: ElementLike | ArrayLike, field: type[Array] | None = None, elementwise: bool = True) Array
        +galois.Poly.__call__(at: ElementLike | ArrayLike, field: type[Array] | None = None, elementwise: bool = True) Array
        galois.Poly.__call__(at: Poly) Poly

        Evaluates the polynomial \(f(x)\) at \(x_0\) or the polynomial composition \(f(g(x))\).

        @@ -7830,10 +7830,10 @@
        at: ElementLike | ArrayLike
        at: Poly

        A finite field scalar or array \(x_0\) to evaluate the polynomial at or the polynomial \(g(x)\) to evaluate the polynomial composition \(f(g(x))\).

        -
        field: type[Array] | None = None

        The Galois field to evaluate the polynomial over. The default is None which represents +

        field: type[Array] | None = None

        The Galois field to evaluate the polynomial over. The default is None which represents the polynomial’s current field, i.e. field.

        -
        elementwise: bool = True

        Indicates whether to evaluate \(x_0\) element-wise. The default is True. If False +

        elementwise: bool = True

        Indicates whether to evaluate \(x_0\) element-wise. The default is True. If False (only valid for square matrices), the polynomial indeterminate \(x\) is exponentiated using matrix powers (repeated matrix multiplication).

        diff --git a/v0.3.x/api/galois.Poly.__eq__/index.html b/v0.3.x/api/galois.Poly.__eq__/index.html index 8741fdd6f..c44a179c1 100644 --- a/v0.3.x/api/galois.Poly.__eq__/index.html +++ b/v0.3.x/api/galois.Poly.__eq__/index.html @@ -7792,7 +7792,7 @@
        -galois.Poly.__eq__(other: PolyLike) bool
        +galois.Poly.__eq__(other: PolyLike) bool

        Determines if two polynomials are equal.

        Parameters:
        diff --git a/v0.3.x/api/galois.Poly.__init__/index.html b/v0.3.x/api/galois.Poly.__init__/index.html index c13b1ae4a..a4638d7d2 100644 --- a/v0.3.x/api/galois.Poly.__init__/index.html +++ b/v0.3.x/api/galois.Poly.__init__/index.html @@ -7792,7 +7792,7 @@
        -galois.Poly(coeffs: ArrayLike, field: type[Array] | None = None, order: 'desc' | 'asc' = 'desc')
        +galois.Poly(coeffs: ArrayLike, field: type[Array] | None = None, order: 'desc' | 'asc' = 'desc')

        Creates a polynomial \(f(x)\) over \(\mathrm{GF}(p^m)\).

        The polynomial \(f(x) = a_d x^d + a_{d-1} x^{d-1} + \dots + a_1 x + a_0\) with degree \(d\) has coefficients \(\{a_{d}, a_{d-1}, \dots, a_1, a_0\}\) in \(\mathrm{GF}(p^m)\).

        @@ -7801,9 +7801,9 @@
        coeffs: ArrayLike

        The polynomial coefficients \(\{a_d, a_{d-1}, \dots, a_1, a_0\}\).

        -
        field: type[Array] | None = None

        The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over.

        +
        field: type[Array] | None = None

        The Galois field \(\mathrm{GF}(p^m)\) the polynomial is over.

          -
        • None (default): If the coefficients are an Array, they won’t be modified. +

        • None (default): If the coefficients are an Array, they won’t be modified. If the coefficients are not explicitly in a Galois field, they are assumed to be from \(\mathrm{GF}(2)\) and are converted using galois.GF2(coeffs).

        • Array subclass: The coefficients are explicitly converted to this Galois field diff --git a/v0.3.x/api/galois.Poly.__int__/index.html b/v0.3.x/api/galois.Poly.__int__/index.html index c9f57ee6d..9a27f2cc7 100644 --- a/v0.3.x/api/galois.Poly.__int__/index.html +++ b/v0.3.x/api/galois.Poly.__int__/index.html @@ -7752,7 +7752,7 @@

          -galois.Poly.__int__() int
          +galois.Poly.__int__() int

          The integer representation of the polynomial.

          Notes

          Int() and __int__() are inverse operations.

          diff --git a/v0.3.x/api/galois.Poly.__len__/index.html b/v0.3.x/api/galois.Poly.__len__/index.html index 4ce5ec6aa..2dfb44f66 100644 --- a/v0.3.x/api/galois.Poly.__len__/index.html +++ b/v0.3.x/api/galois.Poly.__len__/index.html @@ -7752,7 +7752,7 @@
          -galois.Poly.__len__() int
          +galois.Poly.__len__() int

          Returns the length of the coefficient array, which is equivalent to Poly.degree + 1.

          Returns:
          diff --git a/v0.3.x/api/galois.Poly.__repr__/index.html b/v0.3.x/api/galois.Poly.__repr__/index.html index 78d88ccae..47f844716 100644 --- a/v0.3.x/api/galois.Poly.__repr__/index.html +++ b/v0.3.x/api/galois.Poly.__repr__/index.html @@ -7738,7 +7738,7 @@
          -galois.Poly.__repr__() str
          +galois.Poly.__repr__() str

          A representation of the polynomial and the finite field it’s over.

          Tip

          diff --git a/v0.3.x/api/galois.Poly.__str__/index.html b/v0.3.x/api/galois.Poly.__str__/index.html index a0f439851..d0bb5bff9 100644 --- a/v0.3.x/api/galois.Poly.__str__/index.html +++ b/v0.3.x/api/galois.Poly.__str__/index.html @@ -7752,7 +7752,7 @@
          -galois.Poly.__str__() str
          +galois.Poly.__str__() str

          The string representation of the polynomial, without specifying the finite field it’s over.

          Tip

          diff --git a/v0.3.x/api/galois.Poly.coefficients/index.html b/v0.3.x/api/galois.Poly.coefficients/index.html index 8d54567fd..1657597b5 100644 --- a/v0.3.x/api/galois.Poly.coefficients/index.html +++ b/v0.3.x/api/galois.Poly.coefficients/index.html @@ -7820,13 +7820,13 @@
          -galois.Poly.coefficients(size: int | None = None, order: 'desc' | 'asc' = 'desc') Array
          +galois.Poly.coefficients(size: int | None = None, order: 'desc' | 'asc' = 'desc') Array

          Returns the polynomial coefficients in the order and size specified.

          Parameters:
          -
          size: int | None = None

          The fixed size of the coefficient array. Zeros will be added for higher-order terms. This value -must be at least degree + 1 or a ValueError will be raised. The default is None +

          size: int | None = None

          The fixed size of the coefficient array. Zeros will be added for higher-order terms. This value +must be at least degree + 1 or a ValueError will be raised. The default is None which corresponds to degree + 1.

          order: 'desc' | 'asc' = 'desc'

          The order of the coefficient degrees, either descending (default) or ascending.

          diff --git a/v0.3.x/api/galois.Poly.degree/index.html b/v0.3.x/api/galois.Poly.degree/index.html index ca4800911..1198602b6 100644 --- a/v0.3.x/api/galois.Poly.degree/index.html +++ b/v0.3.x/api/galois.Poly.degree/index.html @@ -7738,7 +7738,7 @@
          -property galois.Poly.degree : int
          +property galois.Poly.degree : int

          The degree of the polynomial. The degree of a polynomial is the highest degree with a non-zero coefficient.

          Examples

          In [1]: GF = galois.GF(7)
          diff --git a/v0.3.x/api/galois.Poly.derivative/index.html b/v0.3.x/api/galois.Poly.derivative/index.html
          index 2d45eb94e..59f9bfc41 100644
          --- a/v0.3.x/api/galois.Poly.derivative/index.html
          +++ b/v0.3.x/api/galois.Poly.derivative/index.html
          @@ -7820,12 +7820,12 @@
           
           
          -galois.Poly.derivative(k: int = 1) Poly
          +galois.Poly.derivative(k: int = 1) Poly

          Computes the \(k\)-th formal derivative \(\frac{d^k}{dx^k} f(x)\) of the polynomial \(f(x)\).

          Parameters:
          -
          k: int = 1

          The number of derivatives to compute. 1 corresponds to \(p'(x)\), 2 corresponds to +

          k: int = 1

          The number of derivatives to compute. 1 corresponds to \(p'(x)\), 2 corresponds to \(p''(x)\), etc. The default is 1.

          @@ -7853,10 +7853,10 @@

          Examples

          Compute the derivatives of a polynomial over \(\mathrm{GF}(2)\).

          In [1]: f = galois.Poly.Random(7); f
          -Out[1]: Poly(x^7 + x^6 + x^2 + 1, GF(2))
          +Out[1]: Poly(x^7 + x^6 + x^4 + x^2 + x, GF(2))
           
           In [2]: f.derivative()
          -Out[2]: Poly(x^6, GF(2))
          +Out[2]: Poly(x^6 + 1, GF(2))
           
           # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
           In [3]: f.derivative(GF.characteristic)
          @@ -7867,16 +7867,16 @@
           
          In [4]: GF = galois.GF(7)
           
           In [5]: f = galois.Poly.Random(11, field=GF); f
          -Out[5]: Poly(3x^11 + 6x^10 + 4x^9 + 5x^8 + 5x^7 + 2x^6 + 4x^5 + 5x^4 + 3x^2 + 5x + 6, GF(7))
          +Out[5]: Poly(x^11 + 3x^9 + 3x^8 + 2x^6 + 2x^4 + 4x^3 + 3x^2 + x, GF(7))
           
           In [6]: f.derivative()
          -Out[6]: Poly(5x^10 + 4x^9 + x^8 + 5x^7 + 5x^5 + 6x^4 + 6x^3 + 6x + 5, GF(7))
          +Out[6]: Poly(4x^10 + 6x^8 + 3x^7 + 5x^5 + x^3 + 5x^2 + 6x + 1, GF(7))
           
           In [7]: f.derivative(2)
          -Out[7]: Poly(x^9 + x^8 + x^7 + 4x^4 + 3x^3 + 4x^2 + 6, GF(7))
          +Out[7]: Poly(5x^9 + 6x^7 + 4x^4 + 3x^2 + 3x + 6, GF(7))
           
           In [8]: f.derivative(3)
          -Out[8]: Poly(2x^8 + x^7 + 2x^3 + 2x^2 + x, GF(7))
          +Out[8]: Poly(3x^8 + 2x^3 + 6x + 3, GF(7))
           
           # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
           In [9]: f.derivative(GF.characteristic)
          @@ -7887,13 +7887,13 @@
           
          In [10]: GF = galois.GF(3**5)
           
           In [11]: f = galois.Poly.Random(7, field=GF); f
          -Out[11]: Poly(67x^7 + 85x^6 + 132x^5 + 132x^4 + 176x^3 + 124x^2 + 83x + 97, GF(3^5))
          +Out[11]: Poly(194x^7 + 197x^6 + 83x^5 + 73x^4 + 109x^3 + 108x^2 + 142x + 13, GF(3^5))
           
           In [12]: f.derivative()
          -Out[12]: Poly(67x^6 + 228x^4 + 132x^3 + 239x + 83, GF(3^5))
          +Out[12]: Poly(194x^6 + 163x^4 + 73x^3 + 216x + 142, GF(3^5))
           
           In [13]: f.derivative(2)
          -Out[13]: Poly(228x^3 + 239, GF(3^5))
          +Out[13]: Poly(163x^3 + 216, GF(3^5))
           
           # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
           In [14]: f.derivative(GF.characteristic)
          diff --git a/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html b/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html
          index f7c05d645..a31c56df9 100644
          --- a/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html
          +++ b/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html
          @@ -7794,7 +7794,7 @@
           
           
          -galois.Poly.distinct_degree_factors() tuple[list[galois._polys._poly.Poly], list[int]]
          +galois.Poly.distinct_degree_factors() tuple[list[galois._polys._poly.Poly], list[int]]

          Factors the monic, square-free polynomial \(f(x)\) into a product of polynomials whose irreducible factors all have the same degree.

          @@ -7806,7 +7806,7 @@

          Raises:
          -

          ValueError – If \(f(x)\) is not monic, has degree 0, or is not square-free.

          +

          ValueError – If \(f(x)\) is not monic, has degree 0, or is not square-free.

          Notes

          diff --git a/v0.3.x/api/galois.Poly.equal_degree_factors/index.html b/v0.3.x/api/galois.Poly.equal_degree_factors/index.html index 8f5c52c5a..22f715a35 100644 --- a/v0.3.x/api/galois.Poly.equal_degree_factors/index.html +++ b/v0.3.x/api/galois.Poly.equal_degree_factors/index.html @@ -7834,13 +7834,13 @@
          -galois.Poly.equal_degree_factors(degree: int) list[galois._polys._poly.Poly]
          +galois.Poly.equal_degree_factors(degree: int) list[galois._polys._poly.Poly]

          Factors the monic, square-free polynomial \(f(x)\) of degree \(rd\) into a product of \(r\) irreducible factors with degree \(d\).

          Parameters:
          -
          degree: int

          The degree \(d\) of each irreducible factor of \(f(x)\).

          +
          degree: int

          The degree \(d\) of each irreducible factor of \(f(x)\).

          @@ -7848,7 +7848,7 @@

          The list of \(r\) irreducible factors \(\{g_1(x), \dots, g_r(x)\}\) in lexicographical order.

          Raises:
          -

          ValueError – If \(f(x)\) is not monic, has degree 0, or is not square-free.

          +

          ValueError – If \(f(x)\) is not monic, has degree 0, or is not square-free.

          Notes

          diff --git a/v0.3.x/api/galois.Poly.factors/index.html b/v0.3.x/api/galois.Poly.factors/index.html index f9ac6a123..2dfa0ad2f 100644 --- a/v0.3.x/api/galois.Poly.factors/index.html +++ b/v0.3.x/api/galois.Poly.factors/index.html @@ -7794,7 +7794,7 @@
          -galois.Poly.factors() tuple[list[galois._polys._poly.Poly], list[int]]
          +galois.Poly.factors() tuple[list[galois._polys._poly.Poly], list[int]]

          Computes the irreducible factors of the non-constant, monic polynomial \(f(x)\).

          Returns:
          @@ -7806,7 +7806,7 @@

          Raises:
          -

          ValueError – If \(f(x)\) is not monic or has degree 0.

          +

          ValueError – If \(f(x)\) is not monic or has degree 0.

          Notes

          diff --git a/v0.3.x/api/galois.Poly.field/index.html b/v0.3.x/api/galois.Poly.field/index.html index 0785cacb3..75510dd80 100644 --- a/v0.3.x/api/galois.Poly.field/index.html +++ b/v0.3.x/api/galois.Poly.field/index.html @@ -7738,11 +7738,11 @@
          -property galois.Poly.field : type[Array]
          +property galois.Poly.field : type[Array]

          The Array subclass for the finite field the coefficients are over.

          Examples

          In [1]: a = galois.Poly.Random(5); a
          -Out[1]: Poly(x^5 + x, GF(2))
          +Out[1]: Poly(x^5 + x^3 + x^2 + 1, GF(2))
           
           In [2]: a.field
           Out[2]: <class 'galois.GF(2)'>
          @@ -7751,7 +7751,7 @@
           
          In [3]: GF = galois.GF(2**8)
           
           In [4]: b = galois.Poly.Random(5, field=GF); b
          -Out[4]: Poly(26x^5 + 26x^4 + 202x^3 + 87x^2 + 173x + 124, GF(2^8))
          +Out[4]: Poly(213x^5 + 79x^4 + 235x^3 + 200x^2 + 39x + 240, GF(2^8))
           
           In [5]: b.field
           Out[5]: <class 'galois.GF(2^8)'>
          diff --git a/v0.3.x/api/galois.Poly.is_conway/index.html b/v0.3.x/api/galois.Poly.is_conway/index.html
          index 30a79c685..506e67952 100644
          --- a/v0.3.x/api/galois.Poly.is_conway/index.html
          +++ b/v0.3.x/api/galois.Poly.is_conway/index.html
          @@ -7834,7 +7834,7 @@
           
           
          -galois.Poly.is_conway(search: bool = False) bool
          +galois.Poly.is_conway(search: bool = False) bool

          Checks whether the degree-\(m\) polynomial \(f(x)\) over \(\mathrm{GF}(p)\) is the Conway polynomial \(C_{p,m}(x)\).

          @@ -7843,7 +7843,7 @@
          Parameters:
          -

          Manually search for Conway polynomials if they are not included in Frank Luebeck’s database. The default is False.

          +

          Manually search for Conway polynomials if they are not included in Frank Luebeck’s database. The default is False.

          Slower performance

          Manually searching for a Conway polynomial is very computationally expensive.

          @@ -7856,7 +7856,7 @@

          True if the polynomial \(f(x)\) is the Conway polynomial \(C_{p,m}(x)\).

          Raises:
          -

          LookupError – If search=False and the Conway polynomial \(C_{p,m}\) is not found in Frank Luebeck’s +

          LookupError – If search=False and the Conway polynomial \(C_{p,m}\) is not found in Frank Luebeck’s database.

          diff --git a/v0.3.x/api/galois.Poly.is_conway_consistent/index.html b/v0.3.x/api/galois.Poly.is_conway_consistent/index.html index c7054f14e..35307ab46 100644 --- a/v0.3.x/api/galois.Poly.is_conway_consistent/index.html +++ b/v0.3.x/api/galois.Poly.is_conway_consistent/index.html @@ -7834,7 +7834,7 @@
          -galois.Poly.is_conway_consistent(search: bool = False) bool
          +galois.Poly.is_conway_consistent(search: bool = False) bool

          Determines whether the degree-\(m\) polynomial \(f(x)\) over \(\mathrm{GF}(p)\) is consistent with smaller Conway polynomials \(C_{p,n}(x)\) for all $n\ |m$.

          @@ -7843,7 +7843,7 @@
          Parameters:
          -

          Manually search for Conway polynomials if they are not included in Frank Luebeck’s database. The default is False.

          +

          Manually search for Conway polynomials if they are not included in Frank Luebeck’s database. The default is False.

          Slower performance

          Manually searching for a Conway polynomial is very computationally expensive.

          @@ -7857,7 +7857,7 @@ \(C_{p,n}(x)\) for all $n\ |m$.

          Raises:
          -

          LookupError – If search=False and a smaller Conway polynomial \(C_{p,n}\) is not found in Frank Luebeck’s +

          LookupError – If search=False and a smaller Conway polynomial \(C_{p,n}\) is not found in Frank Luebeck’s database.

          diff --git a/v0.3.x/api/galois.Poly.is_irreducible/index.html b/v0.3.x/api/galois.Poly.is_irreducible/index.html index 9a71fe89b..8662fdf72 100644 --- a/v0.3.x/api/galois.Poly.is_irreducible/index.html +++ b/v0.3.x/api/galois.Poly.is_irreducible/index.html @@ -7780,7 +7780,7 @@
          -galois.Poly.is_irreducible() bool
          +galois.Poly.is_irreducible() bool

          Determines whether the polynomial \(f(x)\) over \(\mathrm{GF}(p^m)\) is irreducible.

          Why is this a method and not a property?

          This is a method to indicate it is a computationally-expensive task.

          @@ -7826,13 +7826,13 @@
          In [4]: g = galois.irreducible_poly(2**4, 2, method="random"); g
          -Out[4]: Poly(x^2 + 3x + 14, GF(2^4))
          +Out[4]: Poly(x^2 + 11x + 6, GF(2^4))
           
           In [5]: h = galois.irreducible_poly(2**4, 3, method="random"); h
          -Out[5]: Poly(x^3 + 15x^2 + 13x + 6, GF(2^4))
          +Out[5]: Poly(x^3 + 4x^2 + 3x + 15, GF(2^4))
           
           In [6]: f = g * h; f
          -Out[6]: Poly(x^5 + 12x^4 + x^3 + 7x^2 + 2, GF(2^4))
          +Out[6]: Poly(x^5 + 15x^4 + 15x^3 + 10x^2 + 9x + 4, GF(2^4))
           
           In [7]: f.is_irreducible()
           Out[7]: False
          diff --git a/v0.3.x/api/galois.Poly.is_monic/index.html b/v0.3.x/api/galois.Poly.is_monic/index.html
          index dd551db24..0af717e22 100644
          --- a/v0.3.x/api/galois.Poly.is_monic/index.html
          +++ b/v0.3.x/api/galois.Poly.is_monic/index.html
          @@ -7738,7 +7738,7 @@
           
           
          -property galois.Poly.is_monic : bool
          +property galois.Poly.is_monic : bool

          Returns whether the polynomial is monic, meaning its highest-degree coefficient is one.

          Examples

          A monic polynomial over \(\mathrm{GF}(7)\).

          diff --git a/v0.3.x/api/galois.Poly.is_primitive/index.html b/v0.3.x/api/galois.Poly.is_primitive/index.html index 589dc8140..c3088038e 100644 --- a/v0.3.x/api/galois.Poly.is_primitive/index.html +++ b/v0.3.x/api/galois.Poly.is_primitive/index.html @@ -7780,7 +7780,7 @@
          -galois.Poly.is_primitive() bool
          +galois.Poly.is_primitive() bool

          Determines whether the polynomial \(f(x)\) over \(\mathrm{GF}(q)\) is primitive.

          Why is this a method and not a property?

          This is a method to indicate it is a computationally-expensive task.

          diff --git a/v0.3.x/api/galois.Poly.is_square_free/index.html b/v0.3.x/api/galois.Poly.is_square_free/index.html index 96b8951d7..6b21b693d 100644 --- a/v0.3.x/api/galois.Poly.is_square_free/index.html +++ b/v0.3.x/api/galois.Poly.is_square_free/index.html @@ -7766,7 +7766,7 @@
          -galois.Poly.is_square_free() bool
          +galois.Poly.is_square_free() bool

          Determines whether the polynomial \(f(x)\) over \(\mathrm{GF}(q)\) is square-free.

          Why is this a method and not a property?

          This is a method to indicate it is a computationally-expensive task.

          diff --git a/v0.3.x/api/galois.Poly.roots/index.html b/v0.3.x/api/galois.Poly.roots/index.html index 76742bdcf..3683f5a6b 100644 --- a/v0.3.x/api/galois.Poly.roots/index.html +++ b/v0.3.x/api/galois.Poly.roots/index.html @@ -7808,7 +7808,7 @@
          galois.Poly.roots(multiplicity: False = False) Array
          -galois.Poly.roots(multiplicity: True) tuple[galois._domains._array.Array, numpy.ndarray]
          +galois.Poly.roots(multiplicity: True) tuple[galois._domains._array.Array, numpy.ndarray]

          Calculates the roots \(r\) of the polynomial \(f(x)\), such that \(f(r) = 0\).

          Parameters:
          diff --git a/v0.3.x/api/galois.Poly.square_free_factors/index.html b/v0.3.x/api/galois.Poly.square_free_factors/index.html index 814c3de87..d7d48ec00 100644 --- a/v0.3.x/api/galois.Poly.square_free_factors/index.html +++ b/v0.3.x/api/galois.Poly.square_free_factors/index.html @@ -7794,7 +7794,7 @@
          -galois.Poly.square_free_factors() tuple[list[galois._polys._poly.Poly], list[int]]
          +galois.Poly.square_free_factors() tuple[list[galois._polys._poly.Poly], list[int]]

          Factors the monic polynomial \(f(x)\) into a product of square-free polynomials.

          Returns:
          @@ -7805,7 +7805,7 @@

          Raises:
          -

          ValueError – If \(f(x)\) is not monic or has degree 0.

          +

          ValueError – If \(f(x)\) is not monic or has degree 0.

          Notes

          diff --git a/v0.3.x/api/galois.Poly/index.html b/v0.3.x/api/galois.Poly/index.html index 1172c1084..1718e2b7b 100644 --- a/v0.3.x/api/galois.Poly/index.html +++ b/v0.3.x/api/galois.Poly/index.html @@ -8165,55 +8165,55 @@

          Constructors

          -Poly(coeffs: ArrayLike, field: type[Array] | None = None, ...)
          +Poly(coeffs: ArrayLike, field: type[Array] | None = None, ...)

          Creates a polynomial \(f(x)\) over \(\mathrm{GF}(p^m)\).

          -classmethod Degrees(degrees: Sequence[int] | ndarray, ...) Self
          +classmethod Degrees(degrees: Sequence[int] | ndarray, ...) Self

          Constructs a polynomial over \(\mathrm{GF}(p^m)\) from its non-zero degrees.

          -classmethod Identity(field: type[Array] | None = None) Self
          +classmethod Identity(field: type[Array] | None = None) Self

          Constructs the polynomial \(f(x) = x\) over \(\mathrm{GF}(p^m)\).

          -classmethod Int(integer: int, ...) Self
          +classmethod Int(integer: int, ...) Self

          Constructs a polynomial over \(\mathrm{GF}(p^m)\) from its integer representation.

          -classmethod One(field: type[Array] | None = None) Self
          +classmethod One(field: type[Array] | None = None) Self

          Constructs the polynomial \(f(x) = 1\) over \(\mathrm{GF}(p^m)\).

          -classmethod Random(degree: int, ...) Self
          +classmethod Random(degree: int, ...) Self

          Constructs a random polynomial over \(\mathrm{GF}(p^m)\) with degree \(d\).

          -classmethod Roots(roots: ArrayLike, ...) Self
          +classmethod Roots(roots: ArrayLike, ...) Self

          Constructs a monic polynomial over \(\mathrm{GF}(p^m)\) from its roots.

          -classmethod Str(string: str, ...) Self
          +classmethod Str(string: str, ...) Self

          Constructs a polynomial over \(\mathrm{GF}(p^m)\) from its string representation.

          -classmethod Zero(field: type[Array] | None = None) Self
          +classmethod Zero(field: type[Array] | None = None) Self

          Constructs the polynomial \(f(x) = 0\) over \(\mathrm{GF}(p^m)\).

          @@ -8230,19 +8230,19 @@

          Special methods
          -__eq__(other: PolyLike) bool
          +__eq__(other: PolyLike) bool

          Determines if two polynomials are equal.

          -__int__() int
          +__int__() int

          The integer representation of the polynomial.

          -__len__() int
          +__len__() int

          Returns the length of the coefficient array, which is equivalent to Poly.degree + 1.

          @@ -8251,13 +8251,13 @@

          Special methodsString representation

          -__repr__() str
          +__repr__() str

          A representation of the polynomial and the finite field it’s over.

          -__str__() str
          +__str__() str

          The string representation of the polynomial, without specifying the finite field it’s over.

          @@ -8266,7 +8266,7 @@

          String representationMethods

          -derivative(k: int = 1) Poly
          +derivative(k: int = 1) Poly

          Computes the \(k\)-th formal derivative \(\frac{d^k}{dx^k} f(x)\) of the polynomial \(f(x)\).

          @@ -8281,7 +8281,7 @@

          Methods roots(multiplicity: False = False) Array
          -roots(...) tuple[galois._domains._array.Array, numpy.ndarray]
          +roots(...) tuple[galois._domains._array.Array, numpy.ndarray]

          Calculates the roots \(r\) of the polynomial \(f(x)\), such that \(f(r) = 0\).

          @@ -8290,27 +8290,27 @@

          MethodsFactorization methods

          -distinct_degree_factors() tuple[list[galois._polys._poly.Poly], list[int]]
          +distinct_degree_factors() tuple[list[galois._polys._poly.Poly], list[int]]

          Factors the monic, square-free polynomial \(f(x)\) into a product of polynomials whose irreducible factors all have the same degree.

          -equal_degree_factors(degree: int) list[galois._polys._poly.Poly]
          +equal_degree_factors(degree: int) list[galois._polys._poly.Poly]

          Factors the monic, square-free polynomial \(f(x)\) of degree \(rd\) into a product of \(r\) irreducible factors with degree \(d\).

          -factors() tuple[list[galois._polys._poly.Poly], list[int]]
          +factors() tuple[list[galois._polys._poly.Poly], list[int]]

          Computes the irreducible factors of the non-constant, monic polynomial \(f(x)\).

          -square_free_factors() tuple[list[galois._polys._poly.Poly], list[int]]
          +square_free_factors() tuple[list[galois._polys._poly.Poly], list[int]]

          Factors the monic polynomial \(f(x)\) into a product of square-free polynomials.

          @@ -8319,7 +8319,7 @@

          Factorization methodsCoefficients

          -coefficients(size: int | None = None, ...) Array
          +coefficients(size: int | None = None, ...) Array

          Returns the polynomial coefficients in the order and size specified.

          @@ -8352,13 +8352,13 @@

          CoefficientsProperties

          -property degree : int
          +property degree : int

          The degree of the polynomial. The degree of a polynomial is the highest degree with a non-zero coefficient.

          -property field : type[Array]
          +property field : type[Array]

          The Array subclass for the finite field the coefficients are over.

          @@ -8367,39 +8367,39 @@

          PropertiesAttributes

          -is_conway(search: bool = False) bool
          +is_conway(search: bool = False) bool

          Checks whether the degree-\(m\) polynomial \(f(x)\) over \(\mathrm{GF}(p)\) is the Conway polynomial \(C_{p,m}(x)\).

          -is_conway_consistent(search: bool = False) bool
          +is_conway_consistent(search: bool = False) bool

          Determines whether the degree-\(m\) polynomial \(f(x)\) over \(\mathrm{GF}(p)\) is consistent with smaller Conway polynomials \(C_{p,n}(x)\) for all $n\ |m$.

          -is_irreducible() bool
          +is_irreducible() bool

          Determines whether the polynomial \(f(x)\) over \(\mathrm{GF}(p^m)\) is irreducible.

          -property is_monic : bool
          +property is_monic : bool

          Returns whether the polynomial is monic, meaning its highest-degree coefficient is one.

          -is_primitive() bool
          +is_primitive() bool

          Determines whether the polynomial \(f(x)\) over \(\mathrm{GF}(q)\) is primitive.

          -is_square_free() bool
          +is_square_free() bool

          Determines whether the polynomial \(f(x)\) over \(\mathrm{GF}(q)\) is square-free.

          diff --git a/v0.3.x/api/galois.ReedSolomon.__init__/index.html b/v0.3.x/api/galois.ReedSolomon.__init__/index.html index e9351b1f7..f28660bd6 100644 --- a/v0.3.x/api/galois.ReedSolomon.__init__/index.html +++ b/v0.3.x/api/galois.ReedSolomon.__init__/index.html @@ -7862,14 +7862,14 @@
          -galois.ReedSolomon(n: int, k: int | None = None, d: int | None = None, field: type[FieldArray] | None = None, alpha: ElementLike | None = None, c: int = 1, systematic: bool = True)
          +galois.ReedSolomon(n: int, k: int | None = None, d: int | None = None, field: type[FieldArray] | None = None, alpha: ElementLike | None = None, c: int = 1, systematic: bool = True)

          Constructs a general \(\textrm{RS}(n, k)\) code over \(\mathrm{GF}(q)\).

          Parameters:
          -
          n: int

          The codeword size \(n\). If \(n = q - 1\), the Reed-Solomon code is primitive.

          +
          n: int

          The codeword size \(n\). If \(n = q - 1\), the Reed-Solomon code is primitive.

          -
          k: int | None = None

          The message size \(k\).

          +
          k: int | None = None

          The message size \(k\).

          Important

          Either k or d must be provided to define the code. Both may be provided as long as they are @@ -7877,23 +7877,23 @@

          -
          d: int | None = None

          The design distance \(d\). This defines the number of roots \(d - 1\) in the generator +

          d: int | None = None

          The design distance \(d\). This defines the number of roots \(d - 1\) in the generator polynomial \(g(x)\) over \(\mathrm{GF}(q)\). Reed-Solomon codes achieve the Singleton bound, so \(d = n - k + 1\).

          -
          field: type[FieldArray] | None = None

          The Galois field \(\mathrm{GF}(q)\) that defines the alphabet of the codeword symbols. +

          field: type[FieldArray] | None = None

          The Galois field \(\mathrm{GF}(q)\) that defines the alphabet of the codeword symbols. The default is None which corresponds to \(\mathrm{GF}(2^m)\) where \(2^{m - 1} \le n < 2^m\). The default field will use matlab_primitive_poly(2, m) for the irreducible polynomial.

          -
          alpha: ElementLike | None = None

          A primitive \(n\)-th root of unity \(\alpha\) in \(\mathrm{GF}(q)\) that defines the +

          alpha: ElementLike | None = None

          A primitive \(n\)-th root of unity \(\alpha\) in \(\mathrm{GF}(q)\) that defines the \(\alpha^c, \dots, \alpha^{c+d-2}\) roots of the generator polynomial \(g(x)\).

          -
          c: int = 1

          The first consecutive power \(c\) of \(\alpha\) that defines the +

          c: int = 1

          The first consecutive power \(c\) of \(\alpha\) that defines the \(\alpha^c, \dots, \alpha^{c+d-2}\) roots of the generator polynomial \(g(x)\). The default is 1. If \(c = 1\), the Reed-Solomon code is narrow-sense.

          -
          systematic: bool = True

          Indicates if the encoding should be systematic, meaning the codeword is the message with +

          systematic: bool = True

          Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True.

          diff --git a/v0.3.x/api/galois.ReedSolomon.__repr__/index.html b/v0.3.x/api/galois.ReedSolomon.__repr__/index.html index 1c78166af..f4bab9685 100644 --- a/v0.3.x/api/galois.ReedSolomon.__repr__/index.html +++ b/v0.3.x/api/galois.ReedSolomon.__repr__/index.html @@ -7738,7 +7738,7 @@
          -galois.ReedSolomon.__repr__() str
          +galois.ReedSolomon.__repr__() str

          A terse representation of the Reed-Solomon code.

          Examples

          Construct a primitive, narrow-sense \(\textrm{RS}(255, 223)\) code over \(\mathrm{GF}(2^8)\).

          diff --git a/v0.3.x/api/galois.ReedSolomon.__str__/index.html b/v0.3.x/api/galois.ReedSolomon.__str__/index.html index 155c4ebe4..3abc34b13 100644 --- a/v0.3.x/api/galois.ReedSolomon.__str__/index.html +++ b/v0.3.x/api/galois.ReedSolomon.__str__/index.html @@ -7738,7 +7738,7 @@
          -galois.ReedSolomon.__str__() str
          +galois.ReedSolomon.__str__() str

          A formatted string with relevant properties of the Reed-Solomon code.

          Examples

          Construct a primitive, narrow-sense \(\textrm{RS}(255, 223)\) code over \(\mathrm{GF}(2^8)\).

          diff --git a/v0.3.x/api/galois.ReedSolomon.c/index.html b/v0.3.x/api/galois.ReedSolomon.c/index.html index 9ee646e9b..0a51b573c 100644 --- a/v0.3.x/api/galois.ReedSolomon.c/index.html +++ b/v0.3.x/api/galois.ReedSolomon.c/index.html @@ -7738,7 +7738,7 @@
          -property galois.ReedSolomon.c : int
          +property galois.ReedSolomon.c : int

          The first consecutive power \(c\) of \(\alpha\) that defines the roots \(\alpha^c, \dots, \alpha^{c+d-2}\) of the generator polynomial \(g(x)\).

          Examples

          diff --git a/v0.3.x/api/galois.ReedSolomon.d/index.html b/v0.3.x/api/galois.ReedSolomon.d/index.html index dcc309876..eb1f1af95 100644 --- a/v0.3.x/api/galois.ReedSolomon.d/index.html +++ b/v0.3.x/api/galois.ReedSolomon.d/index.html @@ -7738,7 +7738,7 @@
          -property galois.ReedSolomon.d : int
          +property galois.ReedSolomon.d : int

          The minimum distance \(d\) of the \([n, k, d]_q\) code.

          Examples

          Construct a \(\textrm{RS}(15, 9)\) code over \(\mathrm{GF}(2^4)\).

          diff --git a/v0.3.x/api/galois.ReedSolomon.decode/index.html b/v0.3.x/api/galois.ReedSolomon.decode/index.html index d2b50d395..a9024069e 100644 --- a/v0.3.x/api/galois.ReedSolomon.decode/index.html +++ b/v0.3.x/api/galois.ReedSolomon.decode/index.html @@ -7836,7 +7836,7 @@
          galois.ReedSolomon.decode(codeword: ArrayLike, output: 'message' | 'codeword' = 'message', errors: False = False) FieldArray
          -galois.ReedSolomon.decode(codeword: ArrayLike, output: 'message' | 'codeword' = 'message', errors: True = True) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]
          +galois.ReedSolomon.decode(codeword: ArrayLike, output: 'message' | 'codeword' = 'message', errors: True = True) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]

          Decodes the codeword \(\mathbf{c}\) into the message \(\mathbf{m}\).

          Parameters:
          @@ -7915,23 +7915,23 @@ In [2]: GF = rs.field In [3]: m = GF.Random(rs.k); m -Out[3]: GF([ 8, 8, 1, 13, 12, 8, 4, 11, 7], order=2^4) +Out[3]: GF([ 4, 2, 10, 14, 9, 12, 12, 5, 12], order=2^4) In [4]: c = rs.encode(m); c -Out[4]: GF([ 8, 8, 1, 13, 12, 8, 4, 11, 7, 5, 11, 10, 4, 9, 12], order=2^4) +Out[4]: GF([ 4, 2, 10, 14, 9, 12, 12, 5, 12, 14, 11, 9, 2, 14, 15], order=2^4)

          Corrupt \(t\) symbols of the codeword.

          In [5]: e = GF.Random(rs.t, low=1); e
          -Out[5]: GF([5, 9, 3], order=2^4)
          +Out[5]: GF([10,  8,  1], order=2^4)
           
           In [6]: c[0:rs.t] += e; c
          -Out[6]: GF([13,  1,  2, 13, 12,  8,  4, 11,  7,  5, 11, 10,  4,  9, 12], order=2^4)
          +Out[6]: GF([14, 10, 11, 14,  9, 12, 12,  5, 12, 14, 11,  9,  2, 14, 15], order=2^4)
           

          Decode the codeword and recover the message.

          In [7]: d = rs.decode(c); d
          -Out[7]: GF([ 8,  8,  1, 13, 12,  8,  4, 11,  7], order=2^4)
          +Out[7]: GF([ 4,  2, 10, 14,  9, 12, 12,  5, 12], order=2^4)
           
           In [8]: np.array_equal(d, m)
           Out[8]: True
          @@ -7939,7 +7939,7 @@
           

          Decode the codeword, specifying the number of corrected errors, and recover the message.

          In [9]: d, e = rs.decode(c, errors=True); d, e
          -Out[9]: (GF([ 8,  8,  1, 13, 12,  8,  4, 11,  7], order=2^4), 3)
          +Out[9]: (GF([ 4,  2, 10, 14,  9, 12, 12,  5, 12], order=2^4), 3)
           
           In [10]: np.array_equal(d, m)
           Out[10]: True
          @@ -7953,23 +7953,23 @@
           In [12]: GF = rs.field
           
           In [13]: m = GF.Random(rs.k - 4); m
          -Out[13]: GF([14,  5,  0, 12, 15], order=2^4)
          +Out[13]: GF([ 5, 10, 13, 14,  1], order=2^4)
           
           In [14]: c = rs.encode(m); c
          -Out[14]: GF([14,  5,  0, 12, 15,  0, 15,  8,  2,  7,  5], order=2^4)
          +Out[14]: GF([ 5, 10, 13, 14,  1,  0, 14,  5,  9, 15,  8], order=2^4)
           

          Corrupt \(t\) symbols of the codeword.

          In [15]: e = GF.Random(rs.t, low=1); e
          -Out[15]: GF([ 9, 13,  1], order=2^4)
          +Out[15]: GF([ 8,  3, 15], order=2^4)
           
           In [16]: c[0:rs.t] += e; c
          -Out[16]: GF([ 7,  8,  1, 12, 15,  0, 15,  8,  2,  7,  5], order=2^4)
          +Out[16]: GF([13,  9,  2, 14,  1,  0, 14,  5,  9, 15,  8], order=2^4)
           

          Decode the codeword and recover the message.

          In [17]: d = rs.decode(c); d
          -Out[17]: GF([14,  5,  0, 12, 15], order=2^4)
          +Out[17]: GF([ 5, 10, 13, 14,  1], order=2^4)
           
           In [18]: np.array_equal(d, m)
           Out[18]: True
          @@ -7977,7 +7977,7 @@
           

          Decode the codeword, specifying the number of corrected errors, and recover the message.

          In [19]: d, e = rs.decode(c, errors=True); d, e
          -Out[19]: (GF([14,  5,  0, 12, 15], order=2^4), 3)
          +Out[19]: (GF([ 5, 10, 13, 14,  1], order=2^4), 3)
           
           In [20]: np.array_equal(d, m)
           Out[20]: True
          @@ -7992,15 +7992,15 @@
           
           In [23]: m = GF.Random((3, rs.k)); m
           Out[23]: 
          -GF([[ 4,  6,  2, 10,  1,  7, 14,  9, 12],
          -    [14,  8,  4,  7, 13,  1,  0,  4,  8],
          -    [10, 15, 13,  0, 13,  3, 13,  0,  0]], order=2^4)
          +GF([[12,  7,  4, 10,  1, 15, 13,  6, 14],
          +    [ 9,  2,  6, 14,  2, 13,  3,  2, 14],
          +    [ 8,  7,  6,  0, 12,  8,  9,  2, 11]], order=2^4)
           
           In [24]: c = rs.encode(m); c
           Out[24]: 
          -GF([[ 4,  6,  2, 10,  1,  7, 14,  9, 12, 10,  5, 12,  0,  0,  9],
          -    [14,  8,  4,  7, 13,  1,  0,  4,  8,  1, 11, 15,  7, 15,  4],
          -    [10, 15, 13,  0, 13,  3, 13,  0,  0,  6,  7, 14,  6,  8, 14]],
          +GF([[12,  7,  4, 10,  1, 15, 13,  6, 14,  9,  6,  2,  2,  9,  3],
          +    [ 9,  2,  6, 14,  2, 13,  3,  2, 14, 11,  3,  7, 12,  7, 12],
          +    [ 8,  7,  6,  0, 12,  8,  9,  2, 11, 10,  4, 11, 10,  8,  4]],
              order=2^4)
           
          @@ -8014,18 +8014,18 @@ In [28]: c Out[28]: -GF([[ 9, 6, 2, 10, 1, 7, 14, 9, 12, 10, 5, 12, 0, 0, 9], - [ 0, 12, 4, 7, 13, 1, 0, 4, 8, 1, 11, 15, 7, 15, 4], - [ 8, 2, 4, 0, 13, 3, 13, 0, 0, 6, 7, 14, 6, 8, 14]], +GF([[ 1, 7, 4, 10, 1, 15, 13, 6, 14, 9, 6, 2, 2, 9, 3], + [ 7, 15, 6, 14, 2, 13, 3, 2, 14, 11, 3, 7, 12, 7, 12], + [ 2, 6, 5, 0, 12, 8, 9, 2, 11, 10, 4, 11, 10, 8, 4]], order=2^4)

          Decode the codeword and recover the message.

          In [29]: d = rs.decode(c); d
           Out[29]: 
          -GF([[ 4,  6,  2, 10,  1,  7, 14,  9, 12],
          -    [14,  8,  4,  7, 13,  1,  0,  4,  8],
          -    [10, 15, 13,  0, 13,  3, 13,  0,  0]], order=2^4)
          +GF([[12,  7,  4, 10,  1, 15, 13,  6, 14],
          +    [ 9,  2,  6, 14,  2, 13,  3,  2, 14],
          +    [ 8,  7,  6,  0, 12,  8,  9,  2, 11]], order=2^4)
           
           In [30]: np.array_equal(d, m)
           Out[30]: True
          @@ -8034,9 +8034,9 @@
           

          Decode the codeword, specifying the number of corrected errors, and recover the message.

          In [31]: d, e = rs.decode(c, errors=True); d, e
           Out[31]: 
          -(GF([[ 4,  6,  2, 10,  1,  7, 14,  9, 12],
          -     [14,  8,  4,  7, 13,  1,  0,  4,  8],
          -     [10, 15, 13,  0, 13,  3, 13,  0,  0]], order=2^4),
          +(GF([[12,  7,  4, 10,  1, 15, 13,  6, 14],
          +     [ 9,  2,  6, 14,  2, 13,  3,  2, 14],
          +     [ 8,  7,  6,  0, 12,  8,  9,  2, 11]], order=2^4),
            array([1, 2, 3]))
           
           In [32]: np.array_equal(d, m)
          @@ -8052,15 +8052,15 @@
           
           In [35]: m = GF.Random((3, rs.k - 4)); m
           Out[35]: 
          -GF([[ 1,  7, 15, 12, 11],
          -    [ 0,  5,  9,  4,  1],
          -    [ 8,  4,  5,  9,  3]], order=2^4)
          +GF([[11,  8,  3,  5,  3],
          +    [13,  5,  8,  4, 15],
          +    [ 9,  2,  4,  0, 10]], order=2^4)
           
           In [36]: c = rs.encode(m); c
           Out[36]: 
          -GF([[ 1,  7, 15, 12, 11, 10,  7,  6,  2, 11, 10],
          -    [ 0,  5,  9,  4,  1, 13,  6,  4,  2,  2,  1],
          -    [ 8,  4,  5,  9,  3,  1,  1,  1,  9,  8,  6]], order=2^4)
          +GF([[11,  8,  3,  5,  3,  9,  8,  0,  1,  8, 13],
          +    [13,  5,  8,  4, 15,  7,  1,  4,  9, 13,  2],
          +    [ 9,  2,  4,  0, 10,  9, 15,  4,  7,  6, 15]], order=2^4)
           

          Corrupt the codeword. Add one error to the first codeword, two to the second, and three to the @@ -8073,17 +8073,17 @@ In [40]: c Out[40]: -GF([[13, 7, 15, 12, 11, 10, 7, 6, 2, 11, 10], - [10, 9, 9, 4, 1, 13, 6, 4, 2, 2, 1], - [12, 0, 12, 9, 3, 1, 1, 1, 9, 8, 6]], order=2^4) +GF([[10, 8, 3, 5, 3, 9, 8, 0, 1, 8, 13], + [ 2, 8, 8, 4, 15, 7, 1, 4, 9, 13, 2], + [ 1, 10, 1, 0, 10, 9, 15, 4, 7, 6, 15]], order=2^4)

          Decode the codeword and recover the message.

          In [41]: d = rs.decode(c); d
           Out[41]: 
          -GF([[ 1,  7, 15, 12, 11],
          -    [ 0,  5,  9,  4,  1],
          -    [ 8,  4,  5,  9,  3]], order=2^4)
          +GF([[11,  8,  3,  5,  3],
          +    [13,  5,  8,  4, 15],
          +    [ 9,  2,  4,  0, 10]], order=2^4)
           
           In [42]: np.array_equal(d, m)
           Out[42]: True
          @@ -8092,9 +8092,9 @@
           

          Decode the codeword, specifying the number of corrected errors, and recover the message.

          In [43]: d, e = rs.decode(c, errors=True); d, e
           Out[43]: 
          -(GF([[ 1,  7, 15, 12, 11],
          -     [ 0,  5,  9,  4,  1],
          -     [ 8,  4,  5,  9,  3]], order=2^4),
          +(GF([[11,  8,  3,  5,  3],
          +     [13,  5,  8,  4, 15],
          +     [ 9,  2,  4,  0, 10]], order=2^4),
            array([1, 2, 3]))
           
           In [44]: np.array_equal(d, m)
          diff --git a/v0.3.x/api/galois.ReedSolomon.detect/index.html b/v0.3.x/api/galois.ReedSolomon.detect/index.html
          index aafd52d0f..3cbceb644 100644
          --- a/v0.3.x/api/galois.ReedSolomon.detect/index.html
          +++ b/v0.3.x/api/galois.ReedSolomon.detect/index.html
          @@ -7792,7 +7792,7 @@
           
           
          -galois.ReedSolomon.detect(codeword: ArrayLike) bool | numpy.ndarray
          +galois.ReedSolomon.detect(codeword: ArrayLike) bool | numpy.ndarray

          Detects if errors are present in the codeword \(\mathbf{c}\).

          Parameters:
          @@ -7828,10 +7828,10 @@ In [2]: GF = rs.field In [3]: m = GF.Random(rs.k); m -Out[3]: GF([ 3, 15, 8, 11, 12, 14, 8, 10, 12], order=2^4) +Out[3]: GF([ 3, 3, 2, 6, 2, 14, 14, 12, 10], order=2^4) In [4]: c = rs.encode(m); c -Out[4]: GF([ 3, 15, 8, 11, 12, 14, 8, 10, 12, 7, 5, 7, 3, 9, 15], order=2^4) +Out[4]: GF([ 3, 3, 2, 6, 2, 14, 14, 12, 10, 1, 11, 3, 6, 3, 10], order=2^4)

          Detect no errors in the valid codeword.

          @@ -7844,10 +7844,10 @@ Out[6]: 7 In [7]: e = GF.Random(rs.d - 1, low=1); e -Out[7]: GF([ 6, 6, 11, 9, 14, 2], order=2^4) +Out[7]: GF([ 2, 12, 6, 7, 12, 4], order=2^4) In [8]: c[0:rs.d - 1] += e; c -Out[8]: GF([ 5, 9, 3, 2, 2, 12, 8, 10, 12, 7, 5, 7, 3, 9, 15], order=2^4) +Out[8]: GF([ 1, 15, 4, 1, 14, 10, 14, 12, 10, 1, 11, 3, 6, 3, 10], order=2^4) In [9]: rs.detect(c) Out[9]: True @@ -7861,10 +7861,10 @@ In [11]: GF = rs.field In [12]: m = GF.Random(rs.k - 4); m -Out[12]: GF([ 4, 10, 5, 6, 1], order=2^4) +Out[12]: GF([ 3, 14, 9, 0, 8], order=2^4) In [13]: c = rs.encode(m); c -Out[13]: GF([ 4, 10, 5, 6, 1, 1, 7, 14, 14, 8, 14], order=2^4) +Out[13]: GF([ 3, 14, 9, 0, 8, 10, 13, 13, 9, 15, 14], order=2^4)

          Detect no errors in the valid codeword.

          @@ -7877,10 +7877,10 @@ Out[15]: 7 In [16]: e = GF.Random(rs.d - 1, low=1); e -Out[16]: GF([ 3, 7, 4, 5, 10, 13], order=2^4) +Out[16]: GF([11, 10, 15, 15, 6, 6], order=2^4) In [17]: c[0:rs.d - 1] += e; c -Out[17]: GF([ 7, 13, 1, 3, 11, 12, 7, 14, 14, 8, 14], order=2^4) +Out[17]: GF([ 8, 4, 6, 15, 14, 12, 13, 13, 9, 15, 14], order=2^4) In [18]: rs.detect(c) Out[18]: True @@ -7895,15 +7895,15 @@ In [21]: m = GF.Random((3, rs.k)); m Out[21]: -GF([[14, 7, 15, 5, 8, 3, 7, 6, 12], - [15, 6, 10, 2, 3, 12, 13, 8, 6], - [ 2, 3, 15, 2, 1, 8, 14, 8, 12]], order=2^4) +GF([[ 2, 5, 0, 13, 9, 13, 14, 13, 14], + [ 3, 11, 10, 2, 4, 0, 6, 9, 2], + [ 0, 6, 12, 3, 8, 0, 5, 14, 5]], order=2^4) In [22]: c = rs.encode(m); c Out[22]: -GF([[14, 7, 15, 5, 8, 3, 7, 6, 12, 13, 15, 11, 6, 7, 11], - [15, 6, 10, 2, 3, 12, 13, 8, 6, 9, 3, 13, 12, 10, 14], - [ 2, 3, 15, 2, 1, 8, 14, 8, 12, 1, 5, 2, 6, 12, 9]], +GF([[ 2, 5, 0, 13, 9, 13, 14, 13, 14, 5, 9, 1, 6, 2, 5], + [ 3, 11, 10, 2, 4, 0, 6, 9, 2, 10, 5, 14, 11, 0, 13], + [ 0, 6, 12, 3, 8, 0, 5, 14, 5, 0, 15, 9, 0, 3, 15]], order=2^4)
          @@ -7924,9 +7924,9 @@ In [28]: c Out[28]: -GF([[ 1, 7, 15, 5, 8, 3, 7, 6, 12, 13, 15, 11, 6, 7, 11], - [10, 5, 10, 2, 3, 12, 13, 8, 6, 9, 3, 13, 12, 10, 14], - [15, 12, 1, 1, 10, 7, 14, 8, 12, 1, 5, 2, 6, 12, 9]], +GF([[11, 5, 0, 13, 9, 13, 14, 13, 14, 5, 9, 1, 6, 2, 5], + [ 9, 9, 10, 2, 4, 0, 6, 9, 2, 10, 5, 14, 11, 0, 13], + [13, 5, 1, 4, 11, 14, 5, 14, 5, 0, 15, 9, 0, 3, 15]], order=2^4) In [29]: rs.detect(c) @@ -7942,15 +7942,15 @@ In [32]: m = GF.Random((3, rs.k - 4)); m Out[32]: -GF([[ 4, 1, 6, 13, 7], - [ 0, 11, 10, 1, 10], - [ 9, 13, 0, 7, 9]], order=2^4) +GF([[ 7, 11, 9, 9, 12], + [ 4, 0, 3, 2, 10], + [ 1, 13, 13, 6, 7]], order=2^4) In [33]: c = rs.encode(m); c Out[33]: -GF([[ 4, 1, 6, 13, 7, 4, 15, 3, 15, 0, 7], - [ 0, 11, 10, 1, 10, 10, 7, 11, 11, 2, 5], - [ 9, 13, 0, 7, 9, 5, 4, 8, 4, 7, 3]], order=2^4) +GF([[ 7, 11, 9, 9, 12, 5, 13, 1, 1, 0, 9], + [ 4, 0, 3, 2, 10, 4, 4, 4, 0, 13, 12], + [ 1, 13, 13, 6, 7, 4, 3, 8, 8, 5, 3]], order=2^4)

          Detect no errors in the valid codewords.

          @@ -7970,9 +7970,9 @@ In [39]: c Out[39]: -GF([[12, 1, 6, 13, 7, 4, 15, 3, 15, 0, 7], - [15, 2, 10, 1, 10, 10, 7, 11, 11, 2, 5], - [13, 0, 15, 8, 6, 4, 4, 8, 4, 7, 3]], order=2^4) +GF([[ 9, 11, 9, 9, 12, 5, 13, 1, 1, 0, 9], + [13, 14, 3, 2, 10, 4, 4, 4, 0, 13, 12], + [13, 3, 7, 8, 4, 1, 3, 8, 8, 5, 3]], order=2^4) In [40]: rs.detect(c) Out[40]: array([ True, True, True]) diff --git a/v0.3.x/api/galois.ReedSolomon.encode/index.html b/v0.3.x/api/galois.ReedSolomon.encode/index.html index 9367055b2..151f4a7ac 100644 --- a/v0.3.x/api/galois.ReedSolomon.encode/index.html +++ b/v0.3.x/api/galois.ReedSolomon.encode/index.html @@ -7885,15 +7885,15 @@ In [2]: GF = rs.field In [3]: m = GF.Random(rs.k); m -Out[3]: GF([ 0, 13, 3, 6, 12, 4, 9, 1, 1], order=2^4) +Out[3]: GF([ 7, 13, 13, 7, 14, 2, 0, 3, 3], order=2^4) In [4]: c = rs.encode(m); c -Out[4]: GF([ 0, 13, 3, 6, 12, 4, 9, 1, 1, 10, 8, 6, 2, 9, 0], order=2^4) +Out[4]: GF([ 7, 13, 13, 7, 14, 2, 0, 3, 3, 11, 15, 15, 13, 8, 3], order=2^4)

          Compute the parity symbols only.

          In [5]: p = rs.encode(m, output="parity"); p
          -Out[5]: GF([10,  8,  6,  2,  9,  0], order=2^4)
          +Out[5]: GF([11, 15, 15, 13,  8,  3], order=2^4)
           
          @@ -7904,15 +7904,15 @@ In [7]: GF = rs.field In [8]: m = GF.Random(rs.k - 4); m -Out[8]: GF([ 2, 9, 1, 13, 10], order=2^4) +Out[8]: GF([ 9, 15, 6, 0, 0], order=2^4) In [9]: c = rs.encode(m); c -Out[9]: GF([ 2, 9, 1, 13, 10, 11, 10, 5, 3, 2, 13], order=2^4) +Out[9]: GF([ 9, 15, 6, 0, 0, 2, 9, 3, 4, 6, 11], order=2^4)

    Compute the parity symbols only.

    In [10]: p = rs.encode(m, output="parity"); p
    -Out[10]: GF([11, 10,  5,  3,  2, 13], order=2^4)
    +Out[10]: GF([ 2,  9,  3,  4,  6, 11], order=2^4)
     
    @@ -7924,24 +7924,24 @@ In [13]: m = GF.Random((3, rs.k)); m Out[13]: -GF([[ 0, 13, 12, 2, 12, 15, 15, 7, 5], - [ 5, 1, 3, 8, 4, 8, 4, 1, 14], - [ 9, 1, 12, 4, 4, 8, 14, 1, 12]], order=2^4) +GF([[ 1, 8, 15, 8, 6, 14, 9, 7, 13], + [10, 3, 0, 2, 15, 10, 6, 15, 3], + [ 4, 3, 11, 13, 4, 9, 1, 13, 14]], order=2^4) In [14]: c = rs.encode(m); c Out[14]: -GF([[ 0, 13, 12, 2, 12, 15, 15, 7, 5, 3, 4, 14, 6, 13, 1], - [ 5, 1, 3, 8, 4, 8, 4, 1, 14, 7, 14, 12, 4, 7, 2], - [ 9, 1, 12, 4, 4, 8, 14, 1, 12, 11, 2, 11, 7, 3, 5]], +GF([[ 1, 8, 15, 8, 6, 14, 9, 7, 13, 5, 3, 5, 14, 3, 14], + [10, 3, 0, 2, 15, 10, 6, 15, 3, 5, 13, 10, 6, 14, 6], + [ 4, 3, 11, 13, 4, 9, 1, 13, 14, 15, 14, 1, 5, 0, 8]], order=2^4)

    Compute the parity symbols only.

    In [15]: p = rs.encode(m, output="parity"); p
     Out[15]: 
    -GF([[ 3,  4, 14,  6, 13,  1],
    -    [ 7, 14, 12,  4,  7,  2],
    -    [11,  2, 11,  7,  3,  5]], order=2^4)
    +GF([[ 5,  3,  5, 14,  3, 14],
    +    [ 5, 13, 10,  6, 14,  6],
    +    [15, 14,  1,  5,  0,  8]], order=2^4)
     
    @@ -7953,23 +7953,23 @@ In [18]: m = GF.Random((3, rs.k - 4)); m Out[18]: -GF([[11, 1, 10, 7, 6], - [ 8, 10, 5, 15, 15], - [ 0, 5, 15, 13, 14]], order=2^4) +GF([[14, 8, 8, 2, 10], + [14, 14, 6, 14, 12], + [ 1, 0, 5, 6, 13]], order=2^4) In [19]: c = rs.encode(m); c Out[19]: -GF([[11, 1, 10, 7, 6, 6, 2, 9, 10, 8, 8], - [ 8, 10, 5, 15, 15, 4, 12, 5, 0, 8, 13], - [ 0, 5, 15, 13, 14, 4, 10, 4, 15, 2, 13]], order=2^4) +GF([[14, 8, 8, 2, 10, 2, 2, 6, 3, 8, 9], + [14, 14, 6, 14, 12, 9, 0, 5, 6, 6, 10], + [ 1, 0, 5, 6, 13, 8, 7, 7, 8, 3, 8]], order=2^4)

    Compute the parity symbols only.

    In [20]: p = rs.encode(m, output="parity"); p
     Out[20]: 
    -GF([[ 6,  2,  9, 10,  8,  8],
    -    [ 4, 12,  5,  0,  8, 13],
    -    [ 4, 10,  4, 15,  2, 13]], order=2^4)
    +GF([[ 2,  2,  6,  3,  8,  9],
    +    [ 9,  0,  5,  6,  6, 10],
    +    [ 8,  7,  7,  8,  3,  8]], order=2^4)
     
    diff --git a/v0.3.x/api/galois.ReedSolomon.field/index.html b/v0.3.x/api/galois.ReedSolomon.field/index.html index defed737c..b6b4ce23f 100644 --- a/v0.3.x/api/galois.ReedSolomon.field/index.html +++ b/v0.3.x/api/galois.ReedSolomon.field/index.html @@ -7738,7 +7738,7 @@
    -property galois.ReedSolomon.field : type[FieldArray]
    +property galois.ReedSolomon.field : type[FieldArray]

    The Galois field \(\mathrm{GF}(q)\) that defines the codeword alphabet.

    Examples

    Construct a \(\textrm{RS}(15, 9)\) code over \(\mathrm{GF}(2^4)\).

    diff --git a/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html b/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html index 8186199ad..7c0d242bb 100644 --- a/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html +++ b/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html @@ -7738,7 +7738,7 @@
    -property galois.ReedSolomon.is_narrow_sense : bool
    +property galois.ReedSolomon.is_narrow_sense : bool

    Indicates if the Reed-Solomon code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of \(\alpha\) starting at 1, that is \(\alpha, \dots, \alpha^{d-1}\).

    Examples

    diff --git a/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html b/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html index 9a0fdc1b2..32645617e 100644 --- a/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html +++ b/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html @@ -7738,7 +7738,7 @@
    -property galois.ReedSolomon.is_primitive : bool
    +property galois.ReedSolomon.is_primitive : bool

    Indicates if the Reed-Solomon code is primitive, meaning \(n = q - 1\).

    Examples

    Construct a primitive \(\textrm{RS}(255, 223)\) code over \(\mathrm{GF}(2^8)\).

    diff --git a/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html b/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html index 6bbfc138b..065641fd4 100644 --- a/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html +++ b/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html @@ -7738,7 +7738,7 @@
    -property galois.ReedSolomon.is_systematic : bool
    +property galois.ReedSolomon.is_systematic : bool

    Indicates if the code is systematic, meaning the codewords have parity appended to the message.

    Examples

    Construct a non-primitive \(\textrm{RS}(13, 9)\) systematic code over \(\mathrm{GF}(3^3)\).

    diff --git a/v0.3.x/api/galois.ReedSolomon.k/index.html b/v0.3.x/api/galois.ReedSolomon.k/index.html index d1030f5e6..8836674cd 100644 --- a/v0.3.x/api/galois.ReedSolomon.k/index.html +++ b/v0.3.x/api/galois.ReedSolomon.k/index.html @@ -7738,7 +7738,7 @@
    -property galois.ReedSolomon.k : int
    +property galois.ReedSolomon.k : int

    The message size \(k\) of the \([n, k, d]_q\) code. This is also called the code dimension.

    Examples

    Construct a \(\textrm{RS}(15, 9)\) code over \(\mathrm{GF}(2^4)\).

    diff --git a/v0.3.x/api/galois.ReedSolomon.n/index.html b/v0.3.x/api/galois.ReedSolomon.n/index.html index fd1893517..13c90fab8 100644 --- a/v0.3.x/api/galois.ReedSolomon.n/index.html +++ b/v0.3.x/api/galois.ReedSolomon.n/index.html @@ -7738,7 +7738,7 @@
    -property galois.ReedSolomon.n : int
    +property galois.ReedSolomon.n : int

    The codeword size \(n\) of the \([n, k, d]_q\) code. This is also called the code length.

    Examples

    Construct a \(\textrm{RS}(15, 9)\) code over \(\mathrm{GF}(2^4)\).

    diff --git a/v0.3.x/api/galois.ReedSolomon.t/index.html b/v0.3.x/api/galois.ReedSolomon.t/index.html index 40b8f0867..8154d7fbf 100644 --- a/v0.3.x/api/galois.ReedSolomon.t/index.html +++ b/v0.3.x/api/galois.ReedSolomon.t/index.html @@ -7752,7 +7752,7 @@
    -property galois.ReedSolomon.t : int
    +property galois.ReedSolomon.t : int

    The error-correcting capability \(t\) of the code.

    Notes

    The code can correct \(t\) symbol errors in a codeword.

    diff --git a/v0.3.x/api/galois.ReedSolomon/index.html b/v0.3.x/api/galois.ReedSolomon/index.html index b6bbdf415..f92c429b8 100644 --- a/v0.3.x/api/galois.ReedSolomon/index.html +++ b/v0.3.x/api/galois.ReedSolomon/index.html @@ -8056,19 +8056,19 @@

    Encode a message.

    In [3]: m = GF.Random(rs.k); m
    -Out[3]: GF([15,  1, 11, 13,  9, 15, 11, 10,  1], order=2^4)
    +Out[3]: GF([ 9,  3,  2, 12,  1, 11,  7,  9, 12], order=2^4)
     
     In [4]: c = rs.encode(m); c
    -Out[4]: GF([15,  1, 11, 13,  9, 15, 11, 10,  1, 14,  0,  6, 14,  3, 15], order=2^4)
    +Out[4]: GF([ 9,  3,  2, 12,  1, 11,  7,  9, 12,  5,  9, 15,  0, 11, 15], order=2^4)
     

    Corrupt the codeword and decode the message.

    # Corrupt the first symbol in the codeword
     In [5]: c[0] ^= 13; c
    -Out[5]: GF([ 2,  1, 11, 13,  9, 15, 11, 10,  1, 14,  0,  6, 14,  3, 15], order=2^4)
    +Out[5]: GF([ 4,  3,  2, 12,  1, 11,  7,  9, 12,  5,  9, 15,  0, 11, 15], order=2^4)
     
     In [6]: dec_m = rs.decode(c); dec_m
    -Out[6]: GF([15,  1, 11, 13,  9, 15, 11, 10,  1], order=2^4)
    +Out[6]: GF([ 9,  3,  2, 12,  1, 11,  7,  9, 12], order=2^4)
     
     In [7]: np.array_equal(dec_m, m)
     Out[7]: True
    @@ -8076,7 +8076,7 @@
     

    Instruct the decoder to return the number of corrected symbol errors.

    In [8]: dec_m, N = rs.decode(c, errors=True); dec_m, N
    -Out[8]: (GF([15,  1, 11, 13,  9, 15, 11, 10,  1], order=2^4), 1)
    +Out[8]: (GF([ 9,  3,  2, 12,  1, 11,  7,  9, 12], order=2^4), 1)
     
     In [9]: np.array_equal(dec_m, m)
     Out[9]: True
    @@ -8085,7 +8085,7 @@
     

    Constructors

    -ReedSolomon(n: int, k: int | None = None, d: int | None = None, ...)
    +ReedSolomon(n: int, k: int | None = None, d: int | None = None, ...)

    Constructs a general \(\textrm{RS}(n, k)\) code over \(\mathrm{GF}(q)\).

    @@ -8094,13 +8094,13 @@

    ConstructorsString representation

    -__repr__() str
    +__repr__() str

    A terse representation of the Reed-Solomon code.

    -__str__() str
    +__str__() str

    A formatted string with relevant properties of the Reed-Solomon code.

    @@ -8111,13 +8111,13 @@

    Methods decode(codeword: ArrayLike, ...) FieldArray
    -decode(...) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]
    +decode(...) tuple[galois._fields._array.FieldArray, int | numpy.ndarray]

    Decodes the codeword \(\mathbf{c}\) into the message \(\mathbf{m}\).

    -detect(codeword: ArrayLike) bool | numpy.ndarray
    +detect(codeword: ArrayLike) bool | numpy.ndarray

    Detects if errors are present in the codeword \(\mathbf{c}\).

    @@ -8132,38 +8132,38 @@

    MethodsProperties

    -property c : int
    +property c : int

    The first consecutive power \(c\) of \(\alpha\) that defines the roots \(\alpha^c, \dots, \alpha^{c+d-2}\) of the generator polynomial \(g(x)\).

    -property d : int
    +property d : int

    The minimum distance \(d\) of the \([n, k, d]_q\) code.

    -property field : type[FieldArray]
    +property field : type[FieldArray]

    The Galois field \(\mathrm{GF}(q)\) that defines the codeword alphabet.

    -property k : int
    +property k : int

    The message size \(k\) of the \([n, k, d]_q\) code. This is also called the code dimension.

    -property n : int
    +property n : int

    The codeword size \(n\) of the \([n, k, d]_q\) code. This is also called the code length.

    -property t : int
    +property t : int

    The error-correcting capability \(t\) of the code.

    @@ -8172,20 +8172,20 @@

    PropertiesAttributes

    -property is_narrow_sense : bool
    +property is_narrow_sense : bool

    Indicates if the Reed-Solomon code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of \(\alpha\) starting at 1, that is \(\alpha, \dots, \alpha^{d-1}\).

    -property is_primitive : bool
    +property is_primitive : bool

    Indicates if the Reed-Solomon code is primitive, meaning \(n = q - 1\).

    -property is_systematic : bool
    +property is_systematic : bool

    Indicates if the code is systematic, meaning the codewords have parity appended to the message.

    diff --git a/v0.3.x/api/galois.are_coprime/index.html b/v0.3.x/api/galois.are_coprime/index.html index 6d59b7dcf..0cbcc2033 100644 --- a/v0.3.x/api/galois.are_coprime/index.html +++ b/v0.3.x/api/galois.are_coprime/index.html @@ -7804,14 +7804,14 @@
    -galois.are_coprime(*values: int) bool
    +galois.are_coprime(*values: int) bool
    -galois.are_coprime(*values: Poly) bool
    +galois.are_coprime(*values: Poly) bool

    Determines if the arguments are pairwise coprime.

    Parameters:
    -
    *values: int
    *values: Poly

    Each argument must be an integer or polynomial.

    +
    *values: int
    *values: Poly

    Each argument must be an integer or polynomial.

    diff --git a/v0.3.x/api/galois.carmichael_lambda/index.html b/v0.3.x/api/galois.carmichael_lambda/index.html index 45f3e829d..dc97d7bfa 100644 --- a/v0.3.x/api/galois.carmichael_lambda/index.html +++ b/v0.3.x/api/galois.carmichael_lambda/index.html @@ -7818,13 +7818,13 @@
    -galois.carmichael_lambda(n: int) int
    +galois.carmichael_lambda(n: int) int

    Finds the smallest positive integer \(m\) such that \(a^m \equiv 1\ (\textrm{mod}\ n)\) for every integer \(a\) in \([1, n)\) that is coprime to \(n\).

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    diff --git a/v0.3.x/api/galois.conway_poly/index.html b/v0.3.x/api/galois.conway_poly/index.html index 4978398e5..2e137168d 100644 --- a/v0.3.x/api/galois.conway_poly/index.html +++ b/v0.3.x/api/galois.conway_poly/index.html @@ -7860,17 +7860,17 @@
    -galois.conway_poly(characteristic: int, degree: int, search: bool = False) Poly
    +galois.conway_poly(characteristic: int, degree: int, search: bool = False) Poly

    Returns the Conway polynomial \(C_{p,m}(x)\) over \(\mathrm{GF}(p)\) with degree \(m\).

    Parameters:
    -
    characteristic: int

    The prime characteristic \(p\) of the field \(\mathrm{GF}(p)\) that the polynomial +

    characteristic: int

    The prime characteristic \(p\) of the field \(\mathrm{GF}(p)\) that the polynomial is over.

    -
    degree: int

    The degree \(m\) of the Conway polynomial.

    +
    degree: int

    The degree \(m\) of the Conway polynomial.

    -

    Manually search for Conway polynomials if they are not included in Frank Luebeck’s database. The default is False.

    +

    Manually search for Conway polynomials if they are not included in Frank Luebeck’s database. The default is False.

    Slower performance

    Manually searching for a Conway polynomial is very computationally expensive.

    @@ -7889,7 +7889,7 @@
    Raises:
    -

    LookupError – If search=False and the Conway polynomial \(C_{p,m}\) is not found in Frank Luebeck’s +

    LookupError – If search=False and the Conway polynomial \(C_{p,m}\) is not found in Frank Luebeck’s database.

    diff --git a/v0.3.x/api/galois.crt/index.html b/v0.3.x/api/galois.crt/index.html index 2ffe0e80a..d78f87243 100644 --- a/v0.3.x/api/galois.crt/index.html +++ b/v0.3.x/api/galois.crt/index.html @@ -7832,16 +7832,16 @@
    -galois.crt(remainders: Sequence[int], moduli: Sequence[int]) int
    +galois.crt(remainders: Sequence[int], moduli: Sequence[int]) int
    -galois.crt(remainders: Sequence[Poly], moduli: Sequence[Poly]) Poly
    +galois.crt(remainders: Sequence[Poly], moduli: Sequence[Poly]) Poly

    Solves the simultaneous system of congruences for \(x\).

    Parameters:
    -
    remainders: Sequence[int]
    remainders: Sequence[Poly]

    The integer or polynomial remainders \(a_i\).

    +
    remainders: Sequence[int]
    remainders: Sequence[Poly]

    The integer or polynomial remainders \(a_i\).

    -
    moduli: Sequence[int]
    moduli: Sequence[Poly]

    The integer or polynomial moduli \(m_i\).

    +
    moduli: Sequence[int]
    moduli: Sequence[Poly]

    The integer or polynomial moduli \(m_i\).

    @@ -7898,7 +7898,7 @@
    In [5]: GF = galois.GF(7)
     
     In [6]: x_truth = galois.Poly.Random(6, field=GF); x_truth
    -Out[6]: Poly(6x^6 + x^5 + x^4 + 6x^3 + 6x^2 + x + 3, GF(7))
    +Out[6]: Poly(6x^6 + 3x^5 + 4x^4 + 5x^3 + 6x^2 + 6x + 3, GF(7))
     
     In [7]: m3 = galois.Poly.Random(3, field=GF)
     
    @@ -7908,20 +7908,20 @@
     
     In [10]: m = [m3, m4, m5]; m
     Out[10]: 
    -[Poly(6x^3 + x^2 + 6x + 5, GF(7)),
    - Poly(x^4 + 2x^3 + 5x + 3, GF(7)),
    - Poly(6x^5 + 4x^3 + 5x^2 + 5x + 1, GF(7))]
    +[Poly(6x^3 + 5x^2 + 3x, GF(7)),
    + Poly(4x^4 + 6x^3 + 5x^2 + 2x, GF(7)),
    + Poly(5x^5 + 4x^4 + 4x^2 + 5x + 5, GF(7))]
     
     In [11]: a = [x_truth % m3, x_truth % m4, x_truth % m5]; a
     Out[11]: 
    -[Poly(x + 4, GF(7)),
    - Poly(x^2 + 3x + 4, GF(7)),
    - Poly(4x^4 + 5x^3 + 6x^2 + 5x + 4, GF(7))]
    +[Poly(x^2 + x + 3, GF(7)),
    + Poly(3x^3 + 3x^2 + 5x + 3, GF(7)),
    + Poly(6x^4 + 3x^3 + 2x^2 + 6x + 2, GF(7))]
     

    Solve the system of congruences.

    In [12]: x = galois.crt(a, m); x
    -Out[12]: Poly(6x^6 + x^5 + x^4 + 6x^3 + 6x^2 + x + 3, GF(7))
    +Out[12]: Poly(6x^6 + 3x^5 + 4x^4 + 5x^3 + 6x^2 + 6x + 3, GF(7))
     

    Show that the solution satisfies each congruence.

    @@ -7929,9 +7929,9 @@ ....: ai = x % m[i] ....: print(ai, ai == a[i]) ....: -x + 4 True -x^2 + 3x + 4 True -4x^4 + 5x^3 + 6x^2 + 5x + 4 True +x^2 + x + 3 True +3x^3 + 3x^2 + 5x + 3 True +6x^4 + 3x^3 + 2x^2 + 6x + 2 True
    diff --git a/v0.3.x/api/galois.divisor_sigma/index.html b/v0.3.x/api/galois.divisor_sigma/index.html index b35282d9d..cc469f5ac 100644 --- a/v0.3.x/api/galois.divisor_sigma/index.html +++ b/v0.3.x/api/galois.divisor_sigma/index.html @@ -7818,14 +7818,14 @@
    -galois.divisor_sigma(n: int, k: int = 1) int
    +galois.divisor_sigma(n: int, k: int = 1) int

    Returns the sum of \(k\)-th powers of the positive divisors of \(n\).

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    -
    k: int = 1

    The degree of the positive divisors. The default is 1 which corresponds to \(\sigma_1(n)\) which is the +

    k: int = 1

    The degree of the positive divisors. The default is 1 which corresponds to \(\sigma_1(n)\) which is the sum of positive divisors.

    diff --git a/v0.3.x/api/galois.divisors/index.html b/v0.3.x/api/galois.divisors/index.html index 0cb5f7ef5..7b0b60a91 100644 --- a/v0.3.x/api/galois.divisors/index.html +++ b/v0.3.x/api/galois.divisors/index.html @@ -7804,12 +7804,12 @@
    -galois.divisors(n: int) list[int]
    +galois.divisors(n: int) list[int]

    Computes all positive integer divisors \(d\) of the integer \(n\) such that $d\ |n$.

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.egcd/index.html b/v0.3.x/api/galois.egcd/index.html index 80971cecf..f275bac4d 100644 --- a/v0.3.x/api/galois.egcd/index.html +++ b/v0.3.x/api/galois.egcd/index.html @@ -7832,16 +7832,16 @@
    -galois.egcd(a: int, b: int) tuple[int, int, int]
    +galois.egcd(a: int, b: int) tuple[int, int, int]
    -galois.egcd(a: Poly, b: Poly) tuple[galois._polys._poly.Poly, galois._polys._poly.Poly, galois._polys._poly.Poly]
    +galois.egcd(a: Poly, b: Poly) tuple[galois._polys._poly.Poly, galois._polys._poly.Poly, galois._polys._poly.Poly]

    Finds the multiplicands of \(a\) and \(b\) such that \(a s + b t = \mathrm{gcd}(a, b)\).

    Parameters:
    -
    a: int
    a: Poly

    The first integer or polynomial argument.

    +
    a: int
    a: Poly

    The first integer or polynomial argument.

    -
    b: int
    b: Poly

    The second integer or polynomial argument.

    +
    b: int
    b: Poly

    The second integer or polynomial argument.

    diff --git a/v0.3.x/api/galois.euler_phi/index.html b/v0.3.x/api/galois.euler_phi/index.html index 8fd2226fb..fb99e6797 100644 --- a/v0.3.x/api/galois.euler_phi/index.html +++ b/v0.3.x/api/galois.euler_phi/index.html @@ -7818,12 +7818,12 @@
    -galois.euler_phi(n: int) int
    +galois.euler_phi(n: int) int

    Counts the positive integers (totatives) in \([1, n)\) that are coprime to \(n\).

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    diff --git a/v0.3.x/api/galois.factors/index.html b/v0.3.x/api/galois.factors/index.html index 9d755c5dc..b1ab415e9 100644 --- a/v0.3.x/api/galois.factors/index.html +++ b/v0.3.x/api/galois.factors/index.html @@ -7818,14 +7818,14 @@
    -galois.factors(value: int) tuple[list[int], list[int]]
    +galois.factors(value: int) tuple[list[int], list[int]]
    -galois.factors(value: Poly) tuple[list[galois._polys._poly.Poly], list[int]]
    +galois.factors(value: Poly) tuple[list[galois._polys._poly.Poly], list[int]]

    Computes the prime factors of a positive integer or the irreducible factors of a non-constant, monic polynomial.

    Parameters:
    -
    value: int
    value: Poly

    A positive integer \(n\) or a non-constant, monic polynomial \(f(x)\).

    +
    value: int
    value: Poly

    A positive integer \(n\) or a non-constant, monic polynomial \(f(x)\).

    diff --git a/v0.3.x/api/galois.fermat_primality_test/index.html b/v0.3.x/api/galois.fermat_primality_test/index.html index 995300e12..93eba4455 100644 --- a/v0.3.x/api/galois.fermat_primality_test/index.html +++ b/v0.3.x/api/galois.fermat_primality_test/index.html @@ -7846,16 +7846,16 @@
    -galois.fermat_primality_test(n: int, a: int | None = None, rounds: int = 1) bool
    +galois.fermat_primality_test(n: int, a: int | None = None, rounds: int = 1) bool

    Determines if \(n\) is composite using Fermat’s primality test.

    Parameters:
    -
    n: int

    An odd integer \(n \ge 3\).

    +
    n: int

    An odd integer \(n \ge 3\).

    -
    a: int | None = None

    An integer in \(2 \le a \le n - 2\). The default is None which selects a random \(a\).

    +
    a: int | None = None

    An integer in \(2 \le a \le n - 2\). The default is None which selects a random \(a\).

    -
    rounds: int = 1

    The number of iterations attempting to detect \(n\) as composite. Additional rounds will choose +

    rounds: int = 1

    The number of iterations attempting to detect \(n\) as composite. Additional rounds will choose a new \(a\). The default is 1.

    @@ -7906,7 +7906,7 @@ # But they may not satisfy a^(p-1) = 1 (mod p) for other a In [7]: [galois.fermat_primality_test(p) for p in pseudoprimes] -Out[7]: [True, True, False] +Out[7]: [False, True, False]

    And the pseudoprimes base 3 from A005935.

    @@ -7922,7 +7922,7 @@ # But they may not satisfy a^(p-1) = 1 (mod p) for other a In [11]: [galois.fermat_primality_test(p) for p in pseudoprimes] -Out[11]: [True, False, False] +Out[11]: [False, False, False]
    diff --git a/v0.3.x/api/galois.gcd/index.html b/v0.3.x/api/galois.gcd/index.html index 499e6f030..f23989ede 100644 --- a/v0.3.x/api/galois.gcd/index.html +++ b/v0.3.x/api/galois.gcd/index.html @@ -7832,16 +7832,16 @@
    -galois.gcd(a: int, b: int) int
    +galois.gcd(a: int, b: int) int
    galois.gcd(a: Poly, b: Poly) Poly

    Finds the greatest common divisor of \(a\) and \(b\).

    Parameters:
    -
    a: int
    a: Poly

    The first integer or polynomial argument.

    +
    a: int
    a: Poly

    The first integer or polynomial argument.

    -
    b: int
    b: Poly

    The second integer or polynomial argument.

    +
    b: int
    b: Poly

    The second integer or polynomial argument.

    diff --git a/v0.3.x/api/galois.get_printoptions/index.html b/v0.3.x/api/galois.get_printoptions/index.html index 97c74fb5c..b8aa5ee51 100644 --- a/v0.3.x/api/galois.get_printoptions/index.html +++ b/v0.3.x/api/galois.get_printoptions/index.html @@ -7748,7 +7748,7 @@
    -galois.get_printoptions() dict[str, Any]
    +galois.get_printoptions() dict[str, Any]

    Returns the current print options for the package. This function is the galois equivalent of numpy.get_printoptions().

    diff --git a/v0.3.x/api/galois.ilog/index.html b/v0.3.x/api/galois.ilog/index.html index aeb992185..567505de8 100644 --- a/v0.3.x/api/galois.ilog/index.html +++ b/v0.3.x/api/galois.ilog/index.html @@ -7804,14 +7804,14 @@
    -galois.ilog(n: int, b: int) int
    +galois.ilog(n: int, b: int) int

    Computes \(x = \lfloor\textrm{log}_b(n)\rfloor\) such that \(b^x \le n < b^{x + 1}\).

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    -
    b: int

    The logarithm base \(b\), must be at least 2.

    +
    b: int

    The logarithm base \(b\), must be at least 2.

    diff --git a/v0.3.x/api/galois.intt/index.html b/v0.3.x/api/galois.intt/index.html index e34d66bf1..dafecebc8 100644 --- a/v0.3.x/api/galois.intt/index.html +++ b/v0.3.x/api/galois.intt/index.html @@ -7858,23 +7858,23 @@
    -galois.intt(X: ArrayLike, size: int | None = None, modulus: int | None = None, scaled: bool = True) FieldArray
    +galois.intt(X: ArrayLike, size: int | None = None, modulus: int | None = None, scaled: bool = True) FieldArray

    Computes the Inverse Number-Theoretic Transform (INTT) of \(X\).

    Parameters:
    X: ArrayLike

    The input sequence of integers \(X\).

    -
    size: int | None = None

    The size \(N\) of the INTT transform, must be at least the length of \(X\). The default is None +

    size: int | None = None

    The size \(N\) of the INTT transform, must be at least the length of \(X\). The default is None which corresponds to len(X). If size is larger than the length of \(X\), \(X\) is zero-padded.

    -
    modulus: int | None = None

    The prime modulus \(p\) that defines the field \(\mathrm{GF}(p)\). The prime modulus must +

    modulus: int | None = None

    The prime modulus \(p\) that defines the field \(\mathrm{GF}(p)\). The prime modulus must satisfy \(p > \textrm{max}(X)\) and \(p = mN + 1\) (i.e., the size of the transform \(N\) must divide \(p - 1\)). The default is None which corresponds to the smallest \(p\) that satisfies the criteria. However, if \(x\) is a \(\mathrm{GF}(p)\) array, then None corresponds to \(p\) from the specified field.

    -
    scaled: bool = True

    Indicates to scale the INTT output by \(N\). The default is True. If True, +

    scaled: bool = True

    Indicates to scale the INTT output by \(N\). The default is True. If True, \(x = \mathrm{INTT}(\mathrm{NTT}(x))\). If False, \(Nx = \mathrm{INTT}(\mathrm{NTT}(x))\).

    diff --git a/v0.3.x/api/galois.iroot/index.html b/v0.3.x/api/galois.iroot/index.html index 98cd3292e..46ae97436 100644 --- a/v0.3.x/api/galois.iroot/index.html +++ b/v0.3.x/api/galois.iroot/index.html @@ -7804,14 +7804,14 @@
    -galois.iroot(n: int, k: int) int
    +galois.iroot(n: int, k: int) int

    Computes \(x = \lfloor n^{\frac{1}{k}} \rfloor\) such that \(x^k \le n < (x + 1)^k\).

    Parameters:
    -
    n: int

    A non-negative integer.

    +
    n: int

    A non-negative integer.

    -
    k: int

    The positive root \(k\).

    +
    k: int

    The positive root \(k\).

    diff --git a/v0.3.x/api/galois.irreducible_poly/index.html b/v0.3.x/api/galois.irreducible_poly/index.html index 1e2fb6d19..41b78fbff 100644 --- a/v0.3.x/api/galois.irreducible_poly/index.html +++ b/v0.3.x/api/galois.irreducible_poly/index.html @@ -7860,16 +7860,16 @@
    -galois.irreducible_poly(order: int, degree: int, terms: int | str | None = None, method: 'min' | 'max' | 'random' = 'min') Poly
    +galois.irreducible_poly(order: int, degree: int, terms: int | str | None = None, method: 'min' | 'max' | 'random' = 'min') Poly

    Returns a monic irreducible polynomial \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    Parameters:
    -
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    +
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    -
    degree: int

    The degree \(m\) of the desired irreducible polynomial.

    +
    degree: int

    The degree \(m\) of the desired irreducible polynomial.

    -
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    +
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    • None (default): Disregards the number of terms while searching for the polynomial.

    • int: The exact number of non-zero terms in the polynomial.

    • @@ -7902,7 +7902,7 @@

      The degree-\(m\) monic irreducible polynomial over \(\mathrm{GF}(q)\).

      Raises:
      -

      RuntimeError – If no monic irreducible polynomial of degree \(m\) over \(\mathrm{GF}(q)\) with +

      RuntimeError – If no monic irreducible polynomial of degree \(m\) over \(\mathrm{GF}(q)\) with \(t\) terms exists. If terms is None or "min", this should never be raised.

    @@ -7924,7 +7924,7 @@ Out[2]: Poly(x^3 + 6x^2 + 6x + 4, GF(7)) In [3]: galois.irreducible_poly(7, 3, method="random") -Out[3]: Poly(x^3 + 3x + 5, GF(7)) +Out[3]: Poly(x^3 + x^2 + 5x + 1, GF(7))

    Find the lexicographically-first monic irreducible polynomial with four terms.

    @@ -7941,13 +7941,13 @@
    In [6]: GF = galois.GF(7)
     
     In [7]: f = galois.irreducible_poly(7, 5, method="random"); f
    -Out[7]: Poly(x^5 + 3x^3 + 3x^2 + 4x + 2, GF(7))
    +Out[7]: Poly(x^5 + x^4 + 3x^3 + 4x^2 + x + 2, GF(7))
     
     In [8]: f.is_irreducible()
     Out[8]: True
     
     In [9]: g = f * GF(3); g
    -Out[9]: Poly(3x^5 + 2x^3 + 2x^2 + 5x + 6, GF(7))
    +Out[9]: Poly(3x^5 + 3x^4 + 2x^3 + 5x^2 + 3x + 6, GF(7))
     
     In [10]: g.is_irreducible()
     Out[10]: True
    diff --git a/v0.3.x/api/galois.irreducible_polys/index.html b/v0.3.x/api/galois.irreducible_polys/index.html
    index 7b7ead5e7..54c37dade 100644
    --- a/v0.3.x/api/galois.irreducible_polys/index.html
    +++ b/v0.3.x/api/galois.irreducible_polys/index.html
    @@ -7846,16 +7846,16 @@
     
     
    -galois.irreducible_polys(order: int, degree: int, terms: int | str | None = None, reverse: bool = False) Iterator[Poly]
    +galois.irreducible_polys(order: int, degree: int, terms: int | str | None = None, reverse: bool = False) Iterator[Poly]

    Iterates through all monic irreducible polynomials \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    Parameters:
    -
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    +
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    -
    degree: int

    The degree \(m\) of the desired irreducible polynomial.

    +
    degree: int

    The degree \(m\) of the desired irreducible polynomial.

    -
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    +
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    • None (default): Disregards the number of terms while searching for the polynomial.

    • int: The exact number of non-zero terms in the polynomial.

    • @@ -7863,7 +7863,7 @@

    -
    reverse: bool = False

    Indicates to return the irreducible polynomials from lexicographically last to first. +

    reverse: bool = False

    Indicates to return the irreducible polynomials from lexicographically last to first. The default is False.

    @@ -7945,7 +7945,7 @@

    Or, manually iterate over the generator.

    In [5]: generator = galois.irreducible_polys(3, 4, reverse=True); generator
    -Out[5]: <generator object irreducible_polys at 0x7fec2538caf0>
    +Out[5]: <generator object irreducible_polys at 0x7ff966e850e0>
     
     In [6]: next(generator)
     Out[6]: Poly(x^4 + 2x^3 + 2x^2 + x + 2, GF(3))
    diff --git a/v0.3.x/api/galois.is_composite/index.html b/v0.3.x/api/galois.is_composite/index.html
    index ce2e8a458..1d40e388b 100644
    --- a/v0.3.x/api/galois.is_composite/index.html
    +++ b/v0.3.x/api/galois.is_composite/index.html
    @@ -7790,12 +7790,12 @@
     
     
    -galois.is_composite(n: int) bool
    +galois.is_composite(n: int) bool

    Determines if \(n\) is composite.

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.is_cyclic/index.html b/v0.3.x/api/galois.is_cyclic/index.html index 56242bc30..681cf3a1c 100644 --- a/v0.3.x/api/galois.is_cyclic/index.html +++ b/v0.3.x/api/galois.is_cyclic/index.html @@ -7804,12 +7804,12 @@
    -galois.is_cyclic(n: int) bool
    +galois.is_cyclic(n: int) bool

    Determines whether the multiplicative group \((\mathbb{Z}/n\mathbb{Z}){^\times}\) is cyclic.

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    diff --git a/v0.3.x/api/galois.is_perfect_power/index.html b/v0.3.x/api/galois.is_perfect_power/index.html index 8055b5085..1afa558ea 100644 --- a/v0.3.x/api/galois.is_perfect_power/index.html +++ b/v0.3.x/api/galois.is_perfect_power/index.html @@ -7790,12 +7790,12 @@
    -galois.is_perfect_power(n: int) bool
    +galois.is_perfect_power(n: int) bool

    Determines if \(n\) is a perfect power \(n = c^e\) with \(e > 1\).

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.is_powersmooth/index.html b/v0.3.x/api/galois.is_powersmooth/index.html index 8f613e3b8..354a9ffe5 100644 --- a/v0.3.x/api/galois.is_powersmooth/index.html +++ b/v0.3.x/api/galois.is_powersmooth/index.html @@ -7818,14 +7818,14 @@
    -galois.is_powersmooth(n: int, B: int) bool
    +galois.is_powersmooth(n: int, B: int) bool

    Determines if the integer \(n\) is \(B\)-powersmooth.

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    -
    B: int

    The smoothness bound \(B \ge 2\).

    +
    B: int

    The smoothness bound \(B \ge 2\).

    diff --git a/v0.3.x/api/galois.is_prime/index.html b/v0.3.x/api/galois.is_prime/index.html index 6960888d5..556e76020 100644 --- a/v0.3.x/api/galois.is_prime/index.html +++ b/v0.3.x/api/galois.is_prime/index.html @@ -7804,12 +7804,12 @@
    -galois.is_prime(n: int) bool
    +galois.is_prime(n: int) bool

    Determines if \(n\) is prime.

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.is_prime_power/index.html b/v0.3.x/api/galois.is_prime_power/index.html index 5710367f8..5ac4b3cbb 100644 --- a/v0.3.x/api/galois.is_prime_power/index.html +++ b/v0.3.x/api/galois.is_prime_power/index.html @@ -7804,12 +7804,12 @@
    -galois.is_prime_power(n: int) bool
    +galois.is_prime_power(n: int) bool

    Determines if \(n\) is a prime power \(n = p^k\) for prime \(p\) and \(k \ge 1\).

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.is_primitive_element/index.html b/v0.3.x/api/galois.is_primitive_element/index.html index d04367779..394b06892 100644 --- a/v0.3.x/api/galois.is_primitive_element/index.html +++ b/v0.3.x/api/galois.is_primitive_element/index.html @@ -7804,7 +7804,7 @@
    -galois.is_primitive_element(element: PolyLike, irreducible_poly: Poly) bool
    +galois.is_primitive_element(element: PolyLike, irreducible_poly: Poly) bool

    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)\).

    diff --git a/v0.3.x/api/galois.is_primitive_root/index.html b/v0.3.x/api/galois.is_primitive_root/index.html index efc1829ae..ac6a46571 100644 --- a/v0.3.x/api/galois.is_primitive_root/index.html +++ b/v0.3.x/api/galois.is_primitive_root/index.html @@ -7818,14 +7818,14 @@
    -galois.is_primitive_root(g: int, n: int) bool
    +galois.is_primitive_root(g: int, n: int) bool

    Determines if \(g\) is a primitive root modulo \(n\).

    Parameters:
    -
    g: int

    A positive integer.

    +
    g: int

    A positive integer.

    -
    n: int

    positive integer.

    +
    n: int

    positive integer.

    diff --git a/v0.3.x/api/galois.is_smooth/index.html b/v0.3.x/api/galois.is_smooth/index.html index c1f6263fe..409a3d040 100644 --- a/v0.3.x/api/galois.is_smooth/index.html +++ b/v0.3.x/api/galois.is_smooth/index.html @@ -7818,14 +7818,14 @@
    -galois.is_smooth(n: int, B: int) bool
    +galois.is_smooth(n: int, B: int) bool

    Determines if the integer \(n\) is \(B\)-smooth.

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    -
    B: int

    The smoothness bound \(B \ge 2\).

    +
    B: int

    The smoothness bound \(B \ge 2\).

    diff --git a/v0.3.x/api/galois.is_square_free/index.html b/v0.3.x/api/galois.is_square_free/index.html index ae5cce9b2..f82cffe67 100644 --- a/v0.3.x/api/galois.is_square_free/index.html +++ b/v0.3.x/api/galois.is_square_free/index.html @@ -7804,14 +7804,14 @@
    -galois.is_square_free(value: int) bool
    +galois.is_square_free(value: int) bool
    -galois.is_square_free(value: Poly) bool
    +galois.is_square_free(value: Poly) bool

    Determines if an integer or polynomial is square-free.

    Parameters:
    -
    value: int
    value: Poly

    An integer \(n\) or polynomial \(f(x)\).

    +
    value: int
    value: Poly

    An integer \(n\) or polynomial \(f(x)\).

    diff --git a/v0.3.x/api/galois.isqrt/index.html b/v0.3.x/api/galois.isqrt/index.html index 3244c3199..3629571d9 100644 --- a/v0.3.x/api/galois.isqrt/index.html +++ b/v0.3.x/api/galois.isqrt/index.html @@ -7790,17 +7790,17 @@
    -galois.isqrt(n: int) int
    +galois.isqrt(n: int) int

    Computes \(x = \lfloor\sqrt{n}\rfloor\) such that \(x^2 \le n < (x + 1)^2\).

    Info

    This function is included for Python versions before 3.8. For Python 3.8 and later, this function -calls math.isqrt() from the standard library.

    +calls math.isqrt() from the standard library.

    Parameters:
    -
    n: int

    A non-negative integer.

    +
    n: int

    A non-negative integer.

    diff --git a/v0.3.x/api/galois.jacobi_symbol/index.html b/v0.3.x/api/galois.jacobi_symbol/index.html index bee10eecc..ca28b9c06 100644 --- a/v0.3.x/api/galois.jacobi_symbol/index.html +++ b/v0.3.x/api/galois.jacobi_symbol/index.html @@ -7832,14 +7832,14 @@
    -galois.jacobi_symbol(a: int, n: int) int
    +galois.jacobi_symbol(a: int, n: int) int

    Computes the Jacobi symbol \((\frac{a}{n})\).

    Parameters:
    -
    a: int

    An integer.

    +
    a: int

    An integer.

    -
    n: int

    An odd integer \(n \ge 3\).

    +
    n: int

    An odd integer \(n \ge 3\).

    diff --git a/v0.3.x/api/galois.kronecker_symbol/index.html b/v0.3.x/api/galois.kronecker_symbol/index.html index 3c6a2b422..0b0810906 100644 --- a/v0.3.x/api/galois.kronecker_symbol/index.html +++ b/v0.3.x/api/galois.kronecker_symbol/index.html @@ -7804,15 +7804,15 @@
    -galois.kronecker_symbol(a: int, n: int) int
    +galois.kronecker_symbol(a: int, n: int) int

    Computes the Kronecker symbol \((\frac{a}{n})\). The Kronecker symbol extends the Jacobi symbol for all \(n\).

    Parameters:
    -
    a: int

    An integer.

    +
    a: int

    An integer.

    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.kth_prime/index.html b/v0.3.x/api/galois.kth_prime/index.html index cb51fab1f..a4030327e 100644 --- a/v0.3.x/api/galois.kth_prime/index.html +++ b/v0.3.x/api/galois.kth_prime/index.html @@ -7790,12 +7790,12 @@
    -galois.kth_prime(k: int) int
    +galois.kth_prime(k: int) int

    Returns the \(k\)-th prime, where \(k = \{1,2,3,4,\dots\}\) for primes \(p = \{2,3,5,7,\dots\}\).

    Parameters:
    -
    k: int

    The prime index (1-indexed).

    +
    k: int

    The prime index (1-indexed).

    diff --git a/v0.3.x/api/galois.lagrange_poly/index.html b/v0.3.x/api/galois.lagrange_poly/index.html index 7205157fc..c8109680f 100644 --- a/v0.3.x/api/galois.lagrange_poly/index.html +++ b/v0.3.x/api/galois.lagrange_poly/index.html @@ -7870,12 +7870,12 @@ Out[2]: GF([0, 1, 2, 3, 4, 5, 6, 7, 8], order=3^2) In [3]: y = GF.Random(x.size); y -Out[3]: GF([3, 7, 5, 5, 3, 1, 8, 3, 7], order=3^2) +Out[3]: GF([2, 2, 6, 5, 1, 2, 0, 0, 6], order=3^2)

    Find the Lagrange polynomial that interpolates the coordinates.

    In [4]: L = galois.lagrange_poly(x, y); L
    -Out[4]: Poly(3x^8 + 6x^7 + 8x^6 + 6x^5 + 4x^4 + 6x^3 + 3x^2 + 7x + 3, GF(3^2))
    +Out[4]: Poly(3x^8 + 4x^6 + 2x^5 + x^4 + 4x^3 + 6x^2 + 4x + 2, GF(3^2))
     

    Show that the polynomial evaluated at \(x\) is \(y\).

    diff --git a/v0.3.x/api/galois.lcm/index.html b/v0.3.x/api/galois.lcm/index.html index 5fc196101..3307a4323 100644 --- a/v0.3.x/api/galois.lcm/index.html +++ b/v0.3.x/api/galois.lcm/index.html @@ -7790,14 +7790,14 @@
    -galois.lcm(*values: int) int
    +galois.lcm(*values: int) int
    galois.lcm(*values: Poly) Poly

    Computes the least common multiple of the arguments.

    Parameters:
    -
    *values: int
    *values: Poly

    Each argument must be an integer or polynomial.

    +
    *values: int
    *values: Poly

    Each argument must be an integer or polynomial.

    diff --git a/v0.3.x/api/galois.legendre_symbol/index.html b/v0.3.x/api/galois.legendre_symbol/index.html index ae1d438b5..a7a231ce6 100644 --- a/v0.3.x/api/galois.legendre_symbol/index.html +++ b/v0.3.x/api/galois.legendre_symbol/index.html @@ -7832,14 +7832,14 @@
    -galois.legendre_symbol(a: int, p: int) int
    +galois.legendre_symbol(a: int, p: int) int

    Computes the Legendre symbol \((\frac{a}{p})\).

    Parameters:
    -
    a: int

    An integer.

    +
    a: int

    An integer.

    -
    p: int

    An odd prime \(p \ge 3\).

    +
    p: int

    An odd prime \(p \ge 3\).

    diff --git a/v0.3.x/api/galois.matlab_primitive_poly/index.html b/v0.3.x/api/galois.matlab_primitive_poly/index.html index 56ea83daf..74be8ed60 100644 --- a/v0.3.x/api/galois.matlab_primitive_poly/index.html +++ b/v0.3.x/api/galois.matlab_primitive_poly/index.html @@ -7832,15 +7832,15 @@
    -galois.matlab_primitive_poly(characteristic: int, degree: int) Poly
    +galois.matlab_primitive_poly(characteristic: int, degree: int) Poly

    Returns Matlab’s default primitive polynomial \(f(x)\) over \(\mathrm{GF}(p)\) with degree \(m\).

    Parameters:
    -
    characteristic: int

    The prime characteristic \(p\) of the field \(\mathrm{GF}(p)\) that the polynomial +

    characteristic: int

    The prime characteristic \(p\) of the field \(\mathrm{GF}(p)\) that the polynomial is over.

    -
    degree: int

    The degree \(m\) of the desired primitive polynomial.

    +
    degree: int

    The degree \(m\) of the desired primitive polynomial.

    diff --git a/v0.3.x/api/galois.mersenne_exponents/index.html b/v0.3.x/api/galois.mersenne_exponents/index.html index 2c59b31c5..78ac5e627 100644 --- a/v0.3.x/api/galois.mersenne_exponents/index.html +++ b/v0.3.x/api/galois.mersenne_exponents/index.html @@ -7818,12 +7818,12 @@
    -galois.mersenne_exponents(n: int | None = None) list[int]
    +galois.mersenne_exponents(n: int | None = None) list[int]

    Returns all known Mersenne exponents \(e\) for \(e \le n\).

    Parameters:
    -
    n: int | None = None

    The max exponent of 2. The default is None which returns all known Mersenne exponents.

    +
    n: int | None = None

    The max exponent of 2. The default is None which returns all known Mersenne exponents.

    diff --git a/v0.3.x/api/galois.mersenne_primes/index.html b/v0.3.x/api/galois.mersenne_primes/index.html index 0abe530d5..4aef5e7d6 100644 --- a/v0.3.x/api/galois.mersenne_primes/index.html +++ b/v0.3.x/api/galois.mersenne_primes/index.html @@ -7818,12 +7818,12 @@
    -galois.mersenne_primes(n: int | None = None) list[int]
    +galois.mersenne_primes(n: int | None = None) list[int]

    Returns all known Mersenne primes \(p\) for \(p \le 2^n - 1\).

    Parameters:
    -
    n: int | None = None

    The max power of 2. The default is None which returns all known Mersenne exponents.

    +
    n: int | None = None

    The max power of 2. The default is None which returns all known Mersenne exponents.

    diff --git a/v0.3.x/api/galois.miller_rabin_primality_test/index.html b/v0.3.x/api/galois.miller_rabin_primality_test/index.html index 4605992d6..0537e0635 100644 --- a/v0.3.x/api/galois.miller_rabin_primality_test/index.html +++ b/v0.3.x/api/galois.miller_rabin_primality_test/index.html @@ -7846,16 +7846,16 @@
    -galois.miller_rabin_primality_test(n: int, a: int = 2, rounds: int = 1) bool
    +galois.miller_rabin_primality_test(n: int, a: int = 2, rounds: int = 1) bool

    Determines if \(n\) is composite using the Miller-Rabin primality test.

    Parameters:
    -
    n: int

    An odd integer \(n \ge 3\).

    +
    n: int

    An odd integer \(n \ge 3\).

    -
    a: int = 2

    An integer in \(2 \le a \le n - 2\). The default is 2.

    +
    a: int = 2

    An integer in \(2 \le a \le n - 2\). The default is 2.

    -
    rounds: int = 1

    The number of iterations attempting to detect \(n\) as composite. Additional rounds will choose +

    rounds: int = 1

    The number of iterations attempting to detect \(n\) as composite. Additional rounds will choose consecutive primes for \(a\). The default is 1.

    diff --git a/v0.3.x/api/galois.next_prime/index.html b/v0.3.x/api/galois.next_prime/index.html index 2aab845cf..f71cfc449 100644 --- a/v0.3.x/api/galois.next_prime/index.html +++ b/v0.3.x/api/galois.next_prime/index.html @@ -7790,12 +7790,12 @@
    -galois.next_prime(n: int) int
    +galois.next_prime(n: int) int

    Returns the nearest prime \(p\), such that \(p > n\).

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.ntt/index.html b/v0.3.x/api/galois.ntt/index.html index e48a1d9f2..0e757bec0 100644 --- a/v0.3.x/api/galois.ntt/index.html +++ b/v0.3.x/api/galois.ntt/index.html @@ -7844,17 +7844,17 @@
    -galois.ntt(x: ArrayLike, size: int | None = None, modulus: int | None = None) FieldArray
    +galois.ntt(x: ArrayLike, size: int | None = None, modulus: int | None = None) FieldArray

    Computes the Number-Theoretic Transform (NTT) of \(x\).

    Parameters:
    x: ArrayLike

    The input sequence of integers \(x\).

    -
    size: int | None = None

    The size \(N\) of the NTT transform, must be at least the length of \(x\). The default is None +

    size: int | None = None

    The size \(N\) of the NTT transform, must be at least the length of \(x\). The default is None which corresponds to len(x). If size is larger than the length of \(x\), \(x\) is zero-padded.

    -
    modulus: int | None = None

    The prime modulus \(p\) that defines the field \(\mathrm{GF}(p)\). The prime modulus must +

    modulus: int | None = None

    The prime modulus \(p\) that defines the field \(\mathrm{GF}(p)\). The prime modulus must satisfy \(p > \textrm{max}(x)\) and \(p = mN + 1\) (i.e., the size of the transform \(N\) must divide \(p - 1\)). The default is None which corresponds to the smallest \(p\) that satisfies the criteria. However, if \(x\) is a \(\mathrm{GF}(p)\) array, then None corresponds to diff --git a/v0.3.x/api/galois.perfect_power/index.html b/v0.3.x/api/galois.perfect_power/index.html index eedf46c08..105efd2a4 100644 --- a/v0.3.x/api/galois.perfect_power/index.html +++ b/v0.3.x/api/galois.perfect_power/index.html @@ -7790,13 +7790,13 @@

    -galois.perfect_power(n: int) tuple[int, int]
    +galois.perfect_power(n: int) tuple[int, int]

    Returns the integer base \(c\) and exponent \(e\) of \(n = c^e\). If \(n\) is not a perfect power, then \(c = n\) and \(e = 1\).

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.pollard_p1/index.html b/v0.3.x/api/galois.pollard_p1/index.html index a13292548..8e9489c6b 100644 --- a/v0.3.x/api/galois.pollard_p1/index.html +++ b/v0.3.x/api/galois.pollard_p1/index.html @@ -7860,17 +7860,17 @@
    -galois.pollard_p1(n: int, B: int, B2: int | None = None) int
    +galois.pollard_p1(n: int, B: int, B2: int | None = None) int

    Attempts to find a non-trivial factor of \(n\) if it has a prime factor \(p\) such that \(p-1\) is \(B\)-smooth.

    Parameters:
    -
    n: int

    An odd composite integer \(n > 2\) that is not a prime power.

    +
    n: int

    An odd composite integer \(n > 2\) that is not a prime power.

    -
    B: int

    The smoothness bound \(B > 2\).

    +
    B: int

    The smoothness bound \(B > 2\).

    -
    B2: int | None = None

    The smoothness bound \(B_2\) for the optional second step of the algorithm. The default is None which +

    B2: int | None = None

    The smoothness bound \(B_2\) for the optional second step of the algorithm. The default is None which will not perform the second step.

    @@ -7879,7 +7879,7 @@

    A non-trivial factor of \(n\).

    Raises:
    -

    RuntimeError – If a non-trivial factor cannot be found.

    +

    RuntimeError – If a non-trivial factor cannot be found.

    diff --git a/v0.3.x/api/galois.pollard_rho/index.html b/v0.3.x/api/galois.pollard_rho/index.html index 485c745af..17f08a8c1 100644 --- a/v0.3.x/api/galois.pollard_rho/index.html +++ b/v0.3.x/api/galois.pollard_rho/index.html @@ -7846,14 +7846,14 @@
    -galois.pollard_rho(n: int, c: int = 1) int
    +galois.pollard_rho(n: int, c: int = 1) int

    Attempts to find a non-trivial factor of \(n\) using cycle detection.

    Parameters:
    -
    n: int

    An odd composite integer \(n > 2\) that is not a prime power.

    +
    n: int

    An odd composite integer \(n > 2\) that is not a prime power.

    -
    c: int = 1

    The constant offset in the function \(f(x) = x^2 + c\ \textrm{mod}\ n\). The default is 1. A requirement +

    c: int = 1

    The constant offset in the function \(f(x) = x^2 + c\ \textrm{mod}\ n\). The default is 1. A requirement of the algorithm is that \(c \not\in \{0, -2\}\).

    @@ -7862,7 +7862,7 @@

    A non-trivial factor \(m\) of \(n\).

    Raises:
    -

    RuntimeError – If a non-trivial factor cannot be found.

    +

    RuntimeError – If a non-trivial factor cannot be found.

    diff --git a/v0.3.x/api/galois.prev_prime/index.html b/v0.3.x/api/galois.prev_prime/index.html index 3b07b5e84..d3dee88dd 100644 --- a/v0.3.x/api/galois.prev_prime/index.html +++ b/v0.3.x/api/galois.prev_prime/index.html @@ -7790,12 +7790,12 @@
    -galois.prev_prime(n: int) int
    +galois.prev_prime(n: int) int

    Returns the nearest prime \(p\), such that \(p \le n\).

    Parameters:
    -
    n: int

    An integer \(n \ge 2\).

    +
    n: int

    An integer \(n \ge 2\).

    diff --git a/v0.3.x/api/galois.primes/index.html b/v0.3.x/api/galois.primes/index.html index 013a6fd99..9222a4e79 100644 --- a/v0.3.x/api/galois.primes/index.html +++ b/v0.3.x/api/galois.primes/index.html @@ -7818,12 +7818,12 @@
    -galois.primes(n: int) list[int]
    +galois.primes(n: int) list[int]

    Returns all primes \(p\) for \(p \le n\).

    Parameters:
    -
    n: int

    An integer.

    +
    n: int

    An integer.

    diff --git a/v0.3.x/api/galois.primitive_element/index.html b/v0.3.x/api/galois.primitive_element/index.html index 998d5738c..f7a5c713c 100644 --- a/v0.3.x/api/galois.primitive_element/index.html +++ b/v0.3.x/api/galois.primitive_element/index.html @@ -7873,11 +7873,11 @@

    Find a random primitive element for the degree-5 extension of \(\mathrm{GF}(7)\) with irreducible polynomial \(f(x)\).

    In [10]: g = galois.primitive_element(f, method="random"); g
    -Out[10]: Poly(x^4 + 6x + 1, GF(7))
    +Out[10]: Poly(x^4 + 2x^3 + 2x^2 + 2x + 4, GF(7))
     
     # Convert the polynomial over GF(7) into an element of GF(7^5)
     In [11]: g = GF(int(g)); g
    -Out[11]: GF(x^4 + 6x + 1, order=7^5)
    +Out[11]: GF(x^4 + 2x^3 + 2x^2 + 2x + 4, order=7^5)
     
     In [12]: g.multiplicative_order() == GF.order - 1
     Out[12]: True
    diff --git a/v0.3.x/api/galois.primitive_elements/index.html b/v0.3.x/api/galois.primitive_elements/index.html
    index d52dd65d2..a76cbe704 100644
    --- a/v0.3.x/api/galois.primitive_elements/index.html
    +++ b/v0.3.x/api/galois.primitive_elements/index.html
    @@ -7804,7 +7804,7 @@
     
     
    -galois.primitive_elements(irreducible_poly: Poly) list[galois._polys._poly.Poly]
    +galois.primitive_elements(irreducible_poly: Poly) list[galois._polys._poly.Poly]

    Finds all primitive elements \(g\) of the Galois field \(\mathrm{GF}(q^m)\) with degree-\(m\) irreducible polynomial \(f(x)\) over \(\mathrm{GF}(q)\).

    diff --git a/v0.3.x/api/galois.primitive_poly/index.html b/v0.3.x/api/galois.primitive_poly/index.html index efd0e476e..fb6184138 100644 --- a/v0.3.x/api/galois.primitive_poly/index.html +++ b/v0.3.x/api/galois.primitive_poly/index.html @@ -7860,16 +7860,16 @@
    -galois.primitive_poly(order: int, degree: int, terms: int | str | None = None, method: 'min' | 'max' | 'random' = 'min') Poly
    +galois.primitive_poly(order: int, degree: int, terms: int | str | None = None, method: 'min' | 'max' | 'random' = 'min') Poly

    Returns a monic primitive polynomial \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    Parameters:
    -
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    +
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    -
    degree: int

    The degree \(m\) of the desired primitive polynomial.

    +
    degree: int

    The degree \(m\) of the desired primitive polynomial.

    -
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    +
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    • None (default): Disregards the number of terms while searching for the polynomial.

    • int: The exact number of non-zero terms in the polynomial.

    • @@ -7891,7 +7891,7 @@

      The degree-\(m\) monic primitive polynomial over \(\mathrm{GF}(q)\).

      Raises:
      -

      RuntimeError – If no monic primitive polynomial of degree \(m\) over \(\mathrm{GF}(q)\) with +

      RuntimeError – If no monic primitive polynomial of degree \(m\) over \(\mathrm{GF}(q)\) with \(t\) terms exists. If terms is None or "min", this should never be raised.

    @@ -7915,7 +7915,7 @@ Out[2]: Poly(x^3 + 6x^2 + 6x + 4, GF(7)) In [3]: galois.primitive_poly(7, 3, method="random") -Out[3]: Poly(x^3 + 6x^2 + 6x + 2, GF(7)) +Out[3]: Poly(x^3 + 2x^2 + 6x + 2, GF(7))

    Find the lexicographically-first monic primitive polynomial with four terms.

    @@ -7950,13 +7950,13 @@
    In [10]: GF = galois.GF(7)
     
     In [11]: f = galois.primitive_poly(7, 5, method="random"); f
    -Out[11]: Poly(x^5 + 4x^4 + x^2 + 3x + 4, GF(7))
    +Out[11]: Poly(x^5 + 3x^4 + 3x^3 + 4x^2 + 4x + 2, GF(7))
     
     In [12]: f.is_primitive()
     Out[12]: True
     
     In [13]: g = f * GF(3); g
    -Out[13]: Poly(3x^5 + 5x^4 + 3x^2 + 2x + 5, GF(7))
    +Out[13]: Poly(3x^5 + 2x^4 + 2x^3 + 5x^2 + 5x + 6, GF(7))
     
     In [14]: g.is_primitive()
     Out[14]: True
    diff --git a/v0.3.x/api/galois.primitive_polys/index.html b/v0.3.x/api/galois.primitive_polys/index.html
    index 2b59464a3..6c45c1778 100644
    --- a/v0.3.x/api/galois.primitive_polys/index.html
    +++ b/v0.3.x/api/galois.primitive_polys/index.html
    @@ -7846,16 +7846,16 @@
     
     
    -galois.primitive_polys(order: int, degree: int, terms: int | str | None = None, reverse: bool = False) Iterator[Poly]
    +galois.primitive_polys(order: int, degree: int, terms: int | str | None = None, reverse: bool = False) Iterator[Poly]

    Iterates through all monic primitive polynomials \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    Parameters:
    -
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    +
    order: int

    The prime power order \(q\) of the field \(\mathrm{GF}(q)\) that the polynomial is over.

    -
    degree: int

    The degree \(m\) of the desired primitive polynomial.

    +
    degree: int

    The degree \(m\) of the desired primitive polynomial.

    -
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    +
    terms: int | str | None = None

    The desired number of non-zero terms \(t\) in the polynomial.

    • None (default): Disregards the number of terms while searching for the polynomial.

    • int: The exact number of non-zero terms in the polynomial.

    • @@ -7863,7 +7863,7 @@

    -
    reverse: bool = False

    Indicates to return the primitive polynomials from lexicographically last to first. +

    reverse: bool = False

    Indicates to return the primitive polynomials from lexicographically last to first. The default is False.

    @@ -7930,7 +7930,7 @@

    Or, manually iterate over the generator.

    In [5]: generator = galois.primitive_polys(3, 4, reverse=True); generator
    -Out[5]: <generator object primitive_polys at 0x7fec2620afc0>
    +Out[5]: <generator object primitive_polys at 0x7ff965952b00>
     
     In [6]: next(generator)
     Out[6]: Poly(x^4 + 2x^3 + 2x^2 + x + 2, GF(3))
    diff --git a/v0.3.x/api/galois.primitive_root/index.html b/v0.3.x/api/galois.primitive_root/index.html
    index 87d08a390..0a6be016b 100644
    --- a/v0.3.x/api/galois.primitive_root/index.html
    +++ b/v0.3.x/api/galois.primitive_root/index.html
    @@ -7874,16 +7874,16 @@
     
     
    -galois.primitive_root(n: int, start: int = 1, stop: int | None = None, method: 'min' | 'max' | 'random' = 'min') int
    +galois.primitive_root(n: int, start: int = 1, stop: int | None = None, method: 'min' | 'max' | 'random' = 'min') int

    Finds a primitive root modulo \(n\) in the range \([\textrm{start}, \textrm{stop})\).

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    -
    start: int = 1

    Starting value (inclusive) in the search for a primitive root.

    +
    start: int = 1

    Starting value (inclusive) in the search for a primitive root.

    -
    stop: int | None = None

    Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds +

    stop: int | None = None

    Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to \(n\).

    method: 'min' | 'max' | 'random' = 'min'

    The search method for finding the primitive root.

    @@ -7894,7 +7894,7 @@

    A primitive root modulo \(n\) in the specified range.

    Raises:
    -

    RuntimeError – If no primitive roots exist in the specified range.

    +

    RuntimeError – If no primitive roots exist in the specified range.

    @@ -8053,7 +8053,7 @@ Out[20]: 1000000000000000035000054 In [21]: galois.primitive_root(n, method="random") -Out[21]: 55068497457116354251891 +Out[21]: 116952087714999724748654
    diff --git a/v0.3.x/api/galois.primitive_roots/index.html b/v0.3.x/api/galois.primitive_roots/index.html index cb18482ff..481691004 100644 --- a/v0.3.x/api/galois.primitive_roots/index.html +++ b/v0.3.x/api/galois.primitive_roots/index.html @@ -7860,19 +7860,19 @@
    -galois.primitive_roots(n: int, start: int = 1, stop: int | None = None, reverse: bool = False) Iterator[int]
    +galois.primitive_roots(n: int, start: int = 1, stop: int | None = None, reverse: bool = False) Iterator[int]

    Iterates through all primitive roots modulo \(n\) in the range \([\textrm{start}, \textrm{stop})\).

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    -
    start: int = 1

    Starting value (inclusive) in the search for a primitive root. The default is 1.

    +
    start: int = 1

    Starting value (inclusive) in the search for a primitive root. The default is 1.

    -
    stop: int | None = None

    Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds +

    stop: int | None = None

    Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to \(n\).

    -
    reverse: bool = False

    Indicates to return the primitive roots from largest to smallest. The default is False.

    +
    reverse: bool = False

    Indicates to return the primitive roots from largest to smallest. The default is False.

    @@ -7935,7 +7935,7 @@

    Find the three largest primitive roots modulo 31 in reversed order.

    In [7]: generator = galois.primitive_roots(31, reverse=True); generator
    -Out[7]: <generator object primitive_roots at 0x7fec2620b480>
    +Out[7]: <generator object primitive_roots at 0x7ff965953810>
     
     In [8]: [next(generator) for _ in range(3)]
     Out[8]: [24, 22, 21]
    diff --git a/v0.3.x/api/galois.printoptions/index.html b/v0.3.x/api/galois.printoptions/index.html
    index a40b57f4d..2395a0962 100644
    --- a/v0.3.x/api/galois.printoptions/index.html
    +++ b/v0.3.x/api/galois.printoptions/index.html
    @@ -7748,7 +7748,7 @@
     
     
    -galois.printoptions(**kwargs) Generator[None, None, None]
    +galois.printoptions(**kwargs) Generator[None, None, None]

    A context manager to temporarily modify the print options for the package. This function is the galois equivalent of numpy.printoptions().

    See set_printoptions() for the full list of available options.

    diff --git a/v0.3.x/api/galois.prod/index.html b/v0.3.x/api/galois.prod/index.html index d46973e2e..cb1f5bb73 100644 --- a/v0.3.x/api/galois.prod/index.html +++ b/v0.3.x/api/galois.prod/index.html @@ -7790,14 +7790,14 @@
    -galois.prod(*values: int) int
    +galois.prod(*values: int) int
    galois.prod(*values: Poly) Poly

    Computes the product of the arguments.

    Parameters:
    -
    *values: int
    *values: Poly

    Each argument must be an integer or polynomial.

    +
    *values: int
    *values: Poly

    Each argument must be an integer or polynomial.

    @@ -7828,21 +7828,21 @@
    In [2]: GF = galois.GF(7)
     
     In [3]: f1 = galois.Poly.Random(2, field=GF); f1
    -Out[3]: Poly(5x^2 + 3x, GF(7))
    +Out[3]: Poly(6x^2 + 5x + 5, GF(7))
     
     In [4]: f2 = galois.Poly.Random(3, field=GF); f2
    -Out[4]: Poly(x^3 + 4x^2 + 3, GF(7))
    +Out[4]: Poly(4x^3 + 3x^2 + 4x + 4, GF(7))
     
     In [5]: f3 = galois.Poly.Random(4, field=GF); f3
    -Out[5]: Poly(3x^4 + x^3 + 6x^2 + 4x + 5, GF(7))
    +Out[5]: Poly(5x^4 + 3x^3 + 2x^2 + 5x, GF(7))
     

    Compute the product of three polynomials.

    In [6]: galois.prod(f1, f2, f3)
    -Out[6]: Poly(x^9 + 4x^8 + 5x^7 + 5x^6 + 3x^4 + 6x^3 + 6x^2 + 3x, GF(7))
    +Out[6]: Poly(x^9 + 3x^8 + 2x^7 + 3x^6 + 6x^5 + 3x^4 + x^3 + 2x^2 + 2x, GF(7))
     
     In [7]: f1 * f2 * f3
    -Out[7]: Poly(x^9 + 4x^8 + 5x^7 + 5x^6 + 3x^4 + 6x^3 + 6x^2 + 3x, GF(7))
    +Out[7]: Poly(x^9 + 3x^8 + 2x^7 + 3x^6 + 6x^5 + 3x^4 + x^3 + 2x^2 + 2x, GF(7))
     
    diff --git a/v0.3.x/api/galois.random_prime/index.html b/v0.3.x/api/galois.random_prime/index.html index b158fa2ce..d39e0a6da 100644 --- a/v0.3.x/api/galois.random_prime/index.html +++ b/v0.3.x/api/galois.random_prime/index.html @@ -7832,14 +7832,14 @@
    -galois.random_prime(bits: int, seed: int | None = None) int
    +galois.random_prime(bits: int, seed: int | None = None) int

    Returns a random prime \(p\) with \(b\) bits, such that \(2^b \le p < 2^{b+1}\).

    Parameters:
    -
    bits: int

    The number of bits in the prime \(p\).

    +
    bits: int

    The number of bits in the prime \(p\).

    -
    seed: int | None = None

    Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable +

    seed: int | None = None

    Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed.

    diff --git a/v0.3.x/api/galois.totatives/index.html b/v0.3.x/api/galois.totatives/index.html index dd7247e23..3777def5d 100644 --- a/v0.3.x/api/galois.totatives/index.html +++ b/v0.3.x/api/galois.totatives/index.html @@ -7818,12 +7818,12 @@
    -galois.totatives(n: int) list[int]
    +galois.totatives(n: int) list[int]

    Returns the positive integers (totatives) in \([1, n)\) that are coprime to \(n\).

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    diff --git a/v0.3.x/api/galois.trial_division/index.html b/v0.3.x/api/galois.trial_division/index.html index 82b32ee1b..9bf0e646a 100644 --- a/v0.3.x/api/galois.trial_division/index.html +++ b/v0.3.x/api/galois.trial_division/index.html @@ -7804,16 +7804,16 @@
    -galois.trial_division(n: int, B: int | None = None) tuple[list[int], list[int], int]
    +galois.trial_division(n: int, B: int | None = None) tuple[list[int], list[int], int]

    Finds all the prime factors \(p_i^{e_i}\) of \(n\) for \(p_i \le B\).

    The trial division factorization will find all prime factors \(p_i \le B\) such that \(n\) factors as \(n = p_1^{e_1} \dots p_k^{e_k} n_r\) where \(n_r\) is a residual factor (which may be composite).

    Parameters:
    -
    n: int

    A positive integer.

    +
    n: int

    A positive integer.

    -
    B: int | None = None

    The max divisor in the trial division. The default is None which corresponds to \(B = \sqrt{n}\). +

    B: int | None = None

    The max divisor in the trial division. The default is None which corresponds to \(B = \sqrt{n}\). If \(B > \sqrt{n}\), the algorithm will only search up to \(\sqrt{n}\), since a prime factor of \(n\) cannot be larger than \(\sqrt{n}\).

    diff --git a/v0.3.x/api/galois.typing.ArrayLike/index.html b/v0.3.x/api/galois.typing.ArrayLike/index.html index 8a80e92ac..eb26a27f7 100644 --- a/v0.3.x/api/galois.typing.ArrayLike/index.html +++ b/v0.3.x/api/galois.typing.ArrayLike/index.html @@ -7749,7 +7749,7 @@
    galois.typing.ArrayLike
    -

    A Union representing objects that can be coerced into a Galois field array.

    +

    A Union representing objects that can be coerced into a Galois field array.

    Union

    • IterableLike: A recursive iterable of iterables of elements.

      @@ -7863,7 +7863,7 @@
    • Array: A previously-created Array object. No coercion is necessary.

    Alias

    -

    alias of Union[Sequence[Union[int, str, Array]], Sequence[IterableLike], ndarray, Array]

    +

    alias of Union[Sequence[Union[int, str, Array]], Sequence[IterableLike], ndarray, Array]

    diff --git a/v0.3.x/api/galois.typing.DTypeLike/index.html b/v0.3.x/api/galois.typing.DTypeLike/index.html index a703f9622..6c44b3346 100644 --- a/v0.3.x/api/galois.typing.DTypeLike/index.html +++ b/v0.3.x/api/galois.typing.DTypeLike/index.html @@ -7749,7 +7749,7 @@
    galois.typing.DTypeLike
    -

    A Union representing objects that can be coerced into a NumPy data type.

    +

    A Union representing objects that can be coerced into a NumPy data type.

    Union

    • numpy.integer: A fixed-width NumPy integer data type.

      @@ -7763,13 +7763,13 @@
    -
  • int: The system default integer.

    +
  • int: The system default integer.

    In [4]: x = GF.Random(4, dtype=int); x.dtype
     Out[4]: dtype('int64')
     
  • -
  • str: The string that can be coerced with numpy.dtype.

    +
  • str: The string that can be coerced with numpy.dtype.

    In [5]: x = GF.Random(4, dtype="uint16"); x.dtype
     Out[5]: dtype('uint16')
     
    @@ -7778,7 +7778,7 @@
     
  • -
  • object: A Python object data type. This applies to non-compiled fields.

    +
  • object: A Python object data type. This applies to non-compiled fields.

    In [7]: GF = galois.GF(2**100)
     
     In [8]: x = GF.Random(4, dtype=object); x.dtype
    @@ -7788,7 +7788,7 @@
     
  • Alias

    -

    alias of Union[integer, int, str, object]

    +

    alias of Union[integer, int, str, object]

    diff --git a/v0.3.x/api/galois.typing.ElementLike/index.html b/v0.3.x/api/galois.typing.ElementLike/index.html index c5048d7ee..1cd86c2f4 100644 --- a/v0.3.x/api/galois.typing.ElementLike/index.html +++ b/v0.3.x/api/galois.typing.ElementLike/index.html @@ -7749,11 +7749,11 @@
    galois.typing.ElementLike
    -

    A Union representing objects that can be coerced into a Galois field element.

    +

    A Union representing objects that can be coerced into a Galois field element.

    Scalars are 0-D Array objects.

    Union

    -
  • str: A finite field element in its polynomial representation. Many string conventions are +

  • str: A finite field element in its polynomial representation. Many string conventions are accepted, including: with/without *, with/without spaces, ^ or **, any indeterminate variable, increasing/decreasing degrees, etc. Or any combination of the above.

    @@ -7880,7 +7880,7 @@
  • Array: A previously-created scalar Array object. No coercion is necessary.

  • Alias

    -

    alias of Union[int, str, Array]

    +

    alias of Union[int, str, Array]

    diff --git a/v0.3.x/api/galois.typing.IterableLike/index.html b/v0.3.x/api/galois.typing.IterableLike/index.html index f7b3f30d2..35a136b7f 100644 --- a/v0.3.x/api/galois.typing.IterableLike/index.html +++ b/v0.3.x/api/galois.typing.IterableLike/index.html @@ -7749,10 +7749,10 @@
    galois.typing.IterableLike
    -

    A Union representing iterable objects that can be coerced into a Galois field array.

    +

    A Union representing iterable objects that can be coerced into a Galois field array.

    Union

    Alias

    -

    alias of Union[Sequence[Union[int, str, Array]], Sequence[IterableLike]]

    +

    alias of Union[Sequence[Union[int, str, Array]], Sequence[IterableLike]]

    diff --git a/v0.3.x/api/galois.typing.PolyLike/index.html b/v0.3.x/api/galois.typing.PolyLike/index.html index 7e069e798..aa4989012 100644 --- a/v0.3.x/api/galois.typing.PolyLike/index.html +++ b/v0.3.x/api/galois.typing.PolyLike/index.html @@ -7749,10 +7749,10 @@
    galois.typing.PolyLike
    -

    A Union representing objects that can be coerced into a polynomial.

    +

    A Union representing objects that can be coerced into a polynomial.

    Union

      -
    • int: A polynomial in its integer representation, see Int(). The Galois field must be known +

    • int: A polynomial in its integer representation, see Int(). The Galois field must be known from context.

      # Known from context
       In [1]: GF = galois.GF(3)
      @@ -7762,7 +7762,7 @@
       
    • -
    • str: A polynomial in its string representation, see Str(). The Galois field must be known +

    • str: A polynomial in its string representation, see Str(). The Galois field must be known from context.

      In [3]: galois.Poly.Str("2x^2 + 1", field=GF)
       Out[3]: Poly(2x^2 + 1, GF(3))
      @@ -7782,7 +7782,7 @@
       
    • Poly: A previously-created Poly object. No coercion is necessary.

    Alias

    -

    alias of Union[int, str, Sequence[Union[int, str, Array]], Sequence[IterableLike], ndarray, Array, Poly]

    +

    alias of Union[int, str, Sequence[Union[int, str, Array]], Sequence[IterableLike], ndarray, Array, Poly]

    diff --git a/v0.3.x/api/galois.typing.ShapeLike/index.html b/v0.3.x/api/galois.typing.ShapeLike/index.html index e47624da5..0ddbe3cba 100644 --- a/v0.3.x/api/galois.typing.ShapeLike/index.html +++ b/v0.3.x/api/galois.typing.ShapeLike/index.html @@ -7749,45 +7749,45 @@
    galois.typing.ShapeLike
    -

    A Union representing objects that can be coerced into a NumPy shape tuple.

    +

    A Union representing objects that can be coerced into a NumPy shape tuple.

    Union

      -
    • int: The size of a 1-D array.

      +
    • int: The size of a 1-D array.

      In [1]: GF = galois.GF(3**5)
       
       In [2]: x = GF.Random(4); x
      -Out[2]: GF([204,  86,  44, 107], order=3^5)
      +Out[2]: GF([207,  22, 188,  19], order=3^5)
       
       In [3]: x.shape
       Out[3]: (4,)
       
    • -
    • Sequence [ int ]: An iterable of integer dimensions. Tuples or lists are allowed. An empty +

    • Sequence [ int ]: An iterable of integer dimensions. Tuples or lists are allowed. An empty iterable, () or [], represents a 0-D array (scalar).

      In [4]: x = GF.Random((2, 3)); x
       Out[4]: 
      -GF([[146, 221, 216],
      -    [ 70,  22, 165]], order=3^5)
      +GF([[ 15, 209, 176],
      +    [192, 236, 141]], order=3^5)
       
       In [5]: x.shape
       Out[5]: (2, 3)
       
       In [6]: x = GF.Random([2, 3, 4]); x
       Out[6]: 
      -GF([[[206,  48, 138,  54],
      -     [ 54, 215,  68, 241],
      -     [176,  91, 212, 116]],
      +GF([[[129, 197,  51,  11],
      +     [  5,  73,  52,  42],
      +     [163, 132, 171, 102]],
       
      -    [[171,  75, 233, 117],
      -     [209, 170, 175,  31],
      -     [ 19, 179,  41, 182]]], order=3^5)
      +    [[160,  47,  46, 146],
      +     [113, 196,  42, 123],
      +     [128, 192, 114,  85]]], order=3^5)
       
       In [7]: x.shape
       Out[7]: (2, 3, 4)
       
       In [8]: x = GF.Random(()); x
      -Out[8]: GF(198, order=3^5)
      +Out[8]: GF(35, order=3^5)
       
       In [9]: x.shape
       Out[9]: ()
      @@ -7796,7 +7796,7 @@
       

    Alias

    -

    alias of Union[int, Sequence[int]]

    +

    alias of Union[int, Sequence[int]]

    diff --git a/v0.3.x/api/index.html b/v0.3.x/api/index.html index 7d3193266..41a402451 100644 --- a/v0.3.x/api/index.html +++ b/v0.3.x/api/index.html @@ -10332,31 +10332,31 @@
    galois.typing.ArrayLike
    -

    A Union representing objects that can be coerced into a Galois field array.

    +

    A Union representing objects that can be coerced into a Galois field array.

    galois.typing.DTypeLike
    -

    A Union representing objects that can be coerced into a NumPy data type.

    +

    A Union representing objects that can be coerced into a NumPy data type.

    galois.typing.ElementLike
    -

    A Union representing objects that can be coerced into a Galois field element.

    +

    A Union representing objects that can be coerced into a Galois field element.

    galois.typing.IterableLike
    -

    A Union representing iterable objects that can be coerced into a Galois field array.

    +

    A Union representing iterable objects that can be coerced into a Galois field array.

    galois.typing.ShapeLike
    -

    A Union representing objects that can be coerced into a NumPy shape tuple.

    +

    A Union representing objects that can be coerced into a NumPy shape tuple.

    @@ -10376,17 +10376,17 @@

    Galois fields
    -galois.Field(order: int, *, ...) type[FieldArray]
    +galois.Field(order: int, *, ...) type[FieldArray]
    -galois.Field(characteristic: int, degree, ...) type[FieldArray]
    +galois.Field(characteristic: int, degree, ...) type[FieldArray]

    Alias of GF().

    -galois.GF(order: int, *, ...) type[FieldArray]
    +galois.GF(order: int, *, ...) type[FieldArray]
    -galois.GF(characteristic: int, degree: int, ...) type[FieldArray]
    +galois.GF(characteristic: int, degree: int, ...) type[FieldArray]

    Creates a FieldArray subclass for \(\mathrm{GF}(p^m)\).

    @@ -10402,14 +10402,14 @@

    Primitive elements
    -galois.primitive_elements(...) list[galois._polys._poly.Poly]
    +galois.primitive_elements(...) list[galois._polys._poly.Poly]

    Finds all primitive elements \(g\) of the Galois field \(\mathrm{GF}(q^m)\) with degree-\(m\) irreducible polynomial \(f(x)\) over \(\mathrm{GF}(q)\).

    -galois.is_primitive_element(element: PolyLike, ...) bool
    +galois.is_primitive_element(element: PolyLike, ...) bool

    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)\).

    @@ -10426,7 +10426,7 @@

    Polynomials
    galois.typing.PolyLike
    -

    A Union representing objects that can be coerced into a polynomial.

    +

    A Union representing objects that can be coerced into a polynomial.

    @@ -10438,13 +10438,13 @@

    PolynomialsIrreducible polynomials

    -galois.irreducible_poly(order: int, degree: int, ...) Poly
    +galois.irreducible_poly(order: int, degree: int, ...) Poly

    Returns a monic irreducible polynomial \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    -galois.irreducible_polys(order: int, degree, ...) Iterator[Poly]
    +galois.irreducible_polys(order: int, degree, ...) Iterator[Poly]

    Iterates through all monic irreducible polynomials \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    @@ -10453,25 +10453,25 @@

    Irreducible polynomialsPrimitive polynomials

    -galois.conway_poly(characteristic: int, degree: int, ...) Poly
    +galois.conway_poly(characteristic: int, degree: int, ...) Poly

    Returns the Conway polynomial \(C_{p,m}(x)\) over \(\mathrm{GF}(p)\) with degree \(m\).

    -galois.matlab_primitive_poly(characteristic: int, degree) Poly
    +galois.matlab_primitive_poly(characteristic: int, degree) Poly

    Returns Matlab’s default primitive polynomial \(f(x)\) over \(\mathrm{GF}(p)\) with degree \(m\).

    -galois.primitive_poly(order: int, degree: int, ...) Poly
    +galois.primitive_poly(order: int, degree: int, ...) Poly

    Returns a monic primitive polynomial \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    -galois.primitive_polys(order: int, degree, ...) Iterator[Poly]
    +galois.primitive_polys(order: int, degree, ...) Iterator[Poly]

    Iterates through all monic primitive polynomials \(f(x)\) over \(\mathrm{GF}(q)\) with degree \(m\).

    @@ -10535,7 +10535,7 @@

    Transforms
    -galois.ntt(x: ArrayLike, size: int | None = None, ...) FieldArray
    +galois.ntt(x: ArrayLike, size: int | None = None, ...) FieldArray

    Computes the Number-Theoretic Transform (NTT) of \(x\).

    @@ -10545,29 +10545,29 @@

    Number theoryDivisibility

    -galois.are_coprime(*values: int) bool
    +galois.are_coprime(*values: int) bool
    -galois.are_coprime(*values: Poly) bool
    +galois.are_coprime(*values: Poly) bool

    Determines if the arguments are pairwise coprime.

    -galois.egcd(a: int, b: int) tuple[int, int, int]
    +galois.egcd(a: int, b: int) tuple[int, int, int]
    -galois.egcd(...) tuple[galois._polys._poly.Poly, galois._polys._poly.Poly, galois._polys._poly.Poly]
    +galois.egcd(...) tuple[galois._polys._poly.Poly, galois._polys._poly.Poly, galois._polys._poly.Poly]

    Finds the multiplicands of \(a\) and \(b\) such that \(a s + b t = \mathrm{gcd}(a, b)\).

    -galois.euler_phi(n: int) int
    +galois.euler_phi(n: int) int

    Counts the positive integers (totatives) in \([1, n)\) that are coprime to \(n\).

    -galois.gcd(a: int, b: int) int
    +galois.gcd(a: int, b: int) int
    galois.gcd(a: Poly, b: Poly) Poly

    Finds the greatest common divisor of \(a\) and \(b\).

    @@ -10575,7 +10575,7 @@

    Divisibility
    -galois.lcm(*values: int) int
    +galois.lcm(*values: int) int
    galois.lcm(*values: Poly) Poly

    Computes the least common multiple of the arguments.

    @@ -10583,7 +10583,7 @@

    Divisibility
    -galois.prod(*values: int) int
    +galois.prod(*values: int) int
    galois.prod(*values: Poly) Poly

    Computes the product of the arguments.

    @@ -10591,7 +10591,7 @@

    Divisibility
    -galois.totatives(n: int) list[int]
    +galois.totatives(n: int) list[int]

    Returns the positive integers (totatives) in \([1, n)\) that are coprime to \(n\).

    @@ -10600,41 +10600,41 @@

    DivisibilityCongruences

    -galois.carmichael_lambda(n: int) int
    +galois.carmichael_lambda(n: int) int

    Finds the smallest positive integer \(m\) such that \(a^m \equiv 1\ (\textrm{mod}\ n)\) for every integer \(a\) in \([1, n)\) that is coprime to \(n\).

    -galois.crt(remainders: Sequence[int], moduli: Sequence[int]) int
    +galois.crt(remainders: Sequence[int], moduli: Sequence[int]) int
    -galois.crt(remainders: Sequence[Poly], moduli) Poly
    +galois.crt(remainders: Sequence[Poly], moduli) Poly

    Solves the simultaneous system of congruences for \(x\).

    -galois.jacobi_symbol(a: int, n: int) int
    +galois.jacobi_symbol(a: int, n: int) int

    Computes the Jacobi symbol \((\frac{a}{n})\).

    -galois.kronecker_symbol(a: int, n: int) int
    +galois.kronecker_symbol(a: int, n: int) int

    Computes the Kronecker symbol \((\frac{a}{n})\). The Kronecker symbol extends the Jacobi symbol for all \(n\).

    -galois.legendre_symbol(a: int, p: int) int
    +galois.legendre_symbol(a: int, p: int) int

    Computes the Legendre symbol \((\frac{a}{p})\).

    -galois.is_cyclic(n: int) bool
    +galois.is_cyclic(n: int) bool

    Determines whether the multiplicative group \((\mathbb{Z}/n\mathbb{Z}){^\times}\) is cyclic.

    @@ -10643,19 +10643,19 @@

    CongruencesPrimitive roots

    -galois.primitive_root(n: int, start: int = 1, ...) int
    +galois.primitive_root(n: int, start: int = 1, ...) int

    Finds a primitive root modulo \(n\) in the range \([\textrm{start}, \textrm{stop})\).

    -galois.primitive_roots(n: int, start: int = 1, ...) Iterator[int]
    +galois.primitive_roots(n: int, start: int = 1, ...) Iterator[int]

    Iterates through all primitive roots modulo \(n\) in the range \([\textrm{start}, \textrm{stop})\).

    -galois.is_primitive_root(g: int, n: int) bool
    +galois.is_primitive_root(g: int, n: int) bool

    Determines if \(g\) is a primitive root modulo \(n\).

    @@ -10664,19 +10664,19 @@

    Primitive rootsInteger arithmetic

    -galois.ilog(n: int, b: int) int
    +galois.ilog(n: int, b: int) int

    Computes \(x = \lfloor\textrm{log}_b(n)\rfloor\) such that \(b^x \le n < b^{x + 1}\).

    -galois.iroot(n: int, k: int) int
    +galois.iroot(n: int, k: int) int

    Computes \(x = \lfloor n^{\frac{1}{k}} \rfloor\) such that \(x^k \le n < (x + 1)^k\).

    -galois.isqrt(n: int) int
    +galois.isqrt(n: int) int

    Computes \(x = \lfloor\sqrt{n}\rfloor\) such that \(x^2 \le n < (x + 1)^2\).

    @@ -10686,9 +10686,9 @@

    FactorizationPrime factorization

    -galois.factors(value: int) tuple[list[int], list[int]]
    +galois.factors(value: int) tuple[list[int], list[int]]
    -galois.factors(...) tuple[list[galois._polys._poly.Poly], list[int]]
    +galois.factors(...) tuple[list[galois._polys._poly.Poly], list[int]]

    Computes the prime factors of a positive integer or the irreducible factors of a non-constant, monic polynomial.

    @@ -10697,13 +10697,13 @@

    Prime factorizationComposite factorization

    -galois.divisor_sigma(n: int, k: int = 1) int
    +galois.divisor_sigma(n: int, k: int = 1) int

    Returns the sum of \(k\)-th powers of the positive divisors of \(n\).

    -galois.divisors(n: int) list[int]
    +galois.divisors(n: int) list[int]

    Computes all positive integer divisors \(d\) of the integer \(n\) such that $d\ |n$.

    @@ -10712,27 +10712,27 @@

    Composite factorizationSpecific factorization algorithms

    -galois.perfect_power(n: int) tuple[int, int]
    +galois.perfect_power(n: int) tuple[int, int]

    Returns the integer base \(c\) and exponent \(e\) of \(n = c^e\). If \(n\) is not a perfect power, then \(c = n\) and \(e = 1\).

    -galois.pollard_p1(n: int, B: int, B2: int | None = None) int
    +galois.pollard_p1(n: int, B: int, B2: int | None = None) int

    Attempts to find a non-trivial factor of \(n\) if it has a prime factor \(p\) such that \(p-1\) is \(B\)-smooth.

    -galois.pollard_rho(n: int, c: int = 1) int
    +galois.pollard_rho(n: int, c: int = 1) int

    Attempts to find a non-trivial factor of \(n\) using cycle detection.

    -galois.trial_division(n, ...) tuple[list[int], list[int], int]
    +galois.trial_division(n, ...) tuple[list[int], list[int], int]

    Finds all the prime factors \(p_i^{e_i}\) of \(n\) for \(p_i \le B\).

    @@ -10742,43 +10742,43 @@

    PrimesPrime number generation

    -galois.kth_prime(k: int) int
    +galois.kth_prime(k: int) int

    Returns the \(k\)-th prime, where \(k = \{1,2,3,4,\dots\}\) for primes \(p = \{2,3,5,7,\dots\}\).

    -galois.mersenne_exponents(n: int | None = None) list[int]
    +galois.mersenne_exponents(n: int | None = None) list[int]

    Returns all known Mersenne exponents \(e\) for \(e \le n\).

    -galois.mersenne_primes(n: int | None = None) list[int]
    +galois.mersenne_primes(n: int | None = None) list[int]

    Returns all known Mersenne primes \(p\) for \(p \le 2^n - 1\).

    -galois.next_prime(n: int) int
    +galois.next_prime(n: int) int

    Returns the nearest prime \(p\), such that \(p > n\).

    -galois.prev_prime(n: int) int
    +galois.prev_prime(n: int) int

    Returns the nearest prime \(p\), such that \(p \le n\).

    -galois.primes(n: int) list[int]
    +galois.primes(n: int) list[int]

    Returns all primes \(p\) for \(p \le n\).

    -galois.random_prime(bits: int, seed: int | None = None) int
    +galois.random_prime(bits: int, seed: int | None = None) int

    Returns a random prime \(p\) with \(b\) bits, such that \(2^b \le p < 2^{b+1}\).

    @@ -10787,45 +10787,45 @@

    Prime number generationPrimality tests

    -galois.is_composite(n: int) bool
    +galois.is_composite(n: int) bool

    Determines if \(n\) is composite.

    -galois.is_perfect_power(n: int) bool
    +galois.is_perfect_power(n: int) bool

    Determines if \(n\) is a perfect power \(n = c^e\) with \(e > 1\).

    -galois.is_powersmooth(n: int, B: int) bool
    +galois.is_powersmooth(n: int, B: int) bool

    Determines if the integer \(n\) is \(B\)-powersmooth.

    -galois.is_prime(n: int) bool
    +galois.is_prime(n: int) bool

    Determines if \(n\) is prime.

    -galois.is_prime_power(n: int) bool
    +galois.is_prime_power(n: int) bool

    Determines if \(n\) is a prime power \(n = p^k\) for prime \(p\) and \(k \ge 1\).

    -galois.is_smooth(n: int, B: int) bool
    +galois.is_smooth(n: int, B: int) bool

    Determines if the integer \(n\) is \(B\)-smooth.

    -galois.is_square_free(value: int) bool
    +galois.is_square_free(value: int) bool
    -galois.is_square_free(value: Poly) bool
    +galois.is_square_free(value: Poly) bool

    Determines if an integer or polynomial is square-free.

    @@ -10834,13 +10834,13 @@

    Primality testsSpecific primality tests

    -galois.fermat_primality_test(n: int, ...) bool
    +galois.fermat_primality_test(n: int, ...) bool

    Determines if \(n\) is composite using Fermat’s primality test.

    -galois.miller_rabin_primality_test(n: int, a: int = 2, ...) bool
    +galois.miller_rabin_primality_test(n: int, a: int = 2, ...) bool

    Determines if \(n\) is composite using the Miller-Rabin primality test.

    @@ -10849,14 +10849,14 @@

    Specific primality testsConfiguration

    -galois.get_printoptions() dict[str, Any]
    +galois.get_printoptions() dict[str, Any]

    Returns the current print options for the package. This function is the galois equivalent of numpy.get_printoptions().

    -galois.printoptions(**kwargs) Generator[None, None, None]
    +galois.printoptions(**kwargs) Generator[None, None, None]

    A context manager to temporarily modify the print options for the package. This function is the galois equivalent of numpy.printoptions().

    diff --git a/v0.3.x/basic-usage/array-creation/index.html b/v0.3.x/basic-usage/array-creation/index.html index 474f2aa94..a8da968ef 100644 --- a/v0.3.x/basic-usage/array-creation/index.html +++ b/v0.3.x/basic-usage/array-creation/index.html @@ -8562,7 +8562,7 @@

    Default data typeOut[92]: [numpy.uint16, numpy.uint32, numpy.int16, numpy.int32, numpy.int64] In [93]: x = GF.Random(4); x -Out[93]: GF([388, 798, 281, 227], order=2^10) +Out[93]: GF([536, 819, 228, 718], order=2^10) In [94]: x.dtype Out[94]: dtype('uint16') @@ -8575,8 +8575,8 @@

    Default data typeIn [97]: x = GF.Random(4); x Out[97]: -GF([ 176813246175426449452924947295, 348787289171461162788321934676, - 277585428965834626454401710535, 1127025468332760795261411481668], +GF([ 372965718414832834661087250628, 806049130928469164386760725036, + 592920364234256142894324967077, 1113788269494169358344720339135], order=2^100) In [98]: x.dtype diff --git a/v0.3.x/basic-usage/element-representation/index.html b/v0.3.x/basic-usage/element-representation/index.html index d5d34410f..15a7af7c0 100644 --- a/v0.3.x/basic-usage/element-representation/index.html +++ b/v0.3.x/basic-usage/element-representation/index.html @@ -8001,21 +8001,21 @@

    NumPy print optionsIn [40]: x = GF.Random((5, 5)); x Out[40]: -GF([[ α^4 + α^3 + α^2 + α + 1, α^4 + α^3 + 2α + 1, - α^4 + 2α^3 + 2, α^4 + α^2 + 1, - 2α^4 + α^3 + 2α^2 + α + 1], - [ α^4 + α^3 + 2α^2, 2α^4 + 2α^3 + 2α^2 + 2α + 1, - 2α^4 + α^3 + α + 1, 2α^2 + α + 1, - 2α^4 + 2α^2 + 2], - [ α^4 + 2α^2 + α + 1, α^4 + 2α^3 + α^2, - 2α^4 + 2α^3 + 2α, α^4, - α^4 + 2α^2 + 2α + 1], - [ 2α^4 + α + 2, 2α^4 + 2α^3 + 2α^2 + α, - 2α^4 + α^3 + 2α^2 + 2α + 2, α^4 + α^3 + 2α + 1, - α^3 + α^2 + 2α + 2], - [ α^4 + α^3 + α^2 + α + 2, α^2 + 2, - α^3 + α^2 + 2α + 2, α^3 + 2α + 1, - 2α^3 + α + 2]], order=3^5) +GF([[ α^4 + α^3 + α^2 + 2α + 1, 2α^4 + 2α^2 + α, + α^4 + α^3 + 2α, α^4 + 2α^3 + α^2, + α^4 + α^3 + α^2 + α + 2], + [ 2α^3 + α + 2, 2α^3 + 2α^2, + 2α^3 + 2α, 2α^4 + α^3 + 2α^2 + α + 1, + 1], + [ α^4 + α^3 + α^2 + 2α, α^3 + α^2 + α + 2, + 2α^3 + 2α^2 + 2α + 2, 2α^4 + α^3 + 2α^2 + 2α + 2, + 2α^4 + 2α^3 + 2α^2 + 2α + 1], + [ 2α^4 + 2α + 2, 2α^3 + 2α^2 + 2α + 2, + 2α^4 + 2α^3 + α, α^3 + 2, + 2α^4 + α^3 + α^2 + α], + [ α^3 + 2α, 2α^3 + α^2 + 2α + 2, + 2α^3 + α^2 + α + 2, α^4 + 2α^3 + 2α^2 + α, + α]], order=3^5)

    The readability is improved by increasing the line width using numpy.set_printoptions().

    @@ -8023,11 +8023,11 @@

    NumPy print optionsIn [42]: x Out[42]: -GF([[ α^4 + α^3 + α^2 + α + 1, α^4 + α^3 + 2α + 1, α^4 + 2α^3 + 2, α^4 + α^2 + 1, 2α^4 + α^3 + 2α^2 + α + 1], - [ α^4 + α^3 + 2α^2, 2α^4 + 2α^3 + 2α^2 + 2α + 1, 2α^4 + α^3 + α + 1, 2α^2 + α + 1, 2α^4 + 2α^2 + 2], - [ α^4 + 2α^2 + α + 1, α^4 + 2α^3 + α^2, 2α^4 + 2α^3 + 2α, α^4, α^4 + 2α^2 + 2α + 1], - [ 2α^4 + α + 2, 2α^4 + 2α^3 + 2α^2 + α, 2α^4 + α^3 + 2α^2 + 2α + 2, α^4 + α^3 + 2α + 1, α^3 + α^2 + 2α + 2], - [ α^4 + α^3 + α^2 + α + 2, α^2 + 2, α^3 + α^2 + 2α + 2, α^3 + 2α + 1, 2α^3 + α + 2]], order=3^5) +GF([[ α^4 + α^3 + α^2 + 2α + 1, 2α^4 + 2α^2 + α, α^4 + α^3 + 2α, α^4 + 2α^3 + α^2, α^4 + α^3 + α^2 + α + 2], + [ 2α^3 + α + 2, 2α^3 + 2α^2, 2α^3 + 2α, 2α^4 + α^3 + 2α^2 + α + 1, 1], + [ α^4 + α^3 + α^2 + 2α, α^3 + α^2 + α + 2, 2α^3 + 2α^2 + 2α + 2, 2α^4 + α^3 + 2α^2 + 2α + 2, 2α^4 + 2α^3 + 2α^2 + 2α + 1], + [ 2α^4 + 2α + 2, 2α^3 + 2α^2 + 2α + 2, 2α^4 + 2α^3 + α, α^3 + 2, 2α^4 + α^3 + α^2 + α], + [ α^3 + 2α, 2α^3 + α^2 + 2α + 2, 2α^3 + α^2 + α + 2, α^4 + 2α^3 + 2α^2 + α, α]], order=3^5)

    Representation comparisons

    diff --git a/v0.3.x/basic-usage/poly/index.html b/v0.3.x/basic-usage/poly/index.html index f2a315172..c3bc9635c 100644 --- a/v0.3.x/basic-usage/poly/index.html +++ b/v0.3.x/basic-usage/poly/index.html @@ -7917,7 +7917,7 @@

    Alternate constructors

    Random polynomials of a given degree are easily created with Random().

    In [23]: galois.Poly.Random(4, field=GF)
    -Out[23]: Poly(89x^4 + 66x^3 + 125x^2 + 41x + 112, GF(3^5))
    +Out[23]: Poly(72x^4 + 192x^3 + 36x^2 + 12x + 94, GF(3^5))
     

    Methods

    diff --git a/v0.3.x/getting-started/index.html b/v0.3.x/getting-started/index.html index 83f9c3e5d..feb17e8a5 100644 --- a/v0.3.x/getting-started/index.html +++ b/v0.3.x/getting-started/index.html @@ -7799,7 +7799,7 @@

    Install the package
    In [1]: import galois
     
     In [2]: galois.__version__
    -Out[2]: '0.3.7.dev2+g54e385fc'
    +Out[2]: '0.3.7.dev5+g7f8df891'
     

    Create a FieldArray subclass

    diff --git a/v0.3.x/objects.inv b/v0.3.x/objects.inv index 15c0ddad0..87c9f409b 100644 Binary files a/v0.3.x/objects.inv and b/v0.3.x/objects.inv differ diff --git a/v0.3.x/searchindex.js b/v0.3.x/searchindex.js index 6c45bd374..f69edfe43 100644 --- a/v0.3.x/searchindex.js +++ b/v0.3.x/searchindex.js @@ -1 +1 @@ -Search.setIndex({"titles": ["Arrays", "galois.Array", "galois.Array.Identity", "galois.Array.Ones", "galois.Array.Random", "galois.Array.Range", "galois.Array.Zeros", "galois.Array.characteristic", "galois.Array.compile", "galois.Array.default_ufunc_mode", "galois.Array.degree", "galois.Array.dtypes", "galois.Array.element_repr", "galois.Array.elements", "galois.Array.irreducible_poly", "galois.Array.name", "galois.Array.order", "galois.Array.primitive_element", "galois.Array.repr", "galois.Array.ufunc_mode", "galois.Array.ufunc_modes", "galois.Array.units", "galois.BCH", "galois.BCH.G", "galois.BCH.H", "galois.BCH.__init__", "galois.BCH.__repr__", "galois.BCH.__str__", "galois.BCH.alpha", "galois.BCH.c", "galois.BCH.d", "galois.BCH.decode", "galois.BCH.detect", "galois.BCH.encode", "galois.BCH.extension_field", "galois.BCH.field", "galois.BCH.generator_poly", "galois.BCH.is_narrow_sense", "galois.BCH.is_primitive", "galois.BCH.is_systematic", "galois.BCH.k", "galois.BCH.n", "galois.BCH.parity_check_poly", "galois.BCH.roots", "galois.BCH.t", "galois.FLFSR", "galois.FLFSR.Taps", "galois.FLFSR.__init__", "galois.FLFSR.__repr__", "galois.FLFSR.__str__", "galois.FLFSR.characteristic_poly", "galois.FLFSR.feedback_poly", "galois.FLFSR.field", "galois.FLFSR.initial_state", "galois.FLFSR.order", "galois.FLFSR.reset", "galois.FLFSR.state", "galois.FLFSR.step", "galois.FLFSR.taps", "galois.FLFSR.to_galois_lfsr", "galois.Field", "galois.FieldArray", "galois.FieldArray.Identity", "galois.FieldArray.Ones", "galois.FieldArray.Random", "galois.FieldArray.Range", "galois.FieldArray.Vandermonde", "galois.FieldArray.Vector", "galois.FieldArray.Zeros", "galois.FieldArray.__init__", "galois.FieldArray.__repr__", "galois.FieldArray.__str__", "galois.FieldArray.additive_order", "galois.FieldArray.arithmetic_table", "galois.FieldArray.characteristic", "galois.FieldArray.characteristic_poly", "galois.FieldArray.column_space", "galois.FieldArray.compile", "galois.FieldArray.default_ufunc_mode", "galois.FieldArray.degree", "galois.FieldArray.dtypes", "galois.FieldArray.element_repr", "galois.FieldArray.elements", "galois.FieldArray.field_norm", "galois.FieldArray.field_trace", "galois.FieldArray.irreducible_poly", "galois.FieldArray.is_extension_field", "galois.FieldArray.is_prime_field", "galois.FieldArray.is_primitive_poly", "galois.FieldArray.is_square", "galois.FieldArray.left_null_space", "galois.FieldArray.log", "galois.FieldArray.lu_decompose", "galois.FieldArray.minimal_poly", "galois.FieldArray.multiplicative_order", "galois.FieldArray.name", "galois.FieldArray.non_squares", "galois.FieldArray.null_space", "galois.FieldArray.order", "galois.FieldArray.plu_decompose", "galois.FieldArray.prime_subfield", "galois.FieldArray.primitive_element", "galois.FieldArray.primitive_elements", "galois.FieldArray.primitive_root_of_unity", "galois.FieldArray.primitive_roots_of_unity", "galois.FieldArray.properties", "galois.FieldArray.repr", "galois.FieldArray.repr_table", "galois.FieldArray.row_reduce", "galois.FieldArray.row_space", "galois.FieldArray.squares", "galois.FieldArray.ufunc_mode", "galois.FieldArray.ufunc_modes", "galois.FieldArray.units", "galois.FieldArray.vector", "galois.GF", "galois.GF2", "galois.GLFSR", "galois.GLFSR.Taps", "galois.GLFSR.__init__", "galois.GLFSR.__repr__", "galois.GLFSR.__str__", "galois.GLFSR.characteristic_poly", "galois.GLFSR.feedback_poly", "galois.GLFSR.field", "galois.GLFSR.initial_state", "galois.GLFSR.order", "galois.GLFSR.reset", "galois.GLFSR.state", "galois.GLFSR.step", "galois.GLFSR.taps", "galois.GLFSR.to_fibonacci_lfsr", "galois.Poly", "galois.Poly.Degrees", "galois.Poly.Identity", "galois.Poly.Int", "galois.Poly.One", "galois.Poly.Random", "galois.Poly.Roots", "galois.Poly.Str", "galois.Poly.Zero", "galois.Poly.__call__", "galois.Poly.__eq__", "galois.Poly.__init__", "galois.Poly.__int__", "galois.Poly.__len__", "galois.Poly.__repr__", "galois.Poly.__str__", "galois.Poly.coefficients", "galois.Poly.coeffs", "galois.Poly.degree", "galois.Poly.degrees", "galois.Poly.derivative", "galois.Poly.distinct_degree_factors", "galois.Poly.equal_degree_factors", "galois.Poly.factors", "galois.Poly.field", "galois.Poly.is_conway", "galois.Poly.is_conway_consistent", "galois.Poly.is_irreducible", "galois.Poly.is_monic", "galois.Poly.is_primitive", "galois.Poly.is_square_free", "galois.Poly.nonzero_coeffs", "galois.Poly.nonzero_degrees", "galois.Poly.reverse", "galois.Poly.roots", "galois.Poly.square_free_factors", "galois.ReedSolomon", "galois.ReedSolomon.G", "galois.ReedSolomon.H", "galois.ReedSolomon.__init__", "galois.ReedSolomon.__repr__", "galois.ReedSolomon.__str__", "galois.ReedSolomon.alpha", "galois.ReedSolomon.c", "galois.ReedSolomon.d", "galois.ReedSolomon.decode", "galois.ReedSolomon.detect", "galois.ReedSolomon.encode", "galois.ReedSolomon.field", "galois.ReedSolomon.generator_poly", "galois.ReedSolomon.is_narrow_sense", "galois.ReedSolomon.is_primitive", "galois.ReedSolomon.is_systematic", "galois.ReedSolomon.k", "galois.ReedSolomon.n", "galois.ReedSolomon.parity_check_poly", "galois.ReedSolomon.roots", "galois.ReedSolomon.t", "galois.are_coprime", "galois.berlekamp_massey", "galois.carmichael_lambda", "galois.conway_poly", "galois.crt", "galois.divisor_sigma", "galois.divisors", "galois.egcd", "galois.euler_phi", "galois.factors", "galois.fermat_primality_test", "galois.gcd", "galois.get_printoptions", "galois.ilog", "galois.intt", "galois.iroot", "galois.irreducible_poly", "galois.irreducible_polys", "galois.is_composite", "galois.is_cyclic", "galois.is_perfect_power", "galois.is_powersmooth", "galois.is_prime", "galois.is_prime_power", "galois.is_primitive_element", "galois.is_primitive_root", "galois.is_smooth", "galois.is_square_free", "galois.isqrt", "galois.jacobi_symbol", "galois.kronecker_symbol", "galois.kth_prime", "galois.lagrange_poly", "galois.lcm", "galois.legendre_symbol", "galois.matlab_primitive_poly", "galois.mersenne_exponents", "galois.mersenne_primes", "galois.miller_rabin_primality_test", "galois.next_prime", "galois.ntt", "galois.perfect_power", "galois.pollard_p1", "galois.pollard_rho", "galois.prev_prime", "galois.primes", "galois.primitive_element", "galois.primitive_elements", "galois.primitive_poly", "galois.primitive_polys", "galois.primitive_root", "galois.primitive_roots", "galois.printoptions", "galois.prod", "galois.random_prime", "galois.set_printoptions", "galois.totatives", "galois.trial_division", "galois.typing.ArrayLike", "galois.typing.DTypeLike", "galois.typing.ElementLike", "galois.typing.IterableLike", "galois.typing.PolyLike", "galois.typing.ShapeLike", "Array Arithmetic", "Array Classes", "Array Creation", "Compilation Modes", "Element Representation", "Polynomials", "Polynomial Arithmetic", "Documentation", "Installation", "Linter", "Unit Tests", "Index", "Getting Started", "Features", "Benchmarks", "Binary Extension Fields", "Prime Fields", "v0.0", "v0.1", "v0.2", "v0.3", "Versioning", "Intro to Extension Fields", "Intro to Prime Fields"], "terms": {"class": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 34, 35, 45, 52, 61, 70, 71, 74, 78, 79, 80, 81, 82, 85, 86, 87, 88, 95, 96, 98, 100, 101, 102, 105, 110, 111, 112, 113, 115, 116, 117, 124, 132, 156, 168, 180, 258, 259, 266, 271, 273, 274, 276, 277], "numpi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 22, 31, 32, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 77, 78, 80, 89, 91, 94, 111, 112, 114, 115, 116, 132, 137, 166, 168, 177, 178, 202, 204, 230, 242, 245, 248, 249, 253, 254, 257, 266, 267, 269, 270, 271, 272, 273, 274], "ndarrai": [0, 1, 22, 31, 32, 61, 72, 89, 91, 94, 116, 132, 133, 138, 151, 164, 166, 168, 177, 178, 204, 230, 248, 252, 255, 256, 266, 267, 269, 270, 271], "an": [0, 1, 2, 3, 4, 6, 22, 31, 55, 57, 59, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 76, 80, 86, 89, 90, 91, 92, 93, 94, 96, 97, 104, 107, 108, 109, 110, 113, 114, 115, 116, 127, 129, 131, 132, 133, 138, 143, 148, 151, 152, 164, 166, 168, 177, 190, 195, 196, 200, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 219, 220, 222, 223, 224, 226, 228, 229, 231, 232, 233, 234, 235, 236, 237, 239, 241, 243, 251, 252, 253, 255, 257, 258, 260, 262, 263, 266, 267, 271, 272, 274, 276, 277], "abstract": [0, 255, 271], "subclass": [0, 1, 2, 3, 4, 5, 6, 18, 45, 52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 78, 106, 107, 111, 112, 114, 115, 116, 117, 124, 132, 133, 138, 143, 156, 254, 256, 257, 258, 267, 271, 276, 277], "over": [0, 1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 67, 69, 75, 76, 83, 84, 85, 90, 93, 97, 101, 102, 108, 109, 114, 115, 116, 117, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 213, 214, 217, 223, 225, 230, 236, 237, 238, 239, 241, 243, 254, 255, 256, 258, 259, 260, 267, 271, 273, 276], "ring": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 255, 267, 276, 277], "type": [0, 2, 3, 4, 5, 6, 22, 25, 34, 35, 45, 52, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 100, 104, 114, 115, 116, 117, 124, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 156, 168, 171, 180, 191, 206, 248, 249, 250, 251, 252, 253, 255, 257, 271, 272, 273, 274], "arraylik": [0, 22, 31, 32, 33, 45, 46, 47, 55, 61, 67, 69, 91, 116, 117, 118, 119, 127, 132, 133, 138, 141, 143, 168, 177, 178, 179, 204, 230, 248, 252, 256, 266, 271], "A": [0, 1, 2, 3, 4, 5, 6, 17, 18, 22, 25, 26, 27, 28, 31, 32, 45, 46, 47, 48, 49, 61, 62, 63, 64, 65, 66, 68, 69, 73, 75, 76, 89, 90, 91, 92, 97, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 113, 115, 116, 117, 118, 119, 120, 121, 132, 137, 141, 146, 153, 154, 157, 158, 159, 160, 161, 162, 167, 168, 171, 172, 173, 174, 177, 178, 190, 191, 192, 193, 198, 199, 202, 203, 204, 205, 209, 215, 217, 218, 224, 226, 230, 232, 233, 236, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 267, 269, 270, 271, 272, 274], "union": [0, 248, 249, 250, 251, 252, 253, 272], "repres": [0, 2, 3, 4, 5, 6, 8, 36, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 108, 114, 115, 141, 152, 159, 166, 181, 193, 209, 240, 248, 249, 250, 251, 252, 253, 258, 266, 271, 276, 277], "object": [0, 115, 142, 191, 207, 239, 241, 248, 249, 250, 251, 252, 253, 259, 260, 266, 271, 276], "can": [0, 4, 18, 31, 36, 44, 64, 73, 81, 103, 104, 106, 112, 115, 137, 139, 159, 166, 181, 189, 204, 209, 210, 215, 230, 231, 232, 240, 241, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 260, 262, 266, 267, 270, 271, 275, 276, 277], "coerc": [0, 248, 249, 250, 251, 252, 253], "dtypelik": [0, 2, 3, 4, 5, 6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 114, 116, 249], "data": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 157, 158, 193, 249, 257, 264, 271], "elementlik": [0, 1, 4, 5, 25, 61, 64, 65, 66, 69, 91, 107, 116, 132, 141, 171, 250, 251, 256, 271], "iterablelik": [0, 248, 251, 252], "iter": [0, 57, 129, 200, 207, 228, 239, 241, 248, 251, 253, 271], "shapelik": [0, 1, 3, 4, 6, 61, 63, 64, 68, 116, 253], "shape": [0, 1, 2, 3, 4, 6, 22, 23, 24, 61, 62, 63, 64, 67, 68, 76, 90, 91, 97, 109, 114, 116, 141, 168, 169, 170, 253, 255, 256, 260, 268], "tupl": [0, 3, 4, 6, 22, 31, 61, 63, 64, 68, 92, 99, 116, 132, 153, 155, 166, 167, 168, 177, 197, 199, 207, 231, 239, 241, 247, 253], "fieldarrai": [0, 1, 18, 22, 23, 24, 25, 28, 31, 33, 34, 35, 43, 45, 46, 52, 53, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 124, 125, 128, 129, 130, 168, 169, 170, 171, 174, 177, 179, 180, 188, 191, 204, 214, 230, 236, 237, 254, 256, 257, 258, 259, 267, 271, 272, 273, 274, 276, 277], "mathrm": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 61, 66, 67, 69, 72, 74, 75, 76, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 94, 96, 97, 98, 100, 101, 102, 103, 104, 107, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 243, 254, 255, 256, 257, 258, 260, 266, 267, 269, 270, 271, 274, 276, 277], "gf": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "p": [0, 1, 7, 10, 16, 33, 45, 61, 67, 69, 70, 71, 72, 73, 74, 75, 79, 82, 83, 84, 85, 89, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 149, 150, 151, 152, 157, 158, 159, 160, 163, 164, 166, 179, 191, 193, 197, 198, 199, 200, 204, 209, 213, 221, 224, 225, 226, 227, 228, 229, 230, 232, 233, 234, 235, 240, 244, 254, 255, 256, 258, 260, 267, 270, 271, 274, 276], "m": [0, 1, 7, 10, 16, 22, 25, 28, 31, 32, 33, 34, 36, 38, 43, 45, 61, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 157, 158, 159, 161, 166, 167, 168, 171, 177, 178, 179, 191, 192, 193, 194, 199, 204, 206, 207, 214, 222, 225, 230, 233, 236, 237, 238, 239, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 274, 276, 277], "gf2": [0, 116, 133, 134, 135, 136, 137, 138, 139, 140, 143], "2": [0, 2, 8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 262, 264, 266, 267, 268, 269, 270, 271, 276, 277], "order": [0, 1, 4, 8, 16, 22, 23, 24, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 141, 143, 144, 145, 146, 147, 148, 149, 151, 154, 155, 157, 158, 159, 163, 164, 166, 168, 169, 170, 174, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 191, 193, 199, 204, 206, 207, 209, 214, 215, 222, 230, 236, 237, 238, 239, 240, 241, 245, 248, 250, 251, 252, 253, 254, 255, 257, 258, 260, 266, 269, 270, 271, 272, 273, 274, 276, 277], "int": [0, 1, 2, 4, 5, 7, 8, 10, 12, 16, 18, 22, 25, 29, 30, 31, 40, 41, 44, 45, 54, 57, 60, 61, 62, 64, 65, 66, 69, 72, 74, 77, 79, 80, 81, 91, 94, 98, 103, 104, 106, 107, 108, 115, 116, 117, 126, 129, 132, 133, 135, 137, 138, 144, 145, 148, 150, 152, 153, 154, 155, 167, 168, 171, 175, 176, 177, 185, 186, 189, 190, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 256, 258, 259, 266, 269, 270, 271, 273], "characterist": [0, 1, 7, 34, 35, 45, 47, 50, 51, 60, 61, 69, 72, 74, 75, 88, 89, 93, 96, 105, 107, 110, 115, 116, 117, 119, 122, 123, 152, 180, 191, 193, 225, 236, 237, 254, 255, 256, 260, 266, 271, 274, 276, 277], "degre": [0, 1, 10, 31, 33, 34, 35, 36, 45, 54, 60, 61, 67, 69, 75, 79, 85, 88, 105, 107, 114, 115, 116, 117, 126, 132, 133, 137, 138, 139, 143, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 177, 179, 180, 181, 191, 193, 195, 199, 206, 207, 214, 222, 225, 236, 237, 238, 239, 242, 245, 250, 252, 255, 256, 258, 260, 266, 271, 274, 276, 277], "alia": [0, 60, 248, 249, 250, 251, 252, 253, 271], "creat": [0, 1, 2, 3, 4, 5, 6, 22, 45, 55, 59, 61, 62, 63, 64, 65, 66, 68, 69, 80, 107, 115, 116, 117, 127, 131, 132, 141, 143, 168, 222, 248, 250, 252, 254, 255, 257, 258, 260, 267, 271, 273, 276, 277], "primitive_el": [0, 1, 17, 34, 35, 60, 61, 66, 69, 88, 91, 94, 101, 102, 103, 104, 105, 107, 115, 116, 180, 209, 214, 236, 237, 254, 255, 256, 258, 266, 271, 274, 276, 277], "irreducible_poli": [0, 1, 14, 34, 35, 47, 60, 61, 69, 85, 88, 105, 107, 115, 116, 119, 155, 159, 162, 180, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 239, 255, 256, 259, 266, 269, 271, 274, 276, 277], "poli": [0, 1, 12, 14, 18, 22, 23, 24, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 85, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 175, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 256, 258, 259, 260, 264, 266, 267, 271, 273, 274, 276], "find": [0, 31, 61, 103, 104, 116, 166, 177, 191, 192, 196, 197, 198, 199, 201, 204, 206, 207, 209, 222, 230, 232, 233, 235, 236, 237, 238, 239, 240, 241, 246, 247, 259, 271, 273, 274, 276, 277], "g": [0, 22, 23, 25, 28, 29, 31, 33, 36, 39, 43, 132, 141, 157, 158, 159, 168, 169, 171, 174, 175, 177, 179, 181, 184, 188, 193, 206, 209, 214, 215, 236, 237, 238, 240, 241, 259, 268, 271, 273, 276, 277], "q": [0, 22, 25, 28, 31, 33, 34, 35, 36, 38, 43, 61, 66, 76, 90, 97, 109, 116, 132, 159, 161, 162, 168, 171, 174, 177, 179, 180, 181, 183, 188, 206, 207, 214, 219, 224, 232, 236, 237, 238, 239, 254, 271, 273], "f": [0, 45, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 69, 85, 101, 102, 103, 104, 116, 117, 119, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 152, 153, 154, 155, 157, 158, 159, 161, 162, 165, 166, 167, 193, 199, 203, 205, 206, 207, 209, 214, 217, 218, 219, 224, 225, 232, 233, 236, 237, 238, 239, 240, 241, 242, 245, 259, 271, 274, 276], "x": [0, 22, 23, 24, 25, 27, 28, 29, 31, 33, 34, 35, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 69, 70, 71, 72, 73, 75, 76, 81, 83, 84, 85, 88, 89, 90, 91, 93, 94, 96, 97, 101, 102, 105, 106, 107, 109, 110, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 179, 180, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 198, 199, 201, 203, 204, 205, 206, 207, 214, 217, 218, 219, 222, 223, 224, 225, 230, 233, 236, 237, 238, 239, 243, 246, 248, 249, 250, 251, 253, 255, 256, 257, 258, 259, 266, 267, 271, 272, 273, 274, 275, 276, 277], "list": [0, 1, 11, 20, 61, 80, 112, 116, 132, 138, 153, 154, 155, 167, 196, 199, 200, 204, 207, 209, 215, 226, 227, 230, 235, 237, 239, 241, 242, 246, 247, 253, 256, 257, 259, 263, 271, 277], "_poli": [0, 132, 153, 154, 155, 167, 197, 199, 237], "all": [0, 1, 3, 6, 13, 18, 20, 21, 46, 47, 61, 63, 65, 68, 76, 80, 82, 91, 96, 102, 103, 104, 106, 109, 110, 112, 113, 116, 118, 119, 132, 133, 138, 153, 157, 158, 161, 167, 193, 196, 199, 200, 204, 207, 213, 219, 220, 225, 226, 227, 228, 230, 235, 237, 239, 241, 247, 254, 255, 256, 257, 258, 259, 264, 266, 267, 271, 276, 277], "is_primitive_el": [0, 214, 236, 237], "polylik": [0, 60, 115, 132, 142, 214, 252, 271], "bool": [0, 22, 25, 32, 37, 38, 39, 60, 61, 69, 86, 87, 88, 89, 115, 116, 132, 141, 142, 157, 158, 159, 160, 161, 162, 168, 171, 178, 182, 183, 184, 190, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 228, 239, 241, 273], "determin": [0, 61, 89, 116, 132, 142, 158, 159, 161, 162, 190, 191, 200, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 224, 228, 244, 271], "i": [0, 1, 2, 3, 4, 5, 6, 8, 18, 22, 25, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 50, 51, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 150, 152, 153, 154, 155, 160, 165, 166, 167, 168, 171, 175, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 198, 199, 200, 201, 202, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 250, 252, 254, 255, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 273, 274, 275, 276, 277], "univari": [0, 132, 259, 267], "The": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 19, 22, 23, 24, 25, 29, 30, 31, 32, 33, 34, 35, 36, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 81, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 175, 176, 177, 178, 179, 180, 181, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 200, 201, 203, 204, 205, 206, 207, 209, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "section": [0, 89, 153, 154, 155, 159, 167, 194, 197, 198, 199, 200, 228, 232, 233, 246, 254, 260, 269, 270, 271, 276, 277], "contain": [0, 268, 271], "mani": [0, 31, 177, 212, 250, 254, 257, 260, 263, 277], "function": [0, 8, 18, 70, 71, 77, 106, 153, 154, 155, 159, 167, 191, 192, 194, 195, 196, 197, 198, 199, 201, 202, 204, 206, 209, 212, 213, 218, 225, 230, 233, 235, 237, 240, 242, 244, 245, 254, 255, 257, 259, 263, 267, 271], "oper": [0, 31, 33, 61, 73, 108, 116, 135, 139, 144, 147, 177, 179, 254, 256, 257, 259, 260, 266, 267, 268, 270, 271, 277], "return": [0, 2, 3, 4, 5, 6, 18, 22, 31, 32, 33, 46, 57, 59, 62, 63, 64, 65, 66, 67, 68, 72, 73, 75, 76, 83, 84, 89, 90, 91, 92, 93, 94, 97, 99, 103, 104, 106, 107, 108, 109, 114, 115, 116, 118, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 255, 256, 260, 271, 273, 274, 276, 277], "monic": [0, 132, 138, 153, 154, 155, 157, 160, 167, 193, 199, 206, 207, 238, 239, 271], "through": [0, 207, 239, 241, 254, 271], "conway_poli": [0, 115, 157, 158, 159, 161, 193, 206, 225, 238, 259, 274, 276], "conwai": [0, 115, 132, 157, 158, 159, 161, 193, 238, 259, 267, 274, 276], "c_": [0, 31, 33, 45, 46, 47, 50, 51, 58, 115, 117, 118, 119, 122, 123, 130, 132, 157, 158, 177, 179, 191, 193, 276], "matlab_primitive_poli": [0, 25, 161, 171, 225, 238, 271], "matlab": [0, 225, 271], "": [0, 22, 31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 72, 82, 94, 95, 98, 113, 116, 117, 118, 119, 125, 127, 128, 132, 141, 144, 146, 147, 152, 157, 158, 159, 166, 168, 177, 178, 179, 193, 197, 199, 200, 209, 212, 225, 228, 232, 233, 254, 255, 256, 257, 258, 260, 263, 264, 266, 267, 271, 272, 274, 276, 277], "default": [0, 1, 2, 3, 4, 5, 6, 9, 18, 25, 31, 33, 46, 47, 55, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 78, 81, 88, 91, 106, 107, 108, 111, 114, 115, 116, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 152, 157, 158, 166, 171, 177, 179, 191, 193, 195, 200, 204, 206, 207, 225, 226, 227, 228, 230, 232, 233, 238, 239, 240, 241, 242, 244, 245, 247, 249, 255, 257, 258, 259, 266, 268, 269, 270, 271, 276, 277], "primitive_poli": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 161, 193, 206, 207, 225, 238, 239, 259, 271, 274], "lagrange_poli": [0, 222, 271, 272], "y": [0, 45, 73, 83, 84, 89, 96, 110, 117, 191, 192, 222, 257, 266, 267, 271, 272, 276, 277], "comput": [0, 8, 18, 31, 33, 61, 72, 75, 76, 77, 83, 84, 90, 91, 93, 94, 97, 106, 109, 115, 116, 132, 152, 155, 157, 158, 159, 177, 179, 193, 196, 197, 198, 199, 200, 201, 203, 204, 205, 218, 219, 220, 222, 223, 224, 226, 230, 233, 243, 254, 257, 258, 259, 260, 267, 268, 269, 270, 271, 274, 276, 277], "lagrang": [0, 222, 271], "l": [0, 61, 83, 84, 92, 99, 116, 222, 240, 241], "x_i": [0, 222, 233], "y_i": [0, 222], "bch": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 267, 271, 273, 274], "textrm": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 61, 75, 76, 90, 94, 97, 107, 109, 116, 153, 159, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 192, 194, 200, 203, 204, 224, 228, 230, 233, 240, 241, 257, 270, 271, 276, 277], "n": [0, 1, 2, 22, 23, 24, 25, 27, 28, 30, 31, 32, 33, 36, 38, 40, 41, 45, 46, 47, 50, 51, 53, 55, 56, 57, 58, 61, 62, 66, 75, 76, 83, 90, 93, 97, 103, 104, 109, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 132, 157, 158, 165, 168, 169, 170, 171, 173, 174, 176, 177, 178, 179, 181, 183, 185, 186, 191, 192, 193, 195, 196, 198, 199, 200, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 240, 241, 246, 247, 254, 257, 258, 267, 270, 271, 273, 274], "k": [0, 22, 23, 24, 25, 27, 30, 31, 32, 33, 40, 41, 61, 69, 83, 84, 103, 104, 116, 132, 138, 152, 155, 159, 161, 162, 166, 168, 169, 170, 171, 173, 176, 177, 178, 179, 185, 186, 195, 198, 199, 204, 205, 209, 211, 213, 217, 221, 222, 230, 232, 240, 241, 273, 274, 277], "code": [0, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 153, 154, 155, 167, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 197, 199, 225, 262, 266, 267, 271, 273, 274], "reedsolomon": [0, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 267, 271, 273], "r": [0, 31, 76, 90, 104, 109, 132, 154, 157, 158, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 193, 228, 254, 261, 263, 266, 267, 268, 271], "flfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "fibonacci": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "feedback": [0, 45, 47, 50, 51, 117, 119, 122, 123, 191, 267, 271], "shift": [0, 45, 46, 58, 117, 118, 130, 191, 267], "regist": [0, 45, 46, 58, 117, 118, 130, 191, 267], "lfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 191, 271], "glfsr": [0, 45, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 191, 267, 271], "berlekamp_massei": [0, 45, 117, 191, 271], "output": [0, 31, 33, 45, 57, 59, 64, 67, 114, 117, 129, 131, 177, 179, 191, 204, 230, 261, 270, 271, 273], "minim": [0, 45, 54, 61, 93, 116, 117, 126, 191, 222, 271], "c": [0, 22, 25, 28, 29, 31, 32, 33, 36, 37, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 76, 97, 109, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 153, 167, 168, 171, 174, 175, 177, 178, 179, 181, 182, 188, 191, 204, 210, 230, 231, 233, 268, 271], "produc": [0, 45, 54, 57, 59, 64, 117, 126, 129, 131, 137, 191, 206, 207, 238, 239, 256, 269, 276, 277], "recurr": [0, 45, 50, 54, 58, 117, 122, 126, 130, 191], "intt": [0, 204, 230, 271], "invers": [0, 67, 113, 114, 135, 139, 144, 147, 204, 271], "theoret": [0, 204, 230, 267, 271], "ntt": [0, 204, 230, 254, 267, 271], "size": [0, 1, 2, 22, 25, 40, 41, 57, 61, 62, 80, 94, 98, 116, 129, 132, 148, 168, 171, 185, 186, 191, 204, 222, 230, 253, 254, 256, 257, 258, 270, 271, 273, 276, 277], "none": [0, 1, 2, 3, 4, 5, 6, 18, 22, 25, 45, 46, 47, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 91, 106, 107, 108, 114, 115, 116, 117, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 168, 171, 200, 204, 206, 207, 226, 227, 230, 232, 238, 239, 240, 241, 242, 244, 247, 255, 271], "are_coprim": [0, 190, 271], "valu": [0, 1, 11, 18, 31, 61, 72, 73, 80, 89, 94, 106, 115, 116, 133, 141, 144, 148, 177, 190, 191, 199, 204, 217, 219, 220, 222, 223, 224, 230, 240, 241, 243, 254, 256, 257, 258, 260, 271], "argument": [0, 69, 91, 103, 104, 115, 190, 197, 201, 223, 230, 243, 256, 257, 258, 259, 263, 266, 268, 271, 272, 273, 274], "ar": [0, 1, 11, 22, 25, 28, 31, 32, 37, 43, 45, 57, 59, 61, 65, 67, 76, 78, 80, 89, 90, 91, 94, 96, 97, 103, 104, 108, 109, 110, 111, 114, 115, 116, 117, 131, 132, 133, 135, 138, 139, 141, 142, 143, 144, 147, 149, 151, 153, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 168, 171, 174, 177, 178, 182, 188, 190, 191, 192, 193, 198, 199, 200, 204, 206, 209, 210, 215, 216, 217, 219, 224, 225, 227, 228, 230, 231, 238, 240, 241, 242, 245, 246, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "pairwis": [0, 190], "coprim": [0, 190, 192, 198, 209, 215, 219, 240, 241, 246, 277], "egcd": [0, 197, 201, 223, 243, 271, 276, 277], "b": [0, 142, 153, 154, 156, 167, 197, 201, 203, 211, 216, 232, 244, 247, 261, 267, 269, 270, 271, 272, 274, 276, 277], "multiplicand": [0, 197], "t": [0, 22, 31, 44, 45, 46, 58, 76, 90, 97, 99, 109, 117, 118, 130, 133, 138, 143, 168, 177, 189, 191, 197, 206, 207, 225, 228, 238, 239, 260, 263, 269, 270, 271, 276, 277], "gcd": [0, 159, 197, 201, 210, 223, 228, 231, 233, 243, 271, 276, 277], "euler_phi": [0, 192, 198, 209, 215, 237, 240, 241, 246, 271], "count": [0, 198, 209, 240], "posit": [0, 79, 108, 115, 192, 195, 196, 198, 199, 203, 205, 209, 215, 240, 241, 246, 247, 274], "tot": [0, 192, 198, 209, 215, 240, 241, 246], "1": [0, 1, 5, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 273, 275, 276, 277], "greatest": [0, 197, 201, 271], "common": [0, 193, 197, 200, 201, 223, 228, 259, 271, 276], "divisor": [0, 103, 104, 159, 195, 196, 197, 201, 247, 271], "lcm": [0, 22, 190, 197, 201, 223, 243], "least": [0, 148, 191, 203, 204, 209, 223, 230, 240, 241, 258, 271], "multipl": [0, 33, 36, 61, 73, 94, 101, 102, 108, 113, 115, 116, 132, 137, 138, 139, 141, 152, 155, 157, 158, 162, 166, 167, 179, 181, 192, 193, 199, 209, 215, 217, 223, 240, 241, 246, 250, 255, 256, 257, 266, 269, 270, 271, 274], "prod": [0, 190, 197, 201, 223, 243], "product": [0, 61, 83, 92, 99, 116, 132, 153, 154, 155, 167, 190, 199, 210, 231, 243, 267, 269, 270], "carmichael_lambda": [0, 192, 198, 209, 240, 241, 246, 271], "smallest": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 72, 94, 101, 114, 192, 204, 209, 230, 236, 240, 241, 254, 256, 260, 271], "equiv": [0, 192, 194, 200, 224, 228, 233, 276, 277], "mod": [0, 31, 177, 192, 194, 200, 224, 228, 233, 270, 271, 276], "everi": [0, 36, 72, 89, 92, 110, 181, 192, 209, 240, 256, 257, 276, 277], "crt": [0, 194, 271], "remaind": [0, 31, 177, 194, 269, 271, 276], "moduli": [0, 194, 204, 230, 271], "solv": [0, 194, 272, 277], "simultan": [0, 194], "system": [0, 194, 249, 263, 264, 268], "jacobi_symbol": [0, 219, 220, 224, 271], "jacobi": [0, 219, 220, 277], "symbol": [0, 22, 25, 31, 32, 33, 44, 45, 57, 117, 129, 157, 158, 168, 171, 177, 178, 179, 189, 191, 193, 219, 220, 224], "frac": [0, 44, 132, 152, 157, 158, 165, 189, 193, 198, 204, 205, 219, 220, 222, 224, 228], "kronecker_symbol": [0, 219, 220, 224, 271], "kroneck": [0, 220], "extend": [0, 197, 219, 220, 254, 267, 271, 276, 277], "legendre_symbol": [0, 219, 220, 224, 271], "legendr": [0, 219, 224], "is_cycl": [0, 192, 198, 209, 215, 240, 241, 246], "whether": [0, 31, 33, 61, 88, 115, 116, 132, 141, 157, 158, 159, 160, 161, 162, 177, 179, 209, 213, 256, 270], "group": [0, 64, 94, 115, 192, 209, 215, 240, 241, 246, 255, 271, 276, 277], "mathbb": [0, 192, 204, 209, 215, 230, 240, 241, 246, 266, 267, 270, 277], "z": [0, 191, 192, 209, 215, 240, 241, 246, 254, 257, 270, 277], "time": [0, 1, 2, 8, 57, 61, 62, 66, 75, 76, 77, 90, 93, 94, 97, 109, 116, 129, 192, 209, 215, 240, 241, 246, 255, 257, 258, 267, 268, 269, 270, 271, 274, 276, 277], "cyclic": [0, 22, 168, 192, 209, 215, 240, 241, 271, 276, 277], "primitive_root": [0, 115, 204, 209, 215, 230, 240, 241, 271, 277], "start": [0, 1, 5, 22, 37, 61, 65, 116, 168, 182, 209, 240, 241, 256, 261, 268, 271], "modulo": [0, 115, 209, 215, 219, 224, 233, 240, 241, 260, 269, 270, 271, 276, 277], "rang": [0, 1, 5, 25, 61, 65, 116, 192, 194, 200, 209, 219, 224, 228, 240, 241, 256, 268, 271, 273], "stop": [0, 1, 5, 61, 65, 116, 209, 240, 241, 256, 271], "is_primitive_root": [0, 215, 240, 241], "ilog": [0, 203, 205, 218], "lfloor": [0, 44, 189, 203, 205, 218], "log": [0, 8, 61, 77, 91, 115, 116, 203, 204, 230, 257, 266, 271], "_b": [0, 203], "rfloor": [0, 44, 189, 203, 205, 218], "le": [0, 25, 103, 104, 159, 166, 171, 200, 203, 205, 206, 209, 211, 215, 216, 218, 222, 225, 226, 227, 228, 232, 234, 235, 244, 247, 277], "iroot": [0, 203, 205, 218], "isqrt": [0, 203, 205, 218], "sqrt": [0, 110, 218, 247, 266, 271], "non": [0, 4, 23, 24, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 42, 43, 61, 64, 88, 94, 96, 107, 108, 116, 132, 133, 137, 150, 155, 160, 163, 164, 167, 169, 170, 171, 172, 173, 174, 177, 181, 183, 184, 187, 188, 199, 205, 206, 207, 209, 218, 219, 224, 232, 233, 238, 239, 240, 244, 249, 254, 257, 259, 260, 271, 273, 274], "constant": [0, 75, 132, 155, 167, 199, 233, 267], "divisor_sigma": [0, 195, 196, 271], "sum": [0, 76, 84, 90, 97, 109, 195, 254, 260], "th": [0, 22, 25, 28, 61, 103, 104, 116, 132, 152, 165, 168, 171, 174, 195, 204, 205, 213, 221, 230, 254, 271], "power": [0, 1, 12, 18, 22, 25, 28, 29, 37, 43, 60, 61, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 86, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 116, 141, 159, 166, 168, 171, 174, 175, 182, 188, 192, 195, 199, 206, 207, 209, 210, 213, 215, 216, 227, 230, 231, 232, 233, 238, 239, 240, 241, 248, 250, 251, 255, 256, 257, 259, 266, 271, 272, 273, 274, 276, 277], "d": [0, 1, 2, 5, 22, 25, 27, 28, 29, 30, 31, 32, 33, 37, 40, 41, 43, 44, 45, 61, 62, 65, 75, 93, 103, 104, 116, 117, 132, 137, 138, 143, 144, 152, 153, 154, 155, 159, 165, 166, 167, 168, 171, 173, 174, 175, 176, 177, 178, 179, 182, 185, 186, 188, 189, 191, 195, 196, 199, 222, 225, 232, 250, 253, 256, 258, 260, 261, 262, 266, 273, 276, 277], "perfect_pow": [0, 199, 210, 231, 271], "base": [0, 1, 61, 91, 107, 115, 116, 200, 203, 228, 231, 254, 255, 263, 266, 271], "expon": [0, 107, 152, 199, 210, 226, 227, 231, 247, 260], "e": [0, 1, 7, 10, 16, 30, 31, 90, 97, 141, 143, 153, 177, 178, 204, 209, 210, 226, 230, 231, 240, 255, 262, 268, 271, 273, 276, 277], "If": [0, 18, 25, 31, 33, 57, 75, 88, 91, 93, 94, 103, 104, 106, 115, 129, 133, 138, 141, 143, 153, 154, 155, 157, 158, 159, 167, 171, 177, 179, 193, 199, 200, 204, 206, 207, 209, 212, 215, 228, 230, 231, 232, 233, 235, 238, 239, 240, 241, 247, 252, 267, 268, 270, 276, 277], "perfect": [0, 199, 210, 217, 231, 271], "pollard_p1": [0, 232, 233, 271], "b2": [0, 232], "attempt": [0, 200, 228, 232, 233], "trivial": [0, 199, 232, 233], "ha": [0, 8, 22, 31, 36, 43, 67, 75, 76, 77, 89, 90, 92, 93, 97, 109, 115, 141, 143, 148, 153, 154, 155, 158, 159, 162, 167, 168, 177, 204, 217, 225, 228, 232, 237, 255, 257, 270, 271, 276, 277], "smooth": [0, 211, 216, 232, 271], "pollard_rho": [0, 199, 232, 233, 271], "us": [0, 4, 8, 18, 25, 31, 32, 33, 61, 64, 73, 77, 78, 80, 88, 91, 99, 106, 107, 111, 112, 115, 116, 133, 137, 138, 139, 141, 143, 144, 146, 147, 166, 171, 177, 178, 179, 191, 199, 200, 204, 206, 207, 224, 225, 228, 230, 232, 233, 239, 241, 242, 244, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277], "cycl": [0, 233], "detect": [0, 22, 31, 32, 168, 178, 200, 228, 233, 271], "trial_divis": [0, 199, 247, 271], "p_i": [0, 159, 198, 211, 217, 232, 247, 271], "e_i": [0, 162, 198, 211, 217, 247, 271], "kth_prime": [0, 221, 229, 234, 235], "where": [0, 8, 25, 31, 32, 33, 77, 103, 104, 115, 152, 153, 157, 158, 159, 166, 171, 177, 178, 179, 193, 196, 204, 209, 210, 215, 221, 228, 230, 231, 232, 233, 237, 240, 241, 247, 257, 258, 271, 272, 277], "3": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "4": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 139, 141, 142, 144, 145, 147, 148, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 206, 207, 209, 210, 211, 214, 216, 217, 219, 221, 222, 223, 224, 225, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 266, 268, 269, 270, 271, 272, 273, 276, 277], "dot": [0, 22, 25, 28, 29, 31, 33, 37, 43, 45, 46, 47, 50, 51, 53, 55, 56, 58, 61, 73, 82, 101, 102, 113, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 138, 143, 144, 152, 153, 154, 155, 165, 166, 168, 171, 174, 175, 177, 179, 182, 188, 191, 198, 199, 209, 211, 215, 216, 221, 232, 233, 238, 239, 240, 241, 247, 258, 270, 271, 276, 277], "5": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 214, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 228, 230, 231, 232, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "7": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 114, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "mersenne_expon": [0, 226, 227], "known": [0, 115, 216, 226, 227, 252], "mersenn": [0, 226, 227, 274], "mersenne_prim": [0, 226, 227], "next_prim": [0, 221, 229, 234, 235, 244, 271], "nearest": [0, 229, 234], "prev_prim": [0, 221, 229, 234, 235, 244, 271], "random_prim": [0, 244, 272], "bit": [0, 226, 227, 244], "seed": [0, 4, 64, 137, 244, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274], "random": [0, 1, 4, 22, 31, 32, 33, 61, 64, 75, 76, 90, 91, 93, 97, 109, 116, 132, 137, 152, 156, 159, 168, 177, 178, 179, 194, 200, 206, 222, 236, 238, 240, 243, 244, 249, 253, 254, 255, 258, 259, 264, 269, 270, 271, 272, 273, 274, 276, 277], "is_composit": [0, 208, 212, 271], "is_perfect_pow": [0, 208, 210, 212, 213, 217, 231, 271], "is_powersmooth": [0, 211, 216, 271], "powersmooth": [0, 211], "is_prim": [0, 199, 200, 208, 212, 213, 226, 227, 228, 244, 271], "is_prime_pow": [0, 210, 212, 213, 217, 231, 271], "ge": [0, 30, 31, 200, 211, 213, 216, 219, 224, 228, 234], "is_smooth": [0, 211, 216, 271], "is_square_fre": [0, 132, 162, 208, 210, 217, 271], "squar": [0, 61, 75, 89, 92, 93, 96, 110, 116, 132, 141, 153, 154, 155, 162, 167, 199, 217, 218, 256, 266, 271], "free": [0, 132, 153, 154, 155, 162, 167, 199, 217], "fermat_primality_test": [0, 200, 212, 228, 271], "fermat": [0, 200, 212, 271], "miller_rabin_primality_test": [0, 200, 212, 228, 271], "miller": [0, 212, 228], "rabin": [0, 159, 212, 228], "get_printopt": [0, 202, 242, 245, 271], "dict": [0, 202], "str": [0, 1, 15, 20, 22, 26, 27, 45, 48, 49, 61, 70, 71, 73, 95, 105, 107, 112, 116, 117, 120, 121, 132, 139, 146, 147, 168, 172, 173, 202, 206, 207, 209, 238, 239, 240, 248, 249, 250, 251, 252, 259, 271, 272, 274], "ani": [0, 73, 74, 107, 108, 139, 202, 209, 211, 228, 240, 250, 254, 258, 260, 262, 264, 266, 267, 271, 276, 277], "current": [0, 1, 12, 19, 45, 56, 61, 81, 111, 115, 116, 117, 128, 141, 202, 256, 258, 260, 262, 271], "print": [0, 25, 27, 34, 35, 45, 46, 49, 59, 61, 69, 71, 73, 88, 105, 106, 107, 115, 116, 117, 118, 121, 131, 147, 173, 180, 191, 192, 194, 202, 203, 205, 207, 209, 218, 219, 224, 236, 237, 239, 240, 241, 242, 245, 255, 256, 259, 266, 271, 272, 273, 274, 276, 277], "option": [0, 31, 73, 115, 166, 177, 202, 232, 242, 245, 262, 268, 271], "packag": [0, 103, 104, 202, 209, 232, 240, 242, 245, 262, 267, 271, 272, 276, 277], "thi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 18, 22, 25, 29, 36, 37, 40, 41, 43, 47, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 77, 78, 80, 81, 91, 99, 103, 104, 106, 111, 112, 114, 115, 116, 119, 129, 133, 137, 138, 141, 143, 148, 153, 154, 155, 166, 167, 168, 171, 185, 186, 191, 192, 194, 195, 197, 198, 199, 201, 202, 204, 206, 212, 213, 217, 218, 225, 230, 232, 233, 235, 238, 242, 244, 245, 249, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 276, 277], "equival": [0, 31, 33, 59, 91, 99, 107, 116, 131, 132, 135, 141, 145, 165, 177, 179, 191, 202, 209, 225, 240, 242, 245, 255, 258, 259, 260, 263, 270, 271, 276, 277], "printopt": [0, 202, 242, 245, 271], "kwarg": [0, 242, 271], "context": [0, 18, 106, 242, 252, 258, 271], "manag": [0, 18, 106, 242, 258, 271], "temporarili": [0, 106, 242, 256, 258], "modifi": [0, 55, 56, 81, 106, 115, 127, 128, 133, 138, 143, 242, 245, 256, 258, 259, 264, 271, 273, 274], "set_printopt": [0, 146, 147, 202, 242, 245, 258, 271], "coeff": [0, 46, 58, 75, 118, 130, 132, 133, 143, 145, 148, 149, 151, 202, 207, 239, 242, 245, 259, 271], "desc": [0, 143, 148, 202, 245], "asc": [0, 143, 148, 202, 242, 245, 259, 271], "galoi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276], "arrai": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 31, 32, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 75, 80, 83, 84, 89, 91, 92, 93, 94, 99, 103, 104, 106, 114, 116, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 145, 148, 149, 151, 156, 163, 164, 166, 177, 178, 204, 222, 230, 248, 250, 251, 252, 253, 257, 258, 259, 260, 267, 268, 270, 271, 272, 274, 276, 277], "field": [1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 49, 52, 57, 59, 60, 61, 65, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 94, 95, 96, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 113, 115, 116, 117, 118, 121, 124, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178, 179, 180, 183, 184, 185, 186, 187, 189, 191, 193, 194, 199, 204, 206, 207, 209, 214, 225, 230, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 254, 256, 257, 258, 259, 260, 264, 266, 267, 271, 273, 274], "cannot": [1, 8, 31, 61, 77, 78, 80, 111, 112, 115, 177, 232, 233, 247, 257, 269, 276, 277], "instanti": [1, 61, 255, 256, 273], "directli": [1, 61, 255], "classmethod": [1, 2, 3, 4, 5, 6, 8, 18, 45, 46, 61, 62, 63, 64, 65, 66, 67, 68, 73, 77, 103, 104, 106, 107, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 255, 258, 259, 266, 271, 273, 276, 277], "ident": [1, 2, 59, 61, 62, 89, 108, 110, 116, 131, 132, 134, 141, 204, 255, 259, 260, 271, 272, 277], "self": [1, 2, 3, 4, 5, 6, 45, 46, 61, 62, 63, 64, 65, 66, 68, 76, 83, 84, 90, 92, 97, 99, 103, 104, 108, 109, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 272], "matrix": [1, 2, 22, 23, 24, 31, 32, 33, 61, 62, 64, 66, 75, 76, 90, 92, 93, 97, 99, 108, 109, 116, 141, 168, 169, 170, 177, 178, 179, 255, 258, 269, 270, 271, 272, 274], "Ones": [1, 3, 61, 63, 116, 256], "ones": [1, 3, 46, 47, 61, 63, 116, 118, 119, 133, 138], "element": [1, 2, 3, 4, 5, 6, 8, 12, 13, 17, 18, 22, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 77, 78, 80, 81, 82, 83, 84, 88, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 111, 112, 113, 114, 115, 141, 143, 152, 166, 168, 206, 209, 214, 222, 236, 237, 238, 239, 240, 241, 248, 250, 251, 254, 255, 256, 257, 271, 273], "zero": [1, 6, 31, 61, 68, 94, 108, 116, 132, 133, 140, 148, 150, 163, 164, 177, 204, 206, 207, 230, 238, 239, 254, 256, 258, 259, 260, 271, 274, 276, 277], "compil": [1, 8, 9, 19, 20, 60, 77, 78, 111, 112, 115, 249, 267, 269, 270, 271, 272, 274], "mode": [1, 8, 9, 19, 20, 61, 77, 78, 111, 112, 115, 116, 269, 270, 271], "recompil": [1, 8, 61, 77, 78, 111, 112, 116], "just": [1, 8, 18, 61, 77, 106, 116, 255, 257, 258, 267], "ufunc": [1, 8, 61, 77, 78, 111, 112, 115, 116, 267, 269, 270, 271], "new": [1, 8, 55, 61, 77, 116, 127, 157, 158, 193, 200, 257, 258, 266, 267, 269, 271], "calcul": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 132, 141, 166, 209, 255, 258, 260, 267, 268, 271, 274, 276], "repr": [1, 18, 25, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 115, 116, 146, 236, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 274, 276, 277], "gener": [1, 4, 8, 18, 22, 23, 25, 28, 29, 31, 33, 36, 37, 42, 43, 61, 64, 73, 77, 94, 101, 102, 106, 107, 115, 116, 137, 155, 157, 158, 162, 168, 169, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 197, 199, 201, 207, 209, 215, 217, 223, 239, 240, 241, 242, 243, 244, 255, 261, 267, 269, 271, 276, 277], "set": [1, 18, 61, 90, 97, 106, 115, 116, 148, 190, 209, 219, 240, 241, 256, 257, 259, 263, 264, 266, 268, 271, 274, 276, 277], "represent": [1, 12, 18, 26, 48, 65, 69, 73, 81, 106, 107, 115, 120, 135, 139, 144, 146, 147, 172, 193, 248, 250, 252, 256, 271, 273, 276, 277], "from": [1, 4, 18, 22, 45, 46, 47, 61, 64, 67, 69, 73, 88, 89, 91, 106, 114, 116, 117, 118, 119, 132, 133, 135, 137, 138, 139, 143, 153, 154, 155, 159, 161, 166, 167, 168, 194, 197, 198, 199, 200, 201, 204, 207, 209, 218, 219, 220, 224, 228, 230, 232, 233, 239, 240, 241, 244, 246, 252, 255, 256, 258, 259, 260, 261, 266, 268, 271, 273, 274, 277], "gr": [1, 7, 10, 16, 255], "default_ufunc_mod": [1, 9, 61, 78, 116], "jit": [1, 8, 9, 19, 60, 61, 77, 78, 91, 111, 112, 115, 116, 257, 268, 269, 270, 271, 272], "lookup": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 258, 267, 268, 271], "python": [1, 8, 9, 19, 60, 61, 77, 78, 80, 103, 104, 111, 112, 115, 116, 204, 209, 218, 230, 232, 240, 249, 254, 256, 260, 261, 263, 266, 267, 268, 271, 273, 274, 277], "dtype": [1, 2, 3, 4, 5, 6, 11, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 116, 249, 256, 269, 270, 271], "valid": [1, 11, 31, 32, 61, 80, 116, 141, 177, 178, 258, 271], "integ": [1, 4, 11, 18, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 79, 80, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 132, 135, 137, 144, 152, 190, 192, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 223, 224, 228, 229, 230, 231, 232, 233, 234, 235, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259, 260, 266, 267, 269, 271, 274, 276, 277], "compat": [1, 11, 61, 80, 116, 157, 158, 193, 275], "element_repr": [1, 12, 18, 61, 81, 106, 116, 258, 273], "irreduc": [1, 14, 25, 61, 85, 88, 115, 116, 132, 153, 154, 155, 159, 161, 162, 167, 171, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 238, 255, 259, 267, 269, 271, 274], "polynomi": [1, 14, 18, 25, 28, 29, 31, 33, 36, 37, 42, 43, 47, 50, 51, 54, 61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 82, 83, 84, 85, 88, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 119, 122, 123, 126, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 266, 267, 269, 271, 274, 277], "name": [1, 15, 34, 35, 45, 61, 69, 88, 94, 95, 103, 104, 105, 107, 115, 116, 180, 224, 228, 236, 237, 255, 256, 263, 266, 268, 271, 274, 276, 277], "em": [1, 16], "primit": [1, 17, 22, 23, 24, 25, 26, 27, 28, 38, 39, 42, 45, 61, 69, 88, 91, 94, 101, 102, 103, 104, 107, 115, 116, 117, 132, 157, 158, 159, 161, 166, 168, 169, 170, 171, 172, 173, 174, 183, 184, 187, 193, 204, 209, 214, 215, 225, 230, 236, 237, 238, 239, 240, 241, 254, 255, 256, 257, 258, 259, 267, 271, 273], "ufunc_mod": [1, 8, 19, 20, 61, 77, 91, 111, 112, 116, 257, 268, 269, 270, 271], "support": [1, 20, 61, 112, 115, 116, 225, 254, 256, 257, 259, 260, 266, 267, 271, 272, 273, 274], "unit": [1, 21, 61, 94, 113, 116, 256, 262, 271, 274], "paramet": [2, 3, 4, 5, 6, 8, 18, 25, 31, 32, 33, 46, 47, 55, 57, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 91, 103, 104, 106, 107, 108, 114, 115, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 148, 152, 154, 157, 158, 166, 171, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247], "along": [2, 62, 191], "one": [2, 31, 32, 57, 62, 103, 104, 129, 132, 136, 137, 160, 162, 177, 178, 209, 217, 225, 226, 227, 232, 240, 254, 255, 257, 259, 260, 268, 277], "dimens": [2, 22, 40, 62, 67, 76, 90, 97, 109, 114, 168, 185, 253, 254, 258], "which": [2, 3, 4, 5, 6, 8, 25, 46, 47, 55, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 91, 94, 107, 108, 114, 115, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 148, 154, 166, 171, 195, 200, 201, 204, 209, 223, 225, 226, 227, 230, 232, 240, 241, 244, 245, 247, 256, 257, 269, 270, 271, 276, 277], "unsign": [2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 114, 256], "first": [2, 3, 4, 5, 6, 22, 25, 29, 31, 36, 37, 43, 57, 62, 63, 64, 65, 66, 67, 68, 69, 114, 143, 152, 157, 158, 168, 171, 175, 177, 181, 182, 188, 193, 197, 201, 204, 206, 207, 212, 225, 230, 232, 238, 239, 255, 256, 257, 258, 263, 264, 268, 270, 271, 272, 274, 276, 277], "compliant": [3, 4, 6, 63, 64, 68], "low": [4, 64, 91, 177, 178, 206, 256, 271], "0": [4, 22, 23, 24, 28, 29, 31, 32, 33, 36, 39, 42, 43, 45, 46, 47, 49, 50, 51, 53, 56, 57, 58, 59, 61, 62, 64, 67, 68, 69, 72, 73, 74, 75, 76, 81, 82, 83, 84, 89, 90, 92, 93, 94, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 114, 116, 117, 118, 119, 121, 122, 123, 125, 127, 128, 129, 130, 131, 132, 133, 138, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 160, 161, 163, 164, 165, 166, 167, 168, 169, 174, 175, 177, 178, 179, 181, 184, 188, 191, 193, 194, 195, 196, 204, 206, 207, 209, 213, 219, 220, 222, 224, 228, 230, 233, 238, 239, 240, 241, 242, 245, 250, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 266, 268, 275, 276, 277], "high": [4, 64, 212, 256], "scalar": [4, 31, 32, 64, 69, 72, 75, 89, 93, 94, 103, 108, 141, 152, 177, 178, 250, 253, 271, 272, 273], "inclus": [4, 5, 64, 65, 240, 241], "largest": [4, 64, 209, 236, 240, 241, 271], "exclus": [4, 5, 64, 65, 240, 241], "neg": [4, 57, 64, 129, 137, 205, 210, 218, 231, 244, 260, 271], "initi": [4, 45, 46, 47, 53, 55, 57, 59, 64, 117, 118, 119, 125, 127, 129, 131, 137, 244, 256, 257, 271], "prng": [4, 64, 137, 244], "mean": [4, 22, 25, 37, 38, 39, 64, 132, 137, 160, 168, 171, 182, 183, 184, 209, 240, 244, 268, 269, 270, 271, 272, 274, 276, 277], "unpredict": [4, 64, 137, 244], "entropi": [4, 64, 137, 244], "pull": [4, 64, 137, 244], "o": [4, 64, 137, 204, 230, 244, 249, 256, 271], "also": [4, 22, 40, 41, 57, 64, 71, 73, 94, 129, 137, 168, 185, 186, 199, 254, 255, 256, 259, 260, 264, 266, 267, 268, 270, 274, 276, 277], "pass": [4, 22, 31, 32, 33, 47, 64, 119, 137, 168, 177, 178, 179, 204, 230, 256, 258, 259, 261, 262, 266, 268, 274], "step": [5, 45, 53, 55, 56, 57, 59, 65, 117, 125, 127, 128, 129, 131, 155, 191, 199, 232, 255], "increment": [5, 65], "between": [5, 65, 139, 193, 254, 271, 274, 276, 277], "properti": [7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, 52, 53, 54, 56, 58, 69, 74, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 90, 94, 95, 96, 97, 98, 100, 101, 102, 105, 107, 109, 110, 111, 112, 113, 115, 121, 122, 123, 124, 125, 126, 128, 130, 148, 149, 150, 151, 156, 160, 163, 164, 169, 170, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 204, 236, 237, 258, 263, 266, 271, 273, 274, 276, 277], "auto": [8, 60, 77, 115], "updat": [8, 18, 77, 106, 261, 272], "select": [8, 77, 115, 200, 226, 257, 276, 277], "less": [8, 77, 78, 111, 115, 161, 214, 227, 228, 236, 237, 257, 258, 269, 270, 274, 276, 277], "than": [8, 30, 57, 77, 78, 89, 91, 96, 110, 111, 115, 129, 161, 162, 204, 210, 214, 217, 225, 227, 228, 230, 231, 236, 237, 247, 256, 257, 258, 260, 267, 269, 270, 271, 274, 276, 277], "20": [8, 25, 31, 32, 33, 45, 64, 65, 69, 75, 77, 78, 82, 91, 99, 101, 102, 104, 107, 109, 110, 111, 113, 115, 117, 155, 169, 170, 173, 177, 178, 179, 184, 187, 192, 198, 199, 209, 214, 235, 240, 246, 250, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 273, 276, 277], "larger": [8, 77, 115, 204, 225, 230, 247, 257], "whose": [8, 22, 28, 77, 78, 80, 111, 112, 115, 132, 153, 168, 174, 209, 214, 240, 271], "int64": [8, 77, 78, 80, 111, 112, 115, 249, 256, 257, 271, 273], "arithmet": [8, 22, 25, 34, 45, 51, 52, 73, 77, 78, 80, 111, 112, 115, 117, 123, 124, 132, 144, 204, 230, 255, 257, 267, 268, 269, 270, 271, 274], "zech": [8, 77, 115, 257], "anti": [8, 77, 115], "tabl": [8, 18, 61, 73, 77, 78, 91, 106, 107, 111, 112, 115, 116, 206, 225, 258, 267, 271, 276, 277], "effici": [8, 57, 77, 115, 129, 212, 233, 235, 240, 260, 267, 269, 270, 271, 277], "In": [8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "few": [8, 77, 115, 276, 277], "case": [8, 77, 115, 224, 232, 257, 264, 270], "explicit": [8, 18, 77, 78, 91, 106, 111, 112, 115, 250, 258, 267, 271, 276, 277], "faster": [8, 77, 115, 257, 267, 270, 271, 274], "design": [8, 25, 29, 30, 36, 37, 43, 77, 115, 171, 175, 182, 261, 267, 273], "larg": [8, 18, 77, 80, 106, 115, 212, 240, 256, 257, 258, 267, 271, 274], "should": [8, 25, 77, 94, 115, 171, 206, 212, 238], "store": [8, 77, 115, 256, 257, 261, 262, 264], "ram": [8, 77, 115], "slower": [8, 77, 115, 257, 269, 270], "pure": [8, 77, 78, 111, 112, 115, 257, 267], "reserv": [8, 77, 115], "instead": [8, 61, 77, 115, 204, 230, 250, 255, 256, 267, 269, 271, 272, 273], "object_": [8, 77, 80, 115, 256, 257, 271], "arbitrari": [8, 73, 77, 115, 241], "precis": [8, 77, 115], "To": [18, 22, 106, 168, 258, 262, 264, 268, 269, 271, 277], "displai": [18, 61, 70, 71, 73, 106, 116, 146, 147, 242, 245, 258, 268, 271, 272, 273, 276, 277], "must": [18, 25, 78, 80, 103, 104, 106, 111, 115, 139, 148, 171, 190, 203, 204, 211, 222, 223, 230, 232, 243, 252, 256, 258, 263, 268, 270, 276], "discret": [18, 61, 91, 106, 116, 204, 230, 254, 258, 271], "logarithm": [18, 61, 91, 106, 115, 116, 203, 257, 258, 266, 271], "each": [18, 31, 36, 61, 72, 89, 94, 106, 107, 115, 116, 154, 155, 166, 167, 177, 181, 190, 194, 199, 209, 223, 232, 237, 240, 241, 243, 254, 255, 258, 269, 270, 271, 272, 274], "For": [18, 31, 32, 33, 65, 75, 79, 80, 83, 84, 93, 100, 103, 104, 106, 114, 115, 139, 144, 152, 153, 165, 177, 178, 179, 191, 192, 198, 204, 206, 209, 218, 228, 230, 232, 255, 256, 257, 258, 263, 269, 270, 271, 272, 273, 276, 277], "process": [18, 106, 258], "take": [18, 106, 115, 257, 258, 277], "while": [18, 106, 115, 206, 207, 238, 239, 255, 258, 259, 268], "howev": [18, 103, 104, 106, 142, 175, 182, 192, 200, 204, 214, 219, 225, 228, 230, 238, 255, 256, 257, 258, 269, 270, 271, 276, 277], "when": [18, 22, 75, 93, 103, 104, 106, 115, 192, 233, 254, 256, 258, 260, 263, 266, 267, 269, 270, 271, 272, 274, 276, 277], "fast": [18, 106, 258, 270], "other": [18, 83, 84, 106, 107, 132, 142, 200, 204, 206, 207, 225, 228, 230, 238, 239, 255, 258, 259, 267, 271, 274, 275], "statement": [18, 106, 242, 263, 271], "perman": [18, 81, 106, 258], "disregard": [18, 106, 206, 207, 238, 239], "note": [18, 30, 33, 36, 42, 44, 45, 47, 50, 51, 67, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89, 90, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 117, 119, 122, 123, 135, 138, 139, 144, 147, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 177, 179, 181, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 211, 212, 213, 214, 215, 216, 217, 219, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 237, 238, 239, 240, 241, 244, 246, 260, 263, 276, 277], "_q": [22, 30, 31, 40, 41, 168, 176, 185, 186], "linear": [22, 45, 50, 52, 54, 58, 76, 109, 117, 122, 124, 126, 130, 168, 191, 267, 271], "block": [22, 168, 242, 271], "codeword": [22, 25, 31, 32, 33, 35, 36, 39, 41, 44, 168, 171, 177, 178, 179, 180, 181, 184, 186, 189, 273], "messag": [22, 25, 31, 32, 33, 39, 40, 168, 171, 177, 178, 179, 184, 185, 273], "minimum": [22, 30, 31, 168, 176, 206, 207, 225, 238, 239, 271, 274], "distanc": [22, 25, 29, 30, 31, 36, 37, 43, 168, 171, 175, 176, 182, 273], "taken": [22, 168, 204, 230], "alphabet": [22, 25, 35, 168, 171, 180], "construct": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 73, 115, 117, 118, 119, 132, 133, 134, 135, 136, 137, 138, 139, 140, 155, 159, 168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 199, 236, 237, 257, 271], "full": [22, 168, 242], "encod": [22, 25, 31, 32, 33, 168, 171, 177, 178, 179, 271, 273], "decod": [22, 31, 168, 177, 271, 273, 274], "onli": [22, 29, 31, 32, 33, 36, 37, 43, 80, 89, 108, 112, 141, 157, 159, 166, 168, 177, 178, 179, 193, 196, 207, 209, 210, 214, 215, 231, 239, 240, 241, 242, 247, 255, 256, 257, 264, 269, 270, 271, 274, 276, 277], "applic": [22, 31, 32, 33, 45, 117, 168, 177, 178, 179, 191, 206, 207, 238, 239, 271], "systemat": [22, 23, 25, 31, 32, 33, 39, 168, 169, 171, 177, 178, 179, 184, 271], "root": [22, 25, 28, 29, 31, 36, 37, 43, 61, 89, 101, 102, 103, 104, 110, 115, 116, 132, 138, 159, 166, 168, 171, 174, 175, 177, 181, 182, 188, 204, 205, 209, 215, 218, 230, 240, 241, 259, 266, 271], "alpha": [22, 25, 28, 29, 31, 36, 37, 43, 61, 69, 91, 101, 102, 103, 104, 116, 166, 168, 171, 174, 175, 177, 181, 182, 188, 238, 239, 254, 256, 257, 258, 266, 277], "evalu": [22, 31, 36, 43, 75, 93, 132, 138, 141, 177, 181, 188, 222, 271, 274], "uniti": [22, 25, 28, 61, 103, 104, 116, 168, 171, 174, 204, 230, 254], "m_": [22, 31, 33, 177, 179], "exampl": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 255, 256, 258, 259, 266, 269, 270, 271, 272, 273, 276, 277], "binari": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 115, 135, 206, 254, 259, 271, 274], "15": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 57, 61, 64, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 97, 101, 102, 103, 104, 107, 110, 113, 115, 117, 129, 132, 155, 166, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 199, 204, 208, 209, 212, 229, 230, 231, 232, 234, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 270, 273, 276, 277], "out": [22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "corrupt": [22, 31, 168, 177], "6": [22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 78, 81, 82, 83, 84, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 118, 121, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 213, 214, 217, 219, 222, 223, 224, 225, 228, 230, 231, 232, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 273, 276, 277], "dec_m": [22, 168], "np": [22, 31, 64, 69, 75, 91, 92, 99, 103, 104, 108, 110, 137, 141, 168, 177, 191, 204, 222, 230, 237, 248, 249, 255, 256, 258, 260, 266, 269, 270, 271, 273, 274, 276, 277], "array_equ": [22, 31, 91, 92, 99, 110, 168, 177, 191, 222, 254, 271], "true": [22, 25, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 50, 51, 60, 61, 69, 75, 76, 86, 87, 88, 89, 90, 91, 92, 97, 99, 105, 107, 109, 110, 115, 116, 122, 123, 135, 141, 142, 144, 153, 154, 157, 158, 159, 160, 161, 162, 166, 167, 168, 171, 173, 174, 175, 177, 178, 180, 182, 183, 184, 190, 191, 192, 193, 194, 197, 198, 200, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 222, 226, 227, 228, 230, 231, 236, 237, 238, 239, 240, 241, 244, 246, 254, 255, 256, 258, 260, 266, 270, 271, 274, 276, 277], "instruct": [22, 168, 263, 264], "number": [22, 25, 31, 32, 33, 57, 66, 76, 90, 97, 108, 109, 129, 152, 168, 171, 177, 178, 179, 198, 200, 204, 206, 207, 209, 215, 216, 228, 230, 237, 238, 239, 240, 241, 244, 246, 264, 267, 271, 274, 276, 277], "correct": [22, 31, 44, 168, 177, 189, 197, 267, 269, 276, 277], "error": [22, 31, 32, 44, 168, 177, 178, 189, 197, 225, 263, 267, 271, 274], "8": [22, 23, 25, 27, 28, 31, 32, 33, 36, 37, 39, 43, 45, 55, 57, 61, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 148, 152, 153, 154, 155, 156, 157, 158, 161, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 204, 206, 207, 209, 210, 213, 218, 219, 222, 230, 231, 232, 236, 237, 238, 239, 240, 241, 243, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "9": [22, 23, 25, 27, 28, 31, 32, 33, 37, 39, 45, 55, 57, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 82, 83, 84, 89, 91, 93, 94, 96, 99, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 153, 154, 157, 158, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 206, 209, 210, 219, 228, 230, 231, 232, 236, 238, 240, 241, 243, 246, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "__repr__": [22, 26, 45, 48, 61, 70, 116, 117, 120, 132, 146, 168, 172], "ters": [22, 26, 45, 48, 117, 120, 168, 172], "__str__": [22, 27, 45, 49, 61, 71, 116, 117, 121, 132, 139, 147, 168, 173, 271, 272], "format": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 192, 209, 240, 263, 268, 274], "relev": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 271], "_field": [22, 31, 73, 103, 104, 168, 177], "_arrai": [22, 31, 73, 103, 104, 132, 166, 168, 177], "mathbf": [22, 23, 24, 31, 32, 33, 36, 61, 75, 76, 90, 92, 97, 99, 108, 109, 116, 168, 169, 170, 177, 178, 179, 181], "present": [22, 32, 168, 178, 271], "extension_field": [22, 25, 27, 34, 36, 38, 43], "defin": [22, 25, 29, 34, 35, 45, 50, 51, 52, 54, 58, 76, 83, 84, 90, 92, 94, 97, 99, 109, 115, 117, 122, 123, 124, 126, 130, 152, 157, 168, 171, 175, 180, 193, 194, 195, 204, 214, 222, 230, 233, 236, 237, 255, 257, 276, 277], "syndrom": [22, 25, 31, 34, 177], "call": [22, 40, 41, 57, 81, 94, 103, 104, 106, 115, 129, 168, 185, 186, 209, 218, 228, 232, 240, 255, 256, 257, 266, 271, 274, 277], "length": [22, 31, 32, 33, 41, 61, 67, 114, 116, 132, 145, 148, 168, 177, 178, 179, 186, 204, 230, 256, 263, 271], "capabl": [22, 44, 168, 189, 276, 277], "is_narrow_sens": [22, 27, 37, 168, 173, 182], "indic": [22, 25, 31, 32, 37, 38, 39, 61, 86, 87, 88, 89, 115, 116, 139, 141, 157, 158, 159, 161, 162, 168, 171, 177, 178, 182, 183, 184, 204, 207, 239, 241, 254, 256, 260, 271, 274], "narrow": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "sens": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "consecut": [22, 25, 28, 29, 36, 37, 43, 168, 171, 174, 175, 181, 182, 188, 228], "is_primit": [22, 27, 38, 132, 157, 158, 161, 168, 173, 183, 193, 225, 238, 239, 271, 274], "is_systemat": [22, 27, 39, 168, 173, 184, 271], "have": [22, 39, 61, 86, 87, 89, 116, 132, 142, 153, 164, 168, 184, 207, 212, 219, 222, 228, 239, 241, 256, 257, 258, 259, 266, 271, 274, 276, 277], "pariti": [22, 24, 25, 33, 39, 42, 168, 170, 171, 179, 184, 187], "append": [22, 25, 39, 70, 71, 168, 171, 184], "h": [22, 24, 42, 157, 159, 168, 170, 187, 193], "check": [22, 24, 42, 132, 157, 168, 170, 187, 212, 225, 256], "generator_poli": [22, 23, 27, 36, 37, 39, 43, 168, 169, 173, 175, 181, 182, 184, 188], "parity_check_poli": [22, 24, 42, 168, 170, 187], "13": [23, 24, 25, 26, 27, 28, 31, 32, 33, 38, 39, 42, 45, 57, 61, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 97, 101, 102, 107, 108, 110, 113, 115, 117, 129, 135, 139, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 195, 197, 198, 204, 208, 209, 210, 212, 226, 229, 230, 231, 232, 234, 235, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 271, 272, 273, 274, 276, 277], "fals": [23, 27, 31, 32, 37, 38, 39, 75, 86, 87, 88, 89, 115, 132, 141, 142, 157, 158, 159, 160, 161, 162, 166, 169, 173, 177, 178, 182, 183, 184, 190, 192, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 228, 231, 236, 237, 239, 240, 241, 255, 256, 263, 268, 271, 273], "2x": [23, 24, 27, 34, 39, 42, 61, 69, 75, 93, 107, 115, 152, 154, 155, 157, 158, 161, 162, 167, 170, 180, 187, 193, 194, 197, 199, 206, 207, 214, 217, 223, 237, 238, 239, 248, 250, 251, 252, 255, 256, 258, 259, 260, 266, 271, 276], "either": [25, 31, 32, 33, 108, 112, 139, 148, 171, 177, 178, 179, 228, 245, 257, 258, 266, 267], "provid": [25, 94, 115, 171, 193, 255, 256, 269, 271, 276, 277], "both": [25, 59, 131, 171, 254, 271], "mai": [25, 30, 47, 73, 78, 111, 112, 115, 119, 139, 171, 200, 204, 206, 207, 225, 228, 230, 232, 239, 241, 247, 255, 256, 257, 259, 260, 271, 274, 277], "long": [25, 171, 244], "thei": [25, 103, 104, 115, 133, 138, 142, 143, 157, 158, 171, 193, 200, 210, 231, 255, 256, 257, 259, 260, 268, 269, 275, 276, 277], "consist": [25, 132, 139, 157, 158, 171, 193, 238, 271, 272], "correspond": [25, 31, 32, 33, 46, 47, 55, 107, 115, 118, 119, 127, 133, 134, 135, 136, 137, 138, 139, 140, 148, 152, 153, 155, 167, 171, 177, 178, 179, 195, 199, 204, 230, 240, 241, 247], "extens": [25, 31, 61, 65, 79, 82, 83, 84, 86, 100, 101, 102, 113, 115, 116, 193, 206, 207, 214, 232, 236, 237, 238, 239, 254, 256, 258, 267, 268, 271, 274, 277], "primitive_root_of_un": [25, 61, 103, 116, 171, 254, 271], "26": [25, 26, 27, 30, 31, 32, 34, 35, 40, 41, 44, 64, 69, 75, 82, 91, 97, 101, 102, 107, 110, 113, 117, 170, 173, 176, 177, 178, 180, 185, 186, 187, 189, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "17": [25, 31, 32, 33, 45, 65, 69, 73, 75, 76, 82, 90, 91, 92, 101, 102, 107, 108, 109, 110, 113, 115, 117, 169, 173, 177, 178, 179, 184, 198, 204, 209, 226, 228, 229, 230, 231, 232, 235, 240, 241, 246, 247, 248, 250, 251, 254, 255, 256, 258, 259, 260, 266, 268, 272, 273, 274, 276, 277], "10": [25, 31, 32, 33, 37, 45, 53, 55, 56, 57, 59, 61, 64, 65, 69, 72, 73, 75, 82, 89, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 157, 158, 166, 167, 168, 169, 170, 173, 177, 178, 179, 182, 184, 187, 191, 192, 193, 194, 197, 199, 200, 204, 206, 209, 210, 212, 216, 217, 225, 228, 230, 231, 232, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "11": [25, 27, 31, 32, 33, 45, 55, 57, 61, 65, 67, 69, 72, 73, 75, 82, 89, 91, 92, 93, 94, 96, 101, 102, 103, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 181, 182, 184, 187, 188, 190, 191, 192, 194, 197, 198, 200, 204, 209, 210, 230, 231, 232, 235, 236, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "discov": [25, 199, 225, 232, 247, 271, 274, 277], "loop": [25, 207, 239, 241, 269, 270, 271, 272, 274], "12": [25, 27, 31, 32, 33, 45, 55, 57, 61, 65, 67, 69, 72, 73, 75, 82, 89, 90, 91, 92, 93, 94, 97, 101, 102, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 169, 170, 173, 175, 177, 178, 179, 181, 182, 184, 187, 188, 192, 194, 196, 197, 198, 201, 204, 209, 210, 216, 225, 228, 231, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 270, 271, 272, 274, 276, 277], "14": [25, 26, 27, 30, 31, 32, 33, 34, 35, 40, 41, 44, 45, 57, 61, 65, 69, 73, 75, 82, 89, 91, 93, 94, 97, 99, 101, 102, 104, 107, 108, 110, 113, 115, 117, 129, 135, 152, 159, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 204, 209, 223, 225, 230, 231, 238, 240, 243, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 276, 277], "24": [25, 31, 32, 45, 64, 69, 75, 76, 82, 90, 91, 99, 101, 102, 107, 110, 113, 115, 117, 155, 169, 173, 177, 178, 184, 196, 199, 209, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 268, 273, 274, 276, 277], "22": [25, 31, 32, 45, 64, 69, 75, 76, 82, 90, 91, 92, 101, 102, 107, 109, 110, 113, 115, 117, 169, 170, 173, 177, 178, 184, 187, 209, 228, 241, 250, 253, 254, 255, 256, 258, 259, 260, 262, 268, 276, 277], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 76, 82, 91, 101, 102, 104, 107, 109, 110, 113, 115, 117, 155, 166, 169, 173, 176, 177, 178, 179, 180, 184, 185, 186, 189, 192, 199, 209, 217, 231, 240, 250, 251, 254, 255, 256, 258, 259, 260, 266, 268, 273, 274, 276, 277], "16": [25, 31, 32, 33, 34, 45, 64, 65, 67, 69, 73, 75, 76, 78, 82, 91, 92, 101, 102, 103, 104, 107, 108, 109, 110, 111, 113, 114, 115, 117, 135, 169, 170, 173, 177, 178, 179, 180, 184, 187, 192, 197, 201, 209, 225, 228, 231, 237, 240, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 272, 273, 276, 277], "string": [27, 49, 73, 95, 105, 107, 121, 135, 139, 147, 173, 248, 249, 250, 251, 252, 256, 259, 263, 271, 276], "multiplicative_ord": [28, 61, 94, 107, 116, 174, 214, 236, 237, 255, 271, 273, 276, 277], "notic": [29, 36, 37, 43, 57, 59, 107, 115, 129, 131, 141, 175, 182, 204, 219, 230, 238, 276, 277], "greater": [30, 78, 89, 96, 110, 111, 162, 210, 217, 231, 257, 269, 270, 271, 276], "d_": [30, 31, 32, 178], "min": [30, 31, 32, 76, 109, 178, 206, 207, 209, 225, 236, 238, 239, 240, 263, 268, 271, 274], "vector": [31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 67, 76, 90, 97, 107, 109, 114, 116, 117, 118, 119, 125, 127, 128, 141, 177, 178, 179, 256, 267, 271, 276, 277], "specifi": [31, 33, 45, 55, 61, 64, 70, 71, 73, 91, 115, 116, 117, 127, 132, 133, 139, 147, 148, 177, 179, 204, 230, 240, 241, 254, 255, 256, 259, 273, 274, 276], "entir": [31, 177, 269, 276], "too": [31, 80, 177, 244, 263], "member": [31, 33, 177, 179], "m_1": [31, 33, 138, 166, 177, 179, 194], "m_0": [31, 33, 177, 179], "divis": [31, 73, 177, 199, 217, 247, 266, 269, 271], "c_1": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "c_0": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "receiv": [31, 177], "locat": [31, 108, 177, 261, 264], "sigma": [31, 177], "It": [31, 71, 159, 195, 204, 222, 230, 233, 254, 255, 256, 257, 258, 260, 263, 264, 267, 268, 271, 276, 277], "up": [31, 115, 199, 226, 227, 235, 247, 257, 267, 271, 274], "singl": [31, 32, 33, 64, 72, 75, 89, 91, 93, 94, 139, 177, 178, 179, 254, 256, 263, 271], "recov": [31, 177, 232, 255], "19": [31, 32, 33, 45, 65, 69, 75, 82, 90, 91, 92, 93, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 179, 184, 198, 199, 209, 226, 235, 240, 241, 246, 250, 252, 253, 254, 255, 256, 258, 259, 260, 266, 268, 272, 276, 277], "three": [31, 32, 33, 177, 178, 179, 223, 225, 241, 243, 257, 276], "21": [31, 32, 45, 64, 69, 75, 82, 90, 91, 92, 101, 102, 107, 110, 113, 115, 117, 169, 171, 172, 173, 174, 177, 178, 183, 184, 209, 240, 241, 250, 254, 255, 256, 258, 259, 260, 266, 268, 270, 274, 276, 277], "23": [31, 32, 45, 69, 75, 82, 91, 101, 102, 107, 110, 113, 117, 155, 173, 177, 178, 199, 209, 250, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "add": [31, 108, 177, 250, 260, 271, 275, 276], "second": [31, 177, 197, 201, 232, 266, 268], "two": [31, 32, 89, 108, 110, 132, 142, 157, 177, 178, 193, 197, 201, 230, 254, 255, 257, 258, 260, 264, 269, 270, 271, 276, 277], "third": [31, 177, 264], "25": [31, 32, 45, 69, 75, 76, 82, 91, 92, 97, 101, 102, 107, 108, 109, 110, 113, 115, 117, 155, 169, 170, 173, 177, 178, 184, 187, 199, 254, 255, 256, 258, 259, 260, 268, 272, 274, 276, 277], "27": [31, 32, 34, 64, 69, 75, 82, 90, 91, 92, 97, 101, 102, 107, 108, 110, 113, 115, 173, 177, 178, 180, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "28": [31, 32, 64, 75, 76, 82, 85, 91, 97, 99, 101, 102, 104, 109, 110, 113, 115, 155, 173, 177, 178, 199, 223, 254, 255, 256, 258, 259, 260, 268, 276, 277], "29": [31, 32, 64, 75, 76, 82, 91, 92, 99, 101, 102, 108, 110, 113, 155, 173, 177, 178, 199, 228, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "30": [31, 32, 64, 75, 76, 82, 91, 92, 97, 101, 102, 103, 104, 109, 110, 113, 115, 155, 173, 177, 178, 199, 241, 254, 255, 256, 258, 259, 260, 268, 274, 276, 277], "31": [31, 32, 62, 63, 64, 65, 68, 74, 76, 79, 80, 82, 85, 86, 87, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104, 108, 109, 113, 115, 155, 173, 177, 178, 199, 209, 218, 226, 227, 241, 253, 254, 255, 256, 258, 259, 260, 268, 270, 272, 274, 276, 277], "32": [31, 32, 78, 91, 111, 112, 155, 173, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 269, 270, 274, 276, 277], "33": [31, 32, 91, 141, 155, 171, 172, 173, 174, 177, 178, 183, 199, 254, 255, 256, 258, 259, 260, 268, 269, 276, 277], "34": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 266, 268, 271, 276, 277], "35": [31, 32, 75, 91, 115, 177, 178, 210, 231, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "36": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "37": [31, 32, 91, 115, 141, 145, 155, 177, 178, 199, 232, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "38": [31, 32, 91, 155, 157, 158, 177, 178, 193, 199, 228, 254, 256, 258, 259, 260, 266, 268, 276, 277], "39": [31, 91, 155, 177, 178, 194, 199, 254, 256, 258, 259, 260, 268, 271, 276, 277], "40": [31, 91, 155, 177, 178, 199, 254, 256, 258, 259, 260, 266, 268, 271, 276, 277], "41": [31, 91, 115, 155, 177, 199, 232, 253, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "42": [31, 91, 177, 254, 256, 258, 259, 260, 268, 276, 277], "boolean": [32, 89, 178], "were": [32, 178, 267, 271, 274], "is_primitive_poli": [34, 35, 61, 69, 88, 105, 107, 115, 116, 180, 236, 237, 255, 256, 266, 271, 274, 276, 277], "its": [36, 43, 45, 46, 47, 55, 57, 69, 76, 80, 90, 97, 106, 109, 115, 117, 118, 119, 127, 132, 133, 135, 138, 139, 155, 160, 162, 181, 188, 199, 209, 214, 217, 226, 240, 250, 252, 254, 255, 257, 258, 259, 260, 267, 270, 276, 277], "dual": [42, 187], "These": [43, 188, 204, 230, 257, 259, 262, 267, 269, 274], "specif": [43, 138, 188, 232, 255, 262, 264, 266, 268], "bigg": [44, 189, 198, 224], "reciproc": [45, 47, 50, 51, 117, 119, 122, 123, 271, 276, 277], "sequenc": [45, 50, 54, 57, 59, 117, 122, 126, 129, 131, 132, 133, 138, 191, 194, 204, 230, 233, 248, 251, 252, 253], "y_t": [45, 117, 191], "y_": [45, 117, 191], "configur": [45, 91, 117, 267], "c_n": [45, 117], "tap": [45, 46, 49, 58, 59, 117, 118, 121, 130, 131, 191], "left": [45, 61, 90, 108, 109, 116, 117], "right": [45, 108, 117, 272], "t_0": [45, 117], "t_1": [45, 117], "t_": [45, 117], "s_0": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_1": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "addition": [45, 259], "equal": [45, 98, 132, 141, 142, 154, 155, 190, 192, 199, 260, 269, 270], "next": [45, 57, 117, 129, 166, 207, 209, 239, 240, 241, 262, 266, 268], "revers": [45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 59, 117, 120, 121, 122, 123, 124, 125, 127, 128, 129, 131, 132, 165, 204, 207, 230, 239, 241, 267, 271], "refer": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 269, 271], "gardner": [45, 117, 191], "2019": [45, 117, 191], "model": [45, 117, 191], "cryptographi": [45, 117, 191], "figshar": [45, 117], "http": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 261, 262, 267, 271, 272], "hdl": [45, 117, 191], "handl": [45, 117, 191, 271], "net": [45, 117, 191], "2134": [45, 117, 191], "21932": [45, 117, 191], "feedback_poli": [45, 46, 47, 49, 50, 51, 59, 117, 118, 119, 121, 122, 123, 131, 191], "characteristic_poli": [45, 46, 49, 50, 51, 59, 61, 75, 93, 116, 117, 118, 121, 122, 123, 131, 191, 271], "initial_st": [45, 46, 49, 53, 59, 117, 118, 121, 125, 131, 191], "3x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 142, 144, 146, 147, 148, 149, 150, 151, 152, 154, 159, 160, 163, 164, 165, 167, 170, 175, 181, 182, 187, 188, 191, 194, 197, 206, 222, 238, 242, 243, 245, 255, 259, 260, 271, 274], "5x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 141, 144, 146, 147, 148, 149, 150, 151, 152, 163, 164, 165, 170, 187, 191, 194, 197, 206, 238, 242, 243, 245, 259, 260, 269, 270, 271], "10x": [45, 117, 170, 175, 181, 182, 187, 188], "reset": [45, 55, 117, 127, 266], "to_galois_lfsr": [45, 59], "convert": [45, 59, 61, 67, 114, 116, 117, 131, 133, 138, 143, 204, 230, 236, 237, 256, 257, 258, 259, 266, 270, 271], "same": [45, 57, 59, 115, 117, 129, 131, 132, 141, 142, 153, 155, 175, 182, 199, 204, 222, 225, 230, 238, 255, 270, 271], "finit": [45, 52, 61, 65, 69, 70, 71, 72, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 89, 91, 93, 94, 95, 103, 104, 107, 110, 113, 115, 116, 117, 124, 132, 141, 142, 144, 146, 147, 152, 156, 157, 158, 159, 193, 204, 230, 240, 241, 248, 250, 254, 256, 257, 258, 259, 260, 266, 267, 269, 270, 271, 273, 274, 276, 277], "relat": [45, 58, 117, 130, 255], "state": [46, 47, 49, 53, 55, 56, 57, 59, 118, 119, 121, 125, 127, 128, 129, 131, 191, 271], "becaus": [47, 80, 115, 119, 210, 231, 232, 233, 256, 257, 258, 269, 270, 276, 277], "unaffect": [53, 125], "view": [55, 127, 204, 230, 263, 266, 269, 270, 271, 276, 277], "direct": [57, 129, 209, 240], "backward": [57, 129, 275], "ab": [57, 129, 276], "end": [57, 129, 224], "more": [57, 129, 132, 148, 254, 258, 259, 260, 266, 271, 276, 277], "origin": [57, 129], "given": [59, 76, 90, 97, 109, 131, 137, 157, 193, 215, 232, 237, 240, 241, 255, 257, 259, 274, 276, 277], "fibonacci_lfsr": [59, 131], "differ": [59, 91, 107, 131, 142, 144, 175, 182, 204, 209, 230, 240, 250, 254, 255, 260, 264, 270, 276, 277], "galois_lfsr": [59, 131], "see": [59, 81, 103, 104, 115, 131, 132, 153, 154, 155, 199, 252, 254, 258, 259, 260, 266, 271, 276, 277], "verifi": [60, 115, 244, 255, 271, 274], "factori": [61, 115, 116, 255, 258, 266, 271, 276, 277], "issubclass": [61, 116, 255, 266, 271], "243": [61, 69, 115, 205, 254, 255, 256, 266, 268, 271], "instanc": [61, 116, 204, 230, 254, 256, 257, 259, 263, 267, 271], "44": [61, 75, 115, 155, 177, 199, 253, 254, 255, 256, 258, 259, 260, 268, 270, 271, 276, 277], "236": [61, 91, 254, 266, 271], "206": [61, 91, 253, 254, 268, 271], "138": [61, 91, 253, 254, 256, 268], "isinst": [61, 116, 255, 266, 271], "\u03b1": [61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 276, 277], "2\u03b1": [61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 91, 93, 94, 101, 102, 106, 113, 114, 237, 248, 250, 251, 254, 255, 256, 258, 266, 271, 273, 276], "143": [61, 254, 259, 268], "204": [61, 75, 91, 253, 254, 266], "55": [61, 91, 115, 141, 254, 255, 256, 259, 260, 268, 271, 274, 276, 277], "113": [61, 91, 247, 254], "vandermond": [61, 66, 116], "row": [61, 66, 76, 90, 97, 107, 108, 109, 116], "prime": [61, 65, 67, 74, 75, 79, 82, 83, 84, 86, 87, 93, 100, 101, 102, 113, 114, 115, 116, 159, 192, 193, 196, 198, 199, 200, 204, 206, 207, 209, 210, 211, 212, 213, 216, 217, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, 244, 247, 258, 267, 269, 271, 274, 276], "subfield": [61, 67, 83, 84, 100, 114, 116, 193, 258], "non_squar": [61, 89, 96, 116, 254, 271], "primitive_roots_of_un": [61, 104, 116, 271], "without": [61, 71, 116, 132, 147, 250, 259, 266, 267], "arithmetic_t": [61, 73, 116, 271, 276, 277], "repr_tabl": [61, 107, 116, 258, 271, 276, 277], "compar": [61, 107, 116, 142, 258, 269, 270, 271], "additive_ord": [61, 72, 116, 271], "addit": [61, 72, 73, 116, 152, 200, 206, 207, 228, 238, 239, 257, 259, 266, 271, 274], "field_norm": [61, 83, 116, 271], "norm": [61, 83, 116, 271], "_": [61, 83, 84, 116, 241, 257, 276, 277], "field_trac": [61, 84, 116, 271], "trace": [61, 75, 84, 116, 271], "tr": [61, 75, 84, 116], "beta": [61, 91, 116, 254, 271, 272], "minimal_poli": [61, 93, 116, 271], "ord": [61, 94, 107, 116, 276, 277], "column_spac": [61, 76, 97, 116, 271], "column": [61, 66, 76, 97, 99, 108, 116, 268], "space": [61, 76, 90, 97, 109, 116, 139, 250, 258, 271], "left_null_spac": [61, 90, 109, 116, 271], "null": [61, 76, 90, 97, 109, 116], "lu_decompos": [61, 92, 116, 271], "decompos": [61, 92, 99, 116], "input": [61, 72, 75, 89, 92, 93, 94, 99, 108, 116, 204, 230, 254, 257, 258, 270, 271, 274], "lower": [61, 92, 99, 116, 159, 228], "upper": [61, 92, 99, 116], "triangular": [61, 92, 99, 116], "matric": [61, 92, 99, 116, 141, 254, 260, 269, 270], "null_spac": [61, 76, 97, 116, 271], "plu_decompos": [61, 99, 116, 271, 274], "partial": [61, 99, 116], "pivot": [61, 99, 116], "row_reduc": [61, 108, 116, 254, 272], "ncol": [61, 108, 116], "perform": [61, 108, 116, 141, 204, 230, 232, 254, 257, 259, 260, 267, 268, 271, 276, 277], "gaussian": [61, 108, 116], "elimin": [61, 108, 116, 255, 257, 274], "achiev": [61, 108, 116, 171, 204, 230, 271], "reduc": [61, 108, 116, 159, 200, 228, 255, 257, 260, 269, 270, 271, 276, 277], "echelon": [61, 108, 116], "form": [61, 108, 116, 209, 240, 246, 276, 277], "rref": [61, 108, 116], "row_spac": [61, 90, 109, 116, 271], "prime_subfield": [61, 100, 116], "is_extension_field": [61, 86, 116, 271], "is_prime_field": [61, 87, 116, 271], "is_squar": [61, 89, 96, 110, 116, 254, 271], "repeat": [64, 137, 141, 152, 254, 260], "123456789": [64, 137, 271], "global": [64, 137, 263, 271], "rng": [64, 137, 271], "default_rng": [64, 137, 271], "simpli": [65, 75, 93, 256, 258, 270], "sinc": [65, 83, 84, 89, 107, 159, 200, 209, 213, 228, 238, 239, 240, 247, 260, 261, 266, 271, 276, 277], "col": 66, "v": [66, 117, 240, 241, 261], "last": [67, 103, 104, 114, 206, 207, 209, 232, 238, 239, 240, 261], "n1": [67, 114], "n2": [67, 114], "By": [67, 114, 148, 242, 245, 255, 259], "convent": [67, 114, 250, 255, 259, 271], "method": [67, 76, 90, 91, 97, 107, 109, 114, 115, 206, 209, 236, 237, 238, 240, 256, 257, 258, 271, 273, 274], "copi": [69, 74, 254, 256, 266, 271], "ndmin": 69, "keyword": [69, 230, 256, 257, 258, 259, 266, 271, 272, 273, 274], "222": [69, 91, 248, 250, 251, 254, 256, 258, 268], "148": [69, 91, 248, 251, 254, 256, 269], "205": [69, 91, 248, 251, 254, 256], "69": [69, 91, 228, 248, 251, 254, 256, 258, 259, 260, 268, 271, 276], "54": [69, 91, 248, 251, 253, 254, 256, 260, 268, 271, 276, 277], "prepend": [70, 71], "doe": [71, 96, 115, 219, 256, 257, 269, 271], "omit": [71, 139], "comma": [71, 272], "separ": [71, 271, 272, 274], "With": [72, 91, 204, 212, 230, 257, 258, 271, 274], "except": [72, 80, 158, 192, 209, 225, 232, 240, 267], "subtract": [73, 257, 266], "ad": [74, 148, 254, 258, 260, 263, 271, 272, 273, 274], "alwai": [74, 93, 152, 159, 238, 260, 271, 276, 277], "result": [74, 94, 137, 141, 152, 212, 225, 254, 257, 260, 269, 271, 276, 277], "c_a": 75, "rais": [75, 80, 93, 94, 103, 104, 148, 153, 154, 155, 157, 158, 167, 193, 206, 209, 232, 233, 238, 240, 271], "valueerror": [75, 93, 103, 104, 148, 153, 154, 155, 167, 271], "annihil": [75, 90, 93, 97], "det": 75, "coeffici": [75, 133, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 156, 160, 163, 164, 165, 245, 252, 258, 271, 276], "en": [75, 83, 84, 93, 152, 159, 222, 244, 271], "wikipedia": [75, 83, 84, 93, 152, 159, 222, 244], "org": [75, 83, 84, 93, 152, 159, 192, 198, 204, 222, 226, 227, 230, 235, 240, 241, 244, 246], "wiki": [75, 83, 84, 93, 152, 159, 222, 244], "characteristic_polynomi": 75, "228": [75, 91, 254, 268], "185": [75, 91, 133, 141, 254, 255, 256, 272], "194": [75, 91, 254], "118": [75, 91, 254], "177": [75, 91, 254, 268], "226": [75, 91, 254, 268, 271], "76": [75, 91, 254, 256, 268, 271, 276], "135": [75, 91, 254, 266], "139x": 75, "4x": [75, 152, 154, 160, 165, 167, 194, 197, 206, 222, 238, 243, 259, 260], "240": [75, 91, 254, 271], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "238": [75, 91, 254], "56": [75, 91, 115, 254, 255, 256, 260, 268, 271, 276, 277], "160": [75, 91, 254], "62": [75, 91, 228, 254, 256, 260, 268, 270, 276, 277], "214": [75, 91, 133, 254, 256, 271], "122": [75, 91, 254, 268], "193": [75, 91, 254, 255, 256, 268, 271, 272], "171": [75, 91, 253, 254, 271, 272], "57": [75, 91, 115, 254, 255, 256, 260, 268, 271, 274, 276, 277], "234": [75, 91, 254], "basi": [76, 90, 97, 109], "span": [76, 90, 97, 109, 209, 240, 241], "combin": [76, 109, 139, 190, 250], "most": [76, 103, 104, 109, 192, 209, 232, 240, 256, 258, 264, 266, 276], "mathcal": [76, 90, 97, 109], "dim": [76, 90, 97, 109], "speed": [78, 111, 257, 267, 271, 274], "65537": [78, 111, 112, 274], "memori": [78, 111, 256, 257, 267], "save": [78, 111, 267, 268], "still": [78, 111, 142], "fit": [78, 111, 112], "within": [78, 111, 112], "2147483647": [78, 111, 227], "36893488147419103183": [78, 80, 111, 112, 115], "100": [78, 80, 91, 111, 112, 115, 210, 231, 232, 247, 249, 254, 255, 256, 257, 263, 266, 268, 269, 270, 271, 272, 274], "unsupport": 80, "typeerror": [80, 104, 271], "small": [80, 233, 256, 270, 271, 274, 276, 277], "accept": [80, 139, 250, 271], "uint64": 80, "done": [80, 261], "uint8": [80, 256], "uint16": [80, 249, 256], "uint32": [80, 256], "int8": [80, 256], "int16": [80, 256], "int32": [80, 249, 256], "some": [80, 153, 159, 167, 200, 204, 209, 213, 224, 228, 230, 256, 257, 259, 263, 267, 270, 271, 276, 277], "certain": [80, 254, 256, 259, 271, 274], "unlimit": [80, 256, 257], "chang": [81, 257, 258, 259, 262, 275], "further": [81, 115], "discuss": [81, 115, 256, 266, 276], "increas": [82, 102, 113, 166, 250, 258, 264, 271, 274], "lexicograph": [82, 102, 104, 107, 113, 154, 155, 157, 158, 193, 199, 206, 207, 225, 238, 239, 274], "3\u03b1": [82, 101, 102, 113, 254], "4\u03b1": [82, 101, 102, 113, 254], "word": [83, 84], "rightarrow": [83, 84], "conjug": [83, 84], "prod_": [83, 153, 162, 167, 198, 217, 222], "sum_": [84, 138, 157, 166, 193, 195, 204, 222, 230, 271], "256": [88, 98, 115, 254, 274], "ae": [88, 115, 161], "exist": [89, 96, 103, 104, 110, 115, 157, 159, 193, 204, 206, 209, 225, 230, 238, 240, 254, 266, 271, 276, 277], "exactli": [89, 96, 110, 276], "half": [89, 96, 110], "nonzero": [89, 96, 110], "uniqu": [89, 104, 110, 166, 209, 240, 254, 255], "cacr": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "uwaterloo": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "ca": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "hac": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "about": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246, 263, 264, 269], "chap3": [89, 232, 233], "pdf": [89, 153, 154, 155, 159, 161, 167, 191, 194, 197, 198, 199, 200, 201, 219, 220, 224, 228, 232, 233, 240, 241, 246], "so": [89, 115, 171, 199, 204, 212, 230, 255, 260, 271, 274, 276, 277], "ln": [90, 97, 109], "invok": [91, 257, 260, 263, 264, 266, 268, 269, 270, 271], "obei": 91, "broadcast": [91, 254, 266, 272], "rule": [91, 139, 266], "65": [91, 171, 172, 173, 174, 183, 254, 256, 260, 268, 270, 271, 276, 277], "219": [91, 254, 268], "189": [91, 254], "191": [91, 254, 268, 271], "163": [91, 141, 254, 255, 271], "110": [91, 254, 256], "99": [91, 254, 256, 268, 271], "184": [91, 254, 268], "233": [91, 253, 254, 268], "92": [91, 254, 256, 268, 269, 271, 276], "129": [91, 254, 268, 271], "220": [91, 254, 268, 269], "241": [91, 253, 254, 255, 266, 268, 271], "119": [91, 137, 138, 254], "49": [91, 254, 255, 256, 260, 268, 272, 276, 277], "52": [91, 115, 254, 255, 256, 259, 260, 268, 271, 276, 277], "159": [91, 254, 271], "168": [91, 254, 268, 271], "137": [91, 254, 259, 268, 271], "87": [91, 254, 256, 266, 268, 274, 276], "187": [91, 254, 271], "58": [91, 240, 241, 254, 256, 259, 260, 268, 271, 274, 276, 277], "90": [91, 228, 254, 256, 268, 271, 276], "70": [91, 253, 254, 256, 260, 271, 273, 276], "75": [91, 228, 253, 254, 256, 258, 268, 276], "95": [91, 254, 256, 266, 268, 271], "210": [91, 254, 271], "anoth": [91, 108, 260, 277], "242": [91, 254, 255, 256, 271], "209": [91, 253, 254, 256], "224": [91, 254, 266], "89": [91, 226, 254, 256, 268, 276], "164": [91, 254, 268], "79": [91, 228, 254, 256, 268, 274, 276], "60": [91, 216, 254, 255, 256, 260, 268, 272, 276, 277], "147": [91, 254, 268], "181": [91, 197, 254, 269, 271], "223": [91, 132, 171, 172, 173, 174, 183, 254], "105": [91, 254, 256], "211": [91, 254], "85": [91, 171, 172, 173, 174, 183, 254, 256, 268, 272, 276], "151": [91, 254, 272], "111": [91, 254, 256], "51": [91, 254, 256, 259, 260, 266, 268, 272, 274, 276, 277], "141": [91, 254, 268], "155": [91, 254], "217": [91, 254, 271], "157": [91, 254], "109": [91, 242, 245, 254, 256, 266, 271], "173": [91, 254, 266], "131": [91, 254, 268, 271], "115": [91, 254, 268, 271], "145": [91, 254, 268], "139": [91, 254], "235": [91, 254, 268, 271], "179": [91, 253, 254, 255, 259, 266, 268], "101": [91, 254, 256], "127": [91, 226, 227, 254, 266, 271], "81": [91, 228, 237, 254, 255, 256, 268, 272, 274, 276], "221": [91, 197, 253, 254, 271], "195": [91, 254, 256, 271], "229": [91, 254, 268], "123": [91, 141, 145, 254, 256, 271], "63": [91, 254, 256, 260, 268, 276, 277], "175": [91, 253, 254], "149": [91, 219, 220, 224, 254, 268], "73": [91, 133, 254, 256, 260, 268, 276], "167": [91, 254, 256, 268], "93": [91, 254, 256, 271, 276], "125": [91, 254], "183": [91, 254, 256], "161": [91, 254, 268, 272], "43": [91, 115, 137, 177, 254, 255, 256, 258, 259, 260, 268, 276, 277], "201": [91, 141, 145, 254, 271], "67": [91, 254, 256, 260, 266, 268, 271, 272, 276], "47": [91, 115, 254, 255, 256, 260, 266, 268, 274, 276, 277], "213": [91, 254, 256, 268], "97": [91, 152, 254, 256, 268], "227": [91, 166, 254, 256], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 276, 277], "197": [91, 240, 241, 254, 268], "71": [91, 254, 256, 260, 268, 271, 276], "107": [91, 197, 226, 253, 254, 256], "215": [91, 253, 254, 268, 271], "207": [91, 254, 268, 271], "225": [91, 138, 254, 271], "133": [91, 254], "83": [91, 152, 242, 245, 254, 256, 268, 271, 276], "203": [91, 254], "237": [91, 254, 271], "61": [91, 226, 254, 256, 260, 271, 276, 277], "53": [91, 228, 254, 256, 260, 268, 271, 276, 277], "117": [91, 135, 139, 253, 254, 259], "239": [91, 152, 254], "153": [91, 166, 254, 256, 268, 269], "91": [91, 195, 228, 253, 254, 256, 268, 276], "59": [91, 173, 254, 256, 260, 268, 271, 276, 277], "199": [91, 254, 268], "169": [91, 254], "103": [91, 141, 254, 256], "64": [91, 210, 231, 254, 256, 260, 268, 269, 276, 277], "158": [91, 254], "172": [91, 254, 271], "142": [91, 254], "200": [91, 254, 258, 268, 271], "102": [91, 254, 256, 268, 269, 271], "188": [91, 254], "106": [91, 254, 256], "202": [91, 254, 268], "182": [91, 253, 254, 268], "128": [91, 254, 268], "124": [91, 132, 156, 254, 255, 256], "136": [91, 254, 271], "190": [91, 254, 272], "208": [91, 254], "156": [91, 141, 254, 268], "72": [91, 254, 256, 260, 268, 271, 276], "186": [91, 254, 268], "150": [91, 210, 231, 254, 268, 271], "144": [91, 254], "180": [91, 254], "230": [91, 254, 255, 266], "218": [91, 141, 201, 254, 268, 271], "114": [91, 254, 255, 256, 271], "98": [91, 254, 256, 268], "162": [91, 254, 271], "96": [91, 141, 254, 256, 268, 271, 274], "68": [91, 253, 254, 256, 260, 268, 274, 276], "80": [91, 214, 254, 256, 268, 271, 276], "166": [91, 254, 268, 271], "196": [91, 254], "126": [91, 254], "134": [91, 254, 268, 271], "120": [91, 199, 254, 263], "50": [91, 254, 256, 260, 268, 271, 272, 276, 277], "48": [91, 115, 240, 241, 253, 254, 255, 256, 260, 268, 270, 271, 276, 277], "178": [91, 254, 268, 271], "152": [91, 254, 268], "112": [91, 243, 254, 259, 266], "94": [91, 254, 256, 268, 276], "82": [91, 228, 254, 256, 266, 268, 271, 276], "212": [91, 253, 254, 268], "170": [91, 253, 254], "104": [91, 201, 254, 256], "74": [91, 228, 254, 256, 260, 271, 276], "146": [91, 141, 253, 254, 266, 268], "46": [91, 115, 155, 199, 254, 255, 256, 260, 268, 273, 276, 277], "216": [91, 253, 254, 255, 256, 268], "116": [91, 253, 254], "130": [91, 254], "108": [91, 254, 256, 266, 271], "232": [91, 254, 268, 271], "192": [91, 141, 254, 266, 268], "78": [91, 254, 255, 256, 268, 270, 276], "174": [91, 254, 268], "86": [91, 253, 254, 256, 268, 276], "140": [91, 254], "84": [91, 141, 254, 256, 268, 276], "lu": 92, "decomposit": [92, 99], "u": [92, 99, 267, 268], "Not": 92, "m_a": 93, "notimplementederror": 93, "divid": [93, 103, 104, 157, 158, 193, 204, 230, 260, 272], "minimal_polynomial_": 93, "field_theori": 93, "linear_algebra": 93, "divmod": [93, 271], "arithmeticerror": 94, "There": [94, 103, 104, 213, 225, 241, 257, 259, 275, 276, 277], "ever": 94, "said": [94, 144, 159, 200, 215, 240, 241], "confus": 94, "former": 94, "latter": 94, "16807": [98, 105, 236], "permut": 99, "plu": 99, "itself": [100, 271, 276], "happen": [103, 104, 233], "omega_n": [103, 104, 204, 230], "ne": [103, 104, 107, 192, 222], "lt": [103, 104], "Then": [103, 104, 166], "do": [103, 104, 277], "traceback": [103, 104, 209, 232, 240], "recent": [103, 104, 209, 232, 240, 271], "cell": [103, 104, 209, 232, 240], "line": [103, 104, 209, 232, 240, 244, 258], "file": [103, 104, 209, 232, 240, 263, 264, 268, 274], "opt": [103, 104, 209, 232, 240], "hostedtoolcach": [103, 104, 209, 232, 240], "x64": [103, 104, 209, 232, 240], "lib": [103, 104, 209, 232, 240], "python3": [103, 104, 209, 232, 240, 261, 262, 263, 264, 266, 268], "site": [103, 104, 209, 232, 240, 261], "py": [103, 104, 209, 232, 240, 263, 264, 268, 274], "890": 103, "cl": [103, 104], "888": [103, 268], "889": 103, "892": 103, "omega_5": [103, 104], "arang": [103, 104, 256], "sort": [104, 107, 155, 196, 199, 268], "952": 104, "950": [104, 271], "951": 104, "954": 104, "955": 104, "outer": 104, "outsid": [106, 258], "revert": [106, 271], "previou": [106, 166, 258, 271], "ascend": [107, 146, 147, 148, 245, 250, 258], "ey": [108, 271, 272], "elementari": 108, "swap": 108, "multipli": [108, 152, 199, 260], "get": [108, 259, 261, 271], "matrix_rank": 108, "side": [108, 267, 272], "Or": [108, 141, 207, 239, 250, 255, 259, 260, 262, 264, 268], "y1": 110, "y2": 110, "constructor": [114, 256, 266, 267, 271], "vec": 114, "build": [115, 263], "exponenti": [115, 141, 256, 257, 271, 274], "user": [115, 254, 266, 267, 268, 271, 274], "fact": [115, 116, 228], "alreadi": [115, 255, 257, 276, 277], "never": [115, 200, 206, 207, 228, 238, 239, 241, 274, 276], "respect": [115, 276], "after": [115, 153, 154, 207, 239, 241, 254, 257, 260, 276], "newli": 115, "singleton": [115, 171], "arbitrarili": [115, 267, 271], "36893488147419103180": 115, "1267650600228229401496703205376": [115, 255], "sped": 115, "explicitli": [115, 133, 138, 143, 204, 230, 255, 256, 257, 259, 268, 269, 276], "avoid": [115, 267, 271], "need": [115, 207, 239, 241, 255, 257, 263, 264, 267, 271, 274], "factor": [115, 153, 154, 155, 162, 166, 167, 195, 196, 198, 199, 210, 211, 216, 217, 228, 231, 232, 233, 247, 255, 267, 271, 274, 276], "109987": [115, 255, 271], "146340800268433348561": [115, 255], "100525x": [115, 255], "pre": [116, 273], "includ": [116, 139, 157, 158, 193, 218, 235, 250, 254, 259, 262, 263, 264, 269, 271, 276, 277], "api": [116, 271, 273, 275], "conveni": [116, 142, 230, 256, 259, 266], "c_2": 117, "to_fibonacci_lfsr": [117, 131], "124x": [132, 152, 271], "223x": 132, "One": [132, 136, 259], "__call__": [132, 141, 260, 271], "x_0": [132, 141, 233], "composit": [132, 141, 155, 162, 192, 199, 200, 208, 212, 216, 217, 228, 231, 232, 233, 247, 271], "__eq__": [132, 142], "__int__": [132, 135, 144, 259, 271], "__len__": [132, 145], "deriv": [132, 152, 259], "formal": [132, 152, 276], "dx": [132, 152], "_domain": [132, 166], "distinct_degree_factor": [132, 153, 154, 155, 199, 271], "equal_degree_factor": [132, 154, 155, 199, 271], "rd": [132, 154], "square_free_factor": [132, 153, 155, 167, 199, 271], "descend": [132, 148, 149, 151, 163, 164, 242, 245, 252, 259], "nonzero_coeff": [132, 163, 164, 259], "nonzero_degre": [132, 163, 164, 259], "highest": [132, 143, 150, 160, 258], "is_conwai": [132, 157, 158, 193, 274], "search": [132, 157, 158, 166, 193, 206, 207, 232, 236, 238, 239, 240, 241, 247, 271, 274], "is_conway_consist": [132, 157, 158, 193, 274], "smaller": [132, 157, 158, 193, 238, 272], "is_irreduc": [132, 153, 154, 159, 161, 167, 206, 207, 271, 274, 276], "is_mon": [132, 160, 271], "won": [133, 138, 143], "assum": [133, 138, 143], "214x": 133, "73x": 133, "186535908": 135, "13x": [135, 139, 159, 173, 259], "0b1011": [135, 259, 271], "bin": [135, 259, 271], "octal": [135, 259], "0o5034": [135, 259], "oct": [135, 259, 271], "hexadecim": [135, 259], "0xf700a275": [135, 259], "247x": [135, 259], "162x": [135, 259], "hex": [135, 259, 271], "_gener": 137, "56x": 137, "228x": [137, 152], "157x": 137, "218x": 137, "148x": 137, "194x": 137, "195x": 137, "200x": 137, "141x": [137, 166], "164x": [137, 173], "desir": [138, 206, 207, 225, 238, 239, 255, 256, 274], "r_1": [138, 166], "r_2": [138, 166], "r_k": [138, 166], "m_2": [138, 166, 194], "m_k": [138, 166], "a_d": [138, 143, 144, 152, 165], "a_": [138, 143, 144, 152, 165, 166, 276], "a_1": [138, 143, 144, 152, 165, 166, 194], "a_0": [138, 143, 144, 152, 165, 166, 276], "m_i": [138, 159, 166, 194], "121": [138, 254, 259, 271], "198": [138, 253, 254], "215x": 138, "90x": 138, "183x": [138, 271], "pars": 139, "indetermin": [139, 141, 250, 260], "requir": [139, 191, 233, 261, 268, 270, 271, 276], "charact": [139, 258], "13y": 139, "term": [139, 148, 206, 207, 225, 238, 239, 270, 271, 274], "abov": [139, 209, 240, 250], "wise": [141, 266, 276], "37x": [141, 145, 271], "123x": [141, 145, 271], "x0": 141, "matrix_pow": [141, 260], "55x": [141, 259, 271], "77x": [141, 271], "104x": [141, 173, 271], "against": [142, 268], "distinct": [142, 153, 154, 155, 199], "comparison": [142, 211, 263, 269, 271], "allow": [142, 230, 232, 253, 254, 257, 258, 262, 264, 271, 276, 277], "interpret": [143, 271], "lowest": 143, "consid": [144, 276, 277], "digit": [144, 258], "radix": [144, 204, 230, 258, 271], "decim": 144, "1066": 144, "len": [145, 194, 198, 204, 209, 228, 230, 237, 240, 246, 271], "fix": [148, 249, 256, 271, 272, 274, 275], "higher": 148, "accessor": 148, "similar": [148, 256, 257, 263, 269, 271], "entri": [149, 151, 163, 164, 222], "pair": [149, 151, 163, 164, 222, 254], "etc": [152, 250], "cdot": [152, 206, 207, 238, 239, 257, 277], "brought": 152, "down": 152, "formal_deriv": 152, "6x": [152, 157, 158, 193, 194, 206, 222, 236, 238, 243, 260, 270, 271], "67x": 152, "85x": 152, "132x": 152, "176x": 152, "83x": [152, 271], "239x": [152, 173], "f_i": 153, "algorithm": [153, 154, 155, 157, 158, 159, 161, 167, 191, 193, 197, 199, 201, 204, 212, 219, 220, 224, 230, 232, 233, 240, 247, 267, 271, 274, 276, 277], "suppos": [153, 167], "f_1": [153, 197, 201, 223], "f_2": [153, 197, 201, 223], "f_3": [153, 197, 201, 223], "those": [153, 167, 256, 271, 274], "often": [153, 154, 192, 213, 228, 232, 276], "appli": [153, 154, 155, 199, 249, 254, 266, 271, 274], "complet": [153, 154, 167, 267, 271, 276, 277], "implement": [153, 154, 159, 166, 167, 191, 192, 194, 195, 197, 198, 201, 204, 230, 235, 267, 269, 270, 271, 276, 277], "hachenberg": [153, 155, 167, 199], "jungnickel": [153, 155, 167, 199], "topic": [153, 155, 167, 199], "peopl": [153, 154, 155, 167, 199, 277], "csail": [153, 154, 155, 167, 199], "mit": [153, 154, 155, 167, 199], "edu": [153, 154, 155, 159, 167, 191, 199, 228], "dmoshkov": [153, 154, 155, 167, 199], "cours": [153, 154, 155, 167, 199, 240, 241], "g_1": [154, 155, 199], "g_r": 154, "cantor": 154, "zassenhau": 154, "probabilist": [154, 159], "www": [154, 157, 158, 159, 191, 193, 204, 230, 240, 241], "csa": 154, "iisc": 154, "ac": 154, "chandan": 154, "cnt": 154, "lec8": 154, "g_2": [155, 199], "g_k": [155, 199], "e_1": [155, 198, 199, 211, 216, 232, 247], "e_2": [155, 199], "e_k": [155, 198, 199, 211, 216, 232, 247], "g1": [155, 199], "g2": [155, 199], "g3": [155, 199], "e1": [155, 199], "e2": [155, 199], "e3": [155, 199], "26x": [156, 173], "202x": [156, 166], "87x": 156, "173x": 156, "computation": [157, 158, 159, 161, 162, 193, 271], "expens": [157, 158, 159, 161, 162, 193, 255, 271, 274], "task": [157, 158, 159, 161, 162], "manual": [157, 158, 193, 207, 239, 263, 264, 274], "frank": [157, 158, 193, 267, 274], "luebeck": [157, 158, 193, 267, 274], "databas": [157, 158, 193, 199, 206, 274], "veri": [157, 158, 193, 206, 212, 240, 255, 270, 274], "lookuperror": [157, 158, 193], "found": [157, 158, 193, 199, 204, 207, 209, 230, 232, 233, 239, 241, 274], "accord": [157, 158, 193], "special": [157, 158, 193, 204, 230], "follow": [157, 166, 193, 209, 240, 267, 269, 276, 277], "g_i": [157, 162, 193, 217], "h_i": [157, 193], "g_j": [157, 193], "h_j": [157, 167, 193], "j": [157, 166, 167, 191, 193, 204, 222, 228, 230], "math": [157, 158, 159, 193, 218, 228, 261], "rwth": [157, 158, 193], "aachen": [157, 158, 193], "de": [157, 158, 193], "conwaypol": [157, 158, 193], "cp7": [157, 158, 193], "html": [157, 158, 193, 240, 241, 261, 271], "lenwood": [157, 158, 193], "heath": [157, 158, 193], "nichola": [157, 158, 193], "loehr": [157, 158, 193], "journal": [157, 158, 159, 193, 240, 241], "volum": [157, 158, 193], "issu": [157, 158, 193, 225, 271], "2004": [157, 158, 193], "page": [157, 158, 193, 204, 230, 256, 261, 269, 270, 271, 272], "1003": [157, 158, 193], "1024": [157, 158, 193, 205, 218, 244, 271], "sciencedirect": [157, 158, 193], "com": [157, 158, 191, 193, 262, 267], "scienc": [157, 158, 193], "articl": [157, 158, 193], "pii": [157, 158, 193], "s0747717104000331": [157, 158, 193], "among": [157, 158, 193], "candid": [157, 158, 193], "accordingli": [157, 158, 193, 277], "necessarili": [158, 211], "strictli": [159, 271], "algebra": [159, 267, 271], "close": [159, 276, 277], "test": [159, 199, 200, 209, 212, 217, 225, 228, 240, 244, 256, 262, 267, 268, 269, 270, 271, 274], "sai": [159, 200], "siam": 159, "1980": 159, "273": [159, 254, 256], "280": [159, 254, 268], "app": 159, "dtic": 159, "mil": 159, "sti": 159, "ada078416": 159, "gao": 159, "panarino": 159, "clemson": 159, "sgao": 159, "paper": 159, "gp97a": 159, "chap4": [159, 161, 200, 228], "factorization_of_polynomials_over_finite_field": 159, "necessari": [159, 248, 250, 252, 261, 269, 270, 271, 276], "suffici": 159, "condit": [159, 206, 207, 239, 241], "being": [159, 209, 212, 214, 271], "15x": [159, 170, 173, 175, 181, 182, 187, 188], "12x": [159, 175, 181, 182, 188], "7x": [159, 170, 175, 181, 182, 187, 188, 222], "77": [161, 254, 256, 268, 271, 272, 276], "therefor": [162, 217, 256, 258, 276], "canon": [162, 217, 271], "f1": [162, 190, 197, 201, 217, 223, 243], "f2": [162, 190, 197, 201, 217, 223, 243], "rev": 165, "_d": 165, "chien": 166, "a_1x": [166, 276], "r_i": 166, "a_j": 166, "remain": 166, "equat": 166, "overset": 166, "delta": 166, "lambda_": [166, 192], "easili": [166, 255, 258, 259, 260, 261, 263, 264, 266, 268, 269, 276, 277], "118x": 166, "172x": 166, "50x": [166, 173], "204x": 166, "153x": 166, "107x": [166, 173], "187x": 166, "66x": [166, 259], "221x": 166, "114x": [166, 271], "121x": 166, "226x": 166, "reed": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "solomon": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "9x": [169, 175, 181, 182, 184, 188, 269], "8x": [169, 175, 181, 182, 184, 188, 222, 270], "11x": [169, 170, 184, 187], "18x": [170, 173, 187], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "22x": [170, 187], "25x": [170, 187, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "232x": 173, "29x": 173, "189x": 173, "142x": 173, "246x": 173, "43x": 173, "82x": 173, "238x": 173, "158x": 173, "119x": 173, "224x": 173, "134x": 173, "227x": 173, "210x": 173, "163x": 173, "40x": 173, "27x": 173, "253x": 173, "216x": [173, 271], "126x": 173, "190x": 173, "191x": 173, "96x": [173, 271], "116x": 173, "137x": 173, "203x": [173, 271], "23x": 173, "208x": 173, "130x": 173, "53x": 173, "188x": 173, "94x": 173, "146x": 173, "182x": 173, "f3": [190, 197, 201, 223, 243], "berlekamp": [191, 271], "massei": [191, 271], "depend": [191, 206, 261, 263, 264, 267, 271], "2n": 191, "sach": 191, "uniniti": 191, "part": 191, "vi": 191, "sing": 191, "embeddedrel": 191, "showarticl": 191, "1099": 191, "php": 191, "crypto": 191, "stanford": 191, "mironov": 191, "cs359": 191, "below": [191, 209, 225, 240, 254, 257, 258, 259, 260, 269, 270], "reproduc": [191, 264, 271], "carmichael": [192, 209, 240, 271], "lambda": [192, 209, 240], "oei": [192, 198, 226, 227, 235, 246], "a002322": 192, "euler": [192, 198, 209, 237, 240], "phi": [192, 198, 209, 215, 237, 240, 241, 246], "notabl": [192, 225, 256], "And": [192, 200, 225], "pow": [192, 209, 219, 224, 240, 241, 271], "standard": [193, 218, 266, 267, 268, 271, 273], "split": 193, "henc": 193, "wai": [193, 254, 256, 259, 262, 270, 276, 277], "congruenc": [194, 200], "a_i": 194, "solut": 194, "chines": 194, "theorem": [194, 200, 271, 277], "a_2": 194, "ldot": 194, "a_n": 194, "m_n": 194, "chap14": 194, "show": [194, 222, 237, 241], "satisfi": [194, 200, 204, 219, 222, 224, 230, 232], "ai": 194, "x_truth": 194, "m3": 194, "m4": 194, "m5": 194, "sigma_1": 195, "sigma_k": 195, "mid": 195, "euclidean": [197, 201, 276, 277], "chap2": [197, 198, 201, 219, 220, 224, 246], "moon": 197, "domain": 197, "totient": [198, 209, 237, 240], "big": 198, "1big": 198, "p_1": [198, 199, 211, 216, 232, 247], "p_k": [198, 199, 211, 216, 232, 247], "a000010": [198, 246], "p_2": 199, "cunningham": [199, 267, 274], "book": [199, 267, 274], "pm": [199, 267, 274], "trial": [199, 247], "residu": [199, 219, 224, 247, 271], "pollard": [199, 232, 233, 271, 274], "rho": [199, 233, 271, 274], "continu": [199, 276], "until": [199, 271], "avail": [199, 217, 242, 257, 271], "round": [200, 212, 228], "primal": [200, 212, 228, 244, 267], "odd": [200, 209, 210, 219, 224, 228, 231, 232, 233], "choos": [200, 228, 257, 266], "shown": [200, 228, 277], "probabl": [200, 212, 228], "hold": 200, "wit": [200, 228], "liar": [200, 228], "possibl": [200, 206, 207, 228, 238, 239, 267, 269, 270, 271], "mark": [200, 228, 271], "257": [200, 228, 254, 268, 274], "24841": [200, 228], "65497": [200, 228], "here": [200, 232, 255, 256, 257, 260, 267, 269, 273, 276, 277], "pseudoprim": [200, 212, 228], "a001567": 200, "2047": 200, "29341": 200, "65281": 200, "But": 200, "a005935": 200, "2465": 200, "7381": 200, "16531": 200, "dictionari": 202, "1000": [203, 205, 218, 221, 259], "625": [203, 271], "3125": 203, "modulu": [204, 230], "scale": [204, 206, 238], "transform": [204, 230, 254, 267, 271], "pad": [204, 230], "max": [204, 206, 209, 226, 227, 230, 236, 237, 238, 240, 247, 257, 263, 268, 271], "mn": [204, 230], "criteria": [204, 230], "nx": 204, "normal": [204, 230, 254, 257, 266, 267], "tolist": [204, 230], "fourier": [204, 230, 254], "dft": [204, 230, 254, 271], "pi": [204, 230], "neq": [204, 230], "omega_": [204, 230], "point": [204, 230, 269], "x_j": [204, 222, 230], "x_k": [204, 230], "kj": 204, "coolei": [204, 230, 271], "tukei": [204, 230, 271], "fft": [204, 230, 267, 271], "cgyurgyik": [204, 230], "github": [204, 225, 230, 267, 272], "io": [204, 230, 271, 272], "post": [204, 230], "2021": [204, 230, 271], "04": [204, 230, 268], "brief": [204, 230], "introduct": [204, 230, 271], "nayuki": [204, 230], "geeksforgeek": [204, 230], "import": [204, 230, 262, 266, 270, 271, 272, 273, 274, 277], "forward": [204, 230, 267, 271], "ifft": [204, 271], "exact": [206, 207, 238, 239], "request": [206, 262, 268], "precomput": 206, "under": [206, 268, 276, 277], "quickli": [206, 212], "10000": 206, "hp": 206, "weight": 206, "runtimeerror": [206, 209, 232, 233, 238, 240, 271], "backslash": [206, 207, 238, 239], "four": [206, 207, 238, 258, 271, 274], "now": [206, 238, 271, 274, 276, 277], "you": [207, 225, 239, 241, 255, 256, 262, 263, 264, 266, 267, 268, 276, 277], "them": [207, 239, 241, 257, 268, 275], "cost": [207, 239, 241], "would": [207, 239, 241, 256, 257, 267, 268], "been": [207, 225, 239, 241, 257], "break": [207, 239, 241], "incur": [207, 239, 241, 255, 274], "earli": [207, 239, 241], "exit": [207, 239, 241], "0x7fec2538caf0": 207, "2p": [209, 240], "znx": [209, 240, 241], "observ": [209, 240], "although": [209, 240, 276], "2d": [209, 240], "maximum": [209, 240], "stopiter": [209, 240], "_modular": [209, 240], "559": [209, 240, 268], "558": [209, 240], "560": [209, 240], "elif": [209, 240], "wa": [209, 240, 267, 271, 276], "caus": [209, 240, 271, 274], "566": [209, 240], "564": [209, 240], "565": [209, 240], "No": [209, 240, 248, 250, 252], "750": [210, 231], "even": [210, 231, 257, 267, 269, 270], "run": [212, 261, 268, 269, 270, 271, 272, 274], "could": [212, 232, 267, 271], "1000000000000000035000061": [212, 240], "controversi": 213, "regard": 213, "altern": [215, 240, 241, 255], "regular": [216, 263], "humbl": 216, "highli": 216, "As": [217, 255, 259, 267, 276, 277], "consequ": 217, "version": [218, 257, 262, 266, 271, 273, 274], "befor": [218, 270, 275, 276, 277], "later": [218, 271, 277], "librari": [218, 244, 255, 257, 259, 262, 263, 264, 266, 267, 268, 269, 271, 275, 276, 277], "961": 218, "unlik": [219, 269], "impli": 219, "quadrat": [219, 224, 271], "q_n": 219, "q_9": 219, "overlin": [219, 224], "_9": 219, "index": [221, 261, 274], "7919": 221, "interpol": [222, 271], "coordin": 222, "duplic": [222, 263, 271], "y_j": 222, "ell_j": 222, "substack": 222, "x_m": [222, 233], "lagrange_polynomi": 222, "q_p": 224, "begin": 224, "_p": 224, "q_7": 224, "_7": 224, "gfprimdf": 225, "doesn": [225, 263], "spot": 225, "pleas": [225, 267], "submit": 225, "lin": 225, "costello": 225, "control": 225, "a000043": 226, "2000": [226, 227], "521": 226, "607": 226, "1279": 226, "merseen": 226, "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087": [226, 227], "a000668": 227, "8191": 227, "131071": 227, "524287": 227, "2305843009213693951": 227, "618970019642690137449562111": 227, "162259276829213363391578010288127": 227, "170141183460469231731687303715884105727": 227, "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151": 227, "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127": 227, "strong": 228, "declar": 228, "much": [228, 271], "dartmouth": 228, "carlp": 228, "paper25": 228, "strong_liar": 228, "assert": 228, "6852976918500265458318414454675831645298": 229, "6852976918500265458318414454675831645343": 229, "jk": 230, "potenti": 231, "b_2": 232, "p_": 232, "chosen": [232, 276], "gg": 232, "pq": 232, "1039": 232, "1458757": 232, "1326001": 232, "_prime": 232, "1177": 232, "1174": 232, "1175": [232, 268], "1178": 232, "1179": 232, "secondari": 232, "1180": 232, "1934313240757": 232, "2133861346249": 232, "5471": 232, "257107": 232, "1517": 232, "offset": 233, "seek": 233, "x_1": 233, "x_": 233, "unknown": 233, "2m": 233, "accomplish": 233, "look": 233, "especi": [233, 258, 271], "good": 233, "503": 233, "10007": 233, "1000003": 233, "rel": 233, "1182640843": 233, "1716279751": 233, "6298891201241929548477199440981228280038": 234, "6298891201241929548477199440981228279991": 234, "empti": [235, 253], "siev": 235, "eratosthen": 235, "a000040": 235, "gi": 237, "sometim": [238, 277], "five": 239, "0x7fec2620afc0": 239, "shoup": [240, 241], "am": [240, 241], "mcom": [240, 241], "1992": [240, 241], "s0025": [240, 241], "5718": [240, 241], "1106981": [240, 241], "hua": [240, 241], "On": [240, 241], "bull": [240, 241], "1942": [240, 241, 268], "s0002": [240, 241], "9904": [240, 241], "07767": [240, 241], "numbertheori": [240, 241], "mp313": [240, 241], "lectur": [240, 241], "lecture7": [240, 241], "page1": [240, 241], "1000000000000000035000060": 240, "1000000000000000035000054": 240, "55068497457116354251891": 240, "0x7fec2620b480": 241, "insid": [242, 258, 271], "randomli": 244, "prime_number_theorem": 244, "327845897586213436751081882871255331286648902836386839087617368608439574698192016043769533823474001379935585889197488144338014865193967937011638431094821943416361149113909692569658970713864593781874423564706915495970135894084612689487074397782022398597547611189482697523681694691585678818112329605903872356773": 244, "openssl": 244, "pylint": [244, 262, 263], "disabl": [244, 263, 271], "1d2de38de88c67e1eafdeeae77c40b8709ed9c275522c6d5578976b1abcbe7e0f8c6de1271eec6eb3827649164189788f9f3a622aea5f4039761ec708b5841de88566d9b5baf49ba92dce5a300297a9e0e890e4103ed2ad4b5e0553ce56e8c34758cd45900125dba1553ae73aa0cbd6018a2a8713d46e475bf058d1aaa52ef1a5": 244, "n_r": 247, "15013": 247, "500": [247, 274], "1696469": 247, "recurs": [248, 251], "mix": [248, 251], "match": [248, 251], "previous": [248, 250, 252, 271], "coercion": [248, 250, 252], "width": [249, 258, 271], "variabl": 250, "decreas": 250, "165": [253, 254, 268], "176": [253, 254, 271], "nearli": [254, 260, 266], "univers": 254, "unari": 254, "variou": [254, 256, 263, 267, 271, 273, 274], "enabl": [254, 271, 273], "expand": [254, 260], "detail": [254, 258, 259, 260, 266, 271, 276, 277], "88": [254, 256, 268, 269, 271, 276], "essenti": [254, 260], "how": [254, 260, 263, 264, 273], "66": [254, 256, 260, 268, 276], "132": [254, 255, 268], "154": 254, "across": [254, 274], "target": [254, 271], "axi": 254, "231": [254, 255, 256, 268, 272], "place": [254, 256], "negat": 254, "244": 254, "245": [254, 268], "246": 254, "247": 254, "248": 254, "249": 254, "250": [254, 268], "251": 254, "252": 254, "253": 254, "254": 254, "258": 254, "259": 254, "260": [254, 268], "261": [254, 272], "occur": 254, "262": 254, "263": [254, 268, 271], "264": 254, "265": 254, "7952": 254, "12470": 254, "8601": 254, "11055": 254, "12691": 254, "9895": 254, "266": 254, "9387": 254, "10789": 254, "14695": 254, "13079": 254, "14025": 254, "5694": 254, "267": [254, 268], "268": [254, 259], "269": 254, "270": [254, 268, 271], "271": [254, 268], "5\u03b1": 254, "6\u03b1": 254, "272": 254, "274": [254, 268], "275": 254, "276": 254, "277": [254, 268], "11363": 254, "2127": 254, "15189": 254, "5863": 254, "1240": 254, "278": 254, "7664": 254, "14905": 254, "15266": 254, "13358": 254, "9822": 254, "16312": 254, "279": 254, "281": [254, 256, 268, 271], "282": [254, 268], "283": [254, 271], "284": [254, 268], "285": [254, 271], "286": 254, "287": 254, "288": 254, "289": [254, 271], "290": [254, 268], "291": 254, "292": 254, "293": 254, "294": 254, "295": [254, 268, 271], "296": [254, 271], "297": 254, "nativ": [254, 256, 267, 269, 270, 271], "298": 254, "299": [254, 271], "300": [254, 271, 274], "301": 254, "302": 254, "303": 254, "304": 254, "305": [254, 268], "306": [254, 271], "307": [254, 268], "308": 254, "309": [254, 268, 271], "310": [254, 271], "311": [254, 268], "312": [254, 271], "313": [254, 268, 271], "314": 254, "315": 254, "316": 254, "317": [254, 271], "318": 254, "319": 254, "320": [254, 271], "321": [254, 268], "322": [254, 268, 271], "323": 254, "324": 254, "325": [254, 271], "326": [254, 268], "327": [254, 268], "328": [254, 268, 271], "329": [254, 268], "330": 254, "331": [254, 268], "332": 254, "333": [254, 271], "334": [254, 268], "335": [254, 271], "336": [254, 271], "337": [254, 271], "338": 254, "339": [254, 271], "340": [254, 268], "341": 254, "a_inv": 254, "342": 254, "futur": [255, 271], "main": 255, "ringarrai": [255, 271], "runtim": 255, "furthermor": 255, "know": 255, "skip": 255, "verif": [255, 270, 271], "twice": 255, "onc": [255, 257, 266, 269, 270, 271, 274], "subsequ": [255, 271], "extrem": 255, "inexpens": 255, "isomorph": 255, "document": [255, 272, 273, 274], "access": [255, 258, 261, 263, 274], "sever": [255, 256, 259, 260], "pascalcas": [255, 259], "snake_cas": [255, 259], "act": 255, "we": [256, 257, 266, 271, 276, 277], "work": [256, 260, 263, 266, 267, 271], "rather": [256, 257, 269, 270, 271], "opposit": 256, "x_np": 256, "finish": [256, 266], "back": [256, 266, 271], "assist": [256, 266], "whatev": 256, "fail": [256, 271], "dure": [256, 257, 258], "abl": 256, "medium": 256, "unless": 256, "otherwis": [256, 271], "388": 256, "798": 256, "176813246175426449452924947295": 256, "348787289171461162788321934676": 256, "277585428965834626454401710535": 256, "1127025468332760795261411481668": 256, "400": [256, 271, 274], "astyp": [256, 270], "expect": 256, "reshap": 256, "subok": [256, 271], "Be": 256, "mind": 256, "custom": [257, 272], "numba": [257, 267, 271, 274], "written": [257, 267], "intercept": 257, "cach": [257, 271], "primari": [257, 264], "util": [257, 271], "built": [257, 261, 271, 274], "creation": [257, 258, 266, 267, 271, 274, 276, 277], "map": 257, "simplifi": [257, 271], "becom": [257, 258, 277], "limit": 257, "usual": 257, "concern": 257, "intermedi": 257, "frompyfunc": 257, "lack": 257, "come": [257, 268], "penalti": 257, "intention": 257, "immedi": [257, 262], "demand": 257, "invoc": [257, 271], "Their": 258, "proper": 258, "compact": [258, 271], "old": 258, "signific": [258, 271], "natur": [258, 266, 277], "clutter": 258, "clearli": 258, "problemat": 258, "occupi": 258, "lot": [258, 271], "quit": 258, "difficult": [258, 277], "read": 258, "readabl": [258, 276, 277], "improv": [258, 271, 272, 273, 274], "linewidth": 258, "179x": [259, 271], "180x": 259, "19x": 259, "simpl": [259, 270, 277], "89x": 259, "125x": 259, "41x": 259, "0xf7": 259, "0x00": 259, "0xa2": 259, "0x75": 259, "treat": 260, "vice": 260, "versa": 260, "floor": [260, 271], "fraction": 260, "keep": [260, 270], "quotient": [260, 276], "overload": [260, 271], "sphinx": [261, 271], "immateri": [261, 271], "theme": 261, "txt": [261, 268], "myst": 261, "parser": 261, "git": [261, 262, 268], "dollar": 261, "ipykernel": 261, "switch": [261, 276, 277], "pip": [261, 262, 263, 264, 266, 268], "command": 261, "dirhtml": 261, "home": 261, "directori": [261, 262, 271], "webpag": 261, "local": [261, 263, 264], "webserv": 261, "modul": 261, "server": 261, "8080": 261, "web": 261, "browser": 261, "localhost": 261, "latest": [262, 266, 272], "releas": [262, 271, 272, 273, 274], "master": [262, 268], "mhostett": [262, 267, 271, 272, 273, 274], "branch": [262, 263, 268], "activ": 262, "develop": [262, 263, 264, 267, 268], "benefici": 262, "fashion": 262, "seen": [262, 271], "upon": 262, "clone": 262, "repo": [262, 268], "wherev": [262, 271], "like": [262, 266, 267, 268, 271, 276], "flag": 262, "lint": 262, "pyproject": [262, 263, 264, 271], "toml": [262, 263, 264, 271], "project": 262, "black": [262, 263, 274], "pytest": [262, 264, 268], "cov": [262, 268], "xdist": 262, "benchmark": [262, 271], "pdfminer": 262, "six": 262, "extra": [262, 268], "static": 263, "analysi": 263, "your": [263, 264, 267, 268], "dev": [263, 264, 268, 269, 270, 271, 272, 274], "nuisanc": 263, "warn": [263, 268, 274], "ignor": [263, 277], "tool": [263, 264], "path": 263, "src": [263, 271], "_version": 263, "callabl": 263, "understand": 263, "metaclass": [263, 271], "alarm": 263, "fixm": 263, "invalid": 263, "miss": 263, "docstr": [263, 271], "protect": 263, "ancestor": 263, "attribut": 263, "unneed": 263, "exclud": 263, "quot": 263, "express": [263, 271], "reason": 263, "isort": [263, 274], "profil": 263, "vscode": [263, 264], "json": [263, 264, 268], "edit": 263, "ini_opt": 264, "minvers": 264, "addopt": 264, "showloc": 264, "testpath": 264, "execut": 264, "test_math": 264, "test_gcd": 264, "integr": [264, 267], "infrastructur": 264, "debug": 264, "parti": 264, "pkl": 264, "folder": [264, 268, 271], "script": [264, 271], "generate_int_test_vector": 264, "generate_field_test_vector": 264, "sudo": 264, "apt": 264, "sagemath": 264, "re": [264, 271], "easi": 264, "individu": 264, "guid": 266, "intend": [266, 267], "basic": 266, "usag": [266, 271, 273], "pypi": [266, 271, 272], "__version__": 266, "dev2": 266, "g54e385fc": 266, "elsewher": 266, "whichev": 266, "tradit": 266, "preform": 266, "complic": 266, "array_lik": 267, "mimic": [267, 271], "signatur": [267, 274], "intern": [267, 270], "replac": [267, 271, 273], "vulner": [267, 271], "channel": 267, "attack": 267, "secur": 267, "research": 267, "engin": 267, "cryptanalysi": 267, "experiment": 267, "educ": 267, "seamless": 267, "accompani": 267, "ellipt": 267, "curv": 267, "gpu": [267, 271], "heavili": 267, "reli": 267, "llvm": 267, "optim": [267, 269, 272, 274], "wolfram": [267, 271], "sage": 267, "sympi": 267, "octav": 267, "mention": [267, 276, 277], "thank": 267, "cite": 267, "recommend": 267, "bibtex": 267, "softwar": [267, 271], "hostetter_galois_2020": 267, "titl": 267, "author": 267, "hostett": [267, 271, 272, 273, 274], "matt": [267, 271, 272, 273, 274], "month": 267, "year": 267, "2020": 267, "url": [267, 271], "apa": 267, "test_field_arithmet": 268, "advis": 268, "stddev": 268, "median": 268, "session": 268, "platform": 268, "linux": 268, "pluggi": 268, "timer": 268, "perf_count": 268, "disable_gc": 268, "min_round": 268, "min_tim": 268, "000005": 268, "max_tim": 268, "calibration_precis": 268, "warmup": 268, "warmup_iter": 268, "100000": 268, "rootdir": 268, "mnt": 268, "matth": 268, "inifil": 268, "setup": 268, "cfg": 268, "plugin": 268, "mock": 268, "typeguard": 268, "anyio": 268, "collect": 268, "item": 268, "100_000": [268, 274], "test_add": 268, "3810": 268, "3280": 268, "9455": 268, "4959": 268, "07": [268, 270], "3620": 268, "test_additive_invers": 268, "5850": 268, "5360": 268, "1445": 268, "9249": 268, "2670": 268, "test_divid": 268, "0870": 268, "0680": 268, "6357": 268, "9537": 268, "4920": 268, "test_multiplicative_invers": 268, "4410": 268, "0050": 268, "6590": 268, "8467": 268, "4670": 268, "test_multipli": 268, "0400": 268, "4400": 268, "3296": 268, "1267": 268, "9010": 268, "test_pow": 268, "2410": 268, "06": [268, 274], "2870": 268, "8103": 268, "4850": 268, "2860": 268, "test_scalar_multipli": 268, "543": 268, "3970": 268, "00": 268, "714": 268, "562": 268, "2968": 268, "4125": 268, "1370": 268, "test_subtract": 268, "3110": 268, "8710": 268, "2938": 268, "4038": 268, "2520": 268, "2620": 268, "9984": 268, "1680": 268, "7530": 268, "0860": 268, "9070": 268, "7403": 268, "0927": 268, "0520": 268, "351": 268, "6220": 268, "09": 268, "5920": 268, "4510": 268, "3240": 268, "1620": 268, "9590": 268, "350": [268, 271], "8016": 268, "05": [268, 274], "3332": 268, "1050": 268, "1090": 268, "5620": 268, "1805": 268, "9767": 268, "6600": 268, "7210": 268, "520": 268, "5480": 268, "349": 268, "02": 268, "3962": 268, "6105": 268, "544": 268, "0880": 268, "1140": 268, "575": 268, "6227": 268, "0059": 268, "4830": 268, "6160": 268, "1760": 268, "3242": 268, "6562": 268, "8905": 268, "0580": 268, "393": [268, 271], "6670": 268, "7954": 268, "6945": 268, "4630": 268, "9080": 268, "6380": 268, "0218": 268, "7213": 268, "6330": 268, "7890": 268, "8050": 268, "1431": 268, "6688": 268, "0210": 268, "8140": 268, "348": 268, "4620": 268, "6663": 268, "8113": 268, "5820": 268, "475": 268, "2490": 268, "4317": 268, "6557": 268, "2370": 268, "6030": 268, "389": [268, 271], "2180": 268, "9333": 268, "9217": 268, "1145": 268, "539": 268, "7710": 268, "973": 268, "1410": 268, "573": 268, "4538": 268, "0047": 268, "557": 268, "7030": 268, "3500": 268, "0450": 268, "6062": 268, "3127": 268, "1270": 268, "6110": 268, "1990": 268, "4288": 268, "8745": 268, "6750": 268, "7150": 268, "0465": 268, "2959": 268, "3070": 268, "4310": 268, "971": 268, "367": [268, 271], "6440": 268, "0968": 268, "831": 268, "5738": 268, "354": [268, 271], "6500": 268, "933": 268, "842": 268, "1600": 268, "865": 268, "404": [268, 271], "4870": 268, "1417": 268, "755": 268, "529": 268, "9702": 268, "015": 268, "3740": 268, "839": 268, "079": 268, "0300": 268, "0780": 268, "098": 268, "1473": 268, "6741": 268, "092": 268, "5140": 268, "832": 268, "8340": 268, "938": 268, "7640": 268, "942": 268, "1951": 268, "806": 268, "9381": 268, "928": 268, "9640": 268, "903": 268, "883": 268, "2930": 268, "1310": 268, "3991": 268, "9582": 268, "912": 268, "6210": 268, "7780": 268, "7528": 268, "2536": 268, "4330": 268, "0900": 268, "5990": 268, "8739": 268, "6347": 268, "1720": 268, "3340": 268, "1649": 268, "1860": 268, "8860": 268, "6730": 268, "6490": 268, "7595": 268, "0094": 268, "9500": 268, "3150": 268, "4480": 268, "0589": 268, "9483": 268, "4220": 268, "3430": 268, "2580": 268, "8079": 268, "1740": 268, "7910": 268, "401": 268, "3410": 268, "8168": 268, "4759": 268, "8730": 268, "850": 268, "2810": 268, "3010": 268, "884": 268, "6499": 268, "6705": 268, "876": 268, "5800": 268, "5460": 268, "2685": 268, "4904": 268, "8610": 268, "4770": 268, "358": 268, "2300": 268, "4561": 268, "1327": 268, "4100": 268, "6980": 268, "6550": 268, "9128": 268, "6890": 268, "3460": 268, "7130": 268, "5486": 268, "5184": 268, "1795": 268, "4600": 268, "08": 268, "2010": 268, "5927": 268, "5185": 268, "2130": 268, "1690": 268, "3098": 268, "7315": 268, "361": [268, 271], "5260": 268, "447": 268, "0060": 268, "385": [268, 271], "7585": 268, "6975": 268, "375": 268, "4475": 268, "756": 268, "014": 268, "792": 268, "1778": 268, "3465": 268, "786": 268, "1765": 268, "383": [268, 271], "7790": 268, "461": 268, "3640": 268, "411": 268, "7450": 268, "7056": 268, "403": 268, "7260": 268, "10_000": [268, 271, 272], "9310": 268, "635": 268, "8940": 268, "936": 268, "2487": 268, "1260": 268, "915": 268, "945": 268, "0700": 268, "632": 268, "3527": 268, "9239": 268, "01": 268, "578": 268, "4425": 268, "022": 268, "8560": 268, "7516": 268, "808": 268, "8230": 268, "481": [268, 274], "3870": 268, "011": 268, "817": 268, "897": 268, "2702": 268, "471": [268, 274], "2330": 268, "992": 268, "5040": 268, "847": 268, "6130": 268, "894": 268, "3920": 268, "872": 268, "3102": 268, "8231": 268, "2980": 268, "3730": 268, "040": 268, "5270": 268, "650": 268, "6814": 268, "5041": 268, "693": 268, "8380": 268, "049": 268, "1360": 268, "4565": 268, "6458": 268, "1895": 268, "4720": 268, "075": 268, "8030": 268, "944": 268, "4420": 268, "1406": 268, "5830": 268, "legend": 268, "outlier": 268, "deviat": 268, "iqr": 268, "interquartil": 268, "1st": 268, "quartil": 268, "3rd": 268, "op": 268, "per": [268, 269, 270, 271, 272, 274], "impact": 268, "0001_master": 268, "checkout": 268, "0001_branch": 268, "modular": [269, 271, 274, 277], "involv": 269, "convolut": 269, "make": [269, 271, 275], "fair": 269, "fight": 269, "million": [269, 270], "10_000_000": [269, 270], "timeit": [269, 270, 271, 272, 274], "std": [269, 270, 271, 272, 274], "incorrect": 269, "aa": [269, 270], "bb": [269, 270], "pp": 269, "747": 269, "\u00b5": [269, 270, 271, 272, 274], "1174047800": 269, "3249326965": 269, "3196014003": 269, "3195457330": 269, "100242821": 269, "338589759": 269, "386": 269, "isn": 269, "718": 269, "definit": 269, "bla": [269, 270], "lapack": [269, 270], "parallel": [269, 274], "hardwar": 269, "acceler": 269, "4203877556": 269, "3977035749": 269, "2623937858": 269, "3721257849": 269, "4250999056": 269, "4026271867": 269, "3120760606": 269, "1017695431": 269, "1111117124": 269, "1638387264": 269, "2988805996": 269, "1734614583": 269, "2508826906": 269, "2800993411": 269, "1720697782": 269, "3858180318": 269, "2521070820": 269, "3906771227": 269, "624580545": 269, "984724090": 269, "3969931498": 269, "1692192269": 269, "473079794": 269, "1029376699": 269, "1232183301": 269, "209395954": 269, "2659712274": 269, "2967695343": 269, "2747874320": 269, "1249453570": 269, "3938433735": 269, "828783569": 269, "3286222384": 269, "3669775257": 269, "33626526": 269, "4278384359": 269, "703": 269, "000": [269, 270, 271, 274], "xy": 270, "2097169": 270, "1879104": 270, "1566761": 270, "967164": 270, "744769": 270, "975853": 270, "1142138": 270, "due": [270, 271], "don": 270, "1403108": 270, "100593": 270, "595358": 270, "852783": 270, "1035698": 270, "1207498": 270, "989189": 270, "390": 270, "absolut": 270, "overflow": [270, 271, 274], "prevent": 270, "whenev": 270, "1147163": 270, "59466": 270, "1841183": 270, "667877": 270, "2084618": 270, "799166": 270, "306714": 270, "1380503": 270, "810935": 270, "1932687": 270, "1690697": 270, "329837": 270, "325274": 270, "575543": 270, "1327001": 270, "167724": 270, "422518": 270, "696986": 270, "862992": 270, "1143160": 270, "588384": 270, "668891": 270, "1285421": 270, "1196448": 270, "1026856": 270, "1413416": 270, "1844802": 270, "38844": 270, "1643604": 270, "10409": 270, "401717": 270, "329673": 270, "860449": 270, "1551173": 270, "1766877": 270, "986430": 270, "708": 270, "slightli": 270, "overhead": 270, "682": [270, 271], "renam": [271, 273], "gfarrai": 271, "chinese_remainder_theorem": 271, "bug": [271, 274, 275], "baalateja": 271, "kataru": 271, "bk": 271, "poly_exp_mod": 271, "poly_pow": 271, "is_prime_fermat": 271, "is_prime_miller_rabin": 271, "massiv": 271, "enhanc": 271, "convolv": 271, "oaklei": 271, "rfc": 271, "2409": 271, "restructur": 271, "is_group": 271, "is_field": 271, "poly_factor": 271, "vdot": 271, "poly_gcd": 271, "june": 271, "fieldmeta": 271, "fieldclass": 271, "remov": [271, 272, 273], "better": 271, "consolid": 271, "verify_irreduc": 271, "verify_primit": 271, "abil": [271, 272, 274, 276, 277], "ipython": 271, "tab": [271, 276, 277], "cleanup": 271, "tutori": [271, 276, 277], "convers": 271, "minor": [271, 275], "dominik": 271, "wernberg": 271, "werni2a": 271, "juli": 271, "prime_factor": 271, "poly_egcd": 271, "euler_toti": 271, "clean": 271, "dir": 271, "public": 271, "shorten": 271, "structur": 271, "hierarchi": 271, "august": [271, 272], "unnecessari": [271, 276], "log_naiv": 271, "might": 271, "overrid": 271, "coverag": 271, "though": 271, "bch_valid_cod": [271, 273], "repetit": 271, "weren": 271, "move": 271, "parit": 271, "pin": 271, "septemb": [271, 272], "render": 271, "correctli": 271, "id": 271, "decemb": [271, 274], "style": 271, "randint": 271, "offici": 271, "major": [271, 272, 275], "syntax": 271, "bump": 271, "iy\u00e1n": [271, 274], "m\u00e9ndez": [271, 274], "veiga": [271, 274], "iyanmv": [271, 274], "januari": 271, "2022": [271, 272, 273, 274], "hint": 271, "februari": [271, 274], "refactor": [271, 273], "lup_decompos": 271, "is_quadratic_residu": 271, "aren": 271, "quadratic_residu": 271, "quadratic_non_residu": 271, "co": 271, "march": 271, "redefin": 271, "differenti": 271, "wasn": 271, "memoiz": [271, 274], "routin": [271, 272], "cpu": [271, 274], "675": 271, "sy": [271, 274], "total": [271, 274], "wall": [271, 274], "741": 271, "0o13": 271, "0xb": 271, "made": 271, "longer": [271, 274], "needlessli": 271, "overhaul": 271, "websit": 271, "immut": 271, "actual": 271, "obtain": 271, "answer": [271, 276, 277], "binarypoli": 271, "densepoli": 271, "sparsepoli": 271, "redund": 271, "03": 271, "nest": 271, "436": [271, 273], "910": 271, "900": 271, "242x": 271, "32x": 271, "230x": 271, "159x": 271, "101x": 271, "68x": 271, "442": [271, 274], "439": 271, "april": 271, "sunset": 271, "__future__": 271, "annot": [271, 272], "That": 271, "alias": 271, "subpackag": 271, "inabl": 271, "monkei": 271, "patch": [271, 275], "343": 271, "anywher": 271, "coercibl": 271, "throughout": 271, "simpler": 271, "clear": 271, "695": 271, "clariti": 271, "broken": [271, 277], "boost": 271, "722": 271, "574": 271, "527": 271, "690": 271, "concis": 271, "descript": 271, "362": 271, "wide": 271, "363": 271, "polymorph": 271, "believ": 271, "introduc": [271, 275], "occasion": [271, 274], "erron": 271, "360": 271, "upgrad": 271, "cve": 271, "34141": 271, "41496": 271, "41495": 271, "366": 271, "373": 271, "376": 271, "377": 271, "rework": 271, "apigen": 271, "370": 271, "readthedoc": 271, "languag": 271, "seem": 271, "connot": 271, "hopefulli": 271, "392": 271, "complex": 271, "brute": 271, "forc": 271, "1650": 271, "pohlig": 271, "hellman": 271, "lg": 271, "387": 271, "491954233": 271, "14011": 271, "itoh": 271, "tsujii": 271, "littl": [271, 277], "646": 271, "834": 271, "479": 271, "pickl": 271, "fec": [271, 273], "397": 271, "sourc": 271, "metadata": 272, "414": 272, "409": [272, 274], "2218840874040723579228056294021": 272, "deploi": 272, "408": 272, "novemb": [272, 273], "ineffici": 272, "429": 272, "13546990": 272, "14653018": 272, "21619804": 272, "15507037": 272, "24669161": 272, "19116362": 272, "23979074": 272, "432": 272, "13693": 272, "426": 272, "modern": 272, "abbrevi": 272, "notat": 272, "418": 272, "appropri": 272, "420": 272, "424": 272, "430": 272, "413": 273, "435": 273, "ari": 273, "parity_onli": 273, "generator_to_parity_check_matrix": 273, "parity_check_to_generator_matrix": 273, "poly_to_generator_matrix": 273, "roots_to_parity_check_matrix": 273, "display_mod": 273, "bool_": 273, "437": 273, "publish": 273, "doc": 273, "441": 274, "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512": 274, "core": 274, "440": 274, "664": 274, "776": 274, "bitwise_xor": 274, "infinit": 274, "450": 274, "2400610585866217": 274, "446": 274, "449": 274, "pivi": 274, "452": 274, "took": 274, "forev": 274, "641": 274, "274177": 274, "6700417": 274, "67280421310721": 274, "59649589127497217": 274, "5704689200685129054721": 274, "454": 274, "2013": 274, "2018": 274, "2023": 274, "463": 274, "462": 274, "1001": 274, "745": 274, "470": 274, "469": 274, "415": 274, "477": 274, "mypi": 274, "checker": 274, "concurr": 274, "484": 274, "octob": 274, "507": 274, "rare": 274, "488": 274, "resolv": 274, "deprec": 274, "492": 274, "lasagnen": 274, "semant": 275, "featur": 275, "guarante": 275, "thought": 275, "prove": [276, 277], "mostli": 276, "gf9": 276, "suggest": [276, 277], "compactli": 276, "retriev": [276, 277], "inform": 276, "analogu": 276, "mathemat": [276, 277], "speak": [276, 277], "gf3": 276, "a_poli": 276, "b_poli": 276, "nonetheless": [276, 277], "convinc": [276, 277], "yourself": [276, 277], "reduct": 276, "reformul": [276, 277], "onto": 276, "let": [276, 277], "earlier": [276, 277], "learn": [276, 277], "b_inv_poli": 276, "examin": [276, 277], "honor": 277, "father": 277, "theori": 277, "ask": 277, "gauss": 277, "publicli": 277, "give": 277, "opinion": 277, "truth": 277, "hope": 277, "who": 277, "advantag": 277, "deciph": 277, "mess": 277, "1832": 277, "dai": 277, "hi": 277, "death": 277, "categori": 277, "focu": 277, "gf7": 277, "a_int": 277, "b_int": 277, "similarli": 277, "euclid": 277, "b\u00e9zout": 277, "yt": 277, "b_inv_int": 277}, "objects": {"": [[0, 0, 0, 1, "galois", ""]], "galois": [[1, 1, 1, "", "Array", "An abstract ndarray subclass over a Galois field or Galois ring."], [22, 1, 1, "", "BCH", "A general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [45, 1, 1, "", "FLFSR", "A Fibonacci linear-feedback shift register (LFSR)."], [60, 5, 1, "", "Field", "Alias of GF()."], [61, 1, 1, "", "FieldArray", "An abstract ndarray subclass over $mathrm{GF}(p^m)$."], [115, 5, 1, "", "GF", "Creates a FieldArray subclass for $mathrm{GF}(p^m)$."], [116, 1, 1, "", "GF2", "A FieldArray subclass over $mathrm{GF}(2)$."], [117, 1, 1, "", "GLFSR", "A Galois linear-feedback shift register (LFSR)."], [132, 1, 1, "", "Poly", "A univariate polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [168, 1, 1, "", "ReedSolomon", "A general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [190, 5, 1, "", "are_coprime", "Determines if the arguments are pairwise coprime."], [191, 5, 1, "", "berlekamp_massey", "Finds the minimal polynomial $c(x)$ that produces the linear recurrent sequence $y$."], [192, 5, 1, "", "carmichael_lambda", "Finds the smallest positive integer $m$ such that $a^m equiv 1(textrm{mod}n)$ for every integer $a$ in $[1, n)$ that is coprime to $n$."], [193, 5, 1, "", "conway_poly", "Returns the Conway polynomial $C_{p,m}(x)$ over $mathrm{GF}(p)$ with degree $m$."], [194, 5, 1, "", "crt", "Solves the simultaneous system of congruences for $x$."], [195, 5, 1, "", "divisor_sigma", "Returns the sum of $k$-th powers of the positive divisors of $n$."], [196, 5, 1, "", "divisors", "Computes all positive integer divisors $d$ of the integer $n$ such that $d|n$."], [197, 5, 1, "", "egcd", "Finds the multiplicands of $a$ and $b$ such that $a s + b t = mathrm{gcd}(a, b)$."], [198, 5, 1, "", "euler_phi", "Counts the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [199, 5, 1, "", "factors", "Computes the prime factors of a positive integer or the irreducible factors of a non-constant, monic polynomial."], [200, 5, 1, "", "fermat_primality_test", "Determines if $n$ is composite using Fermat's primality test."], [201, 5, 1, "", "gcd", "Finds the greatest common divisor of $a$ and $b$."], [202, 5, 1, "", "get_printoptions", "Returns the current print options for the package. This function is the galois equivalent of numpy.get_printoptions()."], [203, 5, 1, "", "ilog", "Computes $x = lfloortextrm{log}_b(n)rfloor$ such that $b^x le n < b^{x + 1}$."], [204, 5, 1, "", "intt", "Computes the Inverse Number-Theoretic Transform (INTT) of $X$."], [205, 5, 1, "", "iroot", "Computes $x = lfloor n^{frac{1}{k}} rfloor$ such that $x^k le n < (x + 1)^k$."], [206, 5, 1, "", "irreducible_poly", "Returns a monic irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [207, 5, 1, "", "irreducible_polys", "Iterates through all monic irreducible polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [208, 5, 1, "", "is_composite", "Determines if $n$ is composite."], [209, 5, 1, "", "is_cyclic", "Determines whether the multiplicative group $(mathbb{Z}/nmathbb{Z}){^times}$ is cyclic."], [210, 5, 1, "", "is_perfect_power", "Determines if $n$ is a perfect power $n = c^e$ with $e > 1$."], [211, 5, 1, "", "is_powersmooth", "Determines if the integer $n$ is $B$-powersmooth."], [212, 5, 1, "", "is_prime", "Determines if $n$ is prime."], [213, 5, 1, "", "is_prime_power", "Determines if $n$ is a prime power $n = p^k$ for prime $p$ and $k ge 1$."], [214, 5, 1, "", "is_primitive_element", "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)$."], [215, 5, 1, "", "is_primitive_root", "Determines if $g$ is a primitive root modulo $n$."], [216, 5, 1, "", "is_smooth", "Determines if the integer $n$ is $B$-smooth."], [217, 5, 1, "", "is_square_free", "Determines if an integer or polynomial is square-free."], [218, 5, 1, "", "isqrt", "Computes $x = lfloorsqrt{n}rfloor$ such that $x^2 le n < (x + 1)^2$."], [219, 5, 1, "", "jacobi_symbol", "Computes the Jacobi symbol $(frac{a}{n})$."], [220, 5, 1, "", "kronecker_symbol", "Computes the Kronecker symbol $(frac{a}{n})$. The Kronecker symbol extends the Jacobi symbol for all $n$."], [221, 5, 1, "", "kth_prime", "Returns the $k$-th prime, where $k = {1,2,3,4,dots}$ for primes $p = {2,3,5,7,dots}$."], [222, 5, 1, "", "lagrange_poly", "Computes the Lagrange interpolating polynomial $L(x)$ such that $L(x_i) = y_i$."], [223, 5, 1, "", "lcm", "Computes the least common multiple of the arguments."], [224, 5, 1, "", "legendre_symbol", "Computes the Legendre symbol $(frac{a}{p})$."], [225, 5, 1, "", "matlab_primitive_poly", "Returns Matlab's default primitive polynomial $f(x)$ over $mathrm{GF}(p)$ with degree $m$."], [226, 5, 1, "", "mersenne_exponents", "Returns all known Mersenne exponents $e$ for $e le n$."], [227, 5, 1, "", "mersenne_primes", "Returns all known Mersenne primes $p$ for $p le 2^n - 1$."], [228, 5, 1, "", "miller_rabin_primality_test", "Determines if $n$ is composite using the Miller-Rabin primality test."], [229, 5, 1, "", "next_prime", "Returns the nearest prime $p$, such that $p > n$."], [230, 5, 1, "", "ntt", "Computes the Number-Theoretic Transform (NTT) of $x$."], [231, 5, 1, "", "perfect_power", "Returns the integer base $c$ and exponent $e$ of $n = c^e$. If $n$ is not a perfect power, then $c = n$ and $e = 1$."], [232, 5, 1, "", "pollard_p1", "Attempts to find a non-trivial factor of $n$ if it has a prime factor $p$ such that $p-1$ is $B$-smooth."], [233, 5, 1, "", "pollard_rho", "Attempts to find a non-trivial factor of $n$ using cycle detection."], [234, 5, 1, "", "prev_prime", "Returns the nearest prime $p$, such that $p le n$."], [235, 5, 1, "", "primes", "Returns all primes $p$ for $p le n$."], [236, 5, 1, "", "primitive_element", "Finds a primitive element $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [237, 5, 1, "", "primitive_elements", "Finds all primitive elements $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [238, 5, 1, "", "primitive_poly", "Returns a monic primitive polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [239, 5, 1, "", "primitive_polys", "Iterates through all monic primitive polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [240, 5, 1, "", "primitive_root", "Finds a primitive root modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [241, 5, 1, "", "primitive_roots", "Iterates through all primitive roots modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [242, 5, 1, "", "printoptions", "A context manager to temporarily modify the print options for the package. This function is the galois equivalent of numpy.printoptions()."], [243, 5, 1, "", "prod", "Computes the product of the arguments."], [244, 5, 1, "", "random_prime", "Returns a random prime $p$ with $b$ bits, such that $2^b le p < 2^{b+1}$."], [245, 5, 1, "", "set_printoptions", "Modifies the print options for the package. This function is the galois equivalent of numpy.set_printoptions()."], [246, 5, 1, "", "totatives", "Returns the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [247, 5, 1, "", "trial_division", "Finds all the prime factors $p_i^{e_i}$ of $n$ for $p_i le B$."]], "galois.Array": [[2, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [3, 2, 1, "", "Ones", "Creates an array of all ones."], [4, 2, 1, "", "Random", "Creates an array with random elements."], [5, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [6, 2, 1, "", "Zeros", "Creates an array of all zeros."], [7, 4, 1, "", "characteristic", "The characteristic $p$ of the Galois field $mathrm{GF}(p^m)$ or $p^e$ of the Galois ring $mathrm{GR}(p^e, m)$."], [8, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [9, 4, 1, "", "default_ufunc_mode", "The default compilation mode of the Galois field or Galois ring."], [10, 4, 1, "", "degree", "The degree $m$ of the Galois field $mathrm{GF}(p^m)$ or Galois ring $mathrm{GR}(p^e, m)$."], [11, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this Galois field or Galois ring."], [12, 4, 1, "", "element_repr", "The current element representation of the Galois field or Galois ring."], [13, 4, 1, "", "elements", "All elements of the Galois field or Galois ring."], [14, 4, 1, "", "irreducible_poly", "The irreducible polynomial of the Galois field or Galois ring."], [15, 4, 1, "", "name", "The name of the Galois field or Galois ring."], [16, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$ or $p^{em}$ of the Galois ring $mathrm{GR}(p^e, m)$."], [17, 4, 1, "", "primitive_element", "A primitive element of the Galois field or Galois ring."], [18, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [19, 4, 1, "", "ufunc_mode", "The current compilation mode of the Galois field or Galois ring."], [20, 4, 1, "", "ufunc_modes", "All supported compilation modes of the Galois field or Galois ring."], [21, 4, 1, "", "units", "All units of the Galois field or Galois ring."]], "galois.Array.Identity": [[2, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [2, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.Array.Ones": [[3, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [3, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.Random": [[4, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [4, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [4, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [4, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [4, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.Array.Range": [[5, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [5, 3, 2, "p-start", "start", "The starting element (inclusive)."], [5, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [5, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.Array.Zeros": [[6, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [6, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.compile": [[8, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.Array.repr": [[18, 3, 2, "p-element_repr", "element_repr", "The field element representation."]], "galois.BCH": [[23, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [24, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [25, 2, 1, "", "__init__", "Constructs a general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [26, 2, 1, "", "__repr__", "A terse representation of the BCH code."], [27, 2, 1, "", "__str__", "A formatted string with relevant properties of the BCH code."], [28, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$ in $mathrm{GF}(q^m)$."], [29, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [30, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [31, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [32, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [33, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [34, 4, 1, "", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the BCH syndrome arithmetic."], [35, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [36, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [37, 4, 1, "", "is_narrow_sense", "Indicates if the BCH code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [38, 4, 1, "", "is_primitive", "Indicates if the BCH code is primitive, meaning $n = q^m - 1$."], [39, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [40, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [41, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [42, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [43, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [44, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.BCH.__init__": [[25, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [25, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the BCH code is narrow-sense."], [25, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q^m)$."], [25, 3, 2, "p-extension_field", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the syndrome arithmetic. The default is None which corresponds to $mathrm{GF}(q^m)$ where $q^{m - 1} le n < q^m$. The default extension field will use matlab_primitive_poly(q, m) for the irreducible polynomial."], [25, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2)$."], [25, 3, 2, "p-k", "k", "The message size $k$."], [25, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q^m - 1$, the BCH code is primitive."], [25, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.BCH.decode": [[31, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [31, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [31, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.BCH.detect": [[32, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.BCH.encode": [[33, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [33, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.FLFSR": [[46, 2, 1, "", "Taps", "Constructs a Fibonacci LFSR from its taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."], [47, 2, 1, "", "__init__", "Constructs a Fibonacci LFSR from its feedback polynomial $f(x)$."], [48, 2, 1, "", "__repr__", "A terse representation of the Fibonacci LFSR."], [49, 2, 1, "", "__str__", "A formatted string of relevant properties of the Fibonacci LFSR."], [50, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [51, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [52, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [53, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [54, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [55, 2, 1, "", "reset", "Resets the Fibonacci LFSR state to the specified state."], [56, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [57, 2, 1, "", "step", "Produces the next steps output symbols."], [58, 4, 1, "", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$. The taps of the shift register define the linear recurrence relation."], [59, 2, 1, "", "to_galois_lfsr", "Converts the Fibonacci LFSR to a Galois LFSR that produces the same output."]], "galois.FLFSR.Taps": [[46, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [46, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."]], "galois.FLFSR.__init__": [[47, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [47, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.FLFSR.reset": [[55, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.FLFSR.step": [[57, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Fibonacci LFSR will step backwards."]], "galois.FieldArray": [[62, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [63, 2, 1, "", "Ones", "Creates an array of all ones."], [64, 2, 1, "", "Random", "Creates an array with random elements."], [65, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [66, 2, 1, "", "Vandermonde", "Creates an $m times n$ Vandermonde matrix of $a in mathrm{GF}(q)$."], [67, 2, 1, "", "Vector", "Converts length-$m$ vectors over the prime subfield $mathrm{GF}(p)$ to an array over $mathrm{GF}(p^m)$."], [68, 2, 1, "", "Zeros", "Creates an array of all zeros."], [69, 2, 1, "", "__init__", "Creates an array over $mathrm{GF}(p^m)$."], [70, 2, 1, "", "__repr__", "Displays the array specifying the class and finite field order."], [71, 2, 1, "", "__str__", "Displays the array without specifying the class or finite field order."], [72, 2, 1, "", "additive_order", "Computes the additive order of each element in $x$."], [73, 2, 1, "", "arithmetic_table", "Generates the specified arithmetic table for the finite field."], [74, 4, 1, "", "characteristic", "The prime characteristic $p$ of the Galois field $mathrm{GF}(p^m)$."], [75, 2, 1, "", "characteristic_poly", "Computes the characteristic polynomial of a finite field element $a$ or a square matrix $mathbf{A}$."], [76, 2, 1, "", "column_space", "Computes the column space of the matrix $mathbf{A}$."], [77, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [78, 4, 1, "", "default_ufunc_mode", "The default ufunc compilation mode for this FieldArray subclass."], [79, 4, 1, "", "degree", "The extension degree $m$ of the Galois field $mathrm{GF}(p^m)$."], [80, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this finite field."], [81, 4, 1, "", "element_repr", "The current finite field element representation."], [82, 4, 1, "", "elements", "All of the finite field's elements ${0, dots, p^m-1}$."], [83, 2, 1, "", "field_norm", "Computes the field norm $mathrm{N}_{L / K}(x)$ of the elements of $x$."], [84, 2, 1, "", "field_trace", "Computes the field trace $mathrm{Tr}_{L / K}(x)$ of the elements of $x$."], [85, 4, 1, "", "irreducible_poly", "The irreducible polynomial $f(x)$ of the Galois field $mathrm{GF}(p^m)$."], [86, 4, 1, "", "is_extension_field", "Indicates if the finite field is an extension field, having prime power order."], [87, 4, 1, "", "is_prime_field", "Indicates if the finite field is a prime field, having prime order."], [88, 4, 1, "", "is_primitive_poly", "Indicates whether the irreducible_poly is a primitive polynomial."], [89, 2, 1, "", "is_square", "Determines if the elements of $x$ are squares in the finite field."], [90, 2, 1, "", "left_null_space", "Computes the left null space of the matrix $mathbf{A}$."], [91, 2, 1, "", "log", "Computes the discrete logarithm of the array $x$ base $beta$."], [92, 2, 1, "", "lu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices."], [93, 2, 1, "", "minimal_poly", "Computes the minimal polynomial of a finite field element $a$."], [94, 2, 1, "", "multiplicative_order", "Computes the multiplicative order $textrm{ord}(x)$ of each element in $x$."], [95, 4, 1, "", "name", "The finite field's name as a string GF(p) or GF(p^m)."], [96, 4, 1, "", "non_squares", "All non-squares in the Galois field."], [97, 2, 1, "", "null_space", "Computes the null space of the matrix $mathbf{A}$."], [98, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$."], [99, 2, 1, "", "plu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices using partial pivoting."], [100, 4, 1, "", "prime_subfield", "The prime subfield $mathrm{GF}(p)$ of the extension field $mathrm{GF}(p^m)$."], [101, 4, 1, "", "primitive_element", "A primitive element $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [102, 4, 1, "", "primitive_elements", "All primitive elements $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [103, 2, 1, "", "primitive_root_of_unity", "Finds a primitive $n$-th root of unity in the finite field."], [104, 2, 1, "", "primitive_roots_of_unity", "Finds all primitive $n$-th roots of unity in the finite field."], [105, 4, 1, "", "properties", "A formatted string of relevant properties of the Galois field."], [106, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [107, 2, 1, "", "repr_table", "Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations."], [108, 2, 1, "", "row_reduce", "Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF)."], [109, 2, 1, "", "row_space", "Computes the row space of the matrix $mathbf{A}$."], [110, 4, 1, "", "squares", "All squares in the finite field."], [111, 4, 1, "", "ufunc_mode", "The current ufunc compilation mode for this FieldArray subclass."], [112, 4, 1, "", "ufunc_modes", "All supported ufunc compilation modes for this FieldArray subclass."], [113, 4, 1, "", "units", "All of the finite field's units ${1, dots, p^m-1}$."], [114, 2, 1, "", "vector", "Converts an array over $mathrm{GF}(p^m)$ to length-$m$ vectors over the prime subfield $mathrm{GF}(p)$."]], "galois.FieldArray.Identity": [[62, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [62, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.FieldArray.Ones": [[63, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [63, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.Random": [[64, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [64, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [64, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [64, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [64, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.FieldArray.Range": [[65, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [65, 3, 2, "p-start", "start", "The starting element (inclusive)."], [65, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [65, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.FieldArray.Vandermonde": [[66, 3, 2, "p-cols", "cols", "The number of columns $n$ in the Vandermonde matrix."], [66, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [66, 3, 2, "p-element", "element", "An element $a$ of $mathrm{GF}(q)$."], [66, 3, 2, "p-rows", "rows", "The number of rows $m$ in the Vandermonde matrix."]], "galois.FieldArray.Vector": [[67, 3, 2, "p-array", "array", "An array over $mathrm{GF}(p)$ with last dimension $m$. An array with shape (n1, n2, m) has output shape (n1, n2). By convention, the vectors are ordered from degree $m-1$ to degree 0."], [67, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.FieldArray.Zeros": [[68, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [68, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.__init__": [[69, 3, 2, "p-copy", "copy", "The copy keyword argument from numpy.array(). The default is True."], [69, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [69, 3, 2, "p-ndmin", "ndmin", "The ndmin keyword argument from numpy.array(). The default is 0."], [69, 3, 2, "p-order", "order", "The order keyword argument from numpy.array(). The default is \"K\"."], [69, 3, 2, "p-x", "x", "A finite field scalar or array."]], "galois.FieldArray.arithmetic_table": [[73, 3, 2, "p-operation", "operation", "The arithmetic operation."], [73, 3, 2, "p-x", "x", "Optionally specify the $x$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$."], [73, 3, 2, "p-y", "y", "Optionally specify the $y$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$ for addition, subtraction, and multiplication and ${1, dots, p^m - 1}$ for division."]], "galois.FieldArray.compile": [[77, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.FieldArray.log": [[91, 3, 2, "p-base", "base", "A primitive element or elements $beta$ of the finite field that is the base of the logarithm. The default is None which uses primitive_element."]], "galois.FieldArray.primitive_root_of_unity": [[103, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.primitive_roots_of_unity": [[104, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.repr": [[106, 3, 2, "p-element_repr", "element_repr", "The field element representation to be set."]], "galois.FieldArray.repr_table": [[107, 3, 2, "p-element", "element", "An element to use as the exponent base in the power representation. The default is None which corresponds to primitive_element."], [107, 3, 2, "p-sort", "sort", "The sorting method for the table. The default is \"power\". Sorting by \"power\" will order the rows of the table by ascending powers of element. Sorting by any of the others will order the rows in lexicographical polynomial/vector order, which is equivalent to ascending order of the integer representation."]], "galois.FieldArray.row_reduce": [[108, 3, 2, "p-eye", "eye", "The location of the identity matrix $mathbf{I}$, either on the left or the right."], [108, 3, 2, "p-ncols", "ncols", "The number of columns to perform Gaussian elimination over. The default is None which represents the number of columns of the matrix."]], "galois.FieldArray.vector": [[114, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.GF": [[115, 3, 2, "p-characteristic", "characteristic", "The characteristic $p$ of the field $mathrm{GF}(p^m)$. The characteristic must be prime."], [115, 3, 2, "p-compile", "compile", "The ufunc calculation mode. This can be modified after class construction with the compile() method. See /basic-usage/compilation-modes for a further discussion."], [115, 3, 2, "p-degree", "degree", "The degree $m$ of the field $mathrm{GF}(p^m)$. The degree must be a positive integer."], [115, 3, 2, "p-irreducible_poly", "irreducible_poly", "Optionally specify an irreducible polynomial of degree $m$ over $mathrm{GF}(p)$ that defines the finite field arithmetic. The default is None which uses the Conway polynomial $C_{p,m}$, see conway_poly()."], [115, 3, 2, "p-order", "order", "The order $p^m$ of the field $mathrm{GF}(p^m)$. The order must be a prime power."], [115, 3, 2, "p-primitive_element", "primitive_element", "Optionally specify a primitive element of the field. This value is used when building the exponential and logarithm lookup tables and as the base of numpy.log. A primitive element is a generator of the multiplicative group of the field."], [115, 3, 2, "p-repr", "repr", "The field element representation. This can be modified after class construction with the repr() method. See /basic-usage/element-representation for a further discussion."], [115, 3, 2, "p-verify", "verify", "Indicates whether to verify that the user-provided irreducible polynomial is in fact irreducible and that the user-provided primitive element is in fact a generator of the multiplicative group. The default is True."]], "galois.GLFSR": [[118, 2, 1, "", "Taps", "Constructs a Galois LFSR from its taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."], [119, 2, 1, "", "__init__", "Constructs a Galois LFSR from its feedback polynomial $f(x)$."], [120, 2, 1, "", "__repr__", "A terse representation of the Galois LFSR."], [121, 2, 1, "", "__str__", "A formatted string of relevant properties of the Galois LFSR."], [122, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [123, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [124, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [125, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [126, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [127, 2, 1, "", "reset", "Resets the Galois LFSR state to the specified state."], [128, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [129, 2, 1, "", "step", "Produces the next steps output symbols."], [130, 4, 1, "", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$. The taps of the shift register define the linear recurrence relation."], [131, 2, 1, "", "to_fibonacci_lfsr", "Converts the Galois LFSR to a Fibonacci LFSR that produces the same output."]], "galois.GLFSR.Taps": [[118, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [118, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."]], "galois.GLFSR.__init__": [[119, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [119, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.GLFSR.reset": [[127, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.GLFSR.step": [[129, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Galois LFSR will step backwards."]], "galois.Poly": [[133, 2, 1, "", "Degrees", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its non-zero degrees."], [134, 2, 1, "", "Identity", "Constructs the polynomial $f(x) = x$ over $mathrm{GF}(p^m)$."], [135, 2, 1, "", "Int", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its integer representation."], [136, 2, 1, "", "One", "Constructs the polynomial $f(x) = 1$ over $mathrm{GF}(p^m)$."], [137, 2, 1, "", "Random", "Constructs a random polynomial over $mathrm{GF}(p^m)$ with degree $d$."], [138, 2, 1, "", "Roots", "Constructs a monic polynomial over $mathrm{GF}(p^m)$ from its roots."], [139, 2, 1, "", "Str", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its string representation."], [140, 2, 1, "", "Zero", "Constructs the polynomial $f(x) = 0$ over $mathrm{GF}(p^m)$."], [141, 2, 1, "", "__call__", "Evaluates the polynomial $f(x)$ at $x_0$ or the polynomial composition $f(g(x))$."], [142, 2, 1, "", "__eq__", "Determines if two polynomials are equal."], [143, 2, 1, "", "__init__", "Creates a polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [144, 2, 1, "", "__int__", "The integer representation of the polynomial."], [145, 2, 1, "", "__len__", "Returns the length of the coefficient array, which is equivalent to Poly.degree + 1."], [146, 2, 1, "", "__repr__", "A representation of the polynomial and the finite field it's over."], [147, 2, 1, "", "__str__", "The string representation of the polynomial, without specifying the finite field it's over."], [148, 2, 1, "", "coefficients", "Returns the polynomial coefficients in the order and size specified."], [149, 4, 1, "", "coeffs", "The coefficients of the polynomial in degree-descending order."], [150, 4, 1, "", "degree", "The degree of the polynomial. The degree of a polynomial is the highest degree with a non-zero coefficient."], [151, 4, 1, "", "degrees", "An array of the polynomial degrees in descending order."], [152, 2, 1, "", "derivative", "Computes the $k$-th formal derivative $frac{d^k}{dx^k} f(x)$ of the polynomial $f(x)$."], [153, 2, 1, "", "distinct_degree_factors", "Factors the monic, square-free polynomial $f(x)$ into a product of polynomials whose irreducible factors all have the same degree."], [154, 2, 1, "", "equal_degree_factors", "Factors the monic, square-free polynomial $f(x)$ of degree $rd$ into a product of $r$ irreducible factors with degree $d$."], [155, 2, 1, "", "factors", "Computes the irreducible factors of the non-constant, monic polynomial $f(x)$."], [156, 4, 1, "", "field", "The Array subclass for the finite field the coefficients are over."], [157, 2, 1, "", "is_conway", "Checks whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is the Conway polynomial $C_{p,m}(x)$."], [158, 2, 1, "", "is_conway_consistent", "Determines whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is consistent with smaller Conway polynomials $C_{p,n}(x)$ for all $n|m$."], [159, 2, 1, "", "is_irreducible", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(p^m)$ is irreducible."], [160, 4, 1, "", "is_monic", "Returns whether the polynomial is monic, meaning its highest-degree coefficient is one."], [161, 2, 1, "", "is_primitive", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is primitive."], [162, 2, 1, "", "is_square_free", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is square-free."], [163, 4, 1, "", "nonzero_coeffs", "The non-zero coefficients of the polynomial in degree-descending order."], [164, 4, 1, "", "nonzero_degrees", "An array of the polynomial degrees that have non-zero coefficients in descending order."], [165, 2, 1, "", "reverse", "Returns the $d$-th reversal $x^d f(frac{1}{x})$ of the polynomial $f(x)$ with degree $d$."], [166, 2, 1, "", "roots", "Calculates the roots $r$ of the polynomial $f(x)$, such that $f(r) = 0$."], [167, 2, 1, "", "square_free_factors", "Factors the monic polynomial $f(x)$ into a product of square-free polynomials."]], "galois.Poly.Degrees": [[133, 3, 2, "p-coeffs", "coeffs", "The corresponding non-zero polynomial coefficients. The default is None which corresponds to all ones."], [133, 3, 2, "p-degrees", "degrees", "The polynomial degrees with non-zero coefficients."], [133, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."]], "galois.Poly.Identity": [[134, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Int": [[135, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [135, 3, 2, "p-integer", "integer", "The integer representation of the polynomial $f(x)$."]], "galois.Poly.One": [[136, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Random": [[137, 3, 2, "p-degree", "degree", "The degree of the polynomial."], [137, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [137, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."]], "galois.Poly.Roots": [[138, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [138, 3, 2, "p-multiplicities", "multiplicities", "The corresponding root multiplicities. The default is None which corresponds to all ones."], [138, 3, 2, "p-roots", "roots", "The roots of the desired polynomial."]], "galois.Poly.Str": [[139, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [139, 3, 2, "p-string", "string", "The string representation of the polynomial $f(x)$."]], "galois.Poly.Zero": [[140, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.__call__": [[141, 3, 2, "p-at", "at", "A finite field scalar or array $x_0$ to evaluate the polynomial at or the polynomial $g(x)$ to evaluate the polynomial composition $f(g(x))$."], [141, 3, 2, "p-elementwise", "elementwise", "Indicates whether to evaluate $x_0$ element-wise. The default is True. If False (only valid for square matrices), the polynomial indeterminate $x$ is exponentiated using matrix powers (repeated matrix multiplication)."], [141, 3, 2, "p-field", "field", "The Galois field to evaluate the polynomial over. The default is None which represents the polynomial's current field, i.e. field."]], "galois.Poly.__eq__": [[142, 3, 2, "p-other", "other", "The polynomial to compare against."]], "galois.Poly.__init__": [[143, 3, 2, "p-coeffs", "coeffs", "The polynomial coefficients ${a_d, a_{d-1}, dots, a_1, a_0}$."], [143, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [143, 3, 2, "p-order", "order", "The interpretation of the coefficient degrees."]], "galois.Poly.coefficients": [[148, 3, 2, "p-order", "order", "The order of the coefficient degrees, either descending (default) or ascending."], [148, 3, 2, "p-size", "size", "The fixed size of the coefficient array. Zeros will be added for higher-order terms. This value must be at least degree + 1 or a ValueError will be raised. The default is None which corresponds to degree + 1."]], "galois.Poly.derivative": [[152, 3, 2, "p-k", "k", "The number of derivatives to compute. 1 corresponds to $p'(x)$, 2 corresponds to $p''(x)$, etc. The default is 1."]], "galois.Poly.equal_degree_factors": [[154, 3, 2, "p-degree", "degree", "The degree $d$ of each irreducible factor of $f(x)$."]], "galois.Poly.is_conway": [[157, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.is_conway_consistent": [[158, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.roots": [[166, 3, 2, "p-multiplicity", "multiplicity", "Optionally return the multiplicity of each root. The default is False which only returns the unique roots."]], "galois.ReedSolomon": [[169, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [170, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [171, 2, 1, "", "__init__", "Constructs a general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [172, 2, 1, "", "__repr__", "A terse representation of the Reed-Solomon code."], [173, 2, 1, "", "__str__", "A formatted string with relevant properties of the Reed-Solomon code."], [174, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$."], [175, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [176, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [177, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [178, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [179, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [180, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [181, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [182, 4, 1, "", "is_narrow_sense", "Indicates if the Reed-Solomon code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [183, 4, 1, "", "is_primitive", "Indicates if the Reed-Solomon code is primitive, meaning $n = q - 1$."], [184, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [185, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [186, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [187, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [188, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [189, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.ReedSolomon.__init__": [[171, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [171, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the Reed-Solomon code is narrow-sense."], [171, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q)$. Reed-Solomon codes achieve the Singleton bound, so $d = n - k + 1$."], [171, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2^m)$ where $2^{m - 1} le n < 2^m$. The default field will use matlab_primitive_poly(2, m) for the irreducible polynomial."], [171, 3, 2, "p-k", "k", "The message size $k$."], [171, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q - 1$, the Reed-Solomon code is primitive."], [171, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.ReedSolomon.decode": [[177, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [177, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [177, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.ReedSolomon.detect": [[178, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.ReedSolomon.encode": [[179, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [179, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.are_coprime": [[190, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.berlekamp_massey": [[191, 3, 2, "p-output", "output", "The output object type."], [191, 3, 2, "p-sequence", "sequence", "A linear recurrent sequence $y$ in $mathrm{GF}(p^m)$."]], "galois.carmichael_lambda": [[192, 3, 2, "p-n", "n", "A positive integer."]], "galois.conway_poly": [[193, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [193, 3, 2, "p-degree", "degree", "The degree $m$ of the Conway polynomial."], [193, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.crt": [[194, 3, 2, "p-moduli", "moduli", "The integer or polynomial moduli $m_i$."], [194, 3, 2, "p-remainders", "remainders", "The integer or polynomial remainders $a_i$."]], "galois.divisor_sigma": [[195, 3, 2, "p-k", "k", "The degree of the positive divisors. The default is 1 which corresponds to $sigma_1(n)$ which is the sum of positive divisors."], [195, 3, 2, "p-n", "n", "An integer."]], "galois.divisors": [[196, 3, 2, "p-n", "n", "An integer."]], "galois.egcd": [[197, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [197, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.euler_phi": [[198, 3, 2, "p-n", "n", "A positive integer."]], "galois.factors": [[199, 3, 2, "p-value", "value", "A positive integer $n$ or a non-constant, monic polynomial $f(x)$."]], "galois.fermat_primality_test": [[200, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is None which selects a random $a$."], [200, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [200, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose a new $a$. The default is 1."]], "galois.gcd": [[201, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [201, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.ilog": [[203, 3, 2, "p-b", "b", "The logarithm base $b$, must be at least 2."], [203, 3, 2, "p-n", "n", "A positive integer."]], "galois.intt": [[204, 3, 2, "p-X", "X", "The input sequence of integers $X$."], [204, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(X)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [204, 3, 2, "p-scaled", "scaled", "Indicates to scale the INTT output by $N$. The default is True. If True, $x = mathrm{INTT}(mathrm{NTT}(x))$. If False, $Nx = mathrm{INTT}(mathrm{NTT}(x))$."], [204, 3, 2, "p-size", "size", "The size $N$ of the INTT transform, must be at least the length of $X$. The default is None which corresponds to len(X). If size is larger than the length of $X$, $X$ is zero-padded."]], "galois.iroot": [[205, 3, 2, "p-k", "k", "The positive root $k$."], [205, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.irreducible_poly": [[206, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [206, 3, 2, "p-method", "method", "The search method for finding the irreducible polynomial."], [206, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [206, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.irreducible_polys": [[207, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [207, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [207, 3, 2, "p-reverse", "reverse", "Indicates to return the irreducible polynomials from lexicographically last to first. The default is False."], [207, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.is_composite": [[208, 3, 2, "p-n", "n", "An integer."]], "galois.is_cyclic": [[209, 3, 2, "p-n", "n", "A positive integer."]], "galois.is_perfect_power": [[210, 3, 2, "p-n", "n", "An integer."]], "galois.is_powersmooth": [[211, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [211, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime": [[212, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime_power": [[213, 3, 2, "p-n", "n", "An integer."]], "galois.is_primitive_element": [[214, 3, 2, "p-element", "element", "An element $g$ of $mathrm{GF}(q^m)$ is a polynomial over $mathrm{GF}(q)$ with degree less than $m$."], [214, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.is_primitive_root": [[215, 3, 2, "p-g", "g", "A positive integer."], [215, 3, 2, "p-n", "n", "positive integer."]], "galois.is_smooth": [[216, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [216, 3, 2, "p-n", "n", "An integer."]], "galois.is_square_free": [[217, 3, 2, "p-value", "value", "An integer $n$ or polynomial $f(x)$."]], "galois.isqrt": [[218, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.jacobi_symbol": [[219, 3, 2, "p-a", "a", "An integer."], [219, 3, 2, "p-n", "n", "An odd integer $n ge 3$."]], "galois.kronecker_symbol": [[220, 3, 2, "p-a", "a", "An integer."], [220, 3, 2, "p-n", "n", "An integer."]], "galois.kth_prime": [[221, 3, 2, "p-k", "k", "The prime index (1-indexed)."]], "galois.lagrange_poly": [[222, 3, 2, "p-x", "x", "An array of $x_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must have no duplicate entries."], [222, 3, 2, "p-y", "y", "An array of $y_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must be the same size as $x$."]], "galois.lcm": [[223, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.legendre_symbol": [[224, 3, 2, "p-a", "a", "An integer."], [224, 3, 2, "p-p", "p", "An odd prime $p ge 3$."]], "galois.matlab_primitive_poly": [[225, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [225, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."]], "galois.mersenne_exponents": [[226, 3, 2, "p-n", "n", "The max exponent of 2. The default is None which returns all known Mersenne exponents."]], "galois.mersenne_primes": [[227, 3, 2, "p-n", "n", "The max power of 2. The default is None which returns all known Mersenne exponents."]], "galois.miller_rabin_primality_test": [[228, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is 2."], [228, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [228, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose consecutive primes for $a$. The default is 1."]], "galois.next_prime": [[229, 3, 2, "p-n", "n", "An integer."]], "galois.ntt": [[230, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(x)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [230, 3, 2, "p-size", "size", "The size $N$ of the NTT transform, must be at least the length of $x$. The default is None which corresponds to len(x). If size is larger than the length of $x$, $x$ is zero-padded."], [230, 3, 2, "p-x", "x", "The input sequence of integers $x$."]], "galois.perfect_power": [[231, 3, 2, "p-n", "n", "An integer."]], "galois.pollard_p1": [[232, 3, 2, "p-B", "B", "The smoothness bound $B > 2$."], [232, 3, 2, "p-B2", "B2", "The smoothness bound $B_2$ for the optional second step of the algorithm. The default is None which will not perform the second step."], [232, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.pollard_rho": [[233, 3, 2, "p-c", "c", "The constant offset in the function $f(x) = x^2 + ctextrm{mod}n$. The default is 1. A requirement of the algorithm is that $c notin {0, -2}$."], [233, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.prev_prime": [[234, 3, 2, "p-n", "n", "An integer $n ge 2$."]], "galois.primes": [[235, 3, 2, "p-n", "n", "An integer."]], "galois.primitive_element": [[236, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."], [236, 3, 2, "p-method", "method", "The search method for finding the primitive element."]], "galois.primitive_elements": [[237, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.primitive_poly": [[238, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [238, 3, 2, "p-method", "method", "The search method for finding the primitive polynomial."], [238, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [238, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_polys": [[239, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [239, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [239, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive polynomials from lexicographically last to first. The default is False."], [239, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_root": [[240, 3, 2, "p-method", "method", "The search method for finding the primitive root."], [240, 3, 2, "p-n", "n", "A positive integer."], [240, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root."], [240, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.primitive_roots": [[241, 3, 2, "p-n", "n", "A positive integer."], [241, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive roots from largest to smallest. The default is False."], [241, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root. The default is 1."], [241, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.prod": [[243, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.random_prime": [[244, 3, 2, "p-bits", "bits", "The number of bits in the prime $p$."], [244, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed."]], "galois.set_printoptions": [[245, 3, 2, "p-coeffs", "coeffs", "The order in which to print the coefficients, either in descending degrees (default) or ascending degrees."]], "galois.totatives": [[246, 3, 2, "p-n", "n", "A positive integer."]], "galois.trial_division": [[247, 3, 2, "p-B", "B", "The max divisor in the trial division. The default is None which corresponds to $B = sqrt{n}$. If $B > sqrt{n}$, the algorithm will only search up to $sqrt{n}$, since a prime factor of $n$ cannot be larger than $sqrt{n}$."], [247, 3, 2, "p-n", "n", "A positive integer."]], "galois.typing": [[248, 6, 1, "", "ArrayLike", "A Union representing objects that can be coerced into a Galois field array."], [249, 6, 1, "", "DTypeLike", "A Union representing objects that can be coerced into a NumPy data type."], [250, 6, 1, "", "ElementLike", "A Union representing objects that can be coerced into a Galois field element."], [251, 6, 1, "", "IterableLike", "A Union representing iterable objects that can be coerced into a Galois field array."], [252, 6, 1, "", "PolyLike", "A Union representing objects that can be coerced into a polynomial."], [253, 6, 1, "", "ShapeLike", "A Union representing objects that can be coerced into a NumPy shape tuple."]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:parameter", "4": "py:property", "5": "py:function", "6": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "parameter", "Python parameter"], "4": ["py", "property", "Python property"], "5": ["py", "function", "Python function"], "6": ["py", "data", "Python data"]}, "titleterms": {"arrai": [0, 254, 255, 256, 266], "galoi": [0, 260, 277], "field": [0, 255, 269, 270, 276, 277], "primit": [0, 276, 277], "element": [0, 61, 116, 258, 259, 260, 266, 276, 277], "polynomi": [0, 22, 45, 117, 168, 256, 258, 259, 260, 276], "see": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "also": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "irreduc": [0, 260, 276], "interpol": 0, "forward": 0, "error": 0, "correct": 0, "linear": [0, 61, 116, 254, 269, 270], "sequenc": 0, "transform": 0, "number": 0, "theori": 0, "divis": [0, 254, 260, 276, 277], "congruenc": 0, "root": [0, 254, 277], "integ": [0, 258], "arithmet": [0, 61, 116, 254, 260, 266, 276, 277], "factor": [0, 132, 260], "prime": [0, 270, 277], "composit": [0, 260], "specif": 0, "algorithm": 0, "gener": [0, 264], "primal": 0, "test": [0, 264], "configur": [0, 263, 264], "abstract": [1, 61], "constructor": [1, 22, 45, 61, 116, 117, 132, 168, 255, 259], "method": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 254, 255, 259], "properti": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 255, 256, 259], "slower": [18, 91, 106, 157, 158, 193, 258], "perform": [18, 91, 106, 157, 158, 193, 206, 258, 266, 269, 270], "shorten": [22, 31, 32, 33, 168, 177, 178, 179], "code": [22, 31, 32, 33, 168, 177, 178, 179, 263, 264], "string": [22, 45, 61, 116, 117, 132, 168], "represent": [22, 45, 61, 116, 117, 132, 168, 258, 259, 266], "attribut": [22, 61, 116, 132, 168], "matric": [22, 168], "import": [25, 171, 269], "note": 31, "state": [45, 117], "convers": [61, 116], "compil": [61, 116, 257], "algebra": [61, 116, 254, 269, 270], "info": [116, 218, 276, 277], "special": [132, 259, 260], "coeffici": [132, 256, 259], "tip": [146, 147, 258], "why": [157, 158, 159, 161, 162], "i": [157, 158, 159, 161, 162, 256], "thi": [157, 158, 159, 161, 162], "faster": 206, "warn": 225, "standard": [254, 260], "addit": [254, 260, 276, 277], "x": [254, 260], "y": 254, "np": 254, "add": 254, "invers": [254, 260, 276, 277], "neg": 254, "subtract": [254, 260, 276, 277], "multipl": [254, 260, 276, 277], "multipli": 254, "scalar": [254, 256, 260], "4": [254, 274], "1": [254, 272, 274], "reciproc": 254, "divid": 254, "remaind": [254, 260], "divmod": [254, 260], "exponenti": [254, 260], "3": [254, 260, 274], "power": [254, 258], "squar": [254, 260], "sqrt": 254, "logarithm": 254, "log": 254, "ufunc": [254, 257], "reduc": 254, "accumul": 254, "reduceat": 254, "outer": 254, "advanc": 254, "convolut": 254, "convolv": 254, "fft": 254, "ifft": 254, "dot": 254, "product": 254, "b": 254, "vector": [254, 258, 264], "vdot": 254, "inner": 254, "matrix": [254, 260], "A": [254, 276, 277], "matmul": 254, "linalg": 254, "matrix_pow": 254, "determin": 254, "det": 254, "rank": 254, "matrix_rank": 254, "trace": 254, "solv": 254, "system": 254, "equat": 254, "inv": 254, "class": [255, 256], "subclass": [255, 266], "fieldarrai": [255, 266], "speed": 255, "up": 255, "creation": [255, 256], "larg": 255, "finit": 255, "singleton": 255, "instanc": [255, 266], "creat": [256, 259, 266, 268], "new": 256, "like": 256, "object": 256, "numpi": [256, 258], "view": 256, "an": 256, "exist": 256, "classmethod": 256, "constant": 256, "There": 256, "empti": 256, "equival": 256, "order": [256, 259], "random": 256, "data": 256, "type": 256, "valid": 256, "default": 256, "chang": [256, 266, 271, 272, 273, 274], "function": 256, "mode": 257, "lookup": [257, 269, 270], "tabl": [257, 269, 270], "explicit": [257, 269, 270], "calcul": [257, 269, 270], "python": 257, "recompil": 257, "set": 258, "print": 258, "option": 258, "comparison": 258, "us": 259, "set_printopt": 259, "displai": 259, "degre": 259, "ascend": 259, "altern": 259, "f": 260, "g": 260, "modular": 260, "pow": 260, "123456789": 260, "evalu": 260, "wise": 260, "elementwis": 260, "fals": 260, "greatest": 260, "common": 260, "denomin": 260, "gcd": 260, "extend": 260, "egcd": 260, "document": [261, 271], "instal": [261, 262, 263, 264, 266, 268], "build": 261, "doc": 261, "serv": 261, "from": [262, 263, 264], "pypi": 262, "github": 262, "edit": 262, "local": 262, "folder": 262, "dev": 262, "depend": [262, 268], "linter": 263, "run": [263, 264], "command": [263, 264], "line": [263, 264], "v": [263, 264], "unit": 264, "sage": 264, "sympi": 264, "index": 265, "get": 266, "start": 266, "packag": 266, "two": 266, "disclaim": 267, "featur": 267, "roadmap": 267, "acknowledg": 267, "citat": 267, "benchmark": 268, "compar": 268, "previou": 268, "binari": 269, "extens": [269, 276], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274], "0": [271, 272, 273, 274], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274], "15": 271, "16": 271, "17": 271, "18": 271, "19": 271, "20": 271, "21": 271, "22": 271, "23": 271, "24": 271, "25": 271, "26": 271, "27": 271, "28": 271, "29": 271, "30": 271, "31": 271, "32": 271, "33": 271, "2": [272, 273, 274], "5": 274, "6": 274, "version": 275, "alpha": 275, "releas": 275, "beta": 275, "intro": [276, 277], "other": [276, 277], "non": [276, 277], "\u00e9varist": 277, "mod": 277, "p": 277}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx_last_updated_by_git": 1, "sphinx": 57}, "alltitles": {"Arrays": [[0, "arrays"]], "Galois fields": [[0, "galois-fields"]], "Primitive elements": [[0, "primitive-elements"], [276, "primitive-elements"], [277, "primitive-elements"]], "Polynomials": [[0, "polynomials"], [22, "polynomials"], [45, "polynomials"], [117, "polynomials"], [168, "polynomials"], [259, "polynomials"]], "See also": [[0, null], [25, null], [45, null], [47, null], [89, null], [96, null], [110, null], [117, null], [119, null], [157, null], [158, null], [159, null], [161, null], [171, null], [190, null], [192, null], [193, null], [195, null], [196, null], [197, null], [198, null], [200, null], [201, null], [202, null], [203, null], [204, null], [205, null], [206, null], [207, null], [208, null], [209, null], [210, null], [211, null], [212, null], [213, null], [214, null], [215, null], [216, null], [217, null], [218, null], [219, null], [220, null], [221, null], [223, null], [224, null], [225, null], [226, null], [227, null], [228, null], [229, null], [230, null], [231, null], [232, null], [233, null], [234, null], [235, null], [236, null], [237, null], [238, null], [239, null], [240, null], [241, null], [242, null], [243, null], [244, null], [245, null], [246, null], [247, null]], "Irreducible polynomials": [[0, "irreducible-polynomials"]], "Primitive polynomials": [[0, "primitive-polynomials"]], "Interpolating polynomials": [[0, "interpolating-polynomials"]], "Forward error correction": [[0, "forward-error-correction"]], "Linear sequences": [[0, "linear-sequences"]], "Transforms": [[0, "transforms"]], "Number theory": [[0, "number-theory"]], "Divisibility": [[0, "divisibility"]], "Congruences": [[0, "congruences"]], "Primitive roots": [[0, "primitive-roots"]], "Integer arithmetic": [[0, "integer-arithmetic"]], "Factorization": [[0, "factorization"]], "Prime factorization": [[0, "prime-factorization"]], "Composite factorization": [[0, "composite-factorization"]], "Specific factorization algorithms": [[0, "specific-factorization-algorithms"]], "Primes": [[0, "primes"]], "Prime number generation": [[0, "prime-number-generation"]], "Primality tests": [[0, "primality-tests"]], "Specific primality tests": [[0, "specific-primality-tests"]], "Configuration": [[0, "configuration"], [263, "configuration"], [264, "configuration"]], "Abstract": [[1, null], [61, null]], "Constructors": [[1, "constructors"], [22, "constructors"], [45, "constructors"], [61, "constructors"], [116, "constructors"], [117, "constructors"], [132, "constructors"], [168, "constructors"], [255, "constructors"]], "Methods": [[1, "methods"], [22, "methods"], [45, "methods"], [61, "methods"], [116, "methods"], [117, "methods"], [132, "methods"], [168, "methods"], [255, "methods"], [259, "methods"]], "Properties": [[1, "properties"], [22, "properties"], [45, "properties"], [61, "properties"], [116, "properties"], [117, "properties"], [132, "properties"], [168, "properties"], [259, "properties"]], "Slower performance": [[18, null], [91, null], [106, null], [157, null], [158, null], [193, null], [258, null]], "Shortened codes": [[22, null], [31, null], [32, null], [33, null], [168, null], [177, null], [178, null], [179, null]], "String representation": [[22, "string-representation"], [45, "string-representation"], [61, "string-representation"], [116, "string-representation"], [117, "string-representation"], [132, "string-representation"], [168, "string-representation"]], "Attributes": [[22, "attributes"], [61, "attributes"], [116, "attributes"], [132, "attributes"], [168, "attributes"]], "Matrices": [[22, "matrices"], [168, "matrices"]], "Important": [[25, null], [171, null], [269, null]], "Note": [[31, null]], "State": [[45, "state"], [117, "state"]], "Conversions": [[61, "conversions"], [116, "conversions"]], "Elements": [[61, "elements"], [116, "elements"], [276, "elements"], [277, "elements"]], "Element representation": [[61, "element-representation"], [116, "element-representation"], [259, "element-representation"]], "Arithmetic compilation": [[61, "arithmetic-compilation"], [116, "arithmetic-compilation"]], "Linear algebra": [[61, "linear-algebra"], [116, "linear-algebra"], [254, "linear-algebra"]], "Info": [[116, null], [218, null], [276, null], [277, null]], "Special methods": [[132, "special-methods"]], "Factorization methods": [[132, "factorization-methods"]], "Coefficients": [[132, "coefficients"]], "Tip": [[146, null], [147, null], [258, null]], "Why is this a method and not a property?": [[157, null], [158, null], [159, null], [161, null], [162, null]], "Faster performance": [[206, null]], "Warning": [[225, null]], "Array Arithmetic": [[254, "array-arithmetic"]], "Standard arithmetic": [[254, "standard-arithmetic"], [260, "standard-arithmetic"]], "Addition: x + y == np.add(x, y)": [[254, null]], "Additive inverse: -x == np.negative(x)": [[254, null]], "Subtraction: x - y == np.subtract(x, y)": [[254, null]], "Multiplication: x * y == np.multiply(x, y)": [[254, null]], "Scalar multiplication: x * 4 == np.multiply(x, 4)": [[254, null]], "Multiplicative inverse: y ** -1 == np.reciprocal(y)": [[254, null]], "Division: x / y == x // y == np.divide(x, y)": [[254, null]], "Remainder: x % y == np.remainder(x, y)": [[254, null]], "Divmod: divmod(x, y) == np.divmod(x, y)": [[254, null]], "Exponentiation: x ** 3 == np.power(x, 3)": [[254, null]], "Square root: np.sqrt(x)": [[254, null]], "Logarithm: np.log(x) or x.log()": [[254, null]], "Ufunc methods": [[254, "ufunc-methods"]], "reduce()": [[254, null]], "accumulate()": [[254, null]], "reduceat()": [[254, null]], "outer()": [[254, null]], "at()": [[254, null]], "Advanced arithmetic": [[254, "advanced-arithmetic"]], "Convolution: np.convolve(x, y)": [[254, null]], "FFT: np.fft.fft(x)": [[254, null]], "Inverse FFT: np.fft.ifft(X)": [[254, null]], "Dot product: np.dot(a, b)": [[254, null]], "Vector dot product: np.vdot(a, b)": [[254, null]], "Inner product: np.inner(a, b)": [[254, null]], "Outer product: np.outer(a, b)": [[254, null]], "Matrix multiplication: A @ B == np.matmul(A, B)": [[254, null]], "Matrix exponentiation: np.linalg.matrix_power(A, 3)": [[254, null]], "Matrix determinant: np.linalg.det(A)": [[254, null]], "Matrix rank: np.linalg.matrix_rank(A)": [[254, null]], "Matrix trace: np.trace(A)": [[254, null]], "Solve a system of equations: np.linalg.solve(A, b)": [[254, null]], "Matrix inverse: np.linalg.inv(A)": [[254, null]], "Array Classes": [[255, "array-classes"]], "Array subclasses": [[255, "array-subclasses"]], "FieldArray subclasses": [[255, "fieldarray-subclasses"]], "Speed up creation of large finite field classes": [[255, null]], "Class singletons": [[255, "class-singletons"]], "Methods and properties": [[255, "methods-and-properties"]], "FieldArray instances": [[255, "fieldarray-instances"]], "Array Creation": [[256, "array-creation"]], "Create a scalar": [[256, "create-a-scalar"]], "Create a new array": [[256, "create-a-new-array"]], "Array-like objects": [[256, "array-like-objects"]], "Polynomial coefficients": [[256, "polynomial-coefficients"]], "NumPy array": [[256, "numpy-array"]], "View an existing array": [[256, "view-an-existing-array"]], "Classmethods": [[256, "classmethods"]], "Constant arrays": [[256, "constant-arrays"]], "There is no numpy.empty() equivalent.": [[256, null]], "Ordered arrays": [[256, "ordered-arrays"]], "Random arrays": [[256, "random-arrays"]], "Class properties": [[256, "class-properties"]], "Data types": [[256, "data-types"]], "Valid data types": [[256, "valid-data-types"]], "Default data type": [[256, "default-data-type"]], "Changing data types": [[256, "changing-data-types"]], "NumPy functions": [[256, "numpy-functions"]], "Compilation Modes": [[257, "compilation-modes"]], "Lookup tables": [[257, "lookup-tables"]], "Explicit calculation": [[257, "explicit-calculation"]], "Python explicit calculation": [[257, "python-explicit-calculation"]], "Recompile the ufuncs": [[257, "recompile-the-ufuncs"]], "Element Representation": [[258, "element-representation"]], "Set the element representation": [[258, "set-the-element-representation"]], "Integer representation": [[258, "integer-representation"]], "Polynomial representation": [[258, "polynomial-representation"]], "Power representation": [[258, "power-representation"]], "Vector representation": [[258, "vector-representation"]], "NumPy print options": [[258, "numpy-print-options"]], "Representation comparisons": [[258, "representation-comparisons"]], "Create a polynomial": [[259, "create-a-polynomial"]], "Use set_printoptions() to display the polynomial coefficients in degree-ascending order.": [[259, null]], "Alternate constructors": [[259, "alternate-constructors"]], "Special polynomials": [[259, "special-polynomials"]], "Polynomial Arithmetic": [[260, "polynomial-arithmetic"]], "Addition: f + g": [[260, null]], "Additive inverse: -f": [[260, null]], "Subtraction: f - g": [[260, null]], "Multiplication: f * g": [[260, null]], "Scalar multiplication: f * 3": [[260, null]], "Division: f // g": [[260, null]], "Remainder: f % g": [[260, null]], "Divmod: divmod(f, g)": [[260, null]], "Exponentiation: f ** 3": [[260, null]], "Modular exponentiation: pow(f, 123456789, g)": [[260, null]], "Evaluation": [[260, "evaluation"]], "Evaluation (element-wise): f(x) or f(X)": [[260, null]], "Evaluation (square matrix): f(X, elementwise=False)": [[260, null]], "Composition: f(g)": [[260, null]], "Special arithmetic": [[260, "special-arithmetic"]], "Greatest common denominator: galois.gcd(f, g)": [[260, null]], "Extended greatest common denominator: galois.egcd(f, g)": [[260, null]], "Factor into irreducible polynomials: galois.factors(f) == f.factors()": [[260, null]], "Documentation": [[261, "documentation"], [271, "documentation"]], "Install": [[261, "install"], [263, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Installation": [[262, "installation"]], "Install from PyPI": [[262, "install-from-pypi"]], "Install from GitHub": [[262, "install-from-github"]], "Editable install from local folder": [[262, "editable-install-from-local-folder"]], "Install the dev dependencies": [[262, "install-the-dev-dependencies"]], "Linter": [[263, "linter"]], "Run from the command line": [[263, "run-from-the-command-line"], [264, "run-from-the-command-line"]], "Run from VS Code": [[263, "run-from-vs-code"], [264, "run-from-vs-code"]], "Unit Tests": [[264, "unit-tests"]], "Test vectors": [[264, "test-vectors"]], "Install Sage": [[264, "install-sage"]], "Install SymPy": [[264, "install-sympy"]], "Generate test vectors": [[264, "generate-test-vectors"]], "Index": [[265, "index"]], "Getting Started": [[266, "getting-started"]], "Install the package": [[266, "install-the-package"]], "Create a FieldArray subclass": [[266, "create-a-fieldarray-subclass"]], "Create two FieldArray instances": [[266, "create-two-fieldarray-instances"]], "Change the element representation": [[266, "change-the-element-representation"]], "Perform array arithmetic": [[266, "perform-array-arithmetic"]], "Disclaimer": [[267, null]], "Features": [[267, "features"]], "Roadmap": [[267, "roadmap"]], "Acknowledgements": [[267, "acknowledgements"]], "Citation": [[267, "citation"]], "Benchmarks": [[268, "benchmarks"]], "Install dependencies": [[268, "install-dependencies"]], "Create a benchmark": [[268, "create-a-benchmark"]], "Compare with a previous benchmark": [[268, "compare-with-a-previous-benchmark"]], "Binary Extension Fields": [[269, "binary-extension-fields"]], "Lookup table performance": [[269, "lookup-table-performance"], [270, "lookup-table-performance"]], "Explicit calculation performance": [[269, "explicit-calculation-performance"], [270, "explicit-calculation-performance"]], "Linear algebra performance": [[269, "linear-algebra-performance"], [270, "linear-algebra-performance"]], "Prime Fields": [[270, "prime-fields"]], "Runtime floor": [[270, "runtime-floor"]], "v0.0": [[271, "v0-0"]], "v0.0.14": [[271, "v0-0-14"]], "Breaking changes": [[271, "breaking-changes"], [271, "id1"], [271, "id6"], [271, "id9"], [271, "id12"], [271, "id15"], [271, "id20"], [271, "id25"], [271, "id28"], [271, "id31"], [271, "id34"], [271, "id39"], [271, "id44"], [271, "id47"], [271, "id50"], [273, "breaking-changes"], [274, "breaking-changes"]], "Changes": [[271, "changes"], [271, "id2"], [271, "id4"], [271, "id7"], [271, "id10"], [271, "id13"], [271, "id16"], [271, "id18"], [271, "id21"], [271, "id23"], [271, "id26"], [271, "id29"], [271, "id32"], [271, "id35"], [271, "id37"], [271, "id40"], [271, "id42"], [271, "id45"], [271, "id48"], [271, "id51"], [272, "changes"], [272, "id1"], [272, "id3"], [273, "changes"], [274, "changes"], [274, "id1"], [274, "id3"], [274, "id5"], [274, "id7"], [274, "id9"], [274, "id11"]], "Contributors": [[271, "contributors"], [271, "id3"], [271, "id5"], [271, "id8"], [271, "id11"], [271, "id14"], [271, "id17"], [271, "id19"], [271, "id22"], [271, "id24"], [271, "id27"], [271, "id30"], [271, "id33"], [271, "id36"], [271, "id38"], [271, "id41"], [271, "id43"], [271, "id46"], [271, "id49"], [271, "id52"], [272, "contributors"], [272, "id2"], [272, "id4"], [273, "contributors"], [274, "contributors"], [274, "id2"], [274, "id4"], [274, "id6"], [274, "id8"], [274, "id10"], [274, "id12"]], "v0.0.15": [[271, "v0-0-15"]], "v0.0.16": [[271, "v0-0-16"]], "v0.0.17": [[271, "v0-0-17"]], "v0.0.18": [[271, "v0-0-18"]], "v0.0.19": [[271, "v0-0-19"]], "v0.0.20": [[271, "v0-0-20"]], "v0.0.21": [[271, "v0-0-21"]], "v0.0.22": [[271, "v0-0-22"]], "v0.0.23": [[271, "v0-0-23"]], "v0.0.24": [[271, "v0-0-24"]], "v0.0.25": [[271, "v0-0-25"]], "v0.0.26": [[271, "v0-0-26"]], "v0.0.27": [[271, "v0-0-27"]], "v0.0.28": [[271, "v0-0-28"]], "v0.0.29": [[271, "v0-0-29"]], "v0.0.30": [[271, "v0-0-30"]], "v0.0.31": [[271, "v0-0-31"]], "v0.0.32": [[271, "v0-0-32"]], "v0.0.33": [[271, "v0-0-33"]], "v0.1": [[272, "v0-1"]], "v0.1.0": [[272, "v0-1-0"]], "v0.1.1": [[272, "v0-1-1"]], "v0.1.2": [[272, "v0-1-2"]], "v0.2": [[273, "v0-2"]], "v0.2.0": [[273, "v0-2-0"]], "v0.3": [[274, "v0-3"]], "v0.3.0": [[274, "v0-3-0"]], "v0.3.1": [[274, "v0-3-1"]], "v0.3.2": [[274, "v0-3-2"]], "v0.3.3": [[274, "v0-3-3"]], "v0.3.4": [[274, "v0-3-4"]], "v0.3.5": [[274, "v0-3-5"]], "v0.3.6": [[274, "v0-3-6"]], "Versioning": [[275, "versioning"]], "Alpha releases": [[275, "alpha-releases"]], "Beta releases": [[275, "beta-releases"]], "Intro to Extension Fields": [[276, "intro-to-extension-fields"]], "Extension field": [[276, "extension-field"]], "Irreducible polynomial": [[276, "irreducible-polynomial"]], "Arithmetic": [[276, "arithmetic"], [277, "arithmetic"]], "Addition": [[276, "addition"], [277, "addition"]], "Subtraction": [[276, "subtraction"], [277, "subtraction"]], "Multiplication": [[276, "multiplication"], [277, "multiplication"]], "Multiplicative inverse": [[276, "multiplicative-inverse"], [277, "multiplicative-inverse"]], "Division": [[276, "division"], [277, "division"]], "A primitive element": [[276, "a-primitive-element"], [277, "a-primitive-element"]], "Other primitive elements": [[276, "other-primitive-elements"], [277, "other-primitive-elements"]], "Non-primitive elements": [[276, "non-primitive-elements"], [277, "non-primitive-elements"]], "Intro to Prime Fields": [[277, "intro-to-prime-fields"]], "\u00c9variste Galois": [[277, null]], "Prime field": [[277, "prime-field"]], "Primitive roots mod p": [[277, "primitive-roots-mod-p"]]}, "indexentries": {"galois": [[0, "module-galois"]], "module": [[0, "module-galois"]]}, "docurls": ["api/", "api/galois.Array/", "api/galois.Array.Identity/", "api/galois.Array.Ones/", "api/galois.Array.Random/", "api/galois.Array.Range/", "api/galois.Array.Zeros/", "api/galois.Array.characteristic/", "api/galois.Array.compile/", "api/galois.Array.default_ufunc_mode/", "api/galois.Array.degree/", "api/galois.Array.dtypes/", "api/galois.Array.element_repr/", "api/galois.Array.elements/", "api/galois.Array.irreducible_poly/", "api/galois.Array.name/", "api/galois.Array.order/", "api/galois.Array.primitive_element/", "api/galois.Array.repr/", "api/galois.Array.ufunc_mode/", "api/galois.Array.ufunc_modes/", "api/galois.Array.units/", "api/galois.BCH/", "api/galois.BCH.G/", "api/galois.BCH.H/", "api/galois.BCH.__init__/", "api/galois.BCH.__repr__/", "api/galois.BCH.__str__/", "api/galois.BCH.alpha/", "api/galois.BCH.c/", "api/galois.BCH.d/", "api/galois.BCH.decode/", "api/galois.BCH.detect/", "api/galois.BCH.encode/", "api/galois.BCH.extension_field/", "api/galois.BCH.field/", "api/galois.BCH.generator_poly/", "api/galois.BCH.is_narrow_sense/", "api/galois.BCH.is_primitive/", "api/galois.BCH.is_systematic/", "api/galois.BCH.k/", "api/galois.BCH.n/", "api/galois.BCH.parity_check_poly/", "api/galois.BCH.roots/", "api/galois.BCH.t/", "api/galois.FLFSR/", "api/galois.FLFSR.Taps/", "api/galois.FLFSR.__init__/", "api/galois.FLFSR.__repr__/", "api/galois.FLFSR.__str__/", "api/galois.FLFSR.characteristic_poly/", "api/galois.FLFSR.feedback_poly/", "api/galois.FLFSR.field/", "api/galois.FLFSR.initial_state/", "api/galois.FLFSR.order/", "api/galois.FLFSR.reset/", "api/galois.FLFSR.state/", "api/galois.FLFSR.step/", "api/galois.FLFSR.taps/", "api/galois.FLFSR.to_galois_lfsr/", "api/galois.Field/", "api/galois.FieldArray/", "api/galois.FieldArray.Identity/", "api/galois.FieldArray.Ones/", "api/galois.FieldArray.Random/", "api/galois.FieldArray.Range/", "api/galois.FieldArray.Vandermonde/", "api/galois.FieldArray.Vector/", "api/galois.FieldArray.Zeros/", "api/galois.FieldArray.__init__/", "api/galois.FieldArray.__repr__/", "api/galois.FieldArray.__str__/", "api/galois.FieldArray.additive_order/", "api/galois.FieldArray.arithmetic_table/", "api/galois.FieldArray.characteristic/", "api/galois.FieldArray.characteristic_poly/", "api/galois.FieldArray.column_space/", "api/galois.FieldArray.compile/", "api/galois.FieldArray.default_ufunc_mode/", "api/galois.FieldArray.degree/", "api/galois.FieldArray.dtypes/", "api/galois.FieldArray.element_repr/", "api/galois.FieldArray.elements/", "api/galois.FieldArray.field_norm/", "api/galois.FieldArray.field_trace/", "api/galois.FieldArray.irreducible_poly/", "api/galois.FieldArray.is_extension_field/", "api/galois.FieldArray.is_prime_field/", "api/galois.FieldArray.is_primitive_poly/", "api/galois.FieldArray.is_square/", "api/galois.FieldArray.left_null_space/", "api/galois.FieldArray.log/", "api/galois.FieldArray.lu_decompose/", "api/galois.FieldArray.minimal_poly/", "api/galois.FieldArray.multiplicative_order/", "api/galois.FieldArray.name/", "api/galois.FieldArray.non_squares/", "api/galois.FieldArray.null_space/", "api/galois.FieldArray.order/", "api/galois.FieldArray.plu_decompose/", "api/galois.FieldArray.prime_subfield/", "api/galois.FieldArray.primitive_element/", "api/galois.FieldArray.primitive_elements/", "api/galois.FieldArray.primitive_root_of_unity/", "api/galois.FieldArray.primitive_roots_of_unity/", "api/galois.FieldArray.properties/", "api/galois.FieldArray.repr/", "api/galois.FieldArray.repr_table/", "api/galois.FieldArray.row_reduce/", "api/galois.FieldArray.row_space/", "api/galois.FieldArray.squares/", "api/galois.FieldArray.ufunc_mode/", "api/galois.FieldArray.ufunc_modes/", "api/galois.FieldArray.units/", "api/galois.FieldArray.vector/", "api/galois.GF/", "api/galois.GF2/", "api/galois.GLFSR/", "api/galois.GLFSR.Taps/", "api/galois.GLFSR.__init__/", "api/galois.GLFSR.__repr__/", "api/galois.GLFSR.__str__/", "api/galois.GLFSR.characteristic_poly/", "api/galois.GLFSR.feedback_poly/", "api/galois.GLFSR.field/", "api/galois.GLFSR.initial_state/", "api/galois.GLFSR.order/", "api/galois.GLFSR.reset/", "api/galois.GLFSR.state/", "api/galois.GLFSR.step/", "api/galois.GLFSR.taps/", "api/galois.GLFSR.to_fibonacci_lfsr/", "api/galois.Poly/", "api/galois.Poly.Degrees/", "api/galois.Poly.Identity/", "api/galois.Poly.Int/", "api/galois.Poly.One/", "api/galois.Poly.Random/", "api/galois.Poly.Roots/", "api/galois.Poly.Str/", "api/galois.Poly.Zero/", "api/galois.Poly.__call__/", "api/galois.Poly.__eq__/", "api/galois.Poly.__init__/", "api/galois.Poly.__int__/", "api/galois.Poly.__len__/", "api/galois.Poly.__repr__/", "api/galois.Poly.__str__/", "api/galois.Poly.coefficients/", "api/galois.Poly.coeffs/", "api/galois.Poly.degree/", "api/galois.Poly.degrees/", "api/galois.Poly.derivative/", "api/galois.Poly.distinct_degree_factors/", "api/galois.Poly.equal_degree_factors/", "api/galois.Poly.factors/", "api/galois.Poly.field/", "api/galois.Poly.is_conway/", "api/galois.Poly.is_conway_consistent/", "api/galois.Poly.is_irreducible/", "api/galois.Poly.is_monic/", "api/galois.Poly.is_primitive/", "api/galois.Poly.is_square_free/", "api/galois.Poly.nonzero_coeffs/", "api/galois.Poly.nonzero_degrees/", "api/galois.Poly.reverse/", "api/galois.Poly.roots/", "api/galois.Poly.square_free_factors/", "api/galois.ReedSolomon/", "api/galois.ReedSolomon.G/", "api/galois.ReedSolomon.H/", "api/galois.ReedSolomon.__init__/", "api/galois.ReedSolomon.__repr__/", "api/galois.ReedSolomon.__str__/", "api/galois.ReedSolomon.alpha/", "api/galois.ReedSolomon.c/", "api/galois.ReedSolomon.d/", "api/galois.ReedSolomon.decode/", "api/galois.ReedSolomon.detect/", "api/galois.ReedSolomon.encode/", "api/galois.ReedSolomon.field/", "api/galois.ReedSolomon.generator_poly/", "api/galois.ReedSolomon.is_narrow_sense/", "api/galois.ReedSolomon.is_primitive/", "api/galois.ReedSolomon.is_systematic/", "api/galois.ReedSolomon.k/", "api/galois.ReedSolomon.n/", "api/galois.ReedSolomon.parity_check_poly/", "api/galois.ReedSolomon.roots/", "api/galois.ReedSolomon.t/", "api/galois.are_coprime/", "api/galois.berlekamp_massey/", "api/galois.carmichael_lambda/", "api/galois.conway_poly/", "api/galois.crt/", "api/galois.divisor_sigma/", "api/galois.divisors/", "api/galois.egcd/", "api/galois.euler_phi/", "api/galois.factors/", "api/galois.fermat_primality_test/", "api/galois.gcd/", "api/galois.get_printoptions/", "api/galois.ilog/", "api/galois.intt/", "api/galois.iroot/", "api/galois.irreducible_poly/", "api/galois.irreducible_polys/", "api/galois.is_composite/", "api/galois.is_cyclic/", "api/galois.is_perfect_power/", "api/galois.is_powersmooth/", "api/galois.is_prime/", "api/galois.is_prime_power/", "api/galois.is_primitive_element/", "api/galois.is_primitive_root/", "api/galois.is_smooth/", "api/galois.is_square_free/", "api/galois.isqrt/", "api/galois.jacobi_symbol/", "api/galois.kronecker_symbol/", "api/galois.kth_prime/", "api/galois.lagrange_poly/", "api/galois.lcm/", "api/galois.legendre_symbol/", "api/galois.matlab_primitive_poly/", "api/galois.mersenne_exponents/", "api/galois.mersenne_primes/", "api/galois.miller_rabin_primality_test/", "api/galois.next_prime/", "api/galois.ntt/", "api/galois.perfect_power/", "api/galois.pollard_p1/", "api/galois.pollard_rho/", "api/galois.prev_prime/", "api/galois.primes/", "api/galois.primitive_element/", "api/galois.primitive_elements/", "api/galois.primitive_poly/", "api/galois.primitive_polys/", "api/galois.primitive_root/", "api/galois.primitive_roots/", "api/galois.printoptions/", "api/galois.prod/", "api/galois.random_prime/", "api/galois.set_printoptions/", "api/galois.totatives/", "api/galois.trial_division/", "api/galois.typing.ArrayLike/", "api/galois.typing.DTypeLike/", "api/galois.typing.ElementLike/", "api/galois.typing.IterableLike/", "api/galois.typing.PolyLike/", "api/galois.typing.ShapeLike/", "basic-usage/array-arithmetic/", "basic-usage/array-classes/", "basic-usage/array-creation/", "basic-usage/compilation-modes/", "basic-usage/element-representation/", "basic-usage/poly/", "basic-usage/poly-arithmetic/", "development/documentation/", "development/installation/", "development/linter/", "development/unit-tests/", "genindex/", "getting-started/", "", "performance/benchmarks/", "performance/binary-extension-fields/", "performance/prime-fields/", "release-notes/v0.0/", "release-notes/v0.1/", "release-notes/v0.2/", "release-notes/v0.3/", "release-notes/versioning/", "tutorials/intro-to-extension-fields/", "tutorials/intro-to-prime-fields/"]}) \ No newline at end of file +Search.setIndex({"titles": ["Arrays", "galois.Array", "galois.Array.Identity", "galois.Array.Ones", "galois.Array.Random", "galois.Array.Range", "galois.Array.Zeros", "galois.Array.characteristic", "galois.Array.compile", "galois.Array.default_ufunc_mode", "galois.Array.degree", "galois.Array.dtypes", "galois.Array.element_repr", "galois.Array.elements", "galois.Array.irreducible_poly", "galois.Array.name", "galois.Array.order", "galois.Array.primitive_element", "galois.Array.repr", "galois.Array.ufunc_mode", "galois.Array.ufunc_modes", "galois.Array.units", "galois.BCH", "galois.BCH.G", "galois.BCH.H", "galois.BCH.__init__", "galois.BCH.__repr__", "galois.BCH.__str__", "galois.BCH.alpha", "galois.BCH.c", "galois.BCH.d", "galois.BCH.decode", "galois.BCH.detect", "galois.BCH.encode", "galois.BCH.extension_field", "galois.BCH.field", "galois.BCH.generator_poly", "galois.BCH.is_narrow_sense", "galois.BCH.is_primitive", "galois.BCH.is_systematic", "galois.BCH.k", "galois.BCH.n", "galois.BCH.parity_check_poly", "galois.BCH.roots", "galois.BCH.t", "galois.FLFSR", "galois.FLFSR.Taps", "galois.FLFSR.__init__", "galois.FLFSR.__repr__", "galois.FLFSR.__str__", "galois.FLFSR.characteristic_poly", "galois.FLFSR.feedback_poly", "galois.FLFSR.field", "galois.FLFSR.initial_state", "galois.FLFSR.order", "galois.FLFSR.reset", "galois.FLFSR.state", "galois.FLFSR.step", "galois.FLFSR.taps", "galois.FLFSR.to_galois_lfsr", "galois.Field", "galois.FieldArray", "galois.FieldArray.Identity", "galois.FieldArray.Ones", "galois.FieldArray.Random", "galois.FieldArray.Range", "galois.FieldArray.Vandermonde", "galois.FieldArray.Vector", "galois.FieldArray.Zeros", "galois.FieldArray.__init__", "galois.FieldArray.__repr__", "galois.FieldArray.__str__", "galois.FieldArray.additive_order", "galois.FieldArray.arithmetic_table", "galois.FieldArray.characteristic", "galois.FieldArray.characteristic_poly", "galois.FieldArray.column_space", "galois.FieldArray.compile", "galois.FieldArray.default_ufunc_mode", "galois.FieldArray.degree", "galois.FieldArray.dtypes", "galois.FieldArray.element_repr", "galois.FieldArray.elements", "galois.FieldArray.field_norm", "galois.FieldArray.field_trace", "galois.FieldArray.irreducible_poly", "galois.FieldArray.is_extension_field", "galois.FieldArray.is_prime_field", "galois.FieldArray.is_primitive_poly", "galois.FieldArray.is_square", "galois.FieldArray.left_null_space", "galois.FieldArray.log", "galois.FieldArray.lu_decompose", "galois.FieldArray.minimal_poly", "galois.FieldArray.multiplicative_order", "galois.FieldArray.name", "galois.FieldArray.non_squares", "galois.FieldArray.null_space", "galois.FieldArray.order", "galois.FieldArray.plu_decompose", "galois.FieldArray.prime_subfield", "galois.FieldArray.primitive_element", "galois.FieldArray.primitive_elements", "galois.FieldArray.primitive_root_of_unity", "galois.FieldArray.primitive_roots_of_unity", "galois.FieldArray.properties", "galois.FieldArray.repr", "galois.FieldArray.repr_table", "galois.FieldArray.row_reduce", "galois.FieldArray.row_space", "galois.FieldArray.squares", "galois.FieldArray.ufunc_mode", "galois.FieldArray.ufunc_modes", "galois.FieldArray.units", "galois.FieldArray.vector", "galois.GF", "galois.GF2", "galois.GLFSR", "galois.GLFSR.Taps", "galois.GLFSR.__init__", "galois.GLFSR.__repr__", "galois.GLFSR.__str__", "galois.GLFSR.characteristic_poly", "galois.GLFSR.feedback_poly", "galois.GLFSR.field", "galois.GLFSR.initial_state", "galois.GLFSR.order", "galois.GLFSR.reset", "galois.GLFSR.state", "galois.GLFSR.step", "galois.GLFSR.taps", "galois.GLFSR.to_fibonacci_lfsr", "galois.Poly", "galois.Poly.Degrees", "galois.Poly.Identity", "galois.Poly.Int", "galois.Poly.One", "galois.Poly.Random", "galois.Poly.Roots", "galois.Poly.Str", "galois.Poly.Zero", "galois.Poly.__call__", "galois.Poly.__eq__", "galois.Poly.__init__", "galois.Poly.__int__", "galois.Poly.__len__", "galois.Poly.__repr__", "galois.Poly.__str__", "galois.Poly.coefficients", "galois.Poly.coeffs", "galois.Poly.degree", "galois.Poly.degrees", "galois.Poly.derivative", "galois.Poly.distinct_degree_factors", "galois.Poly.equal_degree_factors", "galois.Poly.factors", "galois.Poly.field", "galois.Poly.is_conway", "galois.Poly.is_conway_consistent", "galois.Poly.is_irreducible", "galois.Poly.is_monic", "galois.Poly.is_primitive", "galois.Poly.is_square_free", "galois.Poly.nonzero_coeffs", "galois.Poly.nonzero_degrees", "galois.Poly.reverse", "galois.Poly.roots", "galois.Poly.square_free_factors", "galois.ReedSolomon", "galois.ReedSolomon.G", "galois.ReedSolomon.H", "galois.ReedSolomon.__init__", "galois.ReedSolomon.__repr__", "galois.ReedSolomon.__str__", "galois.ReedSolomon.alpha", "galois.ReedSolomon.c", "galois.ReedSolomon.d", "galois.ReedSolomon.decode", "galois.ReedSolomon.detect", "galois.ReedSolomon.encode", "galois.ReedSolomon.field", "galois.ReedSolomon.generator_poly", "galois.ReedSolomon.is_narrow_sense", "galois.ReedSolomon.is_primitive", "galois.ReedSolomon.is_systematic", "galois.ReedSolomon.k", "galois.ReedSolomon.n", "galois.ReedSolomon.parity_check_poly", "galois.ReedSolomon.roots", "galois.ReedSolomon.t", "galois.are_coprime", "galois.berlekamp_massey", "galois.carmichael_lambda", "galois.conway_poly", "galois.crt", "galois.divisor_sigma", "galois.divisors", "galois.egcd", "galois.euler_phi", "galois.factors", "galois.fermat_primality_test", "galois.gcd", "galois.get_printoptions", "galois.ilog", "galois.intt", "galois.iroot", "galois.irreducible_poly", "galois.irreducible_polys", "galois.is_composite", "galois.is_cyclic", "galois.is_perfect_power", "galois.is_powersmooth", "galois.is_prime", "galois.is_prime_power", "galois.is_primitive_element", "galois.is_primitive_root", "galois.is_smooth", "galois.is_square_free", "galois.isqrt", "galois.jacobi_symbol", "galois.kronecker_symbol", "galois.kth_prime", "galois.lagrange_poly", "galois.lcm", "galois.legendre_symbol", "galois.matlab_primitive_poly", "galois.mersenne_exponents", "galois.mersenne_primes", "galois.miller_rabin_primality_test", "galois.next_prime", "galois.ntt", "galois.perfect_power", "galois.pollard_p1", "galois.pollard_rho", "galois.prev_prime", "galois.primes", "galois.primitive_element", "galois.primitive_elements", "galois.primitive_poly", "galois.primitive_polys", "galois.primitive_root", "galois.primitive_roots", "galois.printoptions", "galois.prod", "galois.random_prime", "galois.set_printoptions", "galois.totatives", "galois.trial_division", "galois.typing.ArrayLike", "galois.typing.DTypeLike", "galois.typing.ElementLike", "galois.typing.IterableLike", "galois.typing.PolyLike", "galois.typing.ShapeLike", "Array Arithmetic", "Array Classes", "Array Creation", "Compilation Modes", "Element Representation", "Polynomials", "Polynomial Arithmetic", "Documentation", "Installation", "Linter", "Unit Tests", "Index", "Getting Started", "Features", "Benchmarks", "Binary Extension Fields", "Prime Fields", "v0.0", "v0.1", "v0.2", "v0.3", "Versioning", "Intro to Extension Fields", "Intro to Prime Fields"], "terms": {"class": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 34, 35, 45, 52, 61, 70, 71, 74, 78, 79, 80, 81, 82, 85, 86, 87, 88, 95, 96, 98, 100, 101, 102, 105, 110, 111, 112, 113, 115, 116, 117, 124, 132, 156, 168, 180, 258, 259, 266, 271, 273, 274, 276, 277], "numpi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 22, 31, 32, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 77, 78, 80, 89, 91, 94, 111, 112, 114, 115, 116, 132, 137, 166, 168, 177, 178, 202, 204, 230, 242, 245, 248, 249, 253, 254, 257, 266, 267, 269, 270, 271, 272, 273, 274], "ndarrai": [0, 1, 22, 31, 32, 61, 72, 89, 91, 94, 116, 132, 133, 138, 151, 164, 166, 168, 177, 178, 204, 230, 248, 252, 255, 256, 266, 267, 269, 270, 271], "an": [0, 1, 2, 3, 4, 6, 22, 31, 55, 57, 59, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 76, 80, 86, 89, 90, 91, 92, 93, 94, 96, 97, 104, 107, 108, 109, 110, 113, 114, 115, 116, 127, 129, 131, 132, 133, 138, 143, 148, 151, 152, 164, 166, 168, 177, 190, 195, 196, 200, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 219, 220, 222, 223, 224, 226, 228, 229, 231, 232, 233, 234, 235, 236, 237, 239, 241, 243, 251, 252, 253, 255, 257, 258, 260, 262, 263, 266, 267, 271, 272, 274, 276, 277], "abstract": [0, 255, 271], "subclass": [0, 1, 2, 3, 4, 5, 6, 18, 45, 52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 78, 106, 107, 111, 112, 114, 115, 116, 117, 124, 132, 133, 138, 143, 156, 254, 256, 257, 258, 267, 271, 276, 277], "over": [0, 1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 67, 69, 75, 76, 83, 84, 85, 90, 93, 97, 101, 102, 108, 109, 114, 115, 116, 117, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 213, 214, 217, 223, 225, 230, 236, 237, 238, 239, 241, 243, 254, 255, 256, 258, 259, 260, 267, 271, 273, 276], "ring": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 255, 267, 276, 277], "type": [0, 2, 3, 4, 5, 6, 22, 25, 34, 35, 45, 52, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 100, 104, 114, 115, 116, 117, 124, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 156, 168, 171, 180, 191, 206, 248, 249, 250, 251, 252, 253, 255, 257, 271, 272, 273, 274], "arraylik": [0, 22, 31, 32, 33, 45, 46, 47, 55, 61, 67, 69, 91, 116, 117, 118, 119, 127, 132, 133, 138, 141, 143, 168, 177, 178, 179, 204, 230, 248, 252, 256, 266, 271], "A": [0, 1, 2, 3, 4, 5, 6, 17, 18, 22, 25, 26, 27, 28, 31, 32, 45, 46, 47, 48, 49, 61, 62, 63, 64, 65, 66, 68, 69, 73, 75, 76, 89, 90, 91, 92, 97, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 113, 115, 116, 117, 118, 119, 120, 121, 132, 137, 141, 146, 153, 154, 157, 158, 159, 160, 161, 162, 167, 168, 171, 172, 173, 174, 177, 178, 190, 191, 192, 193, 198, 199, 202, 203, 204, 205, 209, 215, 217, 218, 224, 226, 230, 232, 233, 236, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 267, 269, 270, 271, 272, 274], "union": [0, 248, 249, 250, 251, 252, 253, 272], "repres": [0, 2, 3, 4, 5, 6, 8, 36, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 108, 114, 115, 141, 152, 159, 166, 181, 193, 209, 240, 248, 249, 250, 251, 252, 253, 258, 266, 271, 276, 277], "object": [0, 115, 142, 191, 207, 239, 241, 248, 249, 250, 251, 252, 253, 259, 260, 266, 271, 276], "can": [0, 4, 18, 31, 36, 44, 64, 73, 81, 103, 104, 106, 112, 115, 137, 139, 159, 166, 181, 189, 204, 209, 210, 215, 230, 231, 232, 240, 241, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 260, 262, 266, 267, 270, 271, 275, 276, 277], "coerc": [0, 248, 249, 250, 251, 252, 253], "dtypelik": [0, 2, 3, 4, 5, 6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 114, 116, 249], "data": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 157, 158, 193, 249, 257, 264, 271], "elementlik": [0, 1, 4, 5, 25, 61, 64, 65, 66, 69, 91, 107, 116, 132, 141, 171, 250, 251, 256, 271], "iterablelik": [0, 248, 251, 252], "iter": [0, 57, 129, 200, 207, 228, 239, 241, 248, 251, 253, 271], "shapelik": [0, 1, 3, 4, 6, 61, 63, 64, 68, 116, 253], "shape": [0, 1, 2, 3, 4, 6, 22, 23, 24, 61, 62, 63, 64, 67, 68, 76, 90, 91, 97, 109, 114, 116, 141, 168, 169, 170, 253, 255, 256, 260, 268], "tupl": [0, 3, 4, 6, 22, 31, 61, 63, 64, 68, 92, 99, 116, 132, 153, 155, 166, 167, 168, 177, 197, 199, 207, 231, 239, 241, 247, 253], "fieldarrai": [0, 1, 18, 22, 23, 24, 25, 28, 31, 33, 34, 35, 43, 45, 46, 52, 53, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 124, 125, 128, 129, 130, 168, 169, 170, 171, 174, 177, 179, 180, 188, 191, 204, 214, 230, 236, 237, 254, 256, 257, 258, 259, 267, 271, 272, 273, 274, 276, 277], "mathrm": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 61, 66, 67, 69, 72, 74, 75, 76, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 94, 96, 97, 98, 100, 101, 102, 103, 104, 107, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 243, 254, 255, 256, 257, 258, 260, 266, 267, 269, 270, 271, 274, 276, 277], "gf": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "p": [0, 1, 7, 10, 16, 33, 45, 61, 67, 69, 70, 71, 72, 73, 74, 75, 79, 82, 83, 84, 85, 89, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 149, 150, 151, 152, 157, 158, 159, 160, 163, 164, 166, 179, 191, 193, 197, 198, 199, 200, 204, 209, 213, 221, 224, 225, 226, 227, 228, 229, 230, 232, 233, 234, 235, 240, 244, 254, 255, 256, 258, 260, 267, 270, 271, 274, 276], "m": [0, 1, 7, 10, 16, 22, 25, 28, 31, 32, 33, 34, 36, 38, 43, 45, 61, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 157, 158, 159, 161, 166, 167, 168, 171, 177, 178, 179, 191, 192, 193, 194, 199, 204, 206, 207, 214, 222, 225, 230, 233, 236, 237, 238, 239, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 274, 276, 277], "gf2": [0, 116, 133, 134, 135, 136, 137, 138, 139, 140, 143], "2": [0, 2, 8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 262, 264, 266, 267, 268, 269, 270, 271, 276, 277], "order": [0, 1, 4, 8, 16, 22, 23, 24, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 141, 143, 144, 145, 146, 147, 148, 149, 151, 154, 155, 157, 158, 159, 163, 164, 166, 168, 169, 170, 174, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 191, 193, 199, 204, 206, 207, 209, 214, 215, 222, 230, 236, 237, 238, 239, 240, 241, 245, 248, 250, 251, 252, 253, 254, 255, 257, 258, 260, 266, 269, 270, 271, 272, 273, 274, 276, 277], "int": [0, 1, 2, 4, 5, 7, 8, 10, 12, 16, 18, 22, 25, 29, 30, 31, 40, 41, 44, 45, 54, 57, 60, 61, 62, 64, 65, 66, 69, 72, 74, 77, 79, 80, 81, 91, 94, 98, 103, 104, 106, 107, 108, 115, 116, 117, 126, 129, 132, 133, 135, 137, 138, 144, 145, 148, 150, 152, 153, 154, 155, 167, 168, 171, 175, 176, 177, 185, 186, 189, 190, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 256, 258, 259, 266, 269, 270, 271, 273], "characterist": [0, 1, 7, 34, 35, 45, 47, 50, 51, 60, 61, 69, 72, 74, 75, 88, 89, 93, 96, 105, 107, 110, 115, 116, 117, 119, 122, 123, 152, 180, 191, 193, 225, 236, 237, 254, 255, 256, 260, 266, 271, 274, 276, 277], "degre": [0, 1, 10, 31, 33, 34, 35, 36, 45, 54, 60, 61, 67, 69, 75, 79, 85, 88, 105, 107, 114, 115, 116, 117, 126, 132, 133, 137, 138, 139, 143, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 177, 179, 180, 181, 191, 193, 195, 199, 206, 207, 214, 222, 225, 236, 237, 238, 239, 242, 245, 250, 252, 255, 256, 258, 260, 266, 271, 274, 276, 277], "alia": [0, 60, 248, 249, 250, 251, 252, 253, 271], "creat": [0, 1, 2, 3, 4, 5, 6, 22, 45, 55, 59, 61, 62, 63, 64, 65, 66, 68, 69, 80, 107, 115, 116, 117, 127, 131, 132, 141, 143, 168, 222, 248, 250, 252, 254, 255, 257, 258, 260, 267, 271, 273, 276, 277], "primitive_el": [0, 1, 17, 34, 35, 60, 61, 66, 69, 88, 91, 94, 101, 102, 103, 104, 105, 107, 115, 116, 180, 209, 214, 236, 237, 254, 255, 256, 258, 266, 271, 274, 276, 277], "irreducible_poli": [0, 1, 14, 34, 35, 47, 60, 61, 69, 85, 88, 105, 107, 115, 116, 119, 155, 159, 162, 180, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 239, 255, 256, 259, 266, 269, 271, 274, 276, 277], "poli": [0, 1, 12, 14, 18, 22, 23, 24, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 85, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 175, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 256, 258, 259, 260, 264, 266, 267, 271, 273, 274, 276], "find": [0, 31, 61, 103, 104, 116, 166, 177, 191, 192, 196, 197, 198, 199, 201, 204, 206, 207, 209, 222, 230, 232, 233, 235, 236, 237, 238, 239, 240, 241, 246, 247, 259, 271, 273, 274, 276, 277], "g": [0, 22, 23, 25, 28, 29, 31, 33, 36, 39, 43, 132, 141, 157, 158, 159, 168, 169, 171, 174, 175, 177, 179, 181, 184, 188, 193, 206, 209, 214, 215, 236, 237, 238, 240, 241, 259, 268, 271, 273, 276, 277], "q": [0, 22, 25, 28, 31, 33, 34, 35, 36, 38, 43, 61, 66, 76, 90, 97, 109, 116, 132, 159, 161, 162, 168, 171, 174, 177, 179, 180, 181, 183, 188, 206, 207, 214, 219, 224, 232, 236, 237, 238, 239, 254, 271, 273], "f": [0, 45, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 69, 85, 101, 102, 103, 104, 116, 117, 119, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 152, 153, 154, 155, 157, 158, 159, 161, 162, 165, 166, 167, 193, 199, 203, 205, 206, 207, 209, 214, 217, 218, 219, 224, 225, 232, 233, 236, 237, 238, 239, 240, 241, 242, 245, 259, 271, 274, 276], "x": [0, 22, 23, 24, 25, 27, 28, 29, 31, 33, 34, 35, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 69, 70, 71, 72, 73, 75, 76, 81, 83, 84, 85, 88, 89, 90, 91, 93, 94, 96, 97, 101, 102, 105, 106, 107, 109, 110, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 179, 180, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 198, 199, 201, 203, 204, 205, 206, 207, 214, 217, 218, 219, 222, 223, 224, 225, 230, 233, 236, 237, 238, 239, 243, 246, 248, 249, 250, 251, 253, 255, 256, 257, 258, 259, 266, 267, 271, 272, 273, 274, 275, 276, 277], "list": [0, 1, 11, 20, 61, 80, 112, 116, 132, 138, 153, 154, 155, 167, 196, 199, 200, 204, 207, 209, 215, 226, 227, 230, 235, 237, 239, 241, 242, 246, 247, 253, 256, 257, 259, 263, 271, 277], "_poli": [0, 132, 153, 154, 155, 167, 197, 199, 237], "all": [0, 1, 3, 6, 13, 18, 20, 21, 46, 47, 61, 63, 65, 68, 76, 80, 82, 91, 96, 102, 103, 104, 106, 109, 110, 112, 113, 116, 118, 119, 132, 133, 138, 153, 157, 158, 161, 167, 193, 196, 199, 200, 204, 207, 213, 219, 220, 225, 226, 227, 228, 230, 235, 237, 239, 241, 247, 254, 255, 256, 257, 258, 259, 264, 266, 267, 271, 276, 277], "is_primitive_el": [0, 214, 236, 237], "polylik": [0, 60, 115, 132, 142, 214, 252, 271], "bool": [0, 22, 25, 32, 37, 38, 39, 60, 61, 69, 86, 87, 88, 89, 115, 116, 132, 141, 142, 157, 158, 159, 160, 161, 162, 168, 171, 178, 182, 183, 184, 190, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 228, 239, 241, 273], "determin": [0, 61, 89, 116, 132, 142, 158, 159, 161, 162, 190, 191, 200, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 224, 228, 244, 271], "i": [0, 1, 2, 3, 4, 5, 6, 8, 18, 22, 25, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 50, 51, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 150, 152, 153, 154, 155, 160, 165, 166, 167, 168, 171, 175, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 198, 199, 200, 201, 202, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 250, 252, 254, 255, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 273, 274, 275, 276, 277], "univari": [0, 132, 259, 267], "The": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 19, 22, 23, 24, 25, 29, 30, 31, 32, 33, 34, 35, 36, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 81, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 175, 176, 177, 178, 179, 180, 181, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 200, 201, 203, 204, 205, 206, 207, 209, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "section": [0, 89, 153, 154, 155, 159, 167, 194, 197, 198, 199, 200, 228, 232, 233, 246, 254, 260, 269, 270, 271, 276, 277], "contain": [0, 268, 271], "mani": [0, 31, 177, 212, 250, 254, 257, 260, 263, 277], "function": [0, 8, 18, 70, 71, 77, 106, 153, 154, 155, 159, 167, 191, 192, 194, 195, 196, 197, 198, 199, 201, 202, 204, 206, 209, 212, 213, 218, 225, 230, 233, 235, 237, 240, 242, 244, 245, 254, 255, 257, 259, 263, 267, 271], "oper": [0, 31, 33, 61, 73, 108, 116, 135, 139, 144, 147, 177, 179, 254, 256, 257, 259, 260, 266, 267, 268, 270, 271, 277], "return": [0, 2, 3, 4, 5, 6, 18, 22, 31, 32, 33, 46, 57, 59, 62, 63, 64, 65, 66, 67, 68, 72, 73, 75, 76, 83, 84, 89, 90, 91, 92, 93, 94, 97, 99, 103, 104, 106, 107, 108, 109, 114, 115, 116, 118, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 255, 256, 260, 271, 273, 274, 276, 277], "monic": [0, 132, 138, 153, 154, 155, 157, 160, 167, 193, 199, 206, 207, 238, 239, 271], "through": [0, 207, 239, 241, 254, 271], "conway_poli": [0, 115, 157, 158, 159, 161, 193, 206, 225, 238, 259, 274, 276], "conwai": [0, 115, 132, 157, 158, 159, 161, 193, 238, 259, 267, 274, 276], "c_": [0, 31, 33, 45, 46, 47, 50, 51, 58, 115, 117, 118, 119, 122, 123, 130, 132, 157, 158, 177, 179, 191, 193, 276], "matlab_primitive_poli": [0, 25, 161, 171, 225, 238, 271], "matlab": [0, 225, 271], "": [0, 22, 31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 72, 82, 94, 95, 98, 113, 116, 117, 118, 119, 125, 127, 128, 132, 141, 144, 146, 147, 152, 157, 158, 159, 166, 168, 177, 178, 179, 193, 197, 199, 200, 209, 212, 225, 228, 232, 233, 254, 255, 256, 257, 258, 260, 263, 264, 266, 267, 271, 272, 274, 276, 277], "default": [0, 1, 2, 3, 4, 5, 6, 9, 18, 25, 31, 33, 46, 47, 55, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 78, 81, 88, 91, 106, 107, 108, 111, 114, 115, 116, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 152, 157, 158, 166, 171, 177, 179, 191, 193, 195, 200, 204, 206, 207, 225, 226, 227, 228, 230, 232, 233, 238, 239, 240, 241, 242, 244, 245, 247, 249, 255, 257, 258, 259, 266, 268, 269, 270, 271, 276, 277], "primitive_poli": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 161, 193, 206, 207, 225, 238, 239, 259, 271, 274], "lagrange_poli": [0, 222, 271, 272], "y": [0, 45, 73, 83, 84, 89, 96, 110, 117, 191, 192, 222, 257, 266, 267, 271, 272, 276, 277], "comput": [0, 8, 18, 31, 33, 61, 72, 75, 76, 77, 83, 84, 90, 91, 93, 94, 97, 106, 109, 115, 116, 132, 152, 155, 157, 158, 159, 177, 179, 193, 196, 197, 198, 199, 200, 201, 203, 204, 205, 218, 219, 220, 222, 223, 224, 226, 230, 233, 243, 254, 257, 258, 259, 260, 267, 268, 269, 270, 271, 274, 276, 277], "lagrang": [0, 222, 271], "l": [0, 61, 83, 84, 92, 99, 116, 222, 240, 241], "x_i": [0, 222, 233], "y_i": [0, 222], "bch": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 267, 271, 273, 274], "textrm": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 61, 75, 76, 90, 94, 97, 107, 109, 116, 153, 159, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 192, 194, 200, 203, 204, 224, 228, 230, 233, 240, 241, 257, 270, 271, 276, 277], "n": [0, 1, 2, 22, 23, 24, 25, 27, 28, 30, 31, 32, 33, 36, 38, 40, 41, 45, 46, 47, 50, 51, 53, 55, 56, 57, 58, 61, 62, 66, 75, 76, 83, 90, 93, 97, 103, 104, 109, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 132, 157, 158, 165, 168, 169, 170, 171, 173, 174, 176, 177, 178, 179, 181, 183, 185, 186, 191, 192, 193, 195, 196, 198, 199, 200, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 240, 241, 246, 247, 254, 257, 258, 267, 270, 271, 273, 274], "k": [0, 22, 23, 24, 25, 27, 30, 31, 32, 33, 40, 41, 61, 69, 83, 84, 103, 104, 116, 132, 138, 152, 155, 159, 161, 162, 166, 168, 169, 170, 171, 173, 176, 177, 178, 179, 185, 186, 195, 198, 199, 204, 205, 209, 211, 213, 217, 221, 222, 230, 232, 240, 241, 273, 274, 277], "code": [0, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 153, 154, 155, 167, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 197, 199, 225, 262, 266, 267, 271, 273, 274], "reedsolomon": [0, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 267, 271, 273], "r": [0, 31, 76, 90, 104, 109, 132, 154, 157, 158, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 193, 228, 254, 261, 263, 266, 267, 268, 271], "flfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "fibonacci": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "feedback": [0, 45, 47, 50, 51, 117, 119, 122, 123, 191, 267, 271], "shift": [0, 45, 46, 58, 117, 118, 130, 191, 267], "regist": [0, 45, 46, 58, 117, 118, 130, 191, 267], "lfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 191, 271], "glfsr": [0, 45, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 191, 267, 271], "berlekamp_massei": [0, 45, 117, 191, 271], "output": [0, 31, 33, 45, 57, 59, 64, 67, 114, 117, 129, 131, 177, 179, 191, 204, 230, 261, 270, 271, 273], "minim": [0, 45, 54, 61, 93, 116, 117, 126, 191, 222, 271], "c": [0, 22, 25, 28, 29, 31, 32, 33, 36, 37, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 76, 97, 109, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 153, 167, 168, 171, 174, 175, 177, 178, 179, 181, 182, 188, 191, 204, 210, 230, 231, 233, 268, 271], "produc": [0, 45, 54, 57, 59, 64, 117, 126, 129, 131, 137, 191, 206, 207, 238, 239, 256, 269, 276, 277], "recurr": [0, 45, 50, 54, 58, 117, 122, 126, 130, 191], "intt": [0, 204, 230, 271], "invers": [0, 67, 113, 114, 135, 139, 144, 147, 204, 271], "theoret": [0, 204, 230, 267, 271], "ntt": [0, 204, 230, 254, 267, 271], "size": [0, 1, 2, 22, 25, 40, 41, 57, 61, 62, 80, 94, 98, 116, 129, 132, 148, 168, 171, 185, 186, 191, 204, 222, 230, 253, 254, 256, 257, 258, 270, 271, 273, 276, 277], "none": [0, 1, 2, 3, 4, 5, 6, 18, 22, 25, 45, 46, 47, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 91, 106, 107, 108, 114, 115, 116, 117, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 168, 171, 200, 204, 206, 207, 226, 227, 230, 232, 238, 239, 240, 241, 242, 244, 247, 255, 271], "are_coprim": [0, 190, 271], "valu": [0, 1, 11, 18, 31, 61, 72, 73, 80, 89, 94, 106, 115, 116, 133, 141, 144, 148, 177, 190, 191, 199, 204, 217, 219, 220, 222, 223, 224, 230, 240, 241, 243, 254, 256, 257, 258, 260, 271], "argument": [0, 69, 91, 103, 104, 115, 190, 197, 201, 223, 230, 243, 256, 257, 258, 259, 263, 266, 268, 271, 272, 273, 274], "ar": [0, 1, 11, 22, 25, 28, 31, 32, 37, 43, 45, 57, 59, 61, 65, 67, 76, 78, 80, 89, 90, 91, 94, 96, 97, 103, 104, 108, 109, 110, 111, 114, 115, 116, 117, 131, 132, 133, 135, 138, 139, 141, 142, 143, 144, 147, 149, 151, 153, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 168, 171, 174, 177, 178, 182, 188, 190, 191, 192, 193, 198, 199, 200, 204, 206, 209, 210, 215, 216, 217, 219, 224, 225, 227, 228, 230, 231, 238, 240, 241, 242, 245, 246, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "pairwis": [0, 190], "coprim": [0, 190, 192, 198, 209, 215, 219, 240, 241, 246, 277], "egcd": [0, 197, 201, 223, 243, 271, 276, 277], "b": [0, 142, 153, 154, 156, 167, 197, 201, 203, 211, 216, 232, 244, 247, 261, 267, 269, 270, 271, 272, 274, 276, 277], "multiplicand": [0, 197], "t": [0, 22, 31, 44, 45, 46, 58, 76, 90, 97, 99, 109, 117, 118, 130, 133, 138, 143, 168, 177, 189, 191, 197, 206, 207, 225, 228, 238, 239, 260, 263, 269, 270, 271, 276, 277], "gcd": [0, 159, 197, 201, 210, 223, 228, 231, 233, 243, 271, 276, 277], "euler_phi": [0, 192, 198, 209, 215, 237, 240, 241, 246, 271], "count": [0, 198, 209, 240], "posit": [0, 79, 108, 115, 192, 195, 196, 198, 199, 203, 205, 209, 215, 240, 241, 246, 247, 274], "tot": [0, 192, 198, 209, 215, 240, 241, 246], "1": [0, 1, 5, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 273, 275, 276, 277], "greatest": [0, 197, 201, 271], "common": [0, 193, 197, 200, 201, 223, 228, 259, 271, 276], "divisor": [0, 103, 104, 159, 195, 196, 197, 201, 247, 271], "lcm": [0, 22, 190, 197, 201, 223, 243], "least": [0, 148, 191, 203, 204, 209, 223, 230, 240, 241, 258, 271], "multipl": [0, 33, 36, 61, 73, 94, 101, 102, 108, 113, 115, 116, 132, 137, 138, 139, 141, 152, 155, 157, 158, 162, 166, 167, 179, 181, 192, 193, 199, 209, 215, 217, 223, 240, 241, 246, 250, 255, 256, 257, 266, 269, 270, 271, 274], "prod": [0, 190, 197, 201, 223, 243], "product": [0, 61, 83, 92, 99, 116, 132, 153, 154, 155, 167, 190, 199, 210, 231, 243, 267, 269, 270], "carmichael_lambda": [0, 192, 198, 209, 240, 241, 246, 271], "smallest": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 72, 94, 101, 114, 192, 204, 209, 230, 236, 240, 241, 254, 256, 260, 271], "equiv": [0, 192, 194, 200, 224, 228, 233, 276, 277], "mod": [0, 31, 177, 192, 194, 200, 224, 228, 233, 270, 271, 276], "everi": [0, 36, 72, 89, 92, 110, 181, 192, 209, 240, 256, 257, 276, 277], "crt": [0, 194, 271], "remaind": [0, 31, 177, 194, 269, 271, 276], "moduli": [0, 194, 204, 230, 271], "solv": [0, 194, 272, 277], "simultan": [0, 194], "system": [0, 194, 249, 263, 264, 268], "jacobi_symbol": [0, 219, 220, 224, 271], "jacobi": [0, 219, 220, 277], "symbol": [0, 22, 25, 31, 32, 33, 44, 45, 57, 117, 129, 157, 158, 168, 171, 177, 178, 179, 189, 191, 193, 219, 220, 224], "frac": [0, 44, 132, 152, 157, 158, 165, 189, 193, 198, 204, 205, 219, 220, 222, 224, 228], "kronecker_symbol": [0, 219, 220, 224, 271], "kroneck": [0, 220], "extend": [0, 197, 219, 220, 254, 267, 271, 276, 277], "legendre_symbol": [0, 219, 220, 224, 271], "legendr": [0, 219, 224], "is_cycl": [0, 192, 198, 209, 215, 240, 241, 246], "whether": [0, 31, 33, 61, 88, 115, 116, 132, 141, 157, 158, 159, 160, 161, 162, 177, 179, 209, 213, 256, 270], "group": [0, 64, 94, 115, 192, 209, 215, 240, 241, 246, 255, 271, 276, 277], "mathbb": [0, 192, 204, 209, 215, 230, 240, 241, 246, 266, 267, 270, 277], "z": [0, 191, 192, 209, 215, 240, 241, 246, 254, 257, 270, 277], "time": [0, 1, 2, 8, 57, 61, 62, 66, 75, 76, 77, 90, 93, 94, 97, 109, 116, 129, 192, 209, 215, 240, 241, 246, 255, 257, 258, 267, 268, 269, 270, 271, 274, 276, 277], "cyclic": [0, 22, 168, 192, 209, 215, 240, 241, 271, 276, 277], "primitive_root": [0, 115, 204, 209, 215, 230, 240, 241, 271, 277], "start": [0, 1, 5, 22, 37, 61, 65, 116, 168, 182, 209, 240, 241, 256, 261, 268, 271], "modulo": [0, 115, 209, 215, 219, 224, 233, 240, 241, 260, 269, 270, 271, 276, 277], "rang": [0, 1, 5, 25, 61, 65, 116, 192, 194, 200, 209, 219, 224, 228, 240, 241, 256, 268, 271, 273], "stop": [0, 1, 5, 61, 65, 116, 209, 240, 241, 256, 271], "is_primitive_root": [0, 215, 240, 241], "ilog": [0, 203, 205, 218], "lfloor": [0, 44, 189, 203, 205, 218], "log": [0, 8, 61, 77, 91, 115, 116, 203, 204, 230, 257, 266, 271], "_b": [0, 203], "rfloor": [0, 44, 189, 203, 205, 218], "le": [0, 25, 103, 104, 159, 166, 171, 200, 203, 205, 206, 209, 211, 215, 216, 218, 222, 225, 226, 227, 228, 232, 234, 235, 244, 247, 277], "iroot": [0, 203, 205, 218], "isqrt": [0, 203, 205, 218], "sqrt": [0, 110, 218, 247, 266, 271], "non": [0, 4, 23, 24, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 42, 43, 61, 64, 88, 94, 96, 107, 108, 116, 132, 133, 137, 150, 155, 160, 163, 164, 167, 169, 170, 171, 172, 173, 174, 177, 181, 183, 184, 187, 188, 199, 205, 206, 207, 209, 218, 219, 224, 232, 233, 238, 239, 240, 244, 249, 254, 257, 259, 260, 271, 273, 274], "constant": [0, 75, 132, 155, 167, 199, 233, 267], "divisor_sigma": [0, 195, 196, 271], "sum": [0, 76, 84, 90, 97, 109, 195, 254, 260], "th": [0, 22, 25, 28, 61, 103, 104, 116, 132, 152, 165, 168, 171, 174, 195, 204, 205, 213, 221, 230, 254, 271], "power": [0, 1, 12, 18, 22, 25, 28, 29, 37, 43, 60, 61, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 86, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 116, 141, 159, 166, 168, 171, 174, 175, 182, 188, 192, 195, 199, 206, 207, 209, 210, 213, 215, 216, 227, 230, 231, 232, 233, 238, 239, 240, 241, 248, 250, 251, 255, 256, 257, 259, 266, 271, 272, 273, 274, 276, 277], "d": [0, 1, 2, 5, 22, 25, 27, 28, 29, 30, 31, 32, 33, 37, 40, 41, 43, 44, 45, 61, 62, 65, 75, 93, 103, 104, 116, 117, 132, 137, 138, 143, 144, 152, 153, 154, 155, 159, 165, 166, 167, 168, 171, 173, 174, 175, 176, 177, 178, 179, 182, 185, 186, 188, 189, 191, 195, 196, 199, 222, 225, 232, 250, 253, 256, 258, 260, 261, 262, 266, 273, 276, 277], "perfect_pow": [0, 199, 210, 231, 271], "base": [0, 1, 61, 91, 107, 115, 116, 200, 203, 228, 231, 254, 255, 263, 266, 271], "expon": [0, 107, 152, 199, 210, 226, 227, 231, 247, 260], "e": [0, 1, 7, 10, 16, 30, 31, 90, 97, 141, 143, 153, 177, 178, 204, 209, 210, 226, 230, 231, 240, 255, 262, 268, 271, 273, 276, 277], "If": [0, 18, 25, 31, 33, 57, 75, 88, 91, 93, 94, 103, 104, 106, 115, 129, 133, 138, 141, 143, 153, 154, 155, 157, 158, 159, 167, 171, 177, 179, 193, 199, 200, 204, 206, 207, 209, 212, 215, 228, 230, 231, 232, 233, 235, 238, 239, 240, 241, 247, 252, 267, 268, 270, 276, 277], "perfect": [0, 199, 210, 217, 231, 271], "pollard_p1": [0, 232, 233, 271], "b2": [0, 232], "attempt": [0, 200, 228, 232, 233], "trivial": [0, 199, 232, 233], "ha": [0, 8, 22, 31, 36, 43, 67, 75, 76, 77, 89, 90, 92, 93, 97, 109, 115, 141, 143, 148, 153, 154, 155, 158, 159, 162, 167, 168, 177, 204, 217, 225, 228, 232, 237, 255, 257, 270, 271, 276, 277], "smooth": [0, 211, 216, 232, 271], "pollard_rho": [0, 199, 232, 233, 271], "us": [0, 4, 8, 18, 25, 31, 32, 33, 61, 64, 73, 77, 78, 80, 88, 91, 99, 106, 107, 111, 112, 115, 116, 133, 137, 138, 139, 141, 143, 144, 146, 147, 166, 171, 177, 178, 179, 191, 199, 200, 204, 206, 207, 224, 225, 228, 230, 232, 233, 239, 241, 242, 244, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277], "cycl": [0, 233], "detect": [0, 22, 31, 32, 168, 178, 200, 228, 233, 271], "trial_divis": [0, 199, 247, 271], "p_i": [0, 159, 198, 211, 217, 232, 247, 271], "e_i": [0, 162, 198, 211, 217, 247, 271], "kth_prime": [0, 221, 229, 234, 235], "where": [0, 8, 25, 31, 32, 33, 77, 103, 104, 115, 152, 153, 157, 158, 159, 166, 171, 177, 178, 179, 193, 196, 204, 209, 210, 215, 221, 228, 230, 231, 232, 233, 237, 240, 241, 247, 257, 258, 271, 272, 277], "3": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "4": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 139, 141, 142, 144, 145, 147, 148, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 206, 207, 209, 210, 211, 214, 216, 217, 219, 221, 222, 223, 224, 225, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 266, 268, 269, 270, 271, 272, 273, 276, 277], "dot": [0, 22, 25, 28, 29, 31, 33, 37, 43, 45, 46, 47, 50, 51, 53, 55, 56, 58, 61, 73, 82, 101, 102, 113, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 138, 143, 144, 152, 153, 154, 155, 165, 166, 168, 171, 174, 175, 177, 179, 182, 188, 191, 198, 199, 209, 211, 215, 216, 221, 232, 233, 238, 239, 240, 241, 247, 258, 270, 271, 276, 277], "5": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 214, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 228, 230, 231, 232, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "7": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 114, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "mersenne_expon": [0, 226, 227], "known": [0, 115, 216, 226, 227, 252], "mersenn": [0, 226, 227, 274], "mersenne_prim": [0, 226, 227], "next_prim": [0, 221, 229, 234, 235, 244, 271], "nearest": [0, 229, 234], "prev_prim": [0, 221, 229, 234, 235, 244, 271], "random_prim": [0, 244, 272], "bit": [0, 226, 227, 244], "seed": [0, 4, 64, 137, 244, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274], "random": [0, 1, 4, 22, 31, 32, 33, 61, 64, 75, 76, 90, 91, 93, 97, 109, 116, 132, 137, 152, 156, 159, 168, 177, 178, 179, 194, 200, 206, 222, 236, 238, 240, 243, 244, 249, 253, 254, 255, 258, 259, 264, 269, 270, 271, 272, 273, 274, 276, 277], "is_composit": [0, 208, 212, 271], "is_perfect_pow": [0, 208, 210, 212, 213, 217, 231, 271], "is_powersmooth": [0, 211, 216, 271], "powersmooth": [0, 211], "is_prim": [0, 199, 200, 208, 212, 213, 226, 227, 228, 244, 271], "is_prime_pow": [0, 210, 212, 213, 217, 231, 271], "ge": [0, 30, 31, 200, 211, 213, 216, 219, 224, 228, 234], "is_smooth": [0, 211, 216, 271], "is_square_fre": [0, 132, 162, 208, 210, 217, 271], "squar": [0, 61, 75, 89, 92, 93, 96, 110, 116, 132, 141, 153, 154, 155, 162, 167, 199, 217, 218, 256, 266, 271], "free": [0, 132, 153, 154, 155, 162, 167, 199, 217], "fermat_primality_test": [0, 200, 212, 228, 271], "fermat": [0, 200, 212, 271], "miller_rabin_primality_test": [0, 200, 212, 228, 271], "miller": [0, 212, 228], "rabin": [0, 159, 212, 228], "get_printopt": [0, 202, 242, 245, 271], "dict": [0, 202], "str": [0, 1, 15, 20, 22, 26, 27, 45, 48, 49, 61, 70, 71, 73, 95, 105, 107, 112, 116, 117, 120, 121, 132, 139, 146, 147, 168, 172, 173, 202, 206, 207, 209, 238, 239, 240, 248, 249, 250, 251, 252, 259, 271, 272, 274], "ani": [0, 73, 74, 107, 108, 139, 202, 209, 211, 228, 240, 250, 254, 258, 260, 262, 264, 266, 267, 271, 276, 277], "current": [0, 1, 12, 19, 45, 56, 61, 81, 111, 115, 116, 117, 128, 141, 202, 256, 258, 260, 262, 271], "print": [0, 25, 27, 34, 35, 45, 46, 49, 59, 61, 69, 71, 73, 88, 105, 106, 107, 115, 116, 117, 118, 121, 131, 147, 173, 180, 191, 192, 194, 202, 203, 205, 207, 209, 218, 219, 224, 236, 237, 239, 240, 241, 242, 245, 255, 256, 259, 266, 271, 272, 273, 274, 276, 277], "option": [0, 31, 73, 115, 166, 177, 202, 232, 242, 245, 262, 268, 271], "packag": [0, 103, 104, 202, 209, 232, 240, 242, 245, 262, 267, 271, 272, 276, 277], "thi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 18, 22, 25, 29, 36, 37, 40, 41, 43, 47, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 77, 78, 80, 81, 91, 99, 103, 104, 106, 111, 112, 114, 115, 116, 119, 129, 133, 137, 138, 141, 143, 148, 153, 154, 155, 166, 167, 168, 171, 185, 186, 191, 192, 194, 195, 197, 198, 199, 201, 202, 204, 206, 212, 213, 217, 218, 225, 230, 232, 233, 235, 238, 242, 244, 245, 249, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 276, 277], "equival": [0, 31, 33, 59, 91, 99, 107, 116, 131, 132, 135, 141, 145, 165, 177, 179, 191, 202, 209, 225, 240, 242, 245, 255, 258, 259, 260, 263, 270, 271, 276, 277], "printopt": [0, 202, 242, 245, 271], "kwarg": [0, 242, 271], "context": [0, 18, 106, 242, 252, 258, 271], "manag": [0, 18, 106, 242, 258, 271], "temporarili": [0, 106, 242, 256, 258], "modifi": [0, 55, 56, 81, 106, 115, 127, 128, 133, 138, 143, 242, 245, 256, 258, 259, 264, 271, 273, 274], "set_printopt": [0, 146, 147, 202, 242, 245, 258, 271], "coeff": [0, 46, 58, 75, 118, 130, 132, 133, 143, 145, 148, 149, 151, 202, 207, 239, 242, 245, 259, 271], "desc": [0, 143, 148, 202, 245], "asc": [0, 143, 148, 202, 242, 245, 259, 271], "galoi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276], "arrai": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 31, 32, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 75, 80, 83, 84, 89, 91, 92, 93, 94, 99, 103, 104, 106, 114, 116, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 145, 148, 149, 151, 156, 163, 164, 166, 177, 178, 204, 222, 230, 248, 250, 251, 252, 253, 257, 258, 259, 260, 267, 268, 270, 271, 272, 274, 276, 277], "field": [1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 49, 52, 57, 59, 60, 61, 65, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 94, 95, 96, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 113, 115, 116, 117, 118, 121, 124, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178, 179, 180, 183, 184, 185, 186, 187, 189, 191, 193, 194, 199, 204, 206, 207, 209, 214, 225, 230, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 254, 256, 257, 258, 259, 260, 264, 266, 267, 271, 273, 274], "cannot": [1, 8, 31, 61, 77, 78, 80, 111, 112, 115, 177, 232, 233, 247, 257, 269, 276, 277], "instanti": [1, 61, 255, 256, 273], "directli": [1, 61, 255], "classmethod": [1, 2, 3, 4, 5, 6, 8, 18, 45, 46, 61, 62, 63, 64, 65, 66, 67, 68, 73, 77, 103, 104, 106, 107, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 255, 258, 259, 266, 271, 273, 276, 277], "ident": [1, 2, 59, 61, 62, 89, 108, 110, 116, 131, 132, 134, 141, 204, 255, 259, 260, 271, 272, 277], "self": [1, 2, 3, 4, 5, 6, 45, 46, 61, 62, 63, 64, 65, 66, 68, 76, 83, 84, 90, 92, 97, 99, 103, 104, 108, 109, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 272], "matrix": [1, 2, 22, 23, 24, 31, 32, 33, 61, 62, 64, 66, 75, 76, 90, 92, 93, 97, 99, 108, 109, 116, 141, 168, 169, 170, 177, 178, 179, 255, 258, 269, 270, 271, 272, 274], "Ones": [1, 3, 61, 63, 116, 256], "ones": [1, 3, 46, 47, 61, 63, 116, 118, 119, 133, 138], "element": [1, 2, 3, 4, 5, 6, 8, 12, 13, 17, 18, 22, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 77, 78, 80, 81, 82, 83, 84, 88, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 111, 112, 113, 114, 115, 141, 143, 152, 166, 168, 206, 209, 214, 222, 236, 237, 238, 239, 240, 241, 248, 250, 251, 254, 255, 256, 257, 271, 273], "zero": [1, 6, 31, 61, 68, 94, 108, 116, 132, 133, 140, 148, 150, 163, 164, 177, 204, 206, 207, 230, 238, 239, 254, 256, 258, 259, 260, 271, 274, 276, 277], "compil": [1, 8, 9, 19, 20, 60, 77, 78, 111, 112, 115, 249, 267, 269, 270, 271, 272, 274], "mode": [1, 8, 9, 19, 20, 61, 77, 78, 111, 112, 115, 116, 269, 270, 271], "recompil": [1, 8, 61, 77, 78, 111, 112, 116], "just": [1, 8, 18, 61, 77, 106, 116, 255, 257, 258, 267], "ufunc": [1, 8, 61, 77, 78, 111, 112, 115, 116, 267, 269, 270, 271], "new": [1, 8, 55, 61, 77, 116, 127, 157, 158, 193, 200, 257, 258, 266, 267, 269, 271], "calcul": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 132, 141, 166, 209, 255, 258, 260, 267, 268, 271, 274, 276], "repr": [1, 18, 25, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 115, 116, 146, 236, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 274, 276, 277], "gener": [1, 4, 8, 18, 22, 23, 25, 28, 29, 31, 33, 36, 37, 42, 43, 61, 64, 73, 77, 94, 101, 102, 106, 107, 115, 116, 137, 155, 157, 158, 162, 168, 169, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 197, 199, 201, 207, 209, 215, 217, 223, 239, 240, 241, 242, 243, 244, 255, 261, 267, 269, 271, 276, 277], "set": [1, 18, 61, 90, 97, 106, 115, 116, 148, 190, 209, 219, 240, 241, 256, 257, 259, 263, 264, 266, 268, 271, 274, 276, 277], "represent": [1, 12, 18, 26, 48, 65, 69, 73, 81, 106, 107, 115, 120, 135, 139, 144, 146, 147, 172, 193, 248, 250, 252, 256, 271, 273, 276, 277], "from": [1, 4, 18, 22, 45, 46, 47, 61, 64, 67, 69, 73, 88, 89, 91, 106, 114, 116, 117, 118, 119, 132, 133, 135, 137, 138, 139, 143, 153, 154, 155, 159, 161, 166, 167, 168, 194, 197, 198, 199, 200, 201, 204, 207, 209, 218, 219, 220, 224, 228, 230, 232, 233, 239, 240, 241, 244, 246, 252, 255, 256, 258, 259, 260, 261, 266, 268, 271, 273, 274, 277], "gr": [1, 7, 10, 16, 255], "default_ufunc_mod": [1, 9, 61, 78, 116], "jit": [1, 8, 9, 19, 60, 61, 77, 78, 91, 111, 112, 115, 116, 257, 268, 269, 270, 271, 272], "lookup": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 258, 267, 268, 271], "python": [1, 8, 9, 19, 60, 61, 77, 78, 80, 103, 104, 111, 112, 115, 116, 204, 209, 218, 230, 232, 240, 249, 254, 256, 260, 261, 263, 266, 267, 268, 271, 273, 274, 277], "dtype": [1, 2, 3, 4, 5, 6, 11, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 116, 249, 256, 269, 270, 271], "valid": [1, 11, 31, 32, 61, 80, 116, 141, 177, 178, 258, 271], "integ": [1, 4, 11, 18, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 79, 80, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 132, 135, 137, 144, 152, 190, 192, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 223, 224, 228, 229, 230, 231, 232, 233, 234, 235, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259, 260, 266, 267, 269, 271, 274, 276, 277], "compat": [1, 11, 61, 80, 116, 157, 158, 193, 275], "element_repr": [1, 12, 18, 61, 81, 106, 116, 258, 273], "irreduc": [1, 14, 25, 61, 85, 88, 115, 116, 132, 153, 154, 155, 159, 161, 162, 167, 171, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 238, 255, 259, 267, 269, 271, 274], "polynomi": [1, 14, 18, 25, 28, 29, 31, 33, 36, 37, 42, 43, 47, 50, 51, 54, 61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 82, 83, 84, 85, 88, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 119, 122, 123, 126, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 266, 267, 269, 271, 274, 277], "name": [1, 15, 34, 35, 45, 61, 69, 88, 94, 95, 103, 104, 105, 107, 115, 116, 180, 224, 228, 236, 237, 255, 256, 263, 266, 268, 271, 274, 276, 277], "em": [1, 16], "primit": [1, 17, 22, 23, 24, 25, 26, 27, 28, 38, 39, 42, 45, 61, 69, 88, 91, 94, 101, 102, 103, 104, 107, 115, 116, 117, 132, 157, 158, 159, 161, 166, 168, 169, 170, 171, 172, 173, 174, 183, 184, 187, 193, 204, 209, 214, 215, 225, 230, 236, 237, 238, 239, 240, 241, 254, 255, 256, 257, 258, 259, 267, 271, 273], "ufunc_mod": [1, 8, 19, 20, 61, 77, 91, 111, 112, 116, 257, 268, 269, 270, 271], "support": [1, 20, 61, 112, 115, 116, 225, 254, 256, 257, 259, 260, 266, 267, 271, 272, 273, 274], "unit": [1, 21, 61, 94, 113, 116, 256, 262, 271, 274], "paramet": [2, 3, 4, 5, 6, 8, 18, 25, 31, 32, 33, 46, 47, 55, 57, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 91, 103, 104, 106, 107, 108, 114, 115, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 148, 152, 154, 157, 158, 166, 171, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247], "along": [2, 62, 191], "one": [2, 31, 32, 57, 62, 103, 104, 129, 132, 136, 137, 160, 162, 177, 178, 209, 217, 225, 226, 227, 232, 240, 254, 255, 257, 259, 260, 268, 277], "dimens": [2, 22, 40, 62, 67, 76, 90, 97, 109, 114, 168, 185, 253, 254, 258], "which": [2, 3, 4, 5, 6, 8, 25, 46, 47, 55, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 91, 94, 107, 108, 114, 115, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 148, 154, 166, 171, 195, 200, 201, 204, 209, 223, 225, 226, 227, 230, 232, 240, 241, 244, 245, 247, 256, 257, 269, 270, 271, 276, 277], "unsign": [2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 114, 256], "first": [2, 3, 4, 5, 6, 22, 25, 29, 31, 36, 37, 43, 57, 62, 63, 64, 65, 66, 67, 68, 69, 114, 143, 152, 157, 158, 168, 171, 175, 177, 181, 182, 188, 193, 197, 201, 204, 206, 207, 212, 225, 230, 232, 238, 239, 255, 256, 257, 258, 263, 264, 268, 270, 271, 272, 274, 276, 277], "compliant": [3, 4, 6, 63, 64, 68], "low": [4, 64, 91, 177, 178, 206, 256, 271], "0": [4, 22, 23, 24, 28, 29, 31, 32, 33, 36, 39, 42, 43, 45, 46, 47, 49, 50, 51, 53, 56, 57, 58, 59, 61, 62, 64, 67, 68, 69, 72, 73, 74, 75, 76, 81, 82, 83, 84, 89, 90, 92, 93, 94, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 114, 116, 117, 118, 119, 121, 122, 123, 125, 127, 128, 129, 130, 131, 132, 133, 138, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 160, 161, 163, 164, 165, 166, 167, 168, 169, 174, 175, 177, 178, 179, 181, 184, 188, 191, 193, 194, 195, 196, 204, 206, 207, 209, 213, 219, 220, 222, 224, 228, 230, 233, 238, 239, 240, 241, 242, 245, 250, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 266, 268, 275, 276, 277], "high": [4, 64, 212, 256], "scalar": [4, 31, 32, 64, 69, 72, 75, 89, 93, 94, 103, 108, 141, 152, 177, 178, 250, 253, 271, 272, 273], "inclus": [4, 5, 64, 65, 240, 241], "largest": [4, 64, 209, 236, 240, 241, 271], "exclus": [4, 5, 64, 65, 240, 241], "neg": [4, 57, 64, 129, 137, 205, 210, 218, 231, 244, 260, 271], "initi": [4, 45, 46, 47, 53, 55, 57, 59, 64, 117, 118, 119, 125, 127, 129, 131, 137, 244, 256, 257, 271], "prng": [4, 64, 137, 244], "mean": [4, 22, 25, 37, 38, 39, 64, 132, 137, 160, 168, 171, 182, 183, 184, 209, 240, 244, 268, 269, 270, 271, 272, 274, 276, 277], "unpredict": [4, 64, 137, 244], "entropi": [4, 64, 137, 244], "pull": [4, 64, 137, 244], "o": [4, 64, 137, 204, 230, 244, 249, 256, 271], "also": [4, 22, 40, 41, 57, 64, 71, 73, 94, 129, 137, 168, 185, 186, 199, 254, 255, 256, 259, 260, 264, 266, 267, 268, 270, 274, 276, 277], "pass": [4, 22, 31, 32, 33, 47, 64, 119, 137, 168, 177, 178, 179, 204, 230, 256, 258, 259, 261, 262, 266, 268, 274], "step": [5, 45, 53, 55, 56, 57, 59, 65, 117, 125, 127, 128, 129, 131, 155, 191, 199, 232, 255], "increment": [5, 65], "between": [5, 65, 139, 193, 254, 271, 274, 276, 277], "properti": [7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, 52, 53, 54, 56, 58, 69, 74, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 90, 94, 95, 96, 97, 98, 100, 101, 102, 105, 107, 109, 110, 111, 112, 113, 115, 121, 122, 123, 124, 125, 126, 128, 130, 148, 149, 150, 151, 156, 160, 163, 164, 169, 170, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 204, 236, 237, 258, 263, 266, 271, 273, 274, 276, 277], "auto": [8, 60, 77, 115], "updat": [8, 18, 77, 106, 261, 272], "select": [8, 77, 115, 200, 226, 257, 276, 277], "less": [8, 77, 78, 111, 115, 161, 214, 227, 228, 236, 237, 257, 258, 269, 270, 274, 276, 277], "than": [8, 30, 57, 77, 78, 89, 91, 96, 110, 111, 115, 129, 161, 162, 204, 210, 214, 217, 225, 227, 228, 230, 231, 236, 237, 247, 256, 257, 258, 260, 267, 269, 270, 271, 274, 276, 277], "20": [8, 25, 31, 32, 33, 45, 64, 65, 69, 75, 77, 78, 82, 91, 97, 99, 101, 102, 104, 107, 110, 111, 113, 115, 117, 155, 169, 170, 173, 177, 178, 179, 184, 187, 192, 198, 199, 209, 214, 235, 240, 246, 250, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 273, 276, 277], "larger": [8, 77, 115, 204, 225, 230, 247, 257], "whose": [8, 22, 28, 77, 78, 80, 111, 112, 115, 132, 153, 168, 174, 209, 214, 240, 271], "int64": [8, 77, 78, 80, 111, 112, 115, 249, 256, 257, 271, 273], "arithmet": [8, 22, 25, 34, 45, 51, 52, 73, 77, 78, 80, 111, 112, 115, 117, 123, 124, 132, 144, 204, 230, 255, 257, 267, 268, 269, 270, 271, 274], "zech": [8, 77, 115, 257], "anti": [8, 77, 115], "tabl": [8, 18, 61, 73, 77, 78, 91, 106, 107, 111, 112, 115, 116, 206, 225, 258, 267, 271, 276, 277], "effici": [8, 57, 77, 115, 129, 212, 233, 235, 240, 260, 267, 269, 270, 271, 277], "In": [8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "few": [8, 77, 115, 276, 277], "case": [8, 77, 115, 224, 232, 257, 264, 270], "explicit": [8, 18, 77, 78, 91, 106, 111, 112, 115, 250, 258, 267, 271, 276, 277], "faster": [8, 77, 115, 257, 267, 270, 271, 274], "design": [8, 25, 29, 30, 36, 37, 43, 77, 115, 171, 175, 182, 261, 267, 273], "larg": [8, 18, 77, 80, 106, 115, 212, 240, 256, 257, 258, 267, 271, 274], "should": [8, 25, 77, 94, 115, 171, 206, 212, 238], "store": [8, 77, 115, 256, 257, 261, 262, 264], "ram": [8, 77, 115], "slower": [8, 77, 115, 257, 269, 270], "pure": [8, 77, 78, 111, 112, 115, 257, 267], "reserv": [8, 77, 115], "instead": [8, 61, 77, 115, 204, 230, 250, 255, 256, 267, 269, 271, 272, 273], "object_": [8, 77, 80, 115, 256, 257, 271], "arbitrari": [8, 73, 77, 115, 241], "precis": [8, 77, 115], "To": [18, 22, 106, 168, 258, 262, 264, 268, 269, 271, 277], "displai": [18, 61, 70, 71, 73, 106, 116, 146, 147, 242, 245, 258, 268, 271, 272, 273, 276, 277], "must": [18, 25, 78, 80, 103, 104, 106, 111, 115, 139, 148, 171, 190, 203, 204, 211, 222, 223, 230, 232, 243, 252, 256, 258, 263, 268, 270, 276], "discret": [18, 61, 91, 106, 116, 204, 230, 254, 258, 271], "logarithm": [18, 61, 91, 106, 115, 116, 203, 257, 258, 266, 271], "each": [18, 31, 36, 61, 72, 89, 94, 106, 107, 115, 116, 154, 155, 166, 167, 177, 181, 190, 194, 199, 209, 223, 232, 237, 240, 241, 243, 254, 255, 258, 269, 270, 271, 272, 274], "For": [18, 31, 32, 33, 65, 75, 79, 80, 83, 84, 93, 100, 103, 104, 106, 114, 115, 139, 144, 152, 153, 165, 177, 178, 179, 191, 192, 198, 204, 206, 209, 218, 228, 230, 232, 255, 256, 257, 258, 263, 269, 270, 271, 272, 273, 276, 277], "process": [18, 106, 258], "take": [18, 106, 115, 257, 258, 277], "while": [18, 106, 115, 206, 207, 238, 239, 255, 258, 259, 268], "howev": [18, 103, 104, 106, 142, 175, 182, 192, 200, 204, 214, 219, 225, 228, 230, 238, 255, 256, 257, 258, 269, 270, 271, 276, 277], "when": [18, 22, 75, 93, 103, 104, 106, 115, 192, 233, 254, 256, 258, 260, 263, 266, 267, 269, 270, 271, 272, 274, 276, 277], "fast": [18, 106, 258, 270], "other": [18, 83, 84, 106, 107, 132, 142, 200, 204, 206, 207, 225, 228, 230, 238, 239, 255, 258, 259, 267, 271, 274, 275], "statement": [18, 106, 242, 263, 271], "perman": [18, 81, 106, 258], "disregard": [18, 106, 206, 207, 238, 239], "note": [18, 30, 33, 36, 42, 44, 45, 47, 50, 51, 67, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89, 90, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 117, 119, 122, 123, 135, 138, 139, 144, 147, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 177, 179, 181, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 211, 212, 213, 214, 215, 216, 217, 219, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 237, 238, 239, 240, 241, 244, 246, 260, 263, 276, 277], "_q": [22, 30, 31, 40, 41, 168, 176, 185, 186], "linear": [22, 45, 50, 52, 54, 58, 76, 109, 117, 122, 124, 126, 130, 168, 191, 267, 271], "block": [22, 168, 242, 271], "codeword": [22, 25, 31, 32, 33, 35, 36, 39, 41, 44, 168, 171, 177, 178, 179, 180, 181, 184, 186, 189, 273], "messag": [22, 25, 31, 32, 33, 39, 40, 168, 171, 177, 178, 179, 184, 185, 273], "minimum": [22, 30, 31, 168, 176, 206, 207, 225, 238, 239, 271, 274], "distanc": [22, 25, 29, 30, 31, 36, 37, 43, 168, 171, 175, 176, 182, 273], "taken": [22, 168, 204, 230], "alphabet": [22, 25, 35, 168, 171, 180], "construct": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 73, 115, 117, 118, 119, 132, 133, 134, 135, 136, 137, 138, 139, 140, 155, 159, 168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 199, 236, 237, 257, 271], "full": [22, 168, 242], "encod": [22, 25, 31, 32, 33, 168, 171, 177, 178, 179, 271, 273], "decod": [22, 31, 168, 177, 271, 273, 274], "onli": [22, 29, 31, 32, 33, 36, 37, 43, 80, 89, 108, 112, 141, 157, 159, 166, 168, 177, 178, 179, 193, 196, 207, 209, 210, 214, 215, 231, 239, 240, 241, 242, 247, 255, 256, 257, 264, 269, 270, 271, 274, 276, 277], "applic": [22, 31, 32, 33, 45, 117, 168, 177, 178, 179, 191, 206, 207, 238, 239, 271], "systemat": [22, 23, 25, 31, 32, 33, 39, 168, 169, 171, 177, 178, 179, 184, 271], "root": [22, 25, 28, 29, 31, 36, 37, 43, 61, 89, 101, 102, 103, 104, 110, 115, 116, 132, 138, 159, 166, 168, 171, 174, 175, 177, 181, 182, 188, 204, 205, 209, 215, 218, 230, 240, 241, 259, 266, 271], "alpha": [22, 25, 28, 29, 31, 36, 37, 43, 61, 69, 91, 101, 102, 103, 104, 116, 166, 168, 171, 174, 175, 177, 181, 182, 188, 238, 239, 254, 256, 257, 258, 266, 277], "evalu": [22, 31, 36, 43, 75, 93, 132, 138, 141, 177, 181, 188, 222, 271, 274], "uniti": [22, 25, 28, 61, 103, 104, 116, 168, 171, 174, 204, 230, 254], "m_": [22, 31, 33, 177, 179], "exampl": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 255, 256, 258, 259, 266, 269, 270, 271, 272, 273, 276, 277], "binari": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 115, 135, 206, 254, 259, 271, 274], "15": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 57, 61, 64, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 101, 102, 103, 104, 107, 109, 110, 113, 115, 117, 129, 132, 155, 159, 166, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 199, 204, 208, 209, 212, 229, 230, 231, 232, 234, 240, 241, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 270, 273, 276, 277], "out": [22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "corrupt": [22, 31, 168, 177], "6": [22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 78, 81, 82, 83, 84, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 118, 121, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 213, 214, 217, 219, 222, 223, 224, 225, 228, 230, 231, 232, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 273, 276, 277], "dec_m": [22, 168], "np": [22, 31, 64, 69, 75, 91, 92, 99, 103, 104, 108, 110, 137, 141, 168, 177, 191, 204, 222, 230, 237, 248, 249, 255, 256, 258, 260, 266, 269, 270, 271, 273, 274, 276, 277], "array_equ": [22, 31, 91, 92, 99, 110, 168, 177, 191, 222, 254, 271], "true": [22, 25, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 50, 51, 60, 61, 69, 75, 76, 86, 87, 88, 89, 90, 91, 92, 97, 99, 105, 107, 109, 110, 115, 116, 122, 123, 135, 141, 142, 144, 153, 154, 157, 158, 159, 160, 161, 162, 166, 167, 168, 171, 173, 174, 175, 177, 178, 180, 182, 183, 184, 190, 191, 192, 193, 194, 197, 198, 200, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 222, 226, 227, 228, 230, 231, 236, 237, 238, 239, 240, 241, 244, 246, 254, 255, 256, 258, 260, 266, 270, 271, 274, 276, 277], "instruct": [22, 168, 263, 264], "number": [22, 25, 31, 32, 33, 57, 66, 76, 90, 97, 108, 109, 129, 152, 168, 171, 177, 178, 179, 198, 200, 204, 206, 207, 209, 215, 216, 228, 230, 237, 238, 239, 240, 241, 244, 246, 264, 267, 271, 274, 276, 277], "correct": [22, 31, 44, 168, 177, 189, 197, 267, 269, 276, 277], "error": [22, 31, 32, 44, 168, 177, 178, 189, 197, 225, 263, 267, 271, 274], "8": [22, 23, 25, 27, 28, 31, 32, 33, 36, 37, 39, 43, 45, 55, 57, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 106, 107, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 148, 152, 153, 154, 155, 156, 157, 158, 161, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 204, 206, 207, 209, 210, 213, 218, 219, 222, 230, 231, 232, 236, 237, 238, 239, 240, 241, 243, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "9": [22, 23, 25, 27, 28, 31, 32, 33, 37, 39, 45, 55, 57, 61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 82, 83, 84, 89, 91, 93, 94, 96, 97, 99, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 153, 154, 157, 158, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 206, 209, 210, 219, 228, 230, 231, 232, 236, 238, 240, 241, 243, 246, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "__repr__": [22, 26, 45, 48, 61, 70, 116, 117, 120, 132, 146, 168, 172], "ters": [22, 26, 45, 48, 117, 120, 168, 172], "__str__": [22, 27, 45, 49, 61, 71, 116, 117, 121, 132, 139, 147, 168, 173, 271, 272], "format": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 192, 209, 240, 263, 268, 274], "relev": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 271], "_field": [22, 31, 73, 103, 104, 168, 177], "_arrai": [22, 31, 73, 103, 104, 132, 166, 168, 177], "mathbf": [22, 23, 24, 31, 32, 33, 36, 61, 75, 76, 90, 92, 97, 99, 108, 109, 116, 168, 169, 170, 177, 178, 179, 181], "present": [22, 32, 168, 178, 271], "extension_field": [22, 25, 27, 34, 36, 38, 43], "defin": [22, 25, 29, 34, 35, 45, 50, 51, 52, 54, 58, 76, 83, 84, 90, 92, 94, 97, 99, 109, 115, 117, 122, 123, 124, 126, 130, 152, 157, 168, 171, 175, 180, 193, 194, 195, 204, 214, 222, 230, 233, 236, 237, 255, 257, 276, 277], "syndrom": [22, 25, 31, 34, 177], "call": [22, 40, 41, 57, 81, 94, 103, 104, 106, 115, 129, 168, 185, 186, 209, 218, 228, 232, 240, 255, 256, 257, 266, 271, 274, 277], "length": [22, 31, 32, 33, 41, 61, 67, 114, 116, 132, 145, 148, 168, 177, 178, 179, 186, 204, 230, 256, 263, 271], "capabl": [22, 44, 168, 189, 276, 277], "is_narrow_sens": [22, 27, 37, 168, 173, 182], "indic": [22, 25, 31, 32, 37, 38, 39, 61, 86, 87, 88, 89, 115, 116, 139, 141, 157, 158, 159, 161, 162, 168, 171, 177, 178, 182, 183, 184, 204, 207, 239, 241, 254, 256, 260, 271, 274], "narrow": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "sens": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "consecut": [22, 25, 28, 29, 36, 37, 43, 168, 171, 174, 175, 181, 182, 188, 228], "is_primit": [22, 27, 38, 132, 157, 158, 161, 168, 173, 183, 193, 225, 238, 239, 271, 274], "is_systemat": [22, 27, 39, 168, 173, 184, 271], "have": [22, 39, 61, 86, 87, 89, 116, 132, 142, 153, 164, 168, 184, 207, 212, 219, 222, 228, 239, 241, 256, 257, 258, 259, 266, 271, 274, 276, 277], "pariti": [22, 24, 25, 33, 39, 42, 168, 170, 171, 179, 184, 187], "append": [22, 25, 39, 70, 71, 168, 171, 184], "h": [22, 24, 42, 157, 159, 168, 170, 187, 193], "check": [22, 24, 42, 132, 157, 168, 170, 187, 212, 225, 256], "generator_poli": [22, 23, 27, 36, 37, 39, 43, 168, 169, 173, 175, 181, 182, 184, 188], "parity_check_poli": [22, 24, 42, 168, 170, 187], "13": [23, 24, 25, 26, 27, 28, 31, 32, 33, 38, 39, 42, 45, 57, 61, 65, 69, 73, 75, 82, 89, 90, 91, 93, 94, 101, 102, 107, 108, 110, 113, 115, 117, 129, 135, 139, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 195, 197, 198, 204, 208, 209, 210, 212, 226, 229, 230, 231, 232, 234, 235, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 271, 272, 273, 274, 276, 277], "fals": [23, 27, 31, 32, 37, 38, 39, 75, 86, 87, 88, 89, 115, 132, 141, 142, 157, 158, 159, 160, 161, 162, 166, 169, 173, 177, 178, 182, 183, 184, 190, 192, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 228, 231, 236, 237, 239, 240, 241, 255, 256, 263, 268, 271, 273], "2x": [23, 24, 27, 34, 39, 42, 61, 69, 75, 93, 107, 115, 152, 154, 155, 157, 158, 161, 162, 167, 170, 180, 187, 193, 194, 197, 199, 206, 207, 214, 217, 222, 223, 236, 237, 238, 239, 243, 248, 250, 251, 252, 255, 256, 258, 259, 260, 266, 271, 276], "either": [25, 31, 32, 33, 108, 112, 139, 148, 171, 177, 178, 179, 228, 245, 257, 258, 266, 267], "provid": [25, 94, 115, 171, 193, 255, 256, 269, 271, 276, 277], "both": [25, 59, 131, 171, 254, 271], "mai": [25, 30, 47, 73, 78, 111, 112, 115, 119, 139, 171, 200, 204, 206, 207, 225, 228, 230, 232, 239, 241, 247, 255, 256, 257, 259, 260, 271, 274, 277], "long": [25, 171, 244], "thei": [25, 103, 104, 115, 133, 138, 142, 143, 157, 158, 171, 193, 200, 210, 231, 255, 256, 257, 259, 260, 268, 269, 275, 276, 277], "consist": [25, 132, 139, 157, 158, 171, 193, 238, 271, 272], "correspond": [25, 31, 32, 33, 46, 47, 55, 107, 115, 118, 119, 127, 133, 134, 135, 136, 137, 138, 139, 140, 148, 152, 153, 155, 167, 171, 177, 178, 179, 195, 199, 204, 230, 240, 241, 247], "extens": [25, 31, 61, 65, 79, 82, 83, 84, 86, 100, 101, 102, 113, 115, 116, 193, 206, 207, 214, 232, 236, 237, 238, 239, 254, 256, 258, 267, 268, 271, 274, 277], "primitive_root_of_un": [25, 61, 103, 116, 171, 254, 271], "26": [25, 26, 27, 30, 31, 32, 34, 35, 40, 41, 44, 69, 75, 76, 82, 91, 101, 102, 107, 110, 113, 117, 170, 173, 176, 177, 178, 180, 185, 186, 187, 189, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "17": [25, 31, 32, 33, 45, 65, 69, 73, 75, 76, 82, 91, 92, 101, 102, 107, 108, 110, 113, 115, 117, 169, 173, 177, 178, 179, 184, 198, 204, 209, 226, 228, 229, 230, 231, 232, 235, 240, 241, 246, 247, 248, 250, 251, 254, 255, 256, 258, 259, 260, 266, 268, 272, 273, 274, 276, 277], "10": [25, 31, 32, 33, 37, 45, 53, 55, 56, 57, 59, 61, 64, 65, 69, 72, 73, 75, 76, 82, 89, 90, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 157, 158, 166, 167, 169, 170, 173, 177, 178, 179, 182, 184, 187, 191, 192, 193, 194, 197, 199, 200, 204, 206, 209, 210, 212, 216, 217, 225, 228, 230, 231, 232, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "11": [25, 27, 31, 32, 33, 45, 55, 57, 61, 64, 65, 67, 69, 72, 73, 75, 76, 82, 89, 91, 92, 93, 94, 96, 97, 101, 102, 103, 104, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 181, 182, 184, 187, 188, 190, 191, 192, 194, 197, 198, 200, 204, 209, 210, 230, 231, 232, 235, 236, 238, 240, 241, 246, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "discov": [25, 199, 225, 232, 247, 271, 274, 277], "loop": [25, 207, 239, 241, 269, 270, 271, 272, 274], "12": [25, 27, 31, 32, 33, 45, 55, 57, 61, 65, 67, 69, 72, 73, 75, 82, 89, 91, 92, 93, 94, 101, 102, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 168, 169, 170, 173, 175, 177, 178, 179, 181, 182, 184, 187, 188, 192, 194, 196, 197, 198, 201, 204, 209, 210, 216, 225, 228, 231, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 270, 271, 272, 274, 276, 277], "14": [25, 26, 27, 30, 31, 32, 33, 34, 35, 40, 41, 44, 45, 57, 61, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 97, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 129, 135, 152, 166, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 204, 209, 223, 225, 230, 231, 238, 240, 243, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 276, 277], "24": [25, 31, 32, 45, 64, 69, 75, 76, 82, 91, 97, 99, 101, 102, 107, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 184, 196, 199, 209, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 268, 273, 274, 276, 277], "22": [25, 31, 32, 45, 64, 69, 75, 82, 91, 92, 97, 101, 102, 107, 109, 110, 113, 115, 117, 169, 170, 173, 177, 178, 184, 187, 209, 228, 241, 250, 253, 254, 255, 256, 258, 259, 260, 262, 268, 276, 277], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 82, 91, 97, 101, 102, 104, 107, 110, 113, 115, 117, 155, 166, 169, 173, 176, 177, 178, 179, 180, 184, 185, 186, 189, 192, 199, 209, 217, 231, 240, 250, 251, 254, 255, 256, 258, 259, 260, 266, 268, 273, 274, 276, 277], "16": [25, 31, 32, 33, 34, 45, 65, 67, 69, 73, 75, 76, 78, 82, 91, 92, 97, 101, 102, 103, 104, 107, 108, 110, 111, 113, 114, 115, 117, 135, 169, 170, 173, 177, 178, 179, 180, 184, 187, 192, 197, 201, 209, 225, 228, 231, 237, 240, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 272, 273, 276, 277], "string": [27, 49, 73, 95, 105, 107, 121, 135, 139, 147, 173, 248, 249, 250, 251, 252, 256, 259, 263, 271, 276], "multiplicative_ord": [28, 61, 94, 107, 116, 174, 214, 236, 237, 255, 271, 273, 276, 277], "notic": [29, 36, 37, 43, 57, 59, 107, 115, 129, 131, 141, 175, 182, 204, 219, 230, 238, 276, 277], "greater": [30, 78, 89, 96, 110, 111, 162, 210, 217, 231, 257, 269, 270, 271, 276], "d_": [30, 31, 32, 178], "min": [30, 31, 32, 76, 109, 178, 206, 207, 209, 225, 236, 238, 239, 240, 263, 268, 271, 274], "vector": [31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 67, 76, 90, 97, 107, 109, 114, 116, 117, 118, 119, 125, 127, 128, 141, 177, 178, 179, 256, 267, 271, 276, 277], "specifi": [31, 33, 45, 55, 61, 64, 70, 71, 73, 91, 115, 116, 117, 127, 132, 133, 139, 147, 148, 177, 179, 204, 230, 240, 241, 254, 255, 256, 259, 273, 274, 276], "entir": [31, 177, 269, 276], "too": [31, 80, 177, 244, 263], "member": [31, 33, 177, 179], "m_1": [31, 33, 138, 166, 177, 179, 194], "m_0": [31, 33, 177, 179], "divis": [31, 73, 177, 199, 217, 247, 266, 269, 271], "c_1": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "c_0": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "receiv": [31, 177], "locat": [31, 108, 177, 261, 264], "sigma": [31, 177], "It": [31, 71, 159, 195, 204, 222, 230, 233, 254, 255, 256, 257, 258, 260, 263, 264, 267, 268, 271, 276, 277], "up": [31, 115, 199, 226, 227, 235, 247, 257, 267, 271, 274], "singl": [31, 32, 33, 64, 72, 75, 89, 91, 93, 94, 139, 177, 178, 179, 254, 256, 263, 271], "recov": [31, 177, 232, 255], "19": [31, 32, 33, 45, 64, 65, 69, 75, 82, 90, 91, 92, 97, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 179, 184, 198, 199, 209, 226, 235, 240, 241, 246, 250, 252, 253, 254, 255, 256, 258, 259, 260, 266, 268, 272, 276, 277], "three": [31, 32, 33, 177, 178, 179, 223, 225, 241, 243, 257, 276], "21": [31, 32, 45, 69, 75, 76, 82, 91, 92, 97, 101, 102, 107, 109, 110, 113, 115, 117, 169, 171, 172, 173, 174, 177, 178, 183, 184, 209, 240, 241, 250, 254, 255, 256, 258, 259, 260, 266, 268, 270, 274, 276, 277], "23": [31, 32, 45, 69, 75, 82, 90, 91, 97, 101, 102, 107, 110, 113, 117, 155, 173, 177, 178, 199, 209, 250, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "add": [31, 108, 177, 250, 260, 271, 275, 276], "second": [31, 177, 197, 201, 232, 266, 268], "two": [31, 32, 89, 108, 110, 132, 142, 157, 177, 178, 193, 197, 201, 230, 254, 255, 257, 258, 260, 264, 269, 270, 271, 276, 277], "third": [31, 177, 264], "25": [31, 32, 45, 64, 69, 75, 82, 91, 92, 101, 102, 107, 108, 110, 113, 115, 117, 155, 169, 170, 173, 177, 178, 184, 187, 199, 254, 255, 256, 258, 259, 260, 268, 272, 274, 276, 277], "27": [31, 32, 34, 64, 69, 75, 76, 82, 90, 91, 92, 97, 101, 102, 107, 108, 109, 110, 113, 115, 173, 177, 178, 180, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "28": [31, 32, 64, 75, 82, 85, 90, 91, 97, 99, 101, 102, 104, 109, 110, 113, 115, 155, 173, 177, 178, 199, 223, 254, 255, 256, 258, 259, 260, 268, 276, 277], "29": [31, 32, 64, 75, 76, 82, 90, 91, 92, 97, 99, 101, 102, 108, 109, 110, 113, 155, 173, 177, 178, 199, 228, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "30": [31, 32, 75, 82, 90, 91, 92, 101, 102, 103, 104, 110, 113, 115, 155, 173, 177, 178, 199, 241, 254, 255, 256, 258, 259, 260, 268, 274, 276, 277], "31": [31, 32, 62, 63, 64, 65, 68, 74, 75, 76, 79, 80, 82, 85, 86, 87, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104, 108, 109, 113, 115, 155, 173, 177, 178, 199, 209, 218, 226, 227, 241, 254, 255, 256, 258, 259, 260, 268, 270, 272, 274, 276, 277], "32": [31, 32, 75, 78, 91, 111, 112, 155, 173, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 269, 270, 274, 276, 277], "33": [31, 32, 91, 141, 155, 171, 172, 173, 174, 177, 178, 183, 199, 254, 255, 256, 258, 259, 260, 268, 269, 276, 277], "34": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 266, 268, 271, 276, 277], "35": [31, 32, 91, 115, 177, 178, 210, 231, 253, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "36": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "37": [31, 32, 75, 91, 115, 141, 145, 155, 177, 178, 199, 232, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "38": [31, 32, 75, 91, 155, 157, 158, 177, 178, 193, 199, 228, 254, 256, 258, 259, 260, 266, 268, 276, 277], "39": [31, 91, 155, 177, 178, 194, 199, 254, 256, 258, 259, 260, 268, 271, 276, 277], "40": [31, 91, 155, 177, 178, 199, 254, 256, 258, 259, 260, 266, 268, 271, 276, 277], "41": [31, 91, 115, 155, 177, 199, 232, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "42": [31, 91, 177, 253, 254, 256, 258, 259, 260, 268, 276, 277], "boolean": [32, 89, 178], "were": [32, 178, 267, 271, 274], "is_primitive_poli": [34, 35, 61, 69, 88, 105, 107, 115, 116, 180, 236, 237, 255, 256, 266, 271, 274, 276, 277], "its": [36, 43, 45, 46, 47, 55, 57, 69, 76, 80, 90, 97, 106, 109, 115, 117, 118, 119, 127, 132, 133, 135, 138, 139, 155, 160, 162, 181, 188, 199, 209, 214, 217, 226, 240, 250, 252, 254, 255, 257, 258, 259, 260, 267, 270, 276, 277], "dual": [42, 187], "These": [43, 188, 204, 230, 257, 259, 262, 267, 269, 274], "specif": [43, 138, 188, 232, 255, 262, 264, 266, 268], "bigg": [44, 189, 198, 224], "reciproc": [45, 47, 50, 51, 117, 119, 122, 123, 271, 276, 277], "sequenc": [45, 50, 54, 57, 59, 117, 122, 126, 129, 131, 132, 133, 138, 191, 194, 204, 230, 233, 248, 251, 252, 253], "y_t": [45, 117, 191], "y_": [45, 117, 191], "configur": [45, 91, 117, 267], "c_n": [45, 117], "tap": [45, 46, 49, 58, 59, 117, 118, 121, 130, 131, 191], "left": [45, 61, 90, 108, 109, 116, 117], "right": [45, 108, 117, 272], "t_0": [45, 117], "t_1": [45, 117], "t_": [45, 117], "s_0": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_1": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "addition": [45, 259], "equal": [45, 98, 132, 141, 142, 154, 155, 190, 192, 199, 260, 269, 270], "next": [45, 57, 117, 129, 166, 207, 209, 239, 240, 241, 262, 266, 268], "revers": [45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 59, 117, 120, 121, 122, 123, 124, 125, 127, 128, 129, 131, 132, 165, 204, 207, 230, 239, 241, 267, 271], "refer": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 269, 271], "gardner": [45, 117, 191], "2019": [45, 117, 191], "model": [45, 117, 191], "cryptographi": [45, 117, 191], "figshar": [45, 117], "http": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 261, 262, 267, 271, 272], "hdl": [45, 117, 191], "handl": [45, 117, 191, 271], "net": [45, 117, 191], "2134": [45, 117, 191], "21932": [45, 117, 191], "feedback_poli": [45, 46, 47, 49, 50, 51, 59, 117, 118, 119, 121, 122, 123, 131, 191], "characteristic_poli": [45, 46, 49, 50, 51, 59, 61, 75, 93, 116, 117, 118, 121, 122, 123, 131, 191, 271], "initial_st": [45, 46, 49, 53, 59, 117, 118, 121, 125, 131, 191], "3x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 142, 144, 146, 147, 148, 149, 150, 151, 152, 154, 159, 160, 163, 164, 165, 167, 170, 175, 181, 182, 187, 188, 191, 194, 197, 206, 222, 238, 242, 243, 245, 255, 259, 260, 271, 274], "5x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 141, 144, 146, 147, 148, 149, 150, 151, 152, 163, 164, 165, 170, 187, 191, 194, 197, 206, 238, 242, 243, 245, 259, 260, 269, 270, 271], "10x": [45, 117, 159, 170, 175, 181, 182, 187, 188], "reset": [45, 55, 117, 127, 266], "to_galois_lfsr": [45, 59], "convert": [45, 59, 61, 67, 114, 116, 117, 131, 133, 138, 143, 204, 230, 236, 237, 256, 257, 258, 259, 266, 270, 271], "same": [45, 57, 59, 115, 117, 129, 131, 132, 141, 142, 153, 155, 175, 182, 199, 204, 222, 225, 230, 238, 255, 270, 271], "finit": [45, 52, 61, 65, 69, 70, 71, 72, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 89, 91, 93, 94, 95, 103, 104, 107, 110, 113, 115, 116, 117, 124, 132, 141, 142, 144, 146, 147, 152, 156, 157, 158, 159, 193, 204, 230, 240, 241, 248, 250, 254, 256, 257, 258, 259, 260, 266, 267, 269, 270, 271, 273, 274, 276, 277], "relat": [45, 58, 117, 130, 255], "state": [46, 47, 49, 53, 55, 56, 57, 59, 118, 119, 121, 125, 127, 128, 129, 131, 191, 271], "becaus": [47, 80, 115, 119, 210, 231, 232, 233, 256, 257, 258, 269, 270, 276, 277], "unaffect": [53, 125], "view": [55, 127, 204, 230, 263, 266, 269, 270, 271, 276, 277], "direct": [57, 129, 209, 240], "backward": [57, 129, 275], "ab": [57, 129, 276], "end": [57, 129, 224], "more": [57, 129, 132, 148, 254, 258, 259, 260, 266, 271, 276, 277], "origin": [57, 129], "given": [59, 76, 90, 97, 109, 131, 137, 157, 193, 215, 232, 237, 240, 241, 255, 257, 259, 274, 276, 277], "fibonacci_lfsr": [59, 131], "differ": [59, 91, 107, 131, 142, 144, 175, 182, 204, 209, 230, 240, 250, 254, 255, 260, 264, 270, 276, 277], "galois_lfsr": [59, 131], "see": [59, 81, 103, 104, 115, 131, 132, 153, 154, 155, 199, 252, 254, 258, 259, 260, 266, 271, 276, 277], "verifi": [60, 115, 244, 255, 271, 274], "factori": [61, 115, 116, 255, 258, 266, 271, 276, 277], "issubclass": [61, 116, 255, 266, 271], "243": [61, 69, 115, 205, 254, 255, 256, 266, 268, 271], "instanc": [61, 116, 204, 230, 254, 256, 257, 259, 263, 267, 271], "44": [61, 91, 115, 155, 177, 199, 254, 255, 256, 258, 259, 260, 268, 270, 271, 276, 277], "236": [61, 91, 253, 254, 266, 271], "206": [61, 91, 254, 268, 271], "138": [61, 91, 254, 256, 268], "isinst": [61, 116, 255, 266, 271], "\u03b1": [61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 276, 277], "2\u03b1": [61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 91, 93, 94, 101, 102, 106, 113, 114, 237, 248, 250, 251, 254, 255, 256, 258, 266, 271, 273, 276], "143": [61, 91, 254, 259, 268], "204": [61, 91, 254, 266], "55": [61, 91, 115, 141, 254, 255, 256, 259, 260, 268, 271, 274, 276, 277], "113": [61, 91, 247, 253, 254], "vandermond": [61, 66, 116], "row": [61, 66, 76, 90, 97, 107, 108, 109, 116], "prime": [61, 65, 67, 74, 75, 79, 82, 83, 84, 86, 87, 93, 100, 101, 102, 113, 114, 115, 116, 159, 192, 193, 196, 198, 199, 200, 204, 206, 207, 209, 210, 211, 212, 213, 216, 217, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, 244, 247, 258, 267, 269, 271, 274, 276], "subfield": [61, 67, 83, 84, 100, 114, 116, 193, 258], "non_squar": [61, 89, 96, 116, 254, 271], "primitive_roots_of_un": [61, 104, 116, 271], "without": [61, 71, 116, 132, 147, 250, 259, 266, 267], "arithmetic_t": [61, 73, 116, 271, 276, 277], "repr_tabl": [61, 107, 116, 258, 271, 276, 277], "compar": [61, 107, 116, 142, 258, 269, 270, 271], "additive_ord": [61, 72, 116, 271], "addit": [61, 72, 73, 116, 152, 200, 206, 207, 228, 238, 239, 257, 259, 266, 271, 274], "field_norm": [61, 83, 116, 271], "norm": [61, 83, 116, 271], "_": [61, 83, 84, 116, 241, 257, 276, 277], "field_trac": [61, 84, 116, 271], "trace": [61, 75, 84, 116, 271], "tr": [61, 75, 84, 116], "beta": [61, 91, 116, 254, 271, 272], "minimal_poli": [61, 93, 116, 271], "ord": [61, 94, 107, 116, 276, 277], "column_spac": [61, 76, 97, 116, 271], "column": [61, 66, 76, 97, 99, 108, 116, 268], "space": [61, 76, 90, 97, 109, 116, 139, 250, 258, 271], "left_null_spac": [61, 90, 109, 116, 271], "null": [61, 76, 90, 97, 109, 116], "lu_decompos": [61, 92, 116, 271], "decompos": [61, 92, 99, 116], "input": [61, 72, 75, 89, 92, 93, 94, 99, 108, 116, 204, 230, 254, 257, 258, 270, 271, 274], "lower": [61, 92, 99, 116, 159, 228], "upper": [61, 92, 99, 116], "triangular": [61, 92, 99, 116], "matric": [61, 92, 99, 116, 141, 254, 260, 269, 270], "null_spac": [61, 76, 97, 116, 271], "plu_decompos": [61, 99, 116, 271, 274], "partial": [61, 99, 116], "pivot": [61, 99, 116], "row_reduc": [61, 108, 116, 254, 272], "ncol": [61, 108, 116], "perform": [61, 108, 116, 141, 204, 230, 232, 254, 257, 259, 260, 267, 268, 271, 276, 277], "gaussian": [61, 108, 116], "elimin": [61, 108, 116, 255, 257, 274], "achiev": [61, 108, 116, 171, 204, 230, 271], "reduc": [61, 108, 116, 159, 200, 228, 255, 257, 260, 269, 270, 271, 276, 277], "echelon": [61, 108, 116], "form": [61, 108, 116, 209, 240, 246, 276, 277], "rref": [61, 108, 116], "row_spac": [61, 90, 109, 116, 271], "prime_subfield": [61, 100, 116], "is_extension_field": [61, 86, 116, 271], "is_prime_field": [61, 87, 116, 271], "is_squar": [61, 89, 96, 110, 116, 254, 271], "repeat": [64, 137, 141, 152, 254, 260], "123456789": [64, 137, 271], "global": [64, 137, 263, 271], "rng": [64, 137, 271], "default_rng": [64, 137, 271], "simpli": [65, 75, 93, 256, 258, 270], "sinc": [65, 83, 84, 89, 107, 159, 200, 209, 213, 228, 238, 239, 240, 247, 260, 261, 266, 271, 276, 277], "col": 66, "v": [66, 117, 240, 241, 261], "last": [67, 103, 104, 114, 206, 207, 209, 232, 238, 239, 240, 261], "n1": [67, 114], "n2": [67, 114], "By": [67, 114, 148, 242, 245, 255, 259], "convent": [67, 114, 250, 255, 259, 271], "method": [67, 76, 90, 91, 97, 107, 109, 114, 115, 206, 209, 236, 237, 238, 240, 256, 257, 258, 271, 273, 274], "copi": [69, 74, 254, 256, 266, 271], "ndmin": 69, "keyword": [69, 230, 256, 257, 258, 259, 266, 271, 272, 273, 274], "222": [69, 91, 248, 250, 251, 254, 256, 258, 268], "148": [69, 91, 248, 251, 254, 256, 269], "205": [69, 91, 248, 251, 254, 256], "69": [69, 91, 228, 248, 251, 254, 256, 258, 259, 260, 268, 271, 276], "54": [69, 91, 248, 251, 254, 256, 260, 268, 271, 276, 277], "prepend": [70, 71], "doe": [71, 96, 115, 219, 256, 257, 269, 271], "omit": [71, 139], "comma": [71, 272], "separ": [71, 271, 272, 274], "With": [72, 91, 204, 212, 230, 257, 258, 271, 274], "except": [72, 80, 158, 192, 209, 225, 232, 240, 267], "subtract": [73, 257, 266], "ad": [74, 148, 254, 258, 260, 263, 271, 272, 273, 274], "alwai": [74, 93, 152, 159, 238, 260, 271, 276, 277], "result": [74, 94, 137, 141, 152, 212, 225, 254, 257, 260, 269, 271, 276, 277], "c_a": 75, "rais": [75, 80, 93, 94, 103, 104, 148, 153, 154, 155, 157, 158, 167, 193, 206, 209, 232, 233, 238, 240, 271], "valueerror": [75, 93, 103, 104, 148, 153, 154, 155, 167, 271], "annihil": [75, 90, 93, 97], "det": 75, "coeffici": [75, 133, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 156, 160, 163, 164, 165, 245, 252, 258, 271, 276], "en": [75, 83, 84, 93, 152, 159, 222, 244, 271], "wikipedia": [75, 83, 84, 93, 152, 159, 222, 244], "org": [75, 83, 84, 93, 152, 159, 192, 198, 204, 222, 226, 227, 230, 235, 240, 241, 244, 246], "wiki": [75, 83, 84, 93, 152, 159, 222, 244], "characteristic_polynomi": 75, "105": [75, 91, 254, 256], "225": [75, 91, 93, 138, 254, 271], "217": [75, 91, 254, 271], "154": [75, 91, 254], "140": [75, 91, 254], "80": [75, 91, 214, 254, 256, 268, 271, 276], "190": [75, 91, 254, 272], "102": [75, 91, 253, 254, 256, 268, 269, 271], "192": [75, 91, 141, 253, 254, 266, 268], "58x": 75, "232x": [75, 173], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "196": [75, 91, 253, 254], "149": [75, 91, 219, 220, 224, 254, 268], "61": [75, 91, 226, 254, 256, 260, 271, 276, 277], "101": [75, 91, 254, 256], "139": [75, 91, 254], "233": [75, 91, 254, 268], "64": [75, 91, 210, 231, 254, 256, 260, 268, 269, 276, 277], "212": [75, 91, 254, 268], "basi": [76, 90, 97, 109], "span": [76, 90, 97, 109, 209, 240, 241], "combin": [76, 109, 139, 190, 250], "most": [76, 103, 104, 109, 192, 209, 232, 240, 256, 258, 264, 266, 276], "mathcal": [76, 90, 97, 109], "dim": [76, 90, 97, 109], "speed": [78, 111, 257, 267, 271, 274], "65537": [78, 111, 112, 274], "memori": [78, 111, 256, 257, 267], "save": [78, 111, 267, 268], "still": [78, 111, 142], "fit": [78, 111, 112], "within": [78, 111, 112], "2147483647": [78, 111, 227], "36893488147419103183": [78, 80, 111, 112, 115], "100": [78, 80, 91, 111, 112, 115, 210, 231, 232, 247, 249, 254, 255, 256, 257, 263, 266, 268, 269, 270, 271, 272, 274], "unsupport": 80, "typeerror": [80, 104, 271], "small": [80, 233, 256, 270, 271, 274, 276, 277], "accept": [80, 139, 250, 271], "uint64": 80, "done": [80, 261], "uint8": [80, 256], "uint16": [80, 249, 256], "uint32": [80, 256], "int8": [80, 256], "int16": [80, 256], "int32": [80, 249, 256], "some": [80, 153, 159, 167, 200, 204, 209, 213, 224, 228, 230, 256, 257, 259, 263, 267, 270, 271, 276, 277], "certain": [80, 254, 256, 259, 271, 274], "unlimit": [80, 256, 257], "chang": [81, 257, 258, 259, 262, 275], "further": [81, 115], "discuss": [81, 115, 256, 266, 276], "increas": [82, 102, 113, 166, 250, 258, 264, 271, 274], "lexicograph": [82, 102, 104, 107, 113, 154, 155, 157, 158, 193, 199, 206, 207, 225, 238, 239, 274], "3\u03b1": [82, 101, 102, 113, 254], "4\u03b1": [82, 101, 102, 113, 254], "word": [83, 84], "rightarrow": [83, 84], "conjug": [83, 84], "prod_": [83, 153, 162, 167, 198, 217, 222], "sum_": [84, 138, 157, 166, 193, 195, 204, 222, 230, 271], "256": [88, 98, 115, 254, 274], "ae": [88, 115, 161], "exist": [89, 96, 103, 104, 110, 115, 157, 159, 193, 204, 206, 209, 225, 230, 238, 240, 254, 266, 271, 276, 277], "exactli": [89, 96, 110, 276], "half": [89, 96, 110], "nonzero": [89, 96, 110], "uniqu": [89, 104, 110, 166, 209, 240, 254, 255], "cacr": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "uwaterloo": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "ca": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "hac": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "about": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246, 263, 264, 269], "chap3": [89, 232, 233], "pdf": [89, 153, 154, 155, 159, 161, 167, 191, 194, 197, 198, 199, 200, 201, 219, 220, 224, 228, 232, 233, 240, 241, 246], "so": [89, 115, 171, 199, 204, 212, 230, 255, 260, 271, 274, 276, 277], "ln": [90, 97, 109], "invok": [91, 257, 260, 263, 264, 266, 268, 269, 270, 271], "obei": 91, "broadcast": [91, 254, 266, 272], "rule": [91, 139, 266], "52": [91, 115, 253, 254, 255, 256, 259, 260, 268, 271, 276, 277], "238": [91, 254], "83": [91, 242, 245, 254, 256, 268, 271, 276], "242": [91, 254, 255, 256, 271], "79": [91, 228, 254, 256, 268, 274, 276], "84": [91, 141, 254, 256, 268, 276], "186": [91, 254, 268], "120": [91, 199, 254, 263], "122": [91, 254, 268], "185": [91, 133, 141, 254, 255, 256, 272], "95": [91, 254, 256, 266, 268, 271], "216": [91, 152, 254, 255, 256, 268], "208": [91, 254], "73": [91, 133, 253, 254, 256, 260, 268, 276], "167": [91, 254, 256, 268], "193": [91, 254, 255, 256, 268, 271, 272], "226": [91, 254, 268, 271], "67": [91, 254, 256, 260, 266, 268, 271, 272, 276], "165": [91, 254, 268], "117": [91, 135, 139, 254, 259], "183": [91, 254, 256], "144": [91, 254], "65": [91, 171, 172, 173, 174, 183, 254, 256, 260, 268, 270, 271, 276, 277], "163": [91, 141, 253, 254, 255, 271], "159": [91, 254, 271], "176": [91, 253, 254, 271], "72": [91, 254, 256, 260, 268, 271, 276], "anoth": [91, 108, 260, 277], "99": [91, 254, 256, 268, 271], "189": [91, 254], "199": [91, 254, 268], "214": [91, 133, 254, 256, 271], "133": [91, 254], "201": [91, 141, 145, 254, 271], "228": [91, 254, 256, 268], "209": [91, 253, 254, 256], "77": [91, 161, 254, 256, 268, 271, 272, 276], "187": [91, 254, 271], "231": [91, 254, 255, 256, 268, 272], "182": [91, 254, 268], "178": [91, 254, 268, 271], "230": [91, 254, 255, 266], "130": [91, 254], "146": [91, 141, 253, 254, 266, 268], "232": [91, 254, 268, 271], "124": [91, 132, 254, 255, 256], "210": [91, 254, 271], "172": [91, 254, 271], "112": [91, 243, 254, 266], "142": [91, 152, 254], "96": [91, 141, 254, 256, 268, 271, 274], "188": [91, 253, 254], "98": [91, 254, 256, 268], "158": [91, 254], "70": [91, 254, 256, 260, 271, 273, 276], "156": [91, 141, 254, 268], "200": [91, 254, 258, 268, 271], "168": [91, 254, 268, 271], "166": [91, 254, 268, 271], "126": [91, 254], "240": [91, 156, 254, 271], "114": [91, 253, 254, 255, 256, 271], "234": [91, 254], "92": [91, 254, 256, 268, 269, 271, 276], "56": [91, 115, 254, 255, 256, 260, 268, 271, 276, 277], "164": [91, 254, 268], "78": [91, 254, 255, 256, 268, 270, 276], "136": [91, 254, 271], "152": [91, 254, 268], "46": [91, 115, 155, 199, 253, 254, 255, 256, 260, 268, 273, 276, 277], "162": [91, 254, 271], "68": [91, 254, 256, 260, 268, 274, 276], "58": [91, 240, 241, 254, 256, 259, 260, 268, 271, 274, 276, 277], "180": [91, 254], "76": [91, 254, 256, 268, 271, 276], "106": [91, 254, 256], "60": [91, 216, 254, 255, 256, 260, 268, 272, 276, 277], "160": [91, 253, 254], "74": [91, 228, 254, 256, 260, 271, 276], "82": [91, 228, 254, 256, 266, 268, 271, 276], "194": [91, 254], "48": [91, 115, 240, 241, 254, 255, 256, 260, 268, 270, 271, 276, 277], "150": [91, 210, 231, 254, 268, 271], "134": [91, 254, 268, 271], "170": [91, 254], "174": [91, 254, 268], "128": [91, 253, 254, 268], "118": [91, 254], "218": [91, 141, 201, 254, 268, 271], "90": [91, 228, 254, 256, 268, 271, 276], "86": [91, 254, 256, 268, 276], "202": [91, 254, 268], "104": [91, 201, 254, 256], "224": [91, 254, 266], "108": [91, 254, 256, 266, 271], "50": [91, 254, 256, 260, 268, 271, 272, 276, 277], "62": [91, 228, 254, 256, 260, 268, 270, 276, 277], "184": [91, 254, 268], "94": [91, 254, 256, 259, 268, 276], "116": [91, 254], "227": [91, 166, 254], "223": [91, 132, 171, 172, 173, 174, 183, 254], "169": [91, 254], "155": [91, 254], "81": [91, 228, 237, 254, 255, 256, 268, 272, 274, 276], "215": [91, 254, 268, 271], "53": [91, 228, 254, 256, 260, 268, 271, 276, 277], "175": [91, 254], "237": [91, 254, 271], "241": [91, 254, 255, 266, 268, 271], "235": [91, 254, 268, 271], "93": [91, 254, 256, 271, 276], "137": [91, 254, 259, 268, 271], "213": [91, 254, 256, 268], "195": [91, 254, 256, 271], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 276, 277], "129": [91, 253, 254, 268, 271], "89": [91, 226, 254, 256, 268, 276], "147": [91, 254, 268], "97": [91, 254, 256, 268], "179": [91, 254, 255, 259, 266, 268], "203": [91, 254], "111": [91, 254, 256], "211": [91, 254], "115": [91, 254, 268, 271], "191": [91, 254, 268, 271], "43": [91, 115, 137, 177, 254, 255, 256, 258, 259, 260, 268, 276, 277], "103": [91, 141, 254, 256], "219": [91, 254, 268], "49": [91, 254, 255, 256, 260, 268, 272, 276, 277], "221": [91, 197, 254, 271], "239": [91, 254], "85": [91, 171, 172, 173, 174, 183, 253, 254, 256, 268, 272, 276], "171": [91, 253, 254, 271, 272], "151": [91, 254, 272], "119": [91, 137, 138, 254], "177": [91, 254, 268], "229": [91, 254, 268], "75": [91, 228, 254, 256, 258, 268, 276], "153": [91, 166, 254, 256, 268, 269], "141": [91, 253, 254, 268], "181": [91, 93, 197, 254, 269, 271], "127": [91, 226, 227, 254, 266, 271], "107": [91, 197, 226, 254, 256], "51": [91, 253, 254, 256, 259, 260, 266, 268, 272, 274, 276, 277], "59": [91, 173, 254, 256, 260, 268, 271, 276, 277], "157": [91, 254], "87": [91, 254, 256, 266, 268, 274, 276], "63": [91, 254, 256, 260, 268, 276, 277], "91": [91, 195, 228, 254, 256, 268, 276], "173": [91, 254, 266], "47": [91, 115, 253, 254, 255, 256, 260, 266, 268, 274, 276, 277], "131": [91, 254, 268, 271], "71": [91, 254, 256, 260, 268, 271, 276], "207": [91, 253, 254, 268, 271], "125": [91, 254], "161": [91, 254, 268, 272], "135": [91, 254, 266], "123": [91, 141, 145, 253, 254, 256, 271], "197": [91, 240, 241, 253, 254, 268], "109": [91, 242, 245, 254, 256, 266, 271], "57": [91, 115, 254, 255, 256, 260, 268, 271, 274, 276, 277], "145": [91, 254, 268], "lu": 92, "decomposit": [92, 99], "u": [92, 99, 267, 268], "Not": 92, "m_a": 93, "notimplementederror": 93, "divid": [93, 103, 104, 157, 158, 193, 204, 230, 260, 272], "minimal_polynomial_": 93, "field_theori": 93, "linear_algebra": 93, "divmod": [93, 271], "arithmeticerror": 94, "There": [94, 103, 104, 213, 225, 241, 257, 259, 275, 276, 277], "ever": 94, "said": [94, 144, 159, 200, 215, 240, 241], "confus": 94, "former": 94, "latter": 94, "16807": [98, 105, 236], "permut": 99, "plu": 99, "itself": [100, 271, 276], "happen": [103, 104, 233], "omega_n": [103, 104, 204, 230], "ne": [103, 104, 107, 192, 222], "lt": [103, 104], "Then": [103, 104, 166], "do": [103, 104, 277], "traceback": [103, 104, 209, 232, 240], "recent": [103, 104, 209, 232, 240, 271], "cell": [103, 104, 209, 232, 240], "line": [103, 104, 209, 232, 240, 244, 258], "file": [103, 104, 209, 232, 240, 263, 264, 268, 274], "opt": [103, 104, 209, 232, 240], "hostedtoolcach": [103, 104, 209, 232, 240], "x64": [103, 104, 209, 232, 240], "lib": [103, 104, 209, 232, 240], "python3": [103, 104, 209, 232, 240, 261, 262, 263, 264, 266, 268], "site": [103, 104, 209, 232, 240, 261], "py": [103, 104, 209, 232, 240, 263, 264, 268, 274], "890": 103, "cl": [103, 104], "888": [103, 268], "889": 103, "892": 103, "omega_5": [103, 104], "arang": [103, 104, 256], "sort": [104, 107, 155, 196, 199, 268], "952": 104, "950": [104, 271], "951": 104, "954": 104, "955": 104, "outer": 104, "outsid": [106, 258], "revert": [106, 271], "previou": [106, 166, 258, 271], "ascend": [107, 146, 147, 148, 245, 250, 258], "ey": [108, 271, 272], "elementari": 108, "swap": 108, "multipli": [108, 152, 199, 260], "get": [108, 259, 261, 271], "matrix_rank": 108, "side": [108, 267, 272], "Or": [108, 141, 207, 239, 250, 255, 259, 260, 262, 264, 268], "y1": 110, "y2": 110, "constructor": [114, 256, 266, 267, 271], "vec": 114, "build": [115, 263], "exponenti": [115, 141, 256, 257, 271, 274], "user": [115, 254, 266, 267, 268, 271, 274], "fact": [115, 116, 228], "alreadi": [115, 255, 257, 276, 277], "never": [115, 200, 206, 207, 228, 238, 239, 241, 274, 276], "respect": [115, 276], "after": [115, 153, 154, 207, 239, 241, 254, 257, 260, 276], "newli": 115, "singleton": [115, 171], "arbitrarili": [115, 267, 271], "36893488147419103180": 115, "1267650600228229401496703205376": [115, 255], "sped": 115, "explicitli": [115, 133, 138, 143, 204, 230, 255, 256, 257, 259, 268, 269, 276], "avoid": [115, 267, 271], "need": [115, 207, 239, 241, 255, 257, 263, 264, 267, 271, 274], "factor": [115, 153, 154, 155, 162, 166, 167, 195, 196, 198, 199, 210, 211, 216, 217, 228, 231, 232, 233, 247, 255, 267, 271, 274, 276], "109987": [115, 255, 271], "146340800268433348561": [115, 255], "100525x": [115, 255], "pre": [116, 273], "includ": [116, 139, 157, 158, 193, 218, 235, 250, 254, 259, 262, 263, 264, 269, 271, 276, 277], "api": [116, 271, 273, 275], "conveni": [116, 142, 230, 256, 259, 266], "c_2": 117, "to_fibonacci_lfsr": [117, 131], "124x": [132, 271], "223x": 132, "One": [132, 136, 259], "__call__": [132, 141, 260, 271], "x_0": [132, 141, 233], "composit": [132, 141, 155, 162, 192, 199, 200, 208, 212, 216, 217, 228, 231, 232, 233, 247, 271], "__eq__": [132, 142], "__int__": [132, 135, 144, 259, 271], "__len__": [132, 145], "deriv": [132, 152, 259], "formal": [132, 152, 276], "dx": [132, 152], "_domain": [132, 166], "distinct_degree_factor": [132, 153, 154, 155, 199, 271], "equal_degree_factor": [132, 154, 155, 199, 271], "rd": [132, 154], "square_free_factor": [132, 153, 155, 167, 199, 271], "descend": [132, 148, 149, 151, 163, 164, 242, 245, 252, 259], "nonzero_coeff": [132, 163, 164, 259], "nonzero_degre": [132, 163, 164, 259], "highest": [132, 143, 150, 160, 258], "is_conwai": [132, 157, 158, 193, 274], "search": [132, 157, 158, 166, 193, 206, 207, 232, 236, 238, 239, 240, 241, 247, 271, 274], "is_conway_consist": [132, 157, 158, 193, 274], "smaller": [132, 157, 158, 193, 238, 272], "is_irreduc": [132, 153, 154, 159, 161, 167, 206, 207, 271, 274, 276], "is_mon": [132, 160, 271], "won": [133, 138, 143], "assum": [133, 138, 143], "214x": 133, "73x": [133, 152], "186535908": 135, "13x": [135, 139, 173, 259], "0b1011": [135, 259, 271], "bin": [135, 259, 271], "octal": [135, 259], "0o5034": [135, 259], "oct": [135, 259, 271], "hexadecim": [135, 259], "0xf700a275": [135, 259], "247x": [135, 259], "162x": [135, 259], "hex": [135, 259, 271], "_gener": 137, "56x": 137, "228x": 137, "157x": 137, "218x": 137, "148x": 137, "194x": [137, 152], "195x": 137, "200x": [137, 156], "141x": [137, 166], "164x": [137, 173], "desir": [138, 206, 207, 225, 238, 239, 255, 256, 274], "r_1": [138, 166], "r_2": [138, 166], "r_k": [138, 166], "m_2": [138, 166, 194], "m_k": [138, 166], "a_d": [138, 143, 144, 152, 165], "a_": [138, 143, 144, 152, 165, 166, 276], "a_1": [138, 143, 144, 152, 165, 166, 194], "a_0": [138, 143, 144, 152, 165, 166, 276], "m_i": [138, 159, 166, 194], "121": [138, 254, 259, 271], "198": [138, 254], "215x": 138, "90x": 138, "183x": [138, 271], "pars": 139, "indetermin": [139, 141, 250, 260], "requir": [139, 191, 233, 261, 268, 270, 271, 276], "charact": [139, 258], "13y": 139, "term": [139, 148, 206, 207, 225, 238, 239, 270, 271, 274], "abov": [139, 209, 240, 250], "wise": [141, 266, 276], "37x": [141, 145, 271], "123x": [141, 145, 271], "x0": 141, "matrix_pow": [141, 260], "55x": [141, 259, 271], "77x": [141, 271], "104x": [141, 173, 271], "against": [142, 268], "distinct": [142, 153, 154, 155, 199], "comparison": [142, 211, 263, 269, 271], "allow": [142, 230, 232, 253, 254, 257, 258, 262, 264, 271, 276, 277], "interpret": [143, 271], "lowest": 143, "consid": [144, 276, 277], "digit": [144, 258], "radix": [144, 204, 230, 258, 271], "decim": 144, "1066": 144, "len": [145, 194, 198, 204, 209, 228, 230, 237, 240, 246, 271], "fix": [148, 249, 256, 271, 272, 274, 275], "higher": 148, "accessor": 148, "similar": [148, 256, 257, 263, 269, 271], "entri": [149, 151, 163, 164, 222], "pair": [149, 151, 163, 164, 222, 254], "etc": [152, 250], "cdot": [152, 206, 207, 238, 239, 257, 277], "brought": 152, "down": 152, "formal_deriv": 152, "4x": [152, 154, 159, 160, 165, 167, 194, 197, 206, 222, 238, 243, 259, 260], "6x": [152, 157, 158, 193, 194, 206, 222, 236, 238, 243, 260, 270, 271], "197x": 152, "83x": [152, 271], "109x": 152, "108x": 152, "142x": [152, 173], "163x": [152, 173], "216x": [152, 173, 271], "f_i": 153, "algorithm": [153, 154, 155, 157, 158, 159, 161, 167, 191, 193, 197, 199, 201, 204, 212, 219, 220, 224, 230, 232, 233, 240, 247, 267, 271, 274, 276, 277], "suppos": [153, 167], "f_1": [153, 197, 201, 223], "f_2": [153, 197, 201, 223], "f_3": [153, 197, 201, 223], "those": [153, 167, 256, 271, 274], "often": [153, 154, 192, 213, 228, 232, 276], "appli": [153, 154, 155, 199, 249, 254, 266, 271, 274], "complet": [153, 154, 167, 267, 271, 276, 277], "implement": [153, 154, 159, 166, 167, 191, 192, 194, 195, 197, 198, 201, 204, 230, 235, 267, 269, 270, 271, 276, 277], "hachenberg": [153, 155, 167, 199], "jungnickel": [153, 155, 167, 199], "topic": [153, 155, 167, 199], "peopl": [153, 154, 155, 167, 199, 277], "csail": [153, 154, 155, 167, 199], "mit": [153, 154, 155, 167, 199], "edu": [153, 154, 155, 159, 167, 191, 199, 228], "dmoshkov": [153, 154, 155, 167, 199], "cours": [153, 154, 155, 167, 199, 240, 241], "g_1": [154, 155, 199], "g_r": 154, "cantor": 154, "zassenhau": 154, "probabilist": [154, 159], "www": [154, 157, 158, 159, 191, 193, 204, 230, 240, 241], "csa": 154, "iisc": 154, "ac": 154, "chandan": 154, "cnt": 154, "lec8": 154, "g_2": [155, 199], "g_k": [155, 199], "e_1": [155, 198, 199, 211, 216, 232, 247], "e_2": [155, 199], "e_k": [155, 198, 199, 211, 216, 232, 247], "g1": [155, 199], "g2": [155, 199], "g3": [155, 199], "e1": [155, 199], "e2": [155, 199], "e3": [155, 199], "213x": 156, "79x": 156, "235x": 156, "39x": 156, "computation": [157, 158, 159, 161, 162, 193, 271], "expens": [157, 158, 159, 161, 162, 193, 255, 271, 274], "task": [157, 158, 159, 161, 162], "manual": [157, 158, 193, 207, 239, 263, 264, 274], "frank": [157, 158, 193, 267, 274], "luebeck": [157, 158, 193, 267, 274], "databas": [157, 158, 193, 199, 206, 274], "veri": [157, 158, 193, 206, 212, 240, 255, 270, 274], "lookuperror": [157, 158, 193], "found": [157, 158, 193, 199, 204, 207, 209, 230, 232, 233, 239, 241, 274], "accord": [157, 158, 193], "special": [157, 158, 193, 204, 230], "follow": [157, 166, 193, 209, 240, 267, 269, 276, 277], "g_i": [157, 162, 193, 217], "h_i": [157, 193], "g_j": [157, 193], "h_j": [157, 167, 193], "j": [157, 166, 167, 191, 193, 204, 222, 228, 230], "math": [157, 158, 159, 193, 218, 228, 261], "rwth": [157, 158, 193], "aachen": [157, 158, 193], "de": [157, 158, 193], "conwaypol": [157, 158, 193], "cp7": [157, 158, 193], "html": [157, 158, 193, 240, 241, 261, 271], "lenwood": [157, 158, 193], "heath": [157, 158, 193], "nichola": [157, 158, 193], "loehr": [157, 158, 193], "journal": [157, 158, 159, 193, 240, 241], "volum": [157, 158, 193], "issu": [157, 158, 193, 225, 271], "2004": [157, 158, 193], "page": [157, 158, 193, 204, 230, 256, 261, 269, 270, 271, 272], "1003": [157, 158, 193], "1024": [157, 158, 193, 205, 218, 244, 271], "sciencedirect": [157, 158, 193], "com": [157, 158, 191, 193, 262, 267], "scienc": [157, 158, 193], "articl": [157, 158, 193], "pii": [157, 158, 193], "s0747717104000331": [157, 158, 193], "among": [157, 158, 193], "candid": [157, 158, 193], "accordingli": [157, 158, 193, 277], "necessarili": [158, 211], "strictli": [159, 271], "algebra": [159, 267, 271], "close": [159, 276, 277], "test": [159, 199, 200, 209, 212, 217, 225, 228, 240, 244, 256, 262, 267, 268, 269, 270, 271, 274], "sai": [159, 200], "siam": 159, "1980": 159, "273": [159, 254, 256], "280": [159, 254, 268], "app": 159, "dtic": 159, "mil": 159, "sti": 159, "ada078416": 159, "gao": 159, "panarino": 159, "clemson": 159, "sgao": 159, "paper": 159, "gp97a": 159, "chap4": [159, 161, 200, 228], "factorization_of_polynomials_over_finite_field": 159, "necessari": [159, 248, 250, 252, 261, 269, 270, 271, 276], "suffici": 159, "condit": [159, 206, 207, 239, 241], "being": [159, 209, 212, 214, 271], "11x": [159, 169, 170, 184, 187], "15x": [159, 170, 173, 175, 181, 182, 187, 188], "9x": [159, 169, 175, 181, 182, 184, 188, 269], "therefor": [162, 217, 256, 258, 276], "canon": [162, 217, 271], "f1": [162, 190, 197, 201, 217, 223, 243], "f2": [162, 190, 197, 201, 217, 223, 243], "rev": 165, "_d": 165, "chien": 166, "a_1x": [166, 276], "r_i": 166, "a_j": 166, "remain": 166, "equat": 166, "overset": 166, "delta": 166, "lambda_": [166, 192], "easili": [166, 255, 258, 259, 260, 261, 263, 264, 266, 268, 269, 276, 277], "118x": 166, "172x": 166, "50x": [166, 173], "204x": 166, "202x": 166, "153x": 166, "107x": [166, 173], "187x": 166, "66x": 166, "221x": 166, "114x": [166, 271], "121x": 166, "226x": 166, "reed": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "solomon": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "8x": [169, 175, 181, 182, 184, 188, 270], "7x": [170, 175, 181, 182, 187, 188], "18x": [170, 173, 187], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "22x": [170, 187], "25x": [170, 187, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "29x": 173, "189x": 173, "246x": 173, "43x": 173, "82x": 173, "238x": 173, "158x": 173, "119x": 173, "224x": 173, "134x": 173, "227x": 173, "210x": 173, "40x": 173, "27x": 173, "253x": 173, "239x": 173, "126x": 173, "190x": 173, "191x": 173, "96x": [173, 271], "116x": 173, "137x": 173, "26x": 173, "203x": [173, 271], "23x": 173, "208x": 173, "130x": 173, "53x": 173, "188x": 173, "94x": 173, "146x": 173, "182x": 173, "12x": [175, 181, 182, 188, 259], "f3": [190, 197, 201, 223, 243], "berlekamp": [191, 271], "massei": [191, 271], "depend": [191, 206, 261, 263, 264, 267, 271], "2n": 191, "sach": 191, "uniniti": 191, "part": 191, "vi": 191, "sing": 191, "embeddedrel": 191, "showarticl": 191, "1099": 191, "php": 191, "crypto": 191, "stanford": 191, "mironov": 191, "cs359": 191, "below": [191, 209, 225, 240, 254, 257, 258, 259, 260, 269, 270], "reproduc": [191, 264, 271], "carmichael": [192, 209, 240, 271], "lambda": [192, 209, 240], "oei": [192, 198, 226, 227, 235, 246], "a002322": 192, "euler": [192, 198, 209, 237, 240], "phi": [192, 198, 209, 215, 237, 240, 241, 246], "notabl": [192, 225, 256], "And": [192, 200, 225], "pow": [192, 209, 219, 224, 240, 241, 271], "standard": [193, 218, 266, 267, 268, 271, 273], "split": 193, "henc": 193, "wai": [193, 254, 256, 259, 262, 270, 276, 277], "congruenc": [194, 200], "a_i": 194, "solut": 194, "chines": 194, "theorem": [194, 200, 271, 277], "a_2": 194, "ldot": 194, "a_n": 194, "m_n": 194, "chap14": 194, "show": [194, 222, 237, 241], "satisfi": [194, 200, 204, 219, 222, 224, 230, 232], "ai": 194, "x_truth": 194, "m3": 194, "m4": 194, "m5": 194, "sigma_1": 195, "sigma_k": 195, "mid": 195, "euclidean": [197, 201, 276, 277], "chap2": [197, 198, 201, 219, 220, 224, 246], "moon": 197, "domain": 197, "totient": [198, 209, 237, 240], "big": 198, "1big": 198, "p_1": [198, 199, 211, 216, 232, 247], "p_k": [198, 199, 211, 216, 232, 247], "a000010": [198, 246], "p_2": 199, "cunningham": [199, 267, 274], "book": [199, 267, 274], "pm": [199, 267, 274], "trial": [199, 247], "residu": [199, 219, 224, 247, 271], "pollard": [199, 232, 233, 271, 274], "rho": [199, 233, 271, 274], "continu": [199, 276], "until": [199, 271], "avail": [199, 217, 242, 257, 271], "round": [200, 212, 228], "primal": [200, 212, 228, 244, 267], "odd": [200, 209, 210, 219, 224, 228, 231, 232, 233], "choos": [200, 228, 257, 266], "shown": [200, 228, 277], "probabl": [200, 212, 228], "hold": 200, "wit": [200, 228], "liar": [200, 228], "possibl": [200, 206, 207, 228, 238, 239, 267, 269, 270, 271], "mark": [200, 228, 271], "257": [200, 228, 254, 268, 274], "24841": [200, 228], "65497": [200, 228], "here": [200, 232, 255, 256, 257, 260, 267, 269, 273, 276, 277], "pseudoprim": [200, 212, 228], "a001567": 200, "2047": 200, "29341": 200, "65281": 200, "But": 200, "a005935": 200, "2465": 200, "7381": 200, "16531": 200, "dictionari": 202, "1000": [203, 205, 218, 221, 259], "625": [203, 271], "3125": 203, "modulu": [204, 230], "scale": [204, 206, 238], "transform": [204, 230, 254, 267, 271], "pad": [204, 230], "max": [204, 206, 209, 226, 227, 230, 236, 237, 238, 240, 247, 257, 263, 268, 271], "mn": [204, 230], "criteria": [204, 230], "nx": 204, "normal": [204, 230, 254, 257, 266, 267], "tolist": [204, 230], "fourier": [204, 230, 254], "dft": [204, 230, 254, 271], "pi": [204, 230], "neq": [204, 230], "omega_": [204, 230], "point": [204, 230, 269], "x_j": [204, 222, 230], "x_k": [204, 230], "kj": 204, "coolei": [204, 230, 271], "tukei": [204, 230, 271], "fft": [204, 230, 267, 271], "cgyurgyik": [204, 230], "github": [204, 225, 230, 267, 272], "io": [204, 230, 271, 272], "post": [204, 230], "2021": [204, 230, 271], "04": [204, 230, 268], "brief": [204, 230], "introduct": [204, 230, 271], "nayuki": [204, 230], "geeksforgeek": [204, 230], "import": [204, 230, 262, 266, 270, 271, 272, 273, 274, 277], "forward": [204, 230, 267, 271], "ifft": [204, 271], "exact": [206, 207, 238, 239], "request": [206, 262, 268], "precomput": 206, "under": [206, 268, 276, 277], "quickli": [206, 212], "10000": 206, "hp": 206, "weight": 206, "runtimeerror": [206, 209, 232, 233, 238, 240, 271], "backslash": [206, 207, 238, 239], "four": [206, 207, 238, 258, 271, 274], "now": [206, 238, 271, 274, 276, 277], "you": [207, 225, 239, 241, 255, 256, 262, 263, 264, 266, 267, 268, 276, 277], "them": [207, 239, 241, 257, 268, 275], "cost": [207, 239, 241], "would": [207, 239, 241, 256, 257, 267, 268], "been": [207, 225, 239, 241, 257], "break": [207, 239, 241], "incur": [207, 239, 241, 255, 274], "earli": [207, 239, 241], "exit": [207, 239, 241], "0x7ff966e850e0": 207, "2p": [209, 240], "znx": [209, 240, 241], "observ": [209, 240], "although": [209, 240, 276], "2d": [209, 240], "maximum": [209, 240], "stopiter": [209, 240], "_modular": [209, 240], "559": [209, 240, 268], "558": [209, 240], "560": [209, 240], "elif": [209, 240], "wa": [209, 240, 267, 271, 276], "caus": [209, 240, 271, 274], "566": [209, 240], "564": [209, 240], "565": [209, 240], "No": [209, 240, 248, 250, 252], "750": [210, 231], "even": [210, 231, 257, 267, 269, 270], "run": [212, 261, 268, 269, 270, 271, 272, 274], "could": [212, 232, 267, 271], "1000000000000000035000061": [212, 240], "controversi": 213, "regard": 213, "altern": [215, 240, 241, 255], "regular": [216, 263], "humbl": 216, "highli": 216, "As": [217, 255, 259, 267, 276, 277], "consequ": 217, "version": [218, 257, 262, 266, 271, 273, 274], "befor": [218, 270, 275, 276, 277], "later": [218, 271, 277], "librari": [218, 244, 255, 257, 259, 262, 263, 264, 266, 267, 268, 269, 271, 275, 276, 277], "961": 218, "unlik": [219, 269], "impli": 219, "quadrat": [219, 224, 271], "q_n": 219, "q_9": 219, "overlin": [219, 224], "_9": 219, "index": [221, 261, 274], "7919": 221, "interpol": [222, 271], "coordin": 222, "duplic": [222, 263, 271], "y_j": 222, "ell_j": 222, "substack": 222, "x_m": [222, 233], "lagrange_polynomi": 222, "q_p": 224, "begin": 224, "_p": 224, "q_7": 224, "_7": 224, "gfprimdf": 225, "doesn": [225, 263], "spot": 225, "pleas": [225, 267], "submit": 225, "lin": 225, "costello": 225, "control": 225, "a000043": 226, "2000": [226, 227], "521": 226, "607": 226, "1279": 226, "merseen": 226, "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087": [226, 227], "a000668": 227, "8191": 227, "131071": 227, "524287": 227, "2305843009213693951": 227, "618970019642690137449562111": 227, "162259276829213363391578010288127": 227, "170141183460469231731687303715884105727": 227, "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151": 227, "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127": 227, "strong": 228, "declar": 228, "much": [228, 271], "dartmouth": 228, "carlp": 228, "paper25": 228, "strong_liar": 228, "assert": 228, "6852976918500265458318414454675831645298": 229, "6852976918500265458318414454675831645343": 229, "jk": 230, "potenti": 231, "b_2": 232, "p_": 232, "chosen": [232, 276], "gg": 232, "pq": 232, "1039": 232, "1458757": 232, "1326001": 232, "_prime": 232, "1177": 232, "1174": 232, "1175": [232, 268], "1178": 232, "1179": 232, "secondari": 232, "1180": 232, "1934313240757": 232, "2133861346249": 232, "5471": 232, "257107": 232, "1517": 232, "offset": 233, "seek": 233, "x_1": 233, "x_": 233, "unknown": 233, "2m": 233, "accomplish": 233, "look": 233, "especi": [233, 258, 271], "good": 233, "503": 233, "10007": 233, "1000003": 233, "rel": 233, "1182640843": 233, "1716279751": 233, "6298891201241929548477199440981228280038": 234, "6298891201241929548477199440981228279991": 234, "empti": [235, 253], "siev": 235, "eratosthen": 235, "a000040": 235, "gi": 237, "sometim": [238, 277], "five": 239, "0x7ff965952b00": 239, "shoup": [240, 241], "am": [240, 241], "mcom": [240, 241], "1992": [240, 241], "s0025": [240, 241], "5718": [240, 241], "1106981": [240, 241], "hua": [240, 241], "On": [240, 241], "bull": [240, 241], "1942": [240, 241, 268], "s0002": [240, 241], "9904": [240, 241], "07767": [240, 241], "numbertheori": [240, 241], "mp313": [240, 241], "lectur": [240, 241], "lecture7": [240, 241], "page1": [240, 241], "1000000000000000035000060": 240, "1000000000000000035000054": 240, "116952087714999724748654": 240, "0x7ff965953810": 241, "insid": [242, 258, 271], "randomli": 244, "prime_number_theorem": 244, "327845897586213436751081882871255331286648902836386839087617368608439574698192016043769533823474001379935585889197488144338014865193967937011638431094821943416361149113909692569658970713864593781874423564706915495970135894084612689487074397782022398597547611189482697523681694691585678818112329605903872356773": 244, "openssl": 244, "pylint": [244, 262, 263], "disabl": [244, 263, 271], "1d2de38de88c67e1eafdeeae77c40b8709ed9c275522c6d5578976b1abcbe7e0f8c6de1271eec6eb3827649164189788f9f3a622aea5f4039761ec708b5841de88566d9b5baf49ba92dce5a300297a9e0e890e4103ed2ad4b5e0553ce56e8c34758cd45900125dba1553ae73aa0cbd6018a2a8713d46e475bf058d1aaa52ef1a5": 244, "n_r": 247, "15013": 247, "500": [247, 274], "1696469": 247, "recurs": [248, 251], "mix": [248, 251], "match": [248, 251], "previous": [248, 250, 252, 271], "coercion": [248, 250, 252], "width": [249, 258, 271], "variabl": 250, "decreas": 250, "132": [253, 254, 255, 268], "nearli": [254, 260, 266], "univers": 254, "unari": 254, "variou": [254, 256, 263, 267, 271, 273, 274], "enabl": [254, 271, 273], "expand": [254, 260], "detail": [254, 258, 259, 260, 266, 271, 276, 277], "88": [254, 256, 268, 269, 271, 276], "essenti": [254, 260], "how": [254, 260, 263, 264, 273], "66": [254, 256, 260, 268, 276], "110": [254, 256], "across": [254, 274], "target": [254, 271], "axi": 254, "220": [254, 268, 269], "place": [254, 256], "negat": 254, "244": 254, "245": [254, 268], "246": 254, "247": 254, "248": 254, "249": 254, "250": [254, 268], "251": 254, "252": 254, "253": 254, "254": 254, "258": 254, "259": 254, "260": [254, 268], "261": [254, 272], "occur": 254, "262": 254, "263": [254, 268, 271], "264": 254, "265": 254, "7952": 254, "12470": 254, "8601": 254, "11055": 254, "12691": 254, "9895": 254, "266": 254, "9387": 254, "10789": 254, "14695": 254, "13079": 254, "14025": 254, "5694": 254, "267": [254, 268], "268": [254, 259], "269": 254, "270": [254, 268, 271], "271": [254, 268], "5\u03b1": 254, "6\u03b1": 254, "272": 254, "274": [254, 268], "275": 254, "276": 254, "277": [254, 268], "11363": 254, "2127": 254, "15189": 254, "5863": 254, "1240": 254, "278": 254, "7664": 254, "14905": 254, "15266": 254, "13358": 254, "9822": 254, "16312": 254, "279": 254, "281": [254, 268, 271], "282": [254, 268], "283": [254, 271], "284": [254, 268], "285": [254, 271], "286": 254, "287": 254, "288": 254, "289": [254, 271], "290": [254, 268], "291": 254, "292": 254, "293": 254, "294": 254, "295": [254, 268, 271], "296": [254, 271], "297": 254, "nativ": [254, 256, 267, 269, 270, 271], "298": 254, "299": [254, 271], "300": [254, 271, 274], "301": 254, "302": 254, "303": 254, "304": 254, "305": [254, 268], "306": [254, 271], "307": [254, 268], "308": 254, "309": [254, 268, 271], "310": [254, 271], "311": [254, 268], "312": [254, 271], "313": [254, 268, 271], "314": 254, "315": 254, "316": 254, "317": [254, 271], "318": 254, "319": 254, "320": [254, 271], "321": [254, 268], "322": [254, 268, 271], "323": 254, "324": 254, "325": [254, 271], "326": [254, 268], "327": [254, 268], "328": [254, 268, 271], "329": [254, 268], "330": 254, "331": [254, 268], "332": 254, "333": [254, 271], "334": [254, 268], "335": [254, 271], "336": [254, 271], "337": [254, 271], "338": 254, "339": [254, 271], "340": [254, 268], "341": 254, "a_inv": 254, "342": 254, "futur": [255, 271], "main": 255, "ringarrai": [255, 271], "runtim": 255, "furthermor": 255, "know": 255, "skip": 255, "verif": [255, 270, 271], "twice": 255, "onc": [255, 257, 266, 269, 270, 271, 274], "subsequ": [255, 271], "extrem": 255, "inexpens": 255, "isomorph": 255, "document": [255, 272, 273, 274], "access": [255, 258, 261, 263, 274], "sever": [255, 256, 259, 260], "pascalcas": [255, 259], "snake_cas": [255, 259], "act": 255, "we": [256, 257, 266, 271, 276, 277], "work": [256, 260, 263, 266, 267, 271], "rather": [256, 257, 269, 270, 271], "opposit": 256, "x_np": 256, "finish": [256, 266], "back": [256, 266, 271], "assist": [256, 266], "whatev": 256, "fail": [256, 271], "dure": [256, 257, 258], "abl": 256, "medium": 256, "unless": 256, "otherwis": [256, 271], "536": 256, "819": 256, "718": [256, 269], "372965718414832834661087250628": 256, "806049130928469164386760725036": 256, "592920364234256142894324967077": 256, "1113788269494169358344720339135": 256, "388": 256, "400": [256, 271, 274], "astyp": [256, 270], "expect": 256, "reshap": 256, "subok": [256, 271], "Be": 256, "mind": 256, "custom": [257, 272], "numba": [257, 267, 271, 274], "written": [257, 267], "intercept": 257, "cach": [257, 271], "primari": [257, 264], "util": [257, 271], "built": [257, 261, 271, 274], "creation": [257, 258, 266, 267, 271, 274, 276, 277], "map": 257, "simplifi": [257, 271], "becom": [257, 258, 277], "limit": 257, "usual": 257, "concern": 257, "intermedi": 257, "frompyfunc": 257, "lack": 257, "come": [257, 268], "penalti": 257, "intention": 257, "immedi": [257, 262], "demand": 257, "invoc": [257, 271], "Their": 258, "proper": 258, "compact": [258, 271], "old": 258, "signific": [258, 271], "natur": [258, 266, 277], "clutter": 258, "clearli": 258, "problemat": 258, "occupi": 258, "lot": [258, 271], "quit": 258, "difficult": [258, 277], "read": 258, "readabl": [258, 276, 277], "improv": [258, 271, 272, 273, 274], "linewidth": 258, "179x": [259, 271], "180x": 259, "19x": 259, "simpl": [259, 270, 277], "72x": 259, "192x": 259, "36x": 259, "0xf7": 259, "0x00": 259, "0xa2": 259, "0x75": 259, "treat": 260, "vice": 260, "versa": 260, "floor": [260, 271], "fraction": 260, "keep": [260, 270], "quotient": [260, 276], "overload": [260, 271], "sphinx": [261, 271], "immateri": [261, 271], "theme": 261, "txt": [261, 268], "myst": 261, "parser": 261, "git": [261, 262, 268], "dollar": 261, "ipykernel": 261, "switch": [261, 276, 277], "pip": [261, 262, 263, 264, 266, 268], "command": 261, "dirhtml": 261, "home": 261, "directori": [261, 262, 271], "webpag": 261, "local": [261, 263, 264], "webserv": 261, "modul": 261, "server": 261, "8080": 261, "web": 261, "browser": 261, "localhost": 261, "latest": [262, 266, 272], "releas": [262, 271, 272, 273, 274], "master": [262, 268], "mhostett": [262, 267, 271, 272, 273, 274], "branch": [262, 263, 268], "activ": 262, "develop": [262, 263, 264, 267, 268], "benefici": 262, "fashion": 262, "seen": [262, 271], "upon": 262, "clone": 262, "repo": [262, 268], "wherev": [262, 271], "like": [262, 266, 267, 268, 271, 276], "flag": 262, "lint": 262, "pyproject": [262, 263, 264, 271], "toml": [262, 263, 264, 271], "project": 262, "black": [262, 263, 274], "pytest": [262, 264, 268], "cov": [262, 268], "xdist": 262, "benchmark": [262, 271], "pdfminer": 262, "six": 262, "extra": [262, 268], "static": 263, "analysi": 263, "your": [263, 264, 267, 268], "dev": [263, 264, 268, 269, 270, 271, 272, 274], "nuisanc": 263, "warn": [263, 268, 274], "ignor": [263, 277], "tool": [263, 264], "path": 263, "src": [263, 271], "_version": 263, "callabl": 263, "understand": 263, "metaclass": [263, 271], "alarm": 263, "fixm": 263, "invalid": 263, "miss": 263, "docstr": [263, 271], "protect": 263, "ancestor": 263, "attribut": 263, "unneed": 263, "exclud": 263, "quot": 263, "express": [263, 271], "reason": 263, "isort": [263, 274], "profil": 263, "vscode": [263, 264], "json": [263, 264, 268], "edit": 263, "ini_opt": 264, "minvers": 264, "addopt": 264, "showloc": 264, "testpath": 264, "execut": 264, "test_math": 264, "test_gcd": 264, "integr": [264, 267], "infrastructur": 264, "debug": 264, "parti": 264, "pkl": 264, "folder": [264, 268, 271], "script": [264, 271], "generate_int_test_vector": 264, "generate_field_test_vector": 264, "sudo": 264, "apt": 264, "sagemath": 264, "re": [264, 271], "easi": 264, "individu": 264, "guid": 266, "intend": [266, 267], "basic": 266, "usag": [266, 271, 273], "pypi": [266, 271, 272], "__version__": 266, "dev5": 266, "g7f8df891": 266, "elsewher": 266, "whichev": 266, "tradit": 266, "preform": 266, "complic": 266, "array_lik": 267, "mimic": [267, 271], "signatur": [267, 274], "intern": [267, 270], "replac": [267, 271, 273], "vulner": [267, 271], "channel": 267, "attack": 267, "secur": 267, "research": 267, "engin": 267, "cryptanalysi": 267, "experiment": 267, "educ": 267, "seamless": 267, "accompani": 267, "ellipt": 267, "curv": 267, "gpu": [267, 271], "heavili": 267, "reli": 267, "llvm": 267, "optim": [267, 269, 272, 274], "wolfram": [267, 271], "sage": 267, "sympi": 267, "octav": 267, "mention": [267, 276, 277], "thank": 267, "cite": 267, "recommend": 267, "bibtex": 267, "softwar": [267, 271], "hostetter_galois_2020": 267, "titl": 267, "author": 267, "hostett": [267, 271, 272, 273, 274], "matt": [267, 271, 272, 273, 274], "month": 267, "year": 267, "2020": 267, "url": [267, 271], "apa": 267, "test_field_arithmet": 268, "advis": 268, "stddev": 268, "median": 268, "session": 268, "platform": 268, "linux": 268, "pluggi": 268, "timer": 268, "perf_count": 268, "disable_gc": 268, "min_round": 268, "min_tim": 268, "000005": 268, "max_tim": 268, "calibration_precis": 268, "warmup": 268, "warmup_iter": 268, "100000": 268, "rootdir": 268, "mnt": 268, "matth": 268, "inifil": 268, "setup": 268, "cfg": 268, "plugin": 268, "mock": 268, "typeguard": 268, "anyio": 268, "collect": 268, "item": 268, "100_000": [268, 274], "test_add": 268, "3810": 268, "3280": 268, "9455": 268, "4959": 268, "07": [268, 270], "3620": 268, "test_additive_invers": 268, "5850": 268, "5360": 268, "1445": 268, "9249": 268, "2670": 268, "test_divid": 268, "0870": 268, "0680": 268, "6357": 268, "9537": 268, "4920": 268, "test_multiplicative_invers": 268, "4410": 268, "0050": 268, "6590": 268, "8467": 268, "4670": 268, "test_multipli": 268, "0400": 268, "4400": 268, "3296": 268, "1267": 268, "9010": 268, "test_pow": 268, "2410": 268, "06": [268, 274], "2870": 268, "8103": 268, "4850": 268, "2860": 268, "test_scalar_multipli": 268, "543": 268, "3970": 268, "00": 268, "714": 268, "562": 268, "2968": 268, "4125": 268, "1370": 268, "test_subtract": 268, "3110": 268, "8710": 268, "2938": 268, "4038": 268, "2520": 268, "2620": 268, "9984": 268, "1680": 268, "7530": 268, "0860": 268, "9070": 268, "7403": 268, "0927": 268, "0520": 268, "351": 268, "6220": 268, "09": 268, "5920": 268, "4510": 268, "3240": 268, "1620": 268, "9590": 268, "350": [268, 271], "8016": 268, "05": [268, 274], "3332": 268, "1050": 268, "1090": 268, "5620": 268, "1805": 268, "9767": 268, "6600": 268, "7210": 268, "520": 268, "5480": 268, "349": 268, "02": 268, "3962": 268, "6105": 268, "544": 268, "0880": 268, "1140": 268, "575": 268, "6227": 268, "0059": 268, "4830": 268, "6160": 268, "1760": 268, "3242": 268, "6562": 268, "8905": 268, "0580": 268, "393": [268, 271], "6670": 268, "7954": 268, "6945": 268, "4630": 268, "9080": 268, "6380": 268, "0218": 268, "7213": 268, "6330": 268, "7890": 268, "8050": 268, "1431": 268, "6688": 268, "0210": 268, "8140": 268, "348": 268, "4620": 268, "6663": 268, "8113": 268, "5820": 268, "475": 268, "2490": 268, "4317": 268, "6557": 268, "2370": 268, "6030": 268, "389": [268, 271], "2180": 268, "9333": 268, "9217": 268, "1145": 268, "539": 268, "7710": 268, "973": 268, "1410": 268, "573": 268, "4538": 268, "0047": 268, "557": 268, "7030": 268, "3500": 268, "0450": 268, "6062": 268, "3127": 268, "1270": 268, "6110": 268, "1990": 268, "4288": 268, "8745": 268, "6750": 268, "7150": 268, "0465": 268, "2959": 268, "3070": 268, "4310": 268, "971": 268, "367": [268, 271], "6440": 268, "0968": 268, "831": 268, "5738": 268, "354": [268, 271], "6500": 268, "933": 268, "842": 268, "1600": 268, "865": 268, "404": [268, 271], "4870": 268, "1417": 268, "755": 268, "529": 268, "9702": 268, "015": 268, "3740": 268, "839": 268, "079": 268, "0300": 268, "0780": 268, "098": 268, "1473": 268, "6741": 268, "092": 268, "5140": 268, "832": 268, "8340": 268, "938": 268, "7640": 268, "942": 268, "1951": 268, "806": 268, "9381": 268, "928": 268, "9640": 268, "903": 268, "883": 268, "2930": 268, "1310": 268, "3991": 268, "9582": 268, "912": 268, "6210": 268, "7780": 268, "7528": 268, "2536": 268, "4330": 268, "0900": 268, "5990": 268, "8739": 268, "6347": 268, "1720": 268, "3340": 268, "1649": 268, "1860": 268, "8860": 268, "6730": 268, "6490": 268, "7595": 268, "0094": 268, "9500": 268, "3150": 268, "4480": 268, "0589": 268, "9483": 268, "4220": 268, "3430": 268, "2580": 268, "8079": 268, "1740": 268, "7910": 268, "401": 268, "3410": 268, "8168": 268, "4759": 268, "8730": 268, "850": 268, "2810": 268, "3010": 268, "884": 268, "6499": 268, "6705": 268, "876": 268, "5800": 268, "5460": 268, "2685": 268, "4904": 268, "8610": 268, "4770": 268, "358": 268, "2300": 268, "4561": 268, "1327": 268, "4100": 268, "6980": 268, "6550": 268, "9128": 268, "6890": 268, "3460": 268, "7130": 268, "5486": 268, "5184": 268, "1795": 268, "4600": 268, "08": 268, "2010": 268, "5927": 268, "5185": 268, "2130": 268, "1690": 268, "3098": 268, "7315": 268, "361": [268, 271], "5260": 268, "447": 268, "0060": 268, "385": [268, 271], "7585": 268, "6975": 268, "375": 268, "4475": 268, "756": 268, "014": 268, "792": 268, "1778": 268, "3465": 268, "786": 268, "1765": 268, "383": [268, 271], "7790": 268, "461": 268, "3640": 268, "411": 268, "7450": 268, "7056": 268, "403": 268, "7260": 268, "10_000": [268, 271, 272], "9310": 268, "635": 268, "8940": 268, "936": 268, "2487": 268, "1260": 268, "915": 268, "945": 268, "0700": 268, "632": 268, "3527": 268, "9239": 268, "01": 268, "578": 268, "4425": 268, "022": 268, "8560": 268, "7516": 268, "808": 268, "8230": 268, "481": [268, 274], "3870": 268, "011": 268, "817": 268, "897": 268, "2702": 268, "471": [268, 274], "2330": 268, "992": 268, "5040": 268, "847": 268, "6130": 268, "894": 268, "3920": 268, "872": 268, "3102": 268, "8231": 268, "2980": 268, "3730": 268, "040": 268, "5270": 268, "650": 268, "6814": 268, "5041": 268, "693": 268, "8380": 268, "049": 268, "1360": 268, "4565": 268, "6458": 268, "1895": 268, "4720": 268, "075": 268, "8030": 268, "944": 268, "4420": 268, "1406": 268, "5830": 268, "legend": 268, "outlier": 268, "deviat": 268, "iqr": 268, "interquartil": 268, "1st": 268, "quartil": 268, "3rd": 268, "op": 268, "per": [268, 269, 270, 271, 272, 274], "impact": 268, "0001_master": 268, "checkout": 268, "0001_branch": 268, "modular": [269, 271, 274, 277], "involv": 269, "convolut": 269, "make": [269, 271, 275], "fair": 269, "fight": 269, "million": [269, 270], "10_000_000": [269, 270], "timeit": [269, 270, 271, 272, 274], "std": [269, 270, 271, 272, 274], "incorrect": 269, "aa": [269, 270], "bb": [269, 270], "pp": 269, "747": 269, "\u00b5": [269, 270, 271, 272, 274], "1174047800": 269, "3249326965": 269, "3196014003": 269, "3195457330": 269, "100242821": 269, "338589759": 269, "386": 269, "isn": 269, "definit": 269, "bla": [269, 270], "lapack": [269, 270], "parallel": [269, 274], "hardwar": 269, "acceler": 269, "4203877556": 269, "3977035749": 269, "2623937858": 269, "3721257849": 269, "4250999056": 269, "4026271867": 269, "3120760606": 269, "1017695431": 269, "1111117124": 269, "1638387264": 269, "2988805996": 269, "1734614583": 269, "2508826906": 269, "2800993411": 269, "1720697782": 269, "3858180318": 269, "2521070820": 269, "3906771227": 269, "624580545": 269, "984724090": 269, "3969931498": 269, "1692192269": 269, "473079794": 269, "1029376699": 269, "1232183301": 269, "209395954": 269, "2659712274": 269, "2967695343": 269, "2747874320": 269, "1249453570": 269, "3938433735": 269, "828783569": 269, "3286222384": 269, "3669775257": 269, "33626526": 269, "4278384359": 269, "703": 269, "000": [269, 270, 271, 274], "xy": 270, "2097169": 270, "1879104": 270, "1566761": 270, "967164": 270, "744769": 270, "975853": 270, "1142138": 270, "due": [270, 271], "don": 270, "1403108": 270, "100593": 270, "595358": 270, "852783": 270, "1035698": 270, "1207498": 270, "989189": 270, "390": 270, "absolut": 270, "overflow": [270, 271, 274], "prevent": 270, "whenev": 270, "1147163": 270, "59466": 270, "1841183": 270, "667877": 270, "2084618": 270, "799166": 270, "306714": 270, "1380503": 270, "810935": 270, "1932687": 270, "1690697": 270, "329837": 270, "325274": 270, "575543": 270, "1327001": 270, "167724": 270, "422518": 270, "696986": 270, "862992": 270, "1143160": 270, "588384": 270, "668891": 270, "1285421": 270, "1196448": 270, "1026856": 270, "1413416": 270, "1844802": 270, "38844": 270, "1643604": 270, "10409": 270, "401717": 270, "329673": 270, "860449": 270, "1551173": 270, "1766877": 270, "986430": 270, "708": 270, "slightli": 270, "overhead": 270, "682": [270, 271], "renam": [271, 273], "gfarrai": 271, "chinese_remainder_theorem": 271, "bug": [271, 274, 275], "baalateja": 271, "kataru": 271, "bk": 271, "poly_exp_mod": 271, "poly_pow": 271, "is_prime_fermat": 271, "is_prime_miller_rabin": 271, "massiv": 271, "enhanc": 271, "convolv": 271, "oaklei": 271, "rfc": 271, "2409": 271, "restructur": 271, "is_group": 271, "is_field": 271, "poly_factor": 271, "vdot": 271, "poly_gcd": 271, "june": 271, "fieldmeta": 271, "fieldclass": 271, "remov": [271, 272, 273], "better": 271, "consolid": 271, "verify_irreduc": 271, "verify_primit": 271, "abil": [271, 272, 274, 276, 277], "ipython": 271, "tab": [271, 276, 277], "cleanup": 271, "tutori": [271, 276, 277], "convers": 271, "minor": [271, 275], "dominik": 271, "wernberg": 271, "werni2a": 271, "juli": 271, "prime_factor": 271, "poly_egcd": 271, "euler_toti": 271, "clean": 271, "dir": 271, "public": 271, "shorten": 271, "structur": 271, "hierarchi": 271, "august": [271, 272], "unnecessari": [271, 276], "log_naiv": 271, "might": 271, "overrid": 271, "coverag": 271, "though": 271, "bch_valid_cod": [271, 273], "repetit": 271, "weren": 271, "move": 271, "parit": 271, "pin": 271, "septemb": [271, 272], "render": 271, "correctli": 271, "id": 271, "decemb": [271, 274], "style": 271, "randint": 271, "offici": 271, "major": [271, 272, 275], "syntax": 271, "bump": 271, "iy\u00e1n": [271, 274], "m\u00e9ndez": [271, 274], "veiga": [271, 274], "iyanmv": [271, 274], "januari": 271, "2022": [271, 272, 273, 274], "hint": 271, "februari": [271, 274], "refactor": [271, 273], "lup_decompos": 271, "is_quadratic_residu": 271, "aren": 271, "quadratic_residu": 271, "quadratic_non_residu": 271, "co": 271, "march": 271, "redefin": 271, "differenti": 271, "wasn": 271, "memoiz": [271, 274], "routin": [271, 272], "cpu": [271, 274], "675": 271, "sy": [271, 274], "total": [271, 274], "wall": [271, 274], "741": 271, "0o13": 271, "0xb": 271, "made": 271, "longer": [271, 274], "needlessli": 271, "overhaul": 271, "websit": 271, "immut": 271, "actual": 271, "obtain": 271, "answer": [271, 276, 277], "binarypoli": 271, "densepoli": 271, "sparsepoli": 271, "redund": 271, "03": 271, "nest": 271, "436": [271, 273], "910": 271, "900": 271, "242x": 271, "32x": 271, "230x": 271, "159x": 271, "101x": 271, "68x": 271, "442": [271, 274], "439": 271, "april": 271, "sunset": 271, "__future__": 271, "annot": [271, 272], "That": 271, "alias": 271, "subpackag": 271, "inabl": 271, "monkei": 271, "patch": [271, 275], "343": 271, "anywher": 271, "coercibl": 271, "throughout": 271, "simpler": 271, "clear": 271, "695": 271, "clariti": 271, "broken": [271, 277], "boost": 271, "722": 271, "574": 271, "527": 271, "690": 271, "concis": 271, "descript": 271, "362": 271, "wide": 271, "363": 271, "polymorph": 271, "believ": 271, "introduc": [271, 275], "occasion": [271, 274], "erron": 271, "360": 271, "upgrad": 271, "cve": 271, "34141": 271, "41496": 271, "41495": 271, "366": 271, "373": 271, "376": 271, "377": 271, "rework": 271, "apigen": 271, "370": 271, "readthedoc": 271, "languag": 271, "seem": 271, "connot": 271, "hopefulli": 271, "392": 271, "complex": 271, "brute": 271, "forc": 271, "1650": 271, "pohlig": 271, "hellman": 271, "lg": 271, "387": 271, "491954233": 271, "14011": 271, "itoh": 271, "tsujii": 271, "littl": [271, 277], "646": 271, "834": 271, "479": 271, "pickl": 271, "fec": [271, 273], "397": 271, "sourc": 271, "metadata": 272, "414": 272, "409": [272, 274], "2218840874040723579228056294021": 272, "deploi": 272, "408": 272, "novemb": [272, 273], "ineffici": 272, "429": 272, "13546990": 272, "14653018": 272, "21619804": 272, "15507037": 272, "24669161": 272, "19116362": 272, "23979074": 272, "432": 272, "13693": 272, "426": 272, "modern": 272, "abbrevi": 272, "notat": 272, "418": 272, "appropri": 272, "420": 272, "424": 272, "430": 272, "413": 273, "435": 273, "ari": 273, "parity_onli": 273, "generator_to_parity_check_matrix": 273, "parity_check_to_generator_matrix": 273, "poly_to_generator_matrix": 273, "roots_to_parity_check_matrix": 273, "display_mod": 273, "bool_": 273, "437": 273, "publish": 273, "doc": 273, "441": 274, "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512": 274, "core": 274, "440": 274, "664": 274, "776": 274, "bitwise_xor": 274, "infinit": 274, "450": 274, "2400610585866217": 274, "446": 274, "449": 274, "pivi": 274, "452": 274, "took": 274, "forev": 274, "641": 274, "274177": 274, "6700417": 274, "67280421310721": 274, "59649589127497217": 274, "5704689200685129054721": 274, "454": 274, "2013": 274, "2018": 274, "2023": 274, "463": 274, "462": 274, "1001": 274, "745": 274, "470": 274, "469": 274, "415": 274, "477": 274, "mypi": 274, "checker": 274, "concurr": 274, "484": 274, "octob": 274, "507": 274, "rare": 274, "488": 274, "resolv": 274, "deprec": 274, "492": 274, "lasagnen": 274, "semant": 275, "featur": 275, "guarante": 275, "thought": 275, "prove": [276, 277], "mostli": 276, "gf9": 276, "suggest": [276, 277], "compactli": 276, "retriev": [276, 277], "inform": 276, "analogu": 276, "mathemat": [276, 277], "speak": [276, 277], "gf3": 276, "a_poli": 276, "b_poli": 276, "nonetheless": [276, 277], "convinc": [276, 277], "yourself": [276, 277], "reduct": 276, "reformul": [276, 277], "onto": 276, "let": [276, 277], "earlier": [276, 277], "learn": [276, 277], "b_inv_poli": 276, "examin": [276, 277], "honor": 277, "father": 277, "theori": 277, "ask": 277, "gauss": 277, "publicli": 277, "give": 277, "opinion": 277, "truth": 277, "hope": 277, "who": 277, "advantag": 277, "deciph": 277, "mess": 277, "1832": 277, "dai": 277, "hi": 277, "death": 277, "categori": 277, "focu": 277, "gf7": 277, "a_int": 277, "b_int": 277, "similarli": 277, "euclid": 277, "b\u00e9zout": 277, "yt": 277, "b_inv_int": 277}, "objects": {"": [[0, 0, 0, 1, "galois", ""]], "galois": [[1, 1, 1, "", "Array", "An abstract ndarray subclass over a Galois field or Galois ring."], [22, 1, 1, "", "BCH", "A general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [45, 1, 1, "", "FLFSR", "A Fibonacci linear-feedback shift register (LFSR)."], [60, 5, 1, "", "Field", "Alias of GF()."], [61, 1, 1, "", "FieldArray", "An abstract ndarray subclass over $mathrm{GF}(p^m)$."], [115, 5, 1, "", "GF", "Creates a FieldArray subclass for $mathrm{GF}(p^m)$."], [116, 1, 1, "", "GF2", "A FieldArray subclass over $mathrm{GF}(2)$."], [117, 1, 1, "", "GLFSR", "A Galois linear-feedback shift register (LFSR)."], [132, 1, 1, "", "Poly", "A univariate polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [168, 1, 1, "", "ReedSolomon", "A general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [190, 5, 1, "", "are_coprime", "Determines if the arguments are pairwise coprime."], [191, 5, 1, "", "berlekamp_massey", "Finds the minimal polynomial $c(x)$ that produces the linear recurrent sequence $y$."], [192, 5, 1, "", "carmichael_lambda", "Finds the smallest positive integer $m$ such that $a^m equiv 1(textrm{mod}n)$ for every integer $a$ in $[1, n)$ that is coprime to $n$."], [193, 5, 1, "", "conway_poly", "Returns the Conway polynomial $C_{p,m}(x)$ over $mathrm{GF}(p)$ with degree $m$."], [194, 5, 1, "", "crt", "Solves the simultaneous system of congruences for $x$."], [195, 5, 1, "", "divisor_sigma", "Returns the sum of $k$-th powers of the positive divisors of $n$."], [196, 5, 1, "", "divisors", "Computes all positive integer divisors $d$ of the integer $n$ such that $d|n$."], [197, 5, 1, "", "egcd", "Finds the multiplicands of $a$ and $b$ such that $a s + b t = mathrm{gcd}(a, b)$."], [198, 5, 1, "", "euler_phi", "Counts the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [199, 5, 1, "", "factors", "Computes the prime factors of a positive integer or the irreducible factors of a non-constant, monic polynomial."], [200, 5, 1, "", "fermat_primality_test", "Determines if $n$ is composite using Fermat's primality test."], [201, 5, 1, "", "gcd", "Finds the greatest common divisor of $a$ and $b$."], [202, 5, 1, "", "get_printoptions", "Returns the current print options for the package. This function is the galois equivalent of numpy.get_printoptions()."], [203, 5, 1, "", "ilog", "Computes $x = lfloortextrm{log}_b(n)rfloor$ such that $b^x le n < b^{x + 1}$."], [204, 5, 1, "", "intt", "Computes the Inverse Number-Theoretic Transform (INTT) of $X$."], [205, 5, 1, "", "iroot", "Computes $x = lfloor n^{frac{1}{k}} rfloor$ such that $x^k le n < (x + 1)^k$."], [206, 5, 1, "", "irreducible_poly", "Returns a monic irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [207, 5, 1, "", "irreducible_polys", "Iterates through all monic irreducible polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [208, 5, 1, "", "is_composite", "Determines if $n$ is composite."], [209, 5, 1, "", "is_cyclic", "Determines whether the multiplicative group $(mathbb{Z}/nmathbb{Z}){^times}$ is cyclic."], [210, 5, 1, "", "is_perfect_power", "Determines if $n$ is a perfect power $n = c^e$ with $e > 1$."], [211, 5, 1, "", "is_powersmooth", "Determines if the integer $n$ is $B$-powersmooth."], [212, 5, 1, "", "is_prime", "Determines if $n$ is prime."], [213, 5, 1, "", "is_prime_power", "Determines if $n$ is a prime power $n = p^k$ for prime $p$ and $k ge 1$."], [214, 5, 1, "", "is_primitive_element", "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)$."], [215, 5, 1, "", "is_primitive_root", "Determines if $g$ is a primitive root modulo $n$."], [216, 5, 1, "", "is_smooth", "Determines if the integer $n$ is $B$-smooth."], [217, 5, 1, "", "is_square_free", "Determines if an integer or polynomial is square-free."], [218, 5, 1, "", "isqrt", "Computes $x = lfloorsqrt{n}rfloor$ such that $x^2 le n < (x + 1)^2$."], [219, 5, 1, "", "jacobi_symbol", "Computes the Jacobi symbol $(frac{a}{n})$."], [220, 5, 1, "", "kronecker_symbol", "Computes the Kronecker symbol $(frac{a}{n})$. The Kronecker symbol extends the Jacobi symbol for all $n$."], [221, 5, 1, "", "kth_prime", "Returns the $k$-th prime, where $k = {1,2,3,4,dots}$ for primes $p = {2,3,5,7,dots}$."], [222, 5, 1, "", "lagrange_poly", "Computes the Lagrange interpolating polynomial $L(x)$ such that $L(x_i) = y_i$."], [223, 5, 1, "", "lcm", "Computes the least common multiple of the arguments."], [224, 5, 1, "", "legendre_symbol", "Computes the Legendre symbol $(frac{a}{p})$."], [225, 5, 1, "", "matlab_primitive_poly", "Returns Matlab's default primitive polynomial $f(x)$ over $mathrm{GF}(p)$ with degree $m$."], [226, 5, 1, "", "mersenne_exponents", "Returns all known Mersenne exponents $e$ for $e le n$."], [227, 5, 1, "", "mersenne_primes", "Returns all known Mersenne primes $p$ for $p le 2^n - 1$."], [228, 5, 1, "", "miller_rabin_primality_test", "Determines if $n$ is composite using the Miller-Rabin primality test."], [229, 5, 1, "", "next_prime", "Returns the nearest prime $p$, such that $p > n$."], [230, 5, 1, "", "ntt", "Computes the Number-Theoretic Transform (NTT) of $x$."], [231, 5, 1, "", "perfect_power", "Returns the integer base $c$ and exponent $e$ of $n = c^e$. If $n$ is not a perfect power, then $c = n$ and $e = 1$."], [232, 5, 1, "", "pollard_p1", "Attempts to find a non-trivial factor of $n$ if it has a prime factor $p$ such that $p-1$ is $B$-smooth."], [233, 5, 1, "", "pollard_rho", "Attempts to find a non-trivial factor of $n$ using cycle detection."], [234, 5, 1, "", "prev_prime", "Returns the nearest prime $p$, such that $p le n$."], [235, 5, 1, "", "primes", "Returns all primes $p$ for $p le n$."], [236, 5, 1, "", "primitive_element", "Finds a primitive element $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [237, 5, 1, "", "primitive_elements", "Finds all primitive elements $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [238, 5, 1, "", "primitive_poly", "Returns a monic primitive polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [239, 5, 1, "", "primitive_polys", "Iterates through all monic primitive polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [240, 5, 1, "", "primitive_root", "Finds a primitive root modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [241, 5, 1, "", "primitive_roots", "Iterates through all primitive roots modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [242, 5, 1, "", "printoptions", "A context manager to temporarily modify the print options for the package. This function is the galois equivalent of numpy.printoptions()."], [243, 5, 1, "", "prod", "Computes the product of the arguments."], [244, 5, 1, "", "random_prime", "Returns a random prime $p$ with $b$ bits, such that $2^b le p < 2^{b+1}$."], [245, 5, 1, "", "set_printoptions", "Modifies the print options for the package. This function is the galois equivalent of numpy.set_printoptions()."], [246, 5, 1, "", "totatives", "Returns the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [247, 5, 1, "", "trial_division", "Finds all the prime factors $p_i^{e_i}$ of $n$ for $p_i le B$."]], "galois.Array": [[2, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [3, 2, 1, "", "Ones", "Creates an array of all ones."], [4, 2, 1, "", "Random", "Creates an array with random elements."], [5, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [6, 2, 1, "", "Zeros", "Creates an array of all zeros."], [7, 4, 1, "", "characteristic", "The characteristic $p$ of the Galois field $mathrm{GF}(p^m)$ or $p^e$ of the Galois ring $mathrm{GR}(p^e, m)$."], [8, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [9, 4, 1, "", "default_ufunc_mode", "The default compilation mode of the Galois field or Galois ring."], [10, 4, 1, "", "degree", "The degree $m$ of the Galois field $mathrm{GF}(p^m)$ or Galois ring $mathrm{GR}(p^e, m)$."], [11, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this Galois field or Galois ring."], [12, 4, 1, "", "element_repr", "The current element representation of the Galois field or Galois ring."], [13, 4, 1, "", "elements", "All elements of the Galois field or Galois ring."], [14, 4, 1, "", "irreducible_poly", "The irreducible polynomial of the Galois field or Galois ring."], [15, 4, 1, "", "name", "The name of the Galois field or Galois ring."], [16, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$ or $p^{em}$ of the Galois ring $mathrm{GR}(p^e, m)$."], [17, 4, 1, "", "primitive_element", "A primitive element of the Galois field or Galois ring."], [18, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [19, 4, 1, "", "ufunc_mode", "The current compilation mode of the Galois field or Galois ring."], [20, 4, 1, "", "ufunc_modes", "All supported compilation modes of the Galois field or Galois ring."], [21, 4, 1, "", "units", "All units of the Galois field or Galois ring."]], "galois.Array.Identity": [[2, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [2, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.Array.Ones": [[3, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [3, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.Random": [[4, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [4, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [4, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [4, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [4, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.Array.Range": [[5, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [5, 3, 2, "p-start", "start", "The starting element (inclusive)."], [5, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [5, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.Array.Zeros": [[6, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [6, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.compile": [[8, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.Array.repr": [[18, 3, 2, "p-element_repr", "element_repr", "The field element representation."]], "galois.BCH": [[23, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [24, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [25, 2, 1, "", "__init__", "Constructs a general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [26, 2, 1, "", "__repr__", "A terse representation of the BCH code."], [27, 2, 1, "", "__str__", "A formatted string with relevant properties of the BCH code."], [28, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$ in $mathrm{GF}(q^m)$."], [29, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [30, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [31, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [32, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [33, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [34, 4, 1, "", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the BCH syndrome arithmetic."], [35, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [36, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [37, 4, 1, "", "is_narrow_sense", "Indicates if the BCH code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [38, 4, 1, "", "is_primitive", "Indicates if the BCH code is primitive, meaning $n = q^m - 1$."], [39, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [40, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [41, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [42, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [43, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [44, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.BCH.__init__": [[25, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [25, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the BCH code is narrow-sense."], [25, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q^m)$."], [25, 3, 2, "p-extension_field", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the syndrome arithmetic. The default is None which corresponds to $mathrm{GF}(q^m)$ where $q^{m - 1} le n < q^m$. The default extension field will use matlab_primitive_poly(q, m) for the irreducible polynomial."], [25, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2)$."], [25, 3, 2, "p-k", "k", "The message size $k$."], [25, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q^m - 1$, the BCH code is primitive."], [25, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.BCH.decode": [[31, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [31, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [31, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.BCH.detect": [[32, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.BCH.encode": [[33, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [33, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.FLFSR": [[46, 2, 1, "", "Taps", "Constructs a Fibonacci LFSR from its taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."], [47, 2, 1, "", "__init__", "Constructs a Fibonacci LFSR from its feedback polynomial $f(x)$."], [48, 2, 1, "", "__repr__", "A terse representation of the Fibonacci LFSR."], [49, 2, 1, "", "__str__", "A formatted string of relevant properties of the Fibonacci LFSR."], [50, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [51, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [52, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [53, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [54, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [55, 2, 1, "", "reset", "Resets the Fibonacci LFSR state to the specified state."], [56, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [57, 2, 1, "", "step", "Produces the next steps output symbols."], [58, 4, 1, "", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$. The taps of the shift register define the linear recurrence relation."], [59, 2, 1, "", "to_galois_lfsr", "Converts the Fibonacci LFSR to a Galois LFSR that produces the same output."]], "galois.FLFSR.Taps": [[46, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [46, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."]], "galois.FLFSR.__init__": [[47, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [47, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.FLFSR.reset": [[55, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.FLFSR.step": [[57, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Fibonacci LFSR will step backwards."]], "galois.FieldArray": [[62, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [63, 2, 1, "", "Ones", "Creates an array of all ones."], [64, 2, 1, "", "Random", "Creates an array with random elements."], [65, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [66, 2, 1, "", "Vandermonde", "Creates an $m times n$ Vandermonde matrix of $a in mathrm{GF}(q)$."], [67, 2, 1, "", "Vector", "Converts length-$m$ vectors over the prime subfield $mathrm{GF}(p)$ to an array over $mathrm{GF}(p^m)$."], [68, 2, 1, "", "Zeros", "Creates an array of all zeros."], [69, 2, 1, "", "__init__", "Creates an array over $mathrm{GF}(p^m)$."], [70, 2, 1, "", "__repr__", "Displays the array specifying the class and finite field order."], [71, 2, 1, "", "__str__", "Displays the array without specifying the class or finite field order."], [72, 2, 1, "", "additive_order", "Computes the additive order of each element in $x$."], [73, 2, 1, "", "arithmetic_table", "Generates the specified arithmetic table for the finite field."], [74, 4, 1, "", "characteristic", "The prime characteristic $p$ of the Galois field $mathrm{GF}(p^m)$."], [75, 2, 1, "", "characteristic_poly", "Computes the characteristic polynomial of a finite field element $a$ or a square matrix $mathbf{A}$."], [76, 2, 1, "", "column_space", "Computes the column space of the matrix $mathbf{A}$."], [77, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [78, 4, 1, "", "default_ufunc_mode", "The default ufunc compilation mode for this FieldArray subclass."], [79, 4, 1, "", "degree", "The extension degree $m$ of the Galois field $mathrm{GF}(p^m)$."], [80, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this finite field."], [81, 4, 1, "", "element_repr", "The current finite field element representation."], [82, 4, 1, "", "elements", "All of the finite field's elements ${0, dots, p^m-1}$."], [83, 2, 1, "", "field_norm", "Computes the field norm $mathrm{N}_{L / K}(x)$ of the elements of $x$."], [84, 2, 1, "", "field_trace", "Computes the field trace $mathrm{Tr}_{L / K}(x)$ of the elements of $x$."], [85, 4, 1, "", "irreducible_poly", "The irreducible polynomial $f(x)$ of the Galois field $mathrm{GF}(p^m)$."], [86, 4, 1, "", "is_extension_field", "Indicates if the finite field is an extension field, having prime power order."], [87, 4, 1, "", "is_prime_field", "Indicates if the finite field is a prime field, having prime order."], [88, 4, 1, "", "is_primitive_poly", "Indicates whether the irreducible_poly is a primitive polynomial."], [89, 2, 1, "", "is_square", "Determines if the elements of $x$ are squares in the finite field."], [90, 2, 1, "", "left_null_space", "Computes the left null space of the matrix $mathbf{A}$."], [91, 2, 1, "", "log", "Computes the discrete logarithm of the array $x$ base $beta$."], [92, 2, 1, "", "lu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices."], [93, 2, 1, "", "minimal_poly", "Computes the minimal polynomial of a finite field element $a$."], [94, 2, 1, "", "multiplicative_order", "Computes the multiplicative order $textrm{ord}(x)$ of each element in $x$."], [95, 4, 1, "", "name", "The finite field's name as a string GF(p) or GF(p^m)."], [96, 4, 1, "", "non_squares", "All non-squares in the Galois field."], [97, 2, 1, "", "null_space", "Computes the null space of the matrix $mathbf{A}$."], [98, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$."], [99, 2, 1, "", "plu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices using partial pivoting."], [100, 4, 1, "", "prime_subfield", "The prime subfield $mathrm{GF}(p)$ of the extension field $mathrm{GF}(p^m)$."], [101, 4, 1, "", "primitive_element", "A primitive element $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [102, 4, 1, "", "primitive_elements", "All primitive elements $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [103, 2, 1, "", "primitive_root_of_unity", "Finds a primitive $n$-th root of unity in the finite field."], [104, 2, 1, "", "primitive_roots_of_unity", "Finds all primitive $n$-th roots of unity in the finite field."], [105, 4, 1, "", "properties", "A formatted string of relevant properties of the Galois field."], [106, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [107, 2, 1, "", "repr_table", "Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations."], [108, 2, 1, "", "row_reduce", "Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF)."], [109, 2, 1, "", "row_space", "Computes the row space of the matrix $mathbf{A}$."], [110, 4, 1, "", "squares", "All squares in the finite field."], [111, 4, 1, "", "ufunc_mode", "The current ufunc compilation mode for this FieldArray subclass."], [112, 4, 1, "", "ufunc_modes", "All supported ufunc compilation modes for this FieldArray subclass."], [113, 4, 1, "", "units", "All of the finite field's units ${1, dots, p^m-1}$."], [114, 2, 1, "", "vector", "Converts an array over $mathrm{GF}(p^m)$ to length-$m$ vectors over the prime subfield $mathrm{GF}(p)$."]], "galois.FieldArray.Identity": [[62, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [62, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.FieldArray.Ones": [[63, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [63, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.Random": [[64, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [64, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [64, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [64, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [64, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.FieldArray.Range": [[65, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [65, 3, 2, "p-start", "start", "The starting element (inclusive)."], [65, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [65, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.FieldArray.Vandermonde": [[66, 3, 2, "p-cols", "cols", "The number of columns $n$ in the Vandermonde matrix."], [66, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [66, 3, 2, "p-element", "element", "An element $a$ of $mathrm{GF}(q)$."], [66, 3, 2, "p-rows", "rows", "The number of rows $m$ in the Vandermonde matrix."]], "galois.FieldArray.Vector": [[67, 3, 2, "p-array", "array", "An array over $mathrm{GF}(p)$ with last dimension $m$. An array with shape (n1, n2, m) has output shape (n1, n2). By convention, the vectors are ordered from degree $m-1$ to degree 0."], [67, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.FieldArray.Zeros": [[68, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [68, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.__init__": [[69, 3, 2, "p-copy", "copy", "The copy keyword argument from numpy.array(). The default is True."], [69, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [69, 3, 2, "p-ndmin", "ndmin", "The ndmin keyword argument from numpy.array(). The default is 0."], [69, 3, 2, "p-order", "order", "The order keyword argument from numpy.array(). The default is \"K\"."], [69, 3, 2, "p-x", "x", "A finite field scalar or array."]], "galois.FieldArray.arithmetic_table": [[73, 3, 2, "p-operation", "operation", "The arithmetic operation."], [73, 3, 2, "p-x", "x", "Optionally specify the $x$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$."], [73, 3, 2, "p-y", "y", "Optionally specify the $y$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$ for addition, subtraction, and multiplication and ${1, dots, p^m - 1}$ for division."]], "galois.FieldArray.compile": [[77, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.FieldArray.log": [[91, 3, 2, "p-base", "base", "A primitive element or elements $beta$ of the finite field that is the base of the logarithm. The default is None which uses primitive_element."]], "galois.FieldArray.primitive_root_of_unity": [[103, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.primitive_roots_of_unity": [[104, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.repr": [[106, 3, 2, "p-element_repr", "element_repr", "The field element representation to be set."]], "galois.FieldArray.repr_table": [[107, 3, 2, "p-element", "element", "An element to use as the exponent base in the power representation. The default is None which corresponds to primitive_element."], [107, 3, 2, "p-sort", "sort", "The sorting method for the table. The default is \"power\". Sorting by \"power\" will order the rows of the table by ascending powers of element. Sorting by any of the others will order the rows in lexicographical polynomial/vector order, which is equivalent to ascending order of the integer representation."]], "galois.FieldArray.row_reduce": [[108, 3, 2, "p-eye", "eye", "The location of the identity matrix $mathbf{I}$, either on the left or the right."], [108, 3, 2, "p-ncols", "ncols", "The number of columns to perform Gaussian elimination over. The default is None which represents the number of columns of the matrix."]], "galois.FieldArray.vector": [[114, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.GF": [[115, 3, 2, "p-characteristic", "characteristic", "The characteristic $p$ of the field $mathrm{GF}(p^m)$. The characteristic must be prime."], [115, 3, 2, "p-compile", "compile", "The ufunc calculation mode. This can be modified after class construction with the compile() method. See /basic-usage/compilation-modes for a further discussion."], [115, 3, 2, "p-degree", "degree", "The degree $m$ of the field $mathrm{GF}(p^m)$. The degree must be a positive integer."], [115, 3, 2, "p-irreducible_poly", "irreducible_poly", "Optionally specify an irreducible polynomial of degree $m$ over $mathrm{GF}(p)$ that defines the finite field arithmetic. The default is None which uses the Conway polynomial $C_{p,m}$, see conway_poly()."], [115, 3, 2, "p-order", "order", "The order $p^m$ of the field $mathrm{GF}(p^m)$. The order must be a prime power."], [115, 3, 2, "p-primitive_element", "primitive_element", "Optionally specify a primitive element of the field. This value is used when building the exponential and logarithm lookup tables and as the base of numpy.log. A primitive element is a generator of the multiplicative group of the field."], [115, 3, 2, "p-repr", "repr", "The field element representation. This can be modified after class construction with the repr() method. See /basic-usage/element-representation for a further discussion."], [115, 3, 2, "p-verify", "verify", "Indicates whether to verify that the user-provided irreducible polynomial is in fact irreducible and that the user-provided primitive element is in fact a generator of the multiplicative group. The default is True."]], "galois.GLFSR": [[118, 2, 1, "", "Taps", "Constructs a Galois LFSR from its taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."], [119, 2, 1, "", "__init__", "Constructs a Galois LFSR from its feedback polynomial $f(x)$."], [120, 2, 1, "", "__repr__", "A terse representation of the Galois LFSR."], [121, 2, 1, "", "__str__", "A formatted string of relevant properties of the Galois LFSR."], [122, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [123, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [124, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [125, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [126, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [127, 2, 1, "", "reset", "Resets the Galois LFSR state to the specified state."], [128, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [129, 2, 1, "", "step", "Produces the next steps output symbols."], [130, 4, 1, "", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$. The taps of the shift register define the linear recurrence relation."], [131, 2, 1, "", "to_fibonacci_lfsr", "Converts the Galois LFSR to a Fibonacci LFSR that produces the same output."]], "galois.GLFSR.Taps": [[118, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [118, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."]], "galois.GLFSR.__init__": [[119, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [119, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.GLFSR.reset": [[127, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.GLFSR.step": [[129, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Galois LFSR will step backwards."]], "galois.Poly": [[133, 2, 1, "", "Degrees", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its non-zero degrees."], [134, 2, 1, "", "Identity", "Constructs the polynomial $f(x) = x$ over $mathrm{GF}(p^m)$."], [135, 2, 1, "", "Int", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its integer representation."], [136, 2, 1, "", "One", "Constructs the polynomial $f(x) = 1$ over $mathrm{GF}(p^m)$."], [137, 2, 1, "", "Random", "Constructs a random polynomial over $mathrm{GF}(p^m)$ with degree $d$."], [138, 2, 1, "", "Roots", "Constructs a monic polynomial over $mathrm{GF}(p^m)$ from its roots."], [139, 2, 1, "", "Str", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its string representation."], [140, 2, 1, "", "Zero", "Constructs the polynomial $f(x) = 0$ over $mathrm{GF}(p^m)$."], [141, 2, 1, "", "__call__", "Evaluates the polynomial $f(x)$ at $x_0$ or the polynomial composition $f(g(x))$."], [142, 2, 1, "", "__eq__", "Determines if two polynomials are equal."], [143, 2, 1, "", "__init__", "Creates a polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [144, 2, 1, "", "__int__", "The integer representation of the polynomial."], [145, 2, 1, "", "__len__", "Returns the length of the coefficient array, which is equivalent to Poly.degree + 1."], [146, 2, 1, "", "__repr__", "A representation of the polynomial and the finite field it's over."], [147, 2, 1, "", "__str__", "The string representation of the polynomial, without specifying the finite field it's over."], [148, 2, 1, "", "coefficients", "Returns the polynomial coefficients in the order and size specified."], [149, 4, 1, "", "coeffs", "The coefficients of the polynomial in degree-descending order."], [150, 4, 1, "", "degree", "The degree of the polynomial. The degree of a polynomial is the highest degree with a non-zero coefficient."], [151, 4, 1, "", "degrees", "An array of the polynomial degrees in descending order."], [152, 2, 1, "", "derivative", "Computes the $k$-th formal derivative $frac{d^k}{dx^k} f(x)$ of the polynomial $f(x)$."], [153, 2, 1, "", "distinct_degree_factors", "Factors the monic, square-free polynomial $f(x)$ into a product of polynomials whose irreducible factors all have the same degree."], [154, 2, 1, "", "equal_degree_factors", "Factors the monic, square-free polynomial $f(x)$ of degree $rd$ into a product of $r$ irreducible factors with degree $d$."], [155, 2, 1, "", "factors", "Computes the irreducible factors of the non-constant, monic polynomial $f(x)$."], [156, 4, 1, "", "field", "The Array subclass for the finite field the coefficients are over."], [157, 2, 1, "", "is_conway", "Checks whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is the Conway polynomial $C_{p,m}(x)$."], [158, 2, 1, "", "is_conway_consistent", "Determines whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is consistent with smaller Conway polynomials $C_{p,n}(x)$ for all $n|m$."], [159, 2, 1, "", "is_irreducible", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(p^m)$ is irreducible."], [160, 4, 1, "", "is_monic", "Returns whether the polynomial is monic, meaning its highest-degree coefficient is one."], [161, 2, 1, "", "is_primitive", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is primitive."], [162, 2, 1, "", "is_square_free", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is square-free."], [163, 4, 1, "", "nonzero_coeffs", "The non-zero coefficients of the polynomial in degree-descending order."], [164, 4, 1, "", "nonzero_degrees", "An array of the polynomial degrees that have non-zero coefficients in descending order."], [165, 2, 1, "", "reverse", "Returns the $d$-th reversal $x^d f(frac{1}{x})$ of the polynomial $f(x)$ with degree $d$."], [166, 2, 1, "", "roots", "Calculates the roots $r$ of the polynomial $f(x)$, such that $f(r) = 0$."], [167, 2, 1, "", "square_free_factors", "Factors the monic polynomial $f(x)$ into a product of square-free polynomials."]], "galois.Poly.Degrees": [[133, 3, 2, "p-coeffs", "coeffs", "The corresponding non-zero polynomial coefficients. The default is None which corresponds to all ones."], [133, 3, 2, "p-degrees", "degrees", "The polynomial degrees with non-zero coefficients."], [133, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."]], "galois.Poly.Identity": [[134, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Int": [[135, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [135, 3, 2, "p-integer", "integer", "The integer representation of the polynomial $f(x)$."]], "galois.Poly.One": [[136, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Random": [[137, 3, 2, "p-degree", "degree", "The degree of the polynomial."], [137, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [137, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."]], "galois.Poly.Roots": [[138, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [138, 3, 2, "p-multiplicities", "multiplicities", "The corresponding root multiplicities. The default is None which corresponds to all ones."], [138, 3, 2, "p-roots", "roots", "The roots of the desired polynomial."]], "galois.Poly.Str": [[139, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [139, 3, 2, "p-string", "string", "The string representation of the polynomial $f(x)$."]], "galois.Poly.Zero": [[140, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.__call__": [[141, 3, 2, "p-at", "at", "A finite field scalar or array $x_0$ to evaluate the polynomial at or the polynomial $g(x)$ to evaluate the polynomial composition $f(g(x))$."], [141, 3, 2, "p-elementwise", "elementwise", "Indicates whether to evaluate $x_0$ element-wise. The default is True. If False (only valid for square matrices), the polynomial indeterminate $x$ is exponentiated using matrix powers (repeated matrix multiplication)."], [141, 3, 2, "p-field", "field", "The Galois field to evaluate the polynomial over. The default is None which represents the polynomial's current field, i.e. field."]], "galois.Poly.__eq__": [[142, 3, 2, "p-other", "other", "The polynomial to compare against."]], "galois.Poly.__init__": [[143, 3, 2, "p-coeffs", "coeffs", "The polynomial coefficients ${a_d, a_{d-1}, dots, a_1, a_0}$."], [143, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [143, 3, 2, "p-order", "order", "The interpretation of the coefficient degrees."]], "galois.Poly.coefficients": [[148, 3, 2, "p-order", "order", "The order of the coefficient degrees, either descending (default) or ascending."], [148, 3, 2, "p-size", "size", "The fixed size of the coefficient array. Zeros will be added for higher-order terms. This value must be at least degree + 1 or a ValueError will be raised. The default is None which corresponds to degree + 1."]], "galois.Poly.derivative": [[152, 3, 2, "p-k", "k", "The number of derivatives to compute. 1 corresponds to $p'(x)$, 2 corresponds to $p''(x)$, etc. The default is 1."]], "galois.Poly.equal_degree_factors": [[154, 3, 2, "p-degree", "degree", "The degree $d$ of each irreducible factor of $f(x)$."]], "galois.Poly.is_conway": [[157, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.is_conway_consistent": [[158, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.roots": [[166, 3, 2, "p-multiplicity", "multiplicity", "Optionally return the multiplicity of each root. The default is False which only returns the unique roots."]], "galois.ReedSolomon": [[169, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [170, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [171, 2, 1, "", "__init__", "Constructs a general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [172, 2, 1, "", "__repr__", "A terse representation of the Reed-Solomon code."], [173, 2, 1, "", "__str__", "A formatted string with relevant properties of the Reed-Solomon code."], [174, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$."], [175, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [176, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [177, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [178, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [179, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [180, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [181, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [182, 4, 1, "", "is_narrow_sense", "Indicates if the Reed-Solomon code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [183, 4, 1, "", "is_primitive", "Indicates if the Reed-Solomon code is primitive, meaning $n = q - 1$."], [184, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [185, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [186, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [187, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [188, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [189, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.ReedSolomon.__init__": [[171, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [171, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the Reed-Solomon code is narrow-sense."], [171, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q)$. Reed-Solomon codes achieve the Singleton bound, so $d = n - k + 1$."], [171, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2^m)$ where $2^{m - 1} le n < 2^m$. The default field will use matlab_primitive_poly(2, m) for the irreducible polynomial."], [171, 3, 2, "p-k", "k", "The message size $k$."], [171, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q - 1$, the Reed-Solomon code is primitive."], [171, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.ReedSolomon.decode": [[177, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [177, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [177, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.ReedSolomon.detect": [[178, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.ReedSolomon.encode": [[179, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [179, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.are_coprime": [[190, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.berlekamp_massey": [[191, 3, 2, "p-output", "output", "The output object type."], [191, 3, 2, "p-sequence", "sequence", "A linear recurrent sequence $y$ in $mathrm{GF}(p^m)$."]], "galois.carmichael_lambda": [[192, 3, 2, "p-n", "n", "A positive integer."]], "galois.conway_poly": [[193, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [193, 3, 2, "p-degree", "degree", "The degree $m$ of the Conway polynomial."], [193, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.crt": [[194, 3, 2, "p-moduli", "moduli", "The integer or polynomial moduli $m_i$."], [194, 3, 2, "p-remainders", "remainders", "The integer or polynomial remainders $a_i$."]], "galois.divisor_sigma": [[195, 3, 2, "p-k", "k", "The degree of the positive divisors. The default is 1 which corresponds to $sigma_1(n)$ which is the sum of positive divisors."], [195, 3, 2, "p-n", "n", "An integer."]], "galois.divisors": [[196, 3, 2, "p-n", "n", "An integer."]], "galois.egcd": [[197, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [197, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.euler_phi": [[198, 3, 2, "p-n", "n", "A positive integer."]], "galois.factors": [[199, 3, 2, "p-value", "value", "A positive integer $n$ or a non-constant, monic polynomial $f(x)$."]], "galois.fermat_primality_test": [[200, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is None which selects a random $a$."], [200, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [200, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose a new $a$. The default is 1."]], "galois.gcd": [[201, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [201, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.ilog": [[203, 3, 2, "p-b", "b", "The logarithm base $b$, must be at least 2."], [203, 3, 2, "p-n", "n", "A positive integer."]], "galois.intt": [[204, 3, 2, "p-X", "X", "The input sequence of integers $X$."], [204, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(X)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [204, 3, 2, "p-scaled", "scaled", "Indicates to scale the INTT output by $N$. The default is True. If True, $x = mathrm{INTT}(mathrm{NTT}(x))$. If False, $Nx = mathrm{INTT}(mathrm{NTT}(x))$."], [204, 3, 2, "p-size", "size", "The size $N$ of the INTT transform, must be at least the length of $X$. The default is None which corresponds to len(X). If size is larger than the length of $X$, $X$ is zero-padded."]], "galois.iroot": [[205, 3, 2, "p-k", "k", "The positive root $k$."], [205, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.irreducible_poly": [[206, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [206, 3, 2, "p-method", "method", "The search method for finding the irreducible polynomial."], [206, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [206, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.irreducible_polys": [[207, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [207, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [207, 3, 2, "p-reverse", "reverse", "Indicates to return the irreducible polynomials from lexicographically last to first. The default is False."], [207, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.is_composite": [[208, 3, 2, "p-n", "n", "An integer."]], "galois.is_cyclic": [[209, 3, 2, "p-n", "n", "A positive integer."]], "galois.is_perfect_power": [[210, 3, 2, "p-n", "n", "An integer."]], "galois.is_powersmooth": [[211, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [211, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime": [[212, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime_power": [[213, 3, 2, "p-n", "n", "An integer."]], "galois.is_primitive_element": [[214, 3, 2, "p-element", "element", "An element $g$ of $mathrm{GF}(q^m)$ is a polynomial over $mathrm{GF}(q)$ with degree less than $m$."], [214, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.is_primitive_root": [[215, 3, 2, "p-g", "g", "A positive integer."], [215, 3, 2, "p-n", "n", "positive integer."]], "galois.is_smooth": [[216, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [216, 3, 2, "p-n", "n", "An integer."]], "galois.is_square_free": [[217, 3, 2, "p-value", "value", "An integer $n$ or polynomial $f(x)$."]], "galois.isqrt": [[218, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.jacobi_symbol": [[219, 3, 2, "p-a", "a", "An integer."], [219, 3, 2, "p-n", "n", "An odd integer $n ge 3$."]], "galois.kronecker_symbol": [[220, 3, 2, "p-a", "a", "An integer."], [220, 3, 2, "p-n", "n", "An integer."]], "galois.kth_prime": [[221, 3, 2, "p-k", "k", "The prime index (1-indexed)."]], "galois.lagrange_poly": [[222, 3, 2, "p-x", "x", "An array of $x_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must have no duplicate entries."], [222, 3, 2, "p-y", "y", "An array of $y_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must be the same size as $x$."]], "galois.lcm": [[223, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.legendre_symbol": [[224, 3, 2, "p-a", "a", "An integer."], [224, 3, 2, "p-p", "p", "An odd prime $p ge 3$."]], "galois.matlab_primitive_poly": [[225, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [225, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."]], "galois.mersenne_exponents": [[226, 3, 2, "p-n", "n", "The max exponent of 2. The default is None which returns all known Mersenne exponents."]], "galois.mersenne_primes": [[227, 3, 2, "p-n", "n", "The max power of 2. The default is None which returns all known Mersenne exponents."]], "galois.miller_rabin_primality_test": [[228, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is 2."], [228, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [228, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose consecutive primes for $a$. The default is 1."]], "galois.next_prime": [[229, 3, 2, "p-n", "n", "An integer."]], "galois.ntt": [[230, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(x)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [230, 3, 2, "p-size", "size", "The size $N$ of the NTT transform, must be at least the length of $x$. The default is None which corresponds to len(x). If size is larger than the length of $x$, $x$ is zero-padded."], [230, 3, 2, "p-x", "x", "The input sequence of integers $x$."]], "galois.perfect_power": [[231, 3, 2, "p-n", "n", "An integer."]], "galois.pollard_p1": [[232, 3, 2, "p-B", "B", "The smoothness bound $B > 2$."], [232, 3, 2, "p-B2", "B2", "The smoothness bound $B_2$ for the optional second step of the algorithm. The default is None which will not perform the second step."], [232, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.pollard_rho": [[233, 3, 2, "p-c", "c", "The constant offset in the function $f(x) = x^2 + ctextrm{mod}n$. The default is 1. A requirement of the algorithm is that $c notin {0, -2}$."], [233, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.prev_prime": [[234, 3, 2, "p-n", "n", "An integer $n ge 2$."]], "galois.primes": [[235, 3, 2, "p-n", "n", "An integer."]], "galois.primitive_element": [[236, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."], [236, 3, 2, "p-method", "method", "The search method for finding the primitive element."]], "galois.primitive_elements": [[237, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.primitive_poly": [[238, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [238, 3, 2, "p-method", "method", "The search method for finding the primitive polynomial."], [238, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [238, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_polys": [[239, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [239, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [239, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive polynomials from lexicographically last to first. The default is False."], [239, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_root": [[240, 3, 2, "p-method", "method", "The search method for finding the primitive root."], [240, 3, 2, "p-n", "n", "A positive integer."], [240, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root."], [240, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.primitive_roots": [[241, 3, 2, "p-n", "n", "A positive integer."], [241, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive roots from largest to smallest. The default is False."], [241, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root. The default is 1."], [241, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.prod": [[243, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.random_prime": [[244, 3, 2, "p-bits", "bits", "The number of bits in the prime $p$."], [244, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed."]], "galois.set_printoptions": [[245, 3, 2, "p-coeffs", "coeffs", "The order in which to print the coefficients, either in descending degrees (default) or ascending degrees."]], "galois.totatives": [[246, 3, 2, "p-n", "n", "A positive integer."]], "galois.trial_division": [[247, 3, 2, "p-B", "B", "The max divisor in the trial division. The default is None which corresponds to $B = sqrt{n}$. If $B > sqrt{n}$, the algorithm will only search up to $sqrt{n}$, since a prime factor of $n$ cannot be larger than $sqrt{n}$."], [247, 3, 2, "p-n", "n", "A positive integer."]], "galois.typing": [[248, 6, 1, "", "ArrayLike", "A Union representing objects that can be coerced into a Galois field array."], [249, 6, 1, "", "DTypeLike", "A Union representing objects that can be coerced into a NumPy data type."], [250, 6, 1, "", "ElementLike", "A Union representing objects that can be coerced into a Galois field element."], [251, 6, 1, "", "IterableLike", "A Union representing iterable objects that can be coerced into a Galois field array."], [252, 6, 1, "", "PolyLike", "A Union representing objects that can be coerced into a polynomial."], [253, 6, 1, "", "ShapeLike", "A Union representing objects that can be coerced into a NumPy shape tuple."]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:parameter", "4": "py:property", "5": "py:function", "6": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "parameter", "Python parameter"], "4": ["py", "property", "Python property"], "5": ["py", "function", "Python function"], "6": ["py", "data", "Python data"]}, "titleterms": {"arrai": [0, 254, 255, 256, 266], "galoi": [0, 260, 277], "field": [0, 255, 269, 270, 276, 277], "primit": [0, 276, 277], "element": [0, 61, 116, 258, 259, 260, 266, 276, 277], "polynomi": [0, 22, 45, 117, 168, 256, 258, 259, 260, 276], "see": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "also": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "irreduc": [0, 260, 276], "interpol": 0, "forward": 0, "error": 0, "correct": 0, "linear": [0, 61, 116, 254, 269, 270], "sequenc": 0, "transform": 0, "number": 0, "theori": 0, "divis": [0, 254, 260, 276, 277], "congruenc": 0, "root": [0, 254, 277], "integ": [0, 258], "arithmet": [0, 61, 116, 254, 260, 266, 276, 277], "factor": [0, 132, 260], "prime": [0, 270, 277], "composit": [0, 260], "specif": 0, "algorithm": 0, "gener": [0, 264], "primal": 0, "test": [0, 264], "configur": [0, 263, 264], "abstract": [1, 61], "constructor": [1, 22, 45, 61, 116, 117, 132, 168, 255, 259], "method": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 254, 255, 259], "properti": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 255, 256, 259], "slower": [18, 91, 106, 157, 158, 193, 258], "perform": [18, 91, 106, 157, 158, 193, 206, 258, 266, 269, 270], "shorten": [22, 31, 32, 33, 168, 177, 178, 179], "code": [22, 31, 32, 33, 168, 177, 178, 179, 263, 264], "string": [22, 45, 61, 116, 117, 132, 168], "represent": [22, 45, 61, 116, 117, 132, 168, 258, 259, 266], "attribut": [22, 61, 116, 132, 168], "matric": [22, 168], "import": [25, 171, 269], "note": 31, "state": [45, 117], "convers": [61, 116], "compil": [61, 116, 257], "algebra": [61, 116, 254, 269, 270], "info": [116, 218, 276, 277], "special": [132, 259, 260], "coeffici": [132, 256, 259], "tip": [146, 147, 258], "why": [157, 158, 159, 161, 162], "i": [157, 158, 159, 161, 162, 256], "thi": [157, 158, 159, 161, 162], "faster": 206, "warn": 225, "standard": [254, 260], "addit": [254, 260, 276, 277], "x": [254, 260], "y": 254, "np": 254, "add": 254, "invers": [254, 260, 276, 277], "neg": 254, "subtract": [254, 260, 276, 277], "multipl": [254, 260, 276, 277], "multipli": 254, "scalar": [254, 256, 260], "4": [254, 274], "1": [254, 272, 274], "reciproc": 254, "divid": 254, "remaind": [254, 260], "divmod": [254, 260], "exponenti": [254, 260], "3": [254, 260, 274], "power": [254, 258], "squar": [254, 260], "sqrt": 254, "logarithm": 254, "log": 254, "ufunc": [254, 257], "reduc": 254, "accumul": 254, "reduceat": 254, "outer": 254, "advanc": 254, "convolut": 254, "convolv": 254, "fft": 254, "ifft": 254, "dot": 254, "product": 254, "b": 254, "vector": [254, 258, 264], "vdot": 254, "inner": 254, "matrix": [254, 260], "A": [254, 276, 277], "matmul": 254, "linalg": 254, "matrix_pow": 254, "determin": 254, "det": 254, "rank": 254, "matrix_rank": 254, "trace": 254, "solv": 254, "system": 254, "equat": 254, "inv": 254, "class": [255, 256], "subclass": [255, 266], "fieldarrai": [255, 266], "speed": 255, "up": 255, "creation": [255, 256], "larg": 255, "finit": 255, "singleton": 255, "instanc": [255, 266], "creat": [256, 259, 266, 268], "new": 256, "like": 256, "object": 256, "numpi": [256, 258], "view": 256, "an": 256, "exist": 256, "classmethod": 256, "constant": 256, "There": 256, "empti": 256, "equival": 256, "order": [256, 259], "random": 256, "data": 256, "type": 256, "valid": 256, "default": 256, "chang": [256, 266, 271, 272, 273, 274], "function": 256, "mode": 257, "lookup": [257, 269, 270], "tabl": [257, 269, 270], "explicit": [257, 269, 270], "calcul": [257, 269, 270], "python": 257, "recompil": 257, "set": 258, "print": 258, "option": 258, "comparison": 258, "us": 259, "set_printopt": 259, "displai": 259, "degre": 259, "ascend": 259, "altern": 259, "f": 260, "g": 260, "modular": 260, "pow": 260, "123456789": 260, "evalu": 260, "wise": 260, "elementwis": 260, "fals": 260, "greatest": 260, "common": 260, "denomin": 260, "gcd": 260, "extend": 260, "egcd": 260, "document": [261, 271], "instal": [261, 262, 263, 264, 266, 268], "build": 261, "doc": 261, "serv": 261, "from": [262, 263, 264], "pypi": 262, "github": 262, "edit": 262, "local": 262, "folder": 262, "dev": 262, "depend": [262, 268], "linter": 263, "run": [263, 264], "command": [263, 264], "line": [263, 264], "v": [263, 264], "unit": 264, "sage": 264, "sympi": 264, "index": 265, "get": 266, "start": 266, "packag": 266, "two": 266, "disclaim": 267, "featur": 267, "roadmap": 267, "acknowledg": 267, "citat": 267, "benchmark": 268, "compar": 268, "previou": 268, "binari": 269, "extens": [269, 276], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274], "0": [271, 272, 273, 274], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274], "15": 271, "16": 271, "17": 271, "18": 271, "19": 271, "20": 271, "21": 271, "22": 271, "23": 271, "24": 271, "25": 271, "26": 271, "27": 271, "28": 271, "29": 271, "30": 271, "31": 271, "32": 271, "33": 271, "2": [272, 273, 274], "5": 274, "6": 274, "version": 275, "alpha": 275, "releas": 275, "beta": 275, "intro": [276, 277], "other": [276, 277], "non": [276, 277], "\u00e9varist": 277, "mod": 277, "p": 277}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx_last_updated_by_git": 1, "sphinx": 57}, "alltitles": {"Arrays": [[0, "arrays"]], "Galois fields": [[0, "galois-fields"]], "Primitive elements": [[0, "primitive-elements"], [276, "primitive-elements"], [277, "primitive-elements"]], "Polynomials": [[0, "polynomials"], [22, "polynomials"], [45, "polynomials"], [117, "polynomials"], [168, "polynomials"], [259, "polynomials"]], "See also": [[0, null], [25, null], [45, null], [47, null], [89, null], [96, null], [110, null], [117, null], [119, null], [157, null], [158, null], [159, null], [161, null], [171, null], [190, null], [192, null], [193, null], [195, null], [196, null], [197, null], [198, null], [200, null], [201, null], [202, null], [203, null], [204, null], [205, null], [206, null], [207, null], [208, null], [209, null], [210, null], [211, null], [212, null], [213, null], [214, null], [215, null], [216, null], [217, null], [218, null], [219, null], [220, null], [221, null], [223, null], [224, null], [225, null], [226, null], [227, null], [228, null], [229, null], [230, null], [231, null], [232, null], [233, null], [234, null], [235, null], [236, null], [237, null], [238, null], [239, null], [240, null], [241, null], [242, null], [243, null], [244, null], [245, null], [246, null], [247, null]], "Irreducible polynomials": [[0, "irreducible-polynomials"]], "Primitive polynomials": [[0, "primitive-polynomials"]], "Interpolating polynomials": [[0, "interpolating-polynomials"]], "Forward error correction": [[0, "forward-error-correction"]], "Linear sequences": [[0, "linear-sequences"]], "Transforms": [[0, "transforms"]], "Number theory": [[0, "number-theory"]], "Divisibility": [[0, "divisibility"]], "Congruences": [[0, "congruences"]], "Primitive roots": [[0, "primitive-roots"]], "Integer arithmetic": [[0, "integer-arithmetic"]], "Factorization": [[0, "factorization"]], "Prime factorization": [[0, "prime-factorization"]], "Composite factorization": [[0, "composite-factorization"]], "Specific factorization algorithms": [[0, "specific-factorization-algorithms"]], "Primes": [[0, "primes"]], "Prime number generation": [[0, "prime-number-generation"]], "Primality tests": [[0, "primality-tests"]], "Specific primality tests": [[0, "specific-primality-tests"]], "Configuration": [[0, "configuration"], [263, "configuration"], [264, "configuration"]], "Abstract": [[1, null], [61, null]], "Constructors": [[1, "constructors"], [22, "constructors"], [45, "constructors"], [61, "constructors"], [116, "constructors"], [117, "constructors"], [132, "constructors"], [168, "constructors"], [255, "constructors"]], "Methods": [[1, "methods"], [22, "methods"], [45, "methods"], [61, "methods"], [116, "methods"], [117, "methods"], [132, "methods"], [168, "methods"], [255, "methods"], [259, "methods"]], "Properties": [[1, "properties"], [22, "properties"], [45, "properties"], [61, "properties"], [116, "properties"], [117, "properties"], [132, "properties"], [168, "properties"], [259, "properties"]], "Slower performance": [[18, null], [91, null], [106, null], [157, null], [158, null], [193, null], [258, null]], "Shortened codes": [[22, null], [31, null], [32, null], [33, null], [168, null], [177, null], [178, null], [179, null]], "String representation": [[22, "string-representation"], [45, "string-representation"], [61, "string-representation"], [116, "string-representation"], [117, "string-representation"], [132, "string-representation"], [168, "string-representation"]], "Attributes": [[22, "attributes"], [61, "attributes"], [116, "attributes"], [132, "attributes"], [168, "attributes"]], "Matrices": [[22, "matrices"], [168, "matrices"]], "Important": [[25, null], [171, null], [269, null]], "Note": [[31, null]], "State": [[45, "state"], [117, "state"]], "Conversions": [[61, "conversions"], [116, "conversions"]], "Elements": [[61, "elements"], [116, "elements"], [276, "elements"], [277, "elements"]], "Element representation": [[61, "element-representation"], [116, "element-representation"], [259, "element-representation"]], "Arithmetic compilation": [[61, "arithmetic-compilation"], [116, "arithmetic-compilation"]], "Linear algebra": [[61, "linear-algebra"], [116, "linear-algebra"], [254, "linear-algebra"]], "Info": [[116, null], [218, null], [276, null], [277, null]], "Special methods": [[132, "special-methods"]], "Factorization methods": [[132, "factorization-methods"]], "Coefficients": [[132, "coefficients"]], "Tip": [[146, null], [147, null], [258, null]], "Why is this a method and not a property?": [[157, null], [158, null], [159, null], [161, null], [162, null]], "Faster performance": [[206, null]], "Warning": [[225, null]], "Array Arithmetic": [[254, "array-arithmetic"]], "Standard arithmetic": [[254, "standard-arithmetic"], [260, "standard-arithmetic"]], "Addition: x + y == np.add(x, y)": [[254, null]], "Additive inverse: -x == np.negative(x)": [[254, null]], "Subtraction: x - y == np.subtract(x, y)": [[254, null]], "Multiplication: x * y == np.multiply(x, y)": [[254, null]], "Scalar multiplication: x * 4 == np.multiply(x, 4)": [[254, null]], "Multiplicative inverse: y ** -1 == np.reciprocal(y)": [[254, null]], "Division: x / y == x // y == np.divide(x, y)": [[254, null]], "Remainder: x % y == np.remainder(x, y)": [[254, null]], "Divmod: divmod(x, y) == np.divmod(x, y)": [[254, null]], "Exponentiation: x ** 3 == np.power(x, 3)": [[254, null]], "Square root: np.sqrt(x)": [[254, null]], "Logarithm: np.log(x) or x.log()": [[254, null]], "Ufunc methods": [[254, "ufunc-methods"]], "reduce()": [[254, null]], "accumulate()": [[254, null]], "reduceat()": [[254, null]], "outer()": [[254, null]], "at()": [[254, null]], "Advanced arithmetic": [[254, "advanced-arithmetic"]], "Convolution: np.convolve(x, y)": [[254, null]], "FFT: np.fft.fft(x)": [[254, null]], "Inverse FFT: np.fft.ifft(X)": [[254, null]], "Dot product: np.dot(a, b)": [[254, null]], "Vector dot product: np.vdot(a, b)": [[254, null]], "Inner product: np.inner(a, b)": [[254, null]], "Outer product: np.outer(a, b)": [[254, null]], "Matrix multiplication: A @ B == np.matmul(A, B)": [[254, null]], "Matrix exponentiation: np.linalg.matrix_power(A, 3)": [[254, null]], "Matrix determinant: np.linalg.det(A)": [[254, null]], "Matrix rank: np.linalg.matrix_rank(A)": [[254, null]], "Matrix trace: np.trace(A)": [[254, null]], "Solve a system of equations: np.linalg.solve(A, b)": [[254, null]], "Matrix inverse: np.linalg.inv(A)": [[254, null]], "Array Classes": [[255, "array-classes"]], "Array subclasses": [[255, "array-subclasses"]], "FieldArray subclasses": [[255, "fieldarray-subclasses"]], "Speed up creation of large finite field classes": [[255, null]], "Class singletons": [[255, "class-singletons"]], "Methods and properties": [[255, "methods-and-properties"]], "FieldArray instances": [[255, "fieldarray-instances"]], "Array Creation": [[256, "array-creation"]], "Create a scalar": [[256, "create-a-scalar"]], "Create a new array": [[256, "create-a-new-array"]], "Array-like objects": [[256, "array-like-objects"]], "Polynomial coefficients": [[256, "polynomial-coefficients"]], "NumPy array": [[256, "numpy-array"]], "View an existing array": [[256, "view-an-existing-array"]], "Classmethods": [[256, "classmethods"]], "Constant arrays": [[256, "constant-arrays"]], "There is no numpy.empty() equivalent.": [[256, null]], "Ordered arrays": [[256, "ordered-arrays"]], "Random arrays": [[256, "random-arrays"]], "Class properties": [[256, "class-properties"]], "Data types": [[256, "data-types"]], "Valid data types": [[256, "valid-data-types"]], "Default data type": [[256, "default-data-type"]], "Changing data types": [[256, "changing-data-types"]], "NumPy functions": [[256, "numpy-functions"]], "Compilation Modes": [[257, "compilation-modes"]], "Lookup tables": [[257, "lookup-tables"]], "Explicit calculation": [[257, "explicit-calculation"]], "Python explicit calculation": [[257, "python-explicit-calculation"]], "Recompile the ufuncs": [[257, "recompile-the-ufuncs"]], "Element Representation": [[258, "element-representation"]], "Set the element representation": [[258, "set-the-element-representation"]], "Integer representation": [[258, "integer-representation"]], "Polynomial representation": [[258, "polynomial-representation"]], "Power representation": [[258, "power-representation"]], "Vector representation": [[258, "vector-representation"]], "NumPy print options": [[258, "numpy-print-options"]], "Representation comparisons": [[258, "representation-comparisons"]], "Create a polynomial": [[259, "create-a-polynomial"]], "Use set_printoptions() to display the polynomial coefficients in degree-ascending order.": [[259, null]], "Alternate constructors": [[259, "alternate-constructors"]], "Special polynomials": [[259, "special-polynomials"]], "Polynomial Arithmetic": [[260, "polynomial-arithmetic"]], "Addition: f + g": [[260, null]], "Additive inverse: -f": [[260, null]], "Subtraction: f - g": [[260, null]], "Multiplication: f * g": [[260, null]], "Scalar multiplication: f * 3": [[260, null]], "Division: f // g": [[260, null]], "Remainder: f % g": [[260, null]], "Divmod: divmod(f, g)": [[260, null]], "Exponentiation: f ** 3": [[260, null]], "Modular exponentiation: pow(f, 123456789, g)": [[260, null]], "Evaluation": [[260, "evaluation"]], "Evaluation (element-wise): f(x) or f(X)": [[260, null]], "Evaluation (square matrix): f(X, elementwise=False)": [[260, null]], "Composition: f(g)": [[260, null]], "Special arithmetic": [[260, "special-arithmetic"]], "Greatest common denominator: galois.gcd(f, g)": [[260, null]], "Extended greatest common denominator: galois.egcd(f, g)": [[260, null]], "Factor into irreducible polynomials: galois.factors(f) == f.factors()": [[260, null]], "Documentation": [[261, "documentation"], [271, "documentation"]], "Install": [[261, "install"], [263, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Installation": [[262, "installation"]], "Install from PyPI": [[262, "install-from-pypi"]], "Install from GitHub": [[262, "install-from-github"]], "Editable install from local folder": [[262, "editable-install-from-local-folder"]], "Install the dev dependencies": [[262, "install-the-dev-dependencies"]], "Linter": [[263, "linter"]], "Run from the command line": [[263, "run-from-the-command-line"], [264, "run-from-the-command-line"]], "Run from VS Code": [[263, "run-from-vs-code"], [264, "run-from-vs-code"]], "Unit Tests": [[264, "unit-tests"]], "Test vectors": [[264, "test-vectors"]], "Install Sage": [[264, "install-sage"]], "Install SymPy": [[264, "install-sympy"]], "Generate test vectors": [[264, "generate-test-vectors"]], "Index": [[265, "index"]], "Getting Started": [[266, "getting-started"]], "Install the package": [[266, "install-the-package"]], "Create a FieldArray subclass": [[266, "create-a-fieldarray-subclass"]], "Create two FieldArray instances": [[266, "create-two-fieldarray-instances"]], "Change the element representation": [[266, "change-the-element-representation"]], "Perform array arithmetic": [[266, "perform-array-arithmetic"]], "Disclaimer": [[267, null]], "Features": [[267, "features"]], "Roadmap": [[267, "roadmap"]], "Acknowledgements": [[267, "acknowledgements"]], "Citation": [[267, "citation"]], "Benchmarks": [[268, "benchmarks"]], "Install dependencies": [[268, "install-dependencies"]], "Create a benchmark": [[268, "create-a-benchmark"]], "Compare with a previous benchmark": [[268, "compare-with-a-previous-benchmark"]], "Binary Extension Fields": [[269, "binary-extension-fields"]], "Lookup table performance": [[269, "lookup-table-performance"], [270, "lookup-table-performance"]], "Explicit calculation performance": [[269, "explicit-calculation-performance"], [270, "explicit-calculation-performance"]], "Linear algebra performance": [[269, "linear-algebra-performance"], [270, "linear-algebra-performance"]], "Prime Fields": [[270, "prime-fields"]], "Runtime floor": [[270, "runtime-floor"]], "v0.0": [[271, "v0-0"]], "v0.0.14": [[271, "v0-0-14"]], "Breaking changes": [[271, "breaking-changes"], [271, "id1"], [271, "id6"], [271, "id9"], [271, "id12"], [271, "id15"], [271, "id20"], [271, "id25"], [271, "id28"], [271, "id31"], [271, "id34"], [271, "id39"], [271, "id44"], [271, "id47"], [271, "id50"], [273, "breaking-changes"], [274, "breaking-changes"]], "Changes": [[271, "changes"], [271, "id2"], [271, "id4"], [271, "id7"], [271, "id10"], [271, "id13"], [271, "id16"], [271, "id18"], [271, "id21"], [271, "id23"], [271, "id26"], [271, "id29"], [271, "id32"], [271, "id35"], [271, "id37"], [271, "id40"], [271, "id42"], [271, "id45"], [271, "id48"], [271, "id51"], [272, "changes"], [272, "id1"], [272, "id3"], [273, "changes"], [274, "changes"], [274, "id1"], [274, "id3"], [274, "id5"], [274, "id7"], [274, "id9"], [274, "id11"]], "Contributors": [[271, "contributors"], [271, "id3"], [271, "id5"], [271, "id8"], [271, "id11"], [271, "id14"], [271, "id17"], [271, "id19"], [271, "id22"], [271, "id24"], [271, "id27"], [271, "id30"], [271, "id33"], [271, "id36"], [271, "id38"], [271, "id41"], [271, "id43"], [271, "id46"], [271, "id49"], [271, "id52"], [272, "contributors"], [272, "id2"], [272, "id4"], [273, "contributors"], [274, "contributors"], [274, "id2"], [274, "id4"], [274, "id6"], [274, "id8"], [274, "id10"], [274, "id12"]], "v0.0.15": [[271, "v0-0-15"]], "v0.0.16": [[271, "v0-0-16"]], "v0.0.17": [[271, "v0-0-17"]], "v0.0.18": [[271, "v0-0-18"]], "v0.0.19": [[271, "v0-0-19"]], "v0.0.20": [[271, "v0-0-20"]], "v0.0.21": [[271, "v0-0-21"]], "v0.0.22": [[271, "v0-0-22"]], "v0.0.23": [[271, "v0-0-23"]], "v0.0.24": [[271, "v0-0-24"]], "v0.0.25": [[271, "v0-0-25"]], "v0.0.26": [[271, "v0-0-26"]], "v0.0.27": [[271, "v0-0-27"]], "v0.0.28": [[271, "v0-0-28"]], "v0.0.29": [[271, "v0-0-29"]], "v0.0.30": [[271, "v0-0-30"]], "v0.0.31": [[271, "v0-0-31"]], "v0.0.32": [[271, "v0-0-32"]], "v0.0.33": [[271, "v0-0-33"]], "v0.1": [[272, "v0-1"]], "v0.1.0": [[272, "v0-1-0"]], "v0.1.1": [[272, "v0-1-1"]], "v0.1.2": [[272, "v0-1-2"]], "v0.2": [[273, "v0-2"]], "v0.2.0": [[273, "v0-2-0"]], "v0.3": [[274, "v0-3"]], "v0.3.0": [[274, "v0-3-0"]], "v0.3.1": [[274, "v0-3-1"]], "v0.3.2": [[274, "v0-3-2"]], "v0.3.3": [[274, "v0-3-3"]], "v0.3.4": [[274, "v0-3-4"]], "v0.3.5": [[274, "v0-3-5"]], "v0.3.6": [[274, "v0-3-6"]], "Versioning": [[275, "versioning"]], "Alpha releases": [[275, "alpha-releases"]], "Beta releases": [[275, "beta-releases"]], "Intro to Extension Fields": [[276, "intro-to-extension-fields"]], "Extension field": [[276, "extension-field"]], "Irreducible polynomial": [[276, "irreducible-polynomial"]], "Arithmetic": [[276, "arithmetic"], [277, "arithmetic"]], "Addition": [[276, "addition"], [277, "addition"]], "Subtraction": [[276, "subtraction"], [277, "subtraction"]], "Multiplication": [[276, "multiplication"], [277, "multiplication"]], "Multiplicative inverse": [[276, "multiplicative-inverse"], [277, "multiplicative-inverse"]], "Division": [[276, "division"], [277, "division"]], "A primitive element": [[276, "a-primitive-element"], [277, "a-primitive-element"]], "Other primitive elements": [[276, "other-primitive-elements"], [277, "other-primitive-elements"]], "Non-primitive elements": [[276, "non-primitive-elements"], [277, "non-primitive-elements"]], "Intro to Prime Fields": [[277, "intro-to-prime-fields"]], "\u00c9variste Galois": [[277, null]], "Prime field": [[277, "prime-field"]], "Primitive roots mod p": [[277, "primitive-roots-mod-p"]]}, "indexentries": {"galois": [[0, "module-galois"]], "module": [[0, "module-galois"]]}, "docurls": ["api/", "api/galois.Array/", "api/galois.Array.Identity/", "api/galois.Array.Ones/", "api/galois.Array.Random/", "api/galois.Array.Range/", "api/galois.Array.Zeros/", "api/galois.Array.characteristic/", "api/galois.Array.compile/", "api/galois.Array.default_ufunc_mode/", "api/galois.Array.degree/", "api/galois.Array.dtypes/", "api/galois.Array.element_repr/", "api/galois.Array.elements/", "api/galois.Array.irreducible_poly/", "api/galois.Array.name/", "api/galois.Array.order/", "api/galois.Array.primitive_element/", "api/galois.Array.repr/", "api/galois.Array.ufunc_mode/", "api/galois.Array.ufunc_modes/", "api/galois.Array.units/", "api/galois.BCH/", "api/galois.BCH.G/", "api/galois.BCH.H/", "api/galois.BCH.__init__/", "api/galois.BCH.__repr__/", "api/galois.BCH.__str__/", "api/galois.BCH.alpha/", "api/galois.BCH.c/", "api/galois.BCH.d/", "api/galois.BCH.decode/", "api/galois.BCH.detect/", "api/galois.BCH.encode/", "api/galois.BCH.extension_field/", "api/galois.BCH.field/", "api/galois.BCH.generator_poly/", "api/galois.BCH.is_narrow_sense/", "api/galois.BCH.is_primitive/", "api/galois.BCH.is_systematic/", "api/galois.BCH.k/", "api/galois.BCH.n/", "api/galois.BCH.parity_check_poly/", "api/galois.BCH.roots/", "api/galois.BCH.t/", "api/galois.FLFSR/", "api/galois.FLFSR.Taps/", "api/galois.FLFSR.__init__/", "api/galois.FLFSR.__repr__/", "api/galois.FLFSR.__str__/", "api/galois.FLFSR.characteristic_poly/", "api/galois.FLFSR.feedback_poly/", "api/galois.FLFSR.field/", "api/galois.FLFSR.initial_state/", "api/galois.FLFSR.order/", "api/galois.FLFSR.reset/", "api/galois.FLFSR.state/", "api/galois.FLFSR.step/", "api/galois.FLFSR.taps/", "api/galois.FLFSR.to_galois_lfsr/", "api/galois.Field/", "api/galois.FieldArray/", "api/galois.FieldArray.Identity/", "api/galois.FieldArray.Ones/", "api/galois.FieldArray.Random/", "api/galois.FieldArray.Range/", "api/galois.FieldArray.Vandermonde/", "api/galois.FieldArray.Vector/", "api/galois.FieldArray.Zeros/", "api/galois.FieldArray.__init__/", "api/galois.FieldArray.__repr__/", "api/galois.FieldArray.__str__/", "api/galois.FieldArray.additive_order/", "api/galois.FieldArray.arithmetic_table/", "api/galois.FieldArray.characteristic/", "api/galois.FieldArray.characteristic_poly/", "api/galois.FieldArray.column_space/", "api/galois.FieldArray.compile/", "api/galois.FieldArray.default_ufunc_mode/", "api/galois.FieldArray.degree/", "api/galois.FieldArray.dtypes/", "api/galois.FieldArray.element_repr/", "api/galois.FieldArray.elements/", "api/galois.FieldArray.field_norm/", "api/galois.FieldArray.field_trace/", "api/galois.FieldArray.irreducible_poly/", "api/galois.FieldArray.is_extension_field/", "api/galois.FieldArray.is_prime_field/", "api/galois.FieldArray.is_primitive_poly/", "api/galois.FieldArray.is_square/", "api/galois.FieldArray.left_null_space/", "api/galois.FieldArray.log/", "api/galois.FieldArray.lu_decompose/", "api/galois.FieldArray.minimal_poly/", "api/galois.FieldArray.multiplicative_order/", "api/galois.FieldArray.name/", "api/galois.FieldArray.non_squares/", "api/galois.FieldArray.null_space/", "api/galois.FieldArray.order/", "api/galois.FieldArray.plu_decompose/", "api/galois.FieldArray.prime_subfield/", "api/galois.FieldArray.primitive_element/", "api/galois.FieldArray.primitive_elements/", "api/galois.FieldArray.primitive_root_of_unity/", "api/galois.FieldArray.primitive_roots_of_unity/", "api/galois.FieldArray.properties/", "api/galois.FieldArray.repr/", "api/galois.FieldArray.repr_table/", "api/galois.FieldArray.row_reduce/", "api/galois.FieldArray.row_space/", "api/galois.FieldArray.squares/", "api/galois.FieldArray.ufunc_mode/", "api/galois.FieldArray.ufunc_modes/", "api/galois.FieldArray.units/", "api/galois.FieldArray.vector/", "api/galois.GF/", "api/galois.GF2/", "api/galois.GLFSR/", "api/galois.GLFSR.Taps/", "api/galois.GLFSR.__init__/", "api/galois.GLFSR.__repr__/", "api/galois.GLFSR.__str__/", "api/galois.GLFSR.characteristic_poly/", "api/galois.GLFSR.feedback_poly/", "api/galois.GLFSR.field/", "api/galois.GLFSR.initial_state/", "api/galois.GLFSR.order/", "api/galois.GLFSR.reset/", "api/galois.GLFSR.state/", "api/galois.GLFSR.step/", "api/galois.GLFSR.taps/", "api/galois.GLFSR.to_fibonacci_lfsr/", "api/galois.Poly/", "api/galois.Poly.Degrees/", "api/galois.Poly.Identity/", "api/galois.Poly.Int/", "api/galois.Poly.One/", "api/galois.Poly.Random/", "api/galois.Poly.Roots/", "api/galois.Poly.Str/", "api/galois.Poly.Zero/", "api/galois.Poly.__call__/", "api/galois.Poly.__eq__/", "api/galois.Poly.__init__/", "api/galois.Poly.__int__/", "api/galois.Poly.__len__/", "api/galois.Poly.__repr__/", "api/galois.Poly.__str__/", "api/galois.Poly.coefficients/", "api/galois.Poly.coeffs/", "api/galois.Poly.degree/", "api/galois.Poly.degrees/", "api/galois.Poly.derivative/", "api/galois.Poly.distinct_degree_factors/", "api/galois.Poly.equal_degree_factors/", "api/galois.Poly.factors/", "api/galois.Poly.field/", "api/galois.Poly.is_conway/", "api/galois.Poly.is_conway_consistent/", "api/galois.Poly.is_irreducible/", "api/galois.Poly.is_monic/", "api/galois.Poly.is_primitive/", "api/galois.Poly.is_square_free/", "api/galois.Poly.nonzero_coeffs/", "api/galois.Poly.nonzero_degrees/", "api/galois.Poly.reverse/", "api/galois.Poly.roots/", "api/galois.Poly.square_free_factors/", "api/galois.ReedSolomon/", "api/galois.ReedSolomon.G/", "api/galois.ReedSolomon.H/", "api/galois.ReedSolomon.__init__/", "api/galois.ReedSolomon.__repr__/", "api/galois.ReedSolomon.__str__/", "api/galois.ReedSolomon.alpha/", "api/galois.ReedSolomon.c/", "api/galois.ReedSolomon.d/", "api/galois.ReedSolomon.decode/", "api/galois.ReedSolomon.detect/", "api/galois.ReedSolomon.encode/", "api/galois.ReedSolomon.field/", "api/galois.ReedSolomon.generator_poly/", "api/galois.ReedSolomon.is_narrow_sense/", "api/galois.ReedSolomon.is_primitive/", "api/galois.ReedSolomon.is_systematic/", "api/galois.ReedSolomon.k/", "api/galois.ReedSolomon.n/", "api/galois.ReedSolomon.parity_check_poly/", "api/galois.ReedSolomon.roots/", "api/galois.ReedSolomon.t/", "api/galois.are_coprime/", "api/galois.berlekamp_massey/", "api/galois.carmichael_lambda/", "api/galois.conway_poly/", "api/galois.crt/", "api/galois.divisor_sigma/", "api/galois.divisors/", "api/galois.egcd/", "api/galois.euler_phi/", "api/galois.factors/", "api/galois.fermat_primality_test/", "api/galois.gcd/", "api/galois.get_printoptions/", "api/galois.ilog/", "api/galois.intt/", "api/galois.iroot/", "api/galois.irreducible_poly/", "api/galois.irreducible_polys/", "api/galois.is_composite/", "api/galois.is_cyclic/", "api/galois.is_perfect_power/", "api/galois.is_powersmooth/", "api/galois.is_prime/", "api/galois.is_prime_power/", "api/galois.is_primitive_element/", "api/galois.is_primitive_root/", "api/galois.is_smooth/", "api/galois.is_square_free/", "api/galois.isqrt/", "api/galois.jacobi_symbol/", "api/galois.kronecker_symbol/", "api/galois.kth_prime/", "api/galois.lagrange_poly/", "api/galois.lcm/", "api/galois.legendre_symbol/", "api/galois.matlab_primitive_poly/", "api/galois.mersenne_exponents/", "api/galois.mersenne_primes/", "api/galois.miller_rabin_primality_test/", "api/galois.next_prime/", "api/galois.ntt/", "api/galois.perfect_power/", "api/galois.pollard_p1/", "api/galois.pollard_rho/", "api/galois.prev_prime/", "api/galois.primes/", "api/galois.primitive_element/", "api/galois.primitive_elements/", "api/galois.primitive_poly/", "api/galois.primitive_polys/", "api/galois.primitive_root/", "api/galois.primitive_roots/", "api/galois.printoptions/", "api/galois.prod/", "api/galois.random_prime/", "api/galois.set_printoptions/", "api/galois.totatives/", "api/galois.trial_division/", "api/galois.typing.ArrayLike/", "api/galois.typing.DTypeLike/", "api/galois.typing.ElementLike/", "api/galois.typing.IterableLike/", "api/galois.typing.PolyLike/", "api/galois.typing.ShapeLike/", "basic-usage/array-arithmetic/", "basic-usage/array-classes/", "basic-usage/array-creation/", "basic-usage/compilation-modes/", "basic-usage/element-representation/", "basic-usage/poly/", "basic-usage/poly-arithmetic/", "development/documentation/", "development/installation/", "development/linter/", "development/unit-tests/", "genindex/", "getting-started/", "", "performance/benchmarks/", "performance/binary-extension-fields/", "performance/prime-fields/", "release-notes/v0.0/", "release-notes/v0.1/", "release-notes/v0.2/", "release-notes/v0.3/", "release-notes/versioning/", "tutorials/intro-to-extension-fields/", "tutorials/intro-to-prime-fields/"]}) \ No newline at end of file