diff --git a/v0.3.x/.doctrees/api/galois.BCH.decode.doctree b/v0.3.x/.doctrees/api/galois.BCH.decode.doctree index 4d49a76d8..01517084a 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 f1d14e55b..ee7b6bfea 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 09120b82d..05c1f791b 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 bd5a5710d..2afdf1f62 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 aae516207..21d15085c 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 74fbf175a..e2f4cf581 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 5f9d4005b..00e1ea027 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 257e9b2ce..7deb90a7c 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 80d0bbae7..f67341985 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 abc47ee1d..12e05e977 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 8297a29e4..32c819ccf 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 eb3ff21dc..0ee193396 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 db10b9812..8a87d4d29 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 0b72cca6a..7c17c4adc 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 3699fcabf..f26d79eed 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 06d89b5c2..7ac6daefb 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 8c944a153..9022986ff 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 5c0e32a17..cc6a3ac9d 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 0900dfcaa..2a95c40f6 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 f1c38b7e3..a3200559a 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 a08cefad9..97ecbaec6 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 6072be00a..550fe8225 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 56f060594..13e39fef2 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 9c88e227d..19a6b44dc 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 d070c675d..d045eba7f 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 d85b686e4..f4301701c 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 54dd96952..ded492429 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 a31fd5237..5808d7a55 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 19d2e6061..4b9e05a99 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 28bf9c8f1..0745bab07 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 09ce38153..40cd814f1 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 2ae4b4bb1..34a2a2de0 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 29c57feb1..285f48b65 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 b8fc72c38..96385cef3 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 0277f4c71..22bfaacf8 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 60426e711..f14ea270f 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 3468d593d..500949c2c 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/.doctrees/release-notes/v0.3.doctree b/v0.3.x/.doctrees/release-notes/v0.3.doctree index bdea5ae44..f2668a2c8 100644 Binary files a/v0.3.x/.doctrees/release-notes/v0.3.doctree and b/v0.3.x/.doctrees/release-notes/v0.3.doctree differ diff --git a/v0.3.x/_sources/release-notes/v0.3.md.txt b/v0.3.x/_sources/release-notes/v0.3.md.txt index bf06ff475..c1f9c93da 100644 --- a/v0.3.x/_sources/release-notes/v0.3.md.txt +++ b/v0.3.x/_sources/release-notes/v0.3.md.txt @@ -245,3 +245,20 @@ tocdepth: 2 ### Contributors - Matt Hostetter ([@mhostetter](https://github.com/mhostetter)) + +## v0.3.6 + +*Released October 1, 2023* + +### Changes + +- Added support for NumPy 1.25. ([#507](https://github.com/mhostetter/galois/pull/507)) +- Added support for Numba 0.58. ([#507](https://github.com/mhostetter/galois/pull/507)) +- Fixed rare overflow with computing a large modular exponentiation of polynomials. ([#488](https://github.com/mhostetter/galois/pull/488)) +- Resolved various deprecations warnings with NumPy 1.25. ([#492](https://github.com/mhostetter/galois/pull/492)) + +### Contributors + +- Iyán Méndez Veiga ([@iyanmv](https://github.com/iyanmv)) +- [@Lasagnenator](https://github.com/Lasagnenator) +- Matt Hostetter ([@mhostetter](https://github.com/mhostetter)) diff --git a/v0.3.x/api/galois.BCH.decode/index.html b/v0.3.x/api/galois.BCH.decode/index.html index c960d9a70..287a60328 100644 --- a/v0.3.x/api/galois.BCH.decode/index.html +++ b/v0.3.x/api/galois.BCH.decode/index.html @@ -7922,10 +7922,10 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([0, 1, 0, 1, 0, 0, 0], order=2) +Out[3]: GF([1, 1, 1, 1, 0, 0, 0], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1], order=2) +Out[4]: GF([1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1], 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, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1], order=2) +Out[6]: GF([0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1], order=2)Decode the codeword and recover the message.
In [7]: d = bch.decode(c); d
-Out[7]: GF([0, 1, 0, 1, 0, 0, 0], order=2)
+Out[7]: GF([1, 1, 1, 1, 0, 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, 1, 0, 1, 0, 0, 0], order=2), 2)
+Out[9]: (GF([1, 1, 1, 1, 0, 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([1, 1, 0, 0], order=2)
+Out[13]: GF([0, 1, 0, 1], order=2)
In [14]: c = bch.encode(m); c
-Out[14]: GF([1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1], order=2)
+Out[14]: GF([0, 1, 0, 1, 0, 0, 1, 1, 0, 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([0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1], order=2) +Out[16]: GF([1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1], order=2)Decode the codeword and recover the message.
In [17]: d = bch.decode(c); d
-Out[17]: GF([1, 1, 0, 0], order=2)
+Out[17]: GF([0, 1, 0, 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([1, 1, 0, 0], order=2), 2)
+Out[19]: (GF([0, 1, 0, 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, 1, 1, 1, 1, 1],
- [0, 0, 0, 1, 0, 0, 1],
- [1, 1, 0, 1, 0, 1, 0]], order=2)
+GF([[1, 0, 0, 0, 0, 1, 1],
+ [1, 1, 1, 0, 0, 1, 0],
+ [1, 0, 1, 1, 0, 1, 0]], order=2)
In [24]: c = bch.encode(m); c
Out[24]:
-GF([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
- [0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0],
- [1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0]], order=2)
+GF([[1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0],
+ [1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1],
+ [1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - [1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0], - [0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0]], order=2) +GF([[1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0], + [0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1], + [0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0]], order=2)
Decode the codeword and recover the message.
In [28]: d = bch.decode(c); d
Out[28]:
-GF([[1, 1, 1, 1, 1, 1, 1],
- [0, 0, 0, 1, 0, 0, 1],
- [1, 1, 0, 1, 0, 1, 0]], order=2)
+GF([[1, 0, 0, 0, 0, 1, 1],
+ [1, 1, 1, 0, 0, 1, 0],
+ [1, 0, 1, 1, 0, 1, 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, 1, 1, 1, 1, 1],
- [0, 0, 0, 1, 0, 0, 1],
- [1, 1, 0, 1, 0, 1, 0]], order=2),
+(GF([[1, 0, 0, 0, 0, 1, 1],
+ [1, 1, 1, 0, 0, 1, 0],
+ [1, 0, 1, 1, 0, 1, 0]], order=2),
array([0, 1, 2]))
In [31]: np.array_equal(d, m)
@@ -8055,15 +8055,15 @@
In [34]: m = GF.Random((3, bch.k - 3)); m
Out[34]:
-GF([[1, 0, 1, 1],
- [1, 0, 1, 0],
- [0, 0, 1, 0]], order=2)
+GF([[1, 1, 1, 1],
+ [0, 1, 1, 0],
+ [0, 1, 0, 0]], order=2)
In [35]: c = bch.encode(m); c
Out[35]:
-GF([[1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
- [1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0],
- [0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1]], order=2)
+GF([[1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1],
+ [0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1],
+ [0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0]], order=2)
Corrupt the codeword. Add zero errors to the first codeword, one to the second, and two to the
@@ -8074,17 +8074,17 @@
In [38]: c
Out[38]:
-GF([[1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
- [0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0],
- [1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1]], order=2)
+GF([[1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1],
+ [1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1],
+ [1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0]], order=2)
Decode the codeword and recover the message.
In [39]: d = bch.decode(c); d
Out[39]:
-GF([[1, 0, 1, 1],
- [1, 0, 1, 0],
- [0, 0, 1, 0]], order=2)
+GF([[1, 1, 1, 1],
+ [0, 1, 1, 0],
+ [0, 1, 0, 0]], order=2)
In [40]: np.array_equal(d, m)
Out[40]: True
@@ -8093,9 +8093,9 @@
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([[1, 0, 1, 1],
- [1, 0, 1, 0],
- [0, 0, 1, 0]], order=2),
+(GF([[1, 1, 1, 1],
+ [0, 1, 1, 0],
+ [0, 1, 0, 0]], order=2),
array([0, 1, 2]))
In [42]: np.array_equal(d, m)
diff --git a/v0.3.x/api/galois.BCH.detect/index.html b/v0.3.x/api/galois.BCH.detect/index.html
index e3c3a0192..c37b780a9 100644
--- a/v0.3.x/api/galois.BCH.detect/index.html
+++ b/v0.3.x/api/galois.BCH.detect/index.html
@@ -7828,10 +7828,10 @@
In [2]: GF = bch.field
In [3]: m = GF.Random(bch.k); m
-Out[3]: GF([0, 0, 0, 0, 1, 1, 1], order=2)
+Out[3]: GF([0, 0, 0, 1, 0, 1, 1], order=2)
In [4]: c = bch.encode(m); c
-Out[4]: GF([0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0], order=2)
+Out[4]: GF([0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], 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([1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0], order=2)
+Out[7]: GF([1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], 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([0, 1, 0, 0], order=2)
+Out[11]: GF([0, 0, 0, 0], order=2)
In [12]: c = bch.encode(m); c
-Out[12]: GF([0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0], order=2)
+Out[12]: GF([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 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([1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0], order=2) +Out[15]: GF([1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], 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, 1, 1, 0, 1, 1], - [0, 0, 1, 0, 1, 0, 0], - [1, 1, 1, 0, 0, 0, 1]], order=2) +GF([[0, 0, 1, 0, 1, 0, 1], + [0, 0, 1, 1, 1, 1, 0], + [0, 1, 0, 0, 1, 1, 1]], order=2) In [20]: c = bch.encode(m); c Out[20]: -GF([[0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1], - [0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0], - [1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1]], order=2) +GF([[0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1], + [0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0], + [0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0]], order=2)Detect no errors in the valid codewords.
@@ -7917,9 +7917,9 @@ In [26]: c Out[26]: -GF([[1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1], - [1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0], - [0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1]], order=2) +GF([[1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1], + [1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0], + [1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0]], order=2) In [27]: bch.detect(c) Out[27]: array([ True, True, True]) @@ -7935,14 +7935,14 @@ In [30]: m = GF.Random((3, bch.k - 3)); m Out[30]: GF([[0, 0, 0, 0], - [0, 0, 1, 1], - [1, 0, 0, 0]], order=2) + [0, 1, 1, 0], + [0, 1, 0, 1]], order=2) In [31]: c = bch.encode(m); c Out[31]: GF([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0], - [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1]], order=2) + [0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1], + [0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1]], order=2)Detect no errors in the valid codewords.
@@ -7963,8 +7963,8 @@ In [37]: c Out[37]: GF([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0], - [0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1]], order=2) + [1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1], + [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 ebe74f0b0..e542d1f71 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([0, 1, 1, 1, 1, 1, 1], order=2) +Out[3]: GF([0, 1, 0, 1, 1, 0, 0], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1], order=2) +Out[4]: GF([0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1], order=2)Compute the parity symbols only.
In [5]: p = bch.encode(m, output="parity"); p
-Out[5]: GF([0, 0, 0, 1, 0, 1, 1, 1], order=2)
+Out[5]: GF([1, 0, 0, 0, 1, 1, 1, 1], order=2)
Compute the parity symbols only.
In [10]: p = bch.encode(m, output="parity"); p
-Out[10]: GF([0, 1, 1, 0, 1, 1, 1, 0], order=2)
+Out[10]: GF([1, 0, 0, 1, 0, 1, 0, 1], order=2)
Compute the parity symbols only.
In [15]: p = bch.encode(m, output="parity"); p
Out[15]:
-GF([[1, 1, 0, 1, 0, 0, 1, 0],
- [0, 0, 1, 1, 1, 1, 1, 0],
- [0, 1, 1, 0, 1, 0, 1, 0]], order=2)
+GF([[1, 1, 1, 1, 0, 1, 0, 1],
+ [0, 1, 0, 0, 1, 0, 1, 0],
+ [0, 0, 0, 1, 1, 1, 0, 1]], order=2)
Compute the parity symbols only.
In [20]: p = bch.encode(m, output="parity"); p
Out[20]:
-GF([[0, 0, 0, 0, 0, 0, 0, 0],
- [0, 1, 0, 1, 1, 0, 0, 1],
- [1, 0, 0, 0, 1, 0, 0, 0]], order=2)
+GF([[1, 1, 1, 1, 1, 0, 1, 1],
+ [0, 1, 1, 0, 1, 1, 1, 0],
+ [0, 1, 0, 0, 0, 1, 0, 0]], order=2)
Encode a message.
In [3]: m = GF.Random(bch.k); m
-Out[3]: GF([0, 0, 1, 1, 1, 1, 0], order=2)
+Out[3]: GF([1, 0, 1, 0, 0, 0, 1], order=2)
In [4]: c = bch.encode(m); c
-Out[4]: GF([0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0], order=2)
+Out[4]: GF([1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1], 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, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0], order=2)
+Out[5]: GF([0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1], order=2)
In [6]: dec_m = bch.decode(c); dec_m
-Out[6]: GF([0, 0, 1, 1, 1, 1, 0], order=2)
+Out[6]: GF([1, 0, 1, 0, 0, 0, 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, 1, 1, 0], order=2), 1)
+Out[8]: (GF([1, 0, 1, 0, 0, 0, 1], order=2), 1)
In [9]: np.array_equal(dec_m, m)
Out[9]: True
diff --git a/v0.3.x/api/galois.FieldArray.Random/index.html b/v0.3.x/api/galois.FieldArray.Random/index.html
index b8cfc373d..12177c6c6 100644
--- a/v0.3.x/api/galois.FieldArray.Random/index.html
+++ b/v0.3.x/api/galois.FieldArray.Random/index.html
@@ -7879,8 +7879,8 @@
In [2]: GF.Random((2, 5))
Out[2]:
-GF([[ 7, 8, 28, 21, 26],
- [ 1, 15, 27, 16, 15]], order=31)
+GF([[22, 30, 11, 10, 9],
+ [20, 15, 14, 18, 29]], order=31)
Generate a random array with a specified seed. This produces repeatable outputs.
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 56bac7f8b..f937e169f 100644 --- a/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html +++ b/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html @@ -7835,10 +7835,10 @@In [1]: GF = galois.GF(3**5)
In [2]: a = GF.Random(); a
-Out[2]: GF(168, order=3^5)
+Out[2]: GF(2, order=3^5)
In [3]: poly = a.characteristic_poly(); poly
-Out[3]: Poly(x^5 + x^4 + 2x^3 + 1, GF(3))
+Out[3]: Poly(x^5 + 2x^4 + x^3 + x^2 + 2x + 1, 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(α^4 + α^3 + α^2, order=3^5)
+Out[6]: GF(2α^4 + α^3 + 2α^2 + 2α + 2, order=3^5)
In [7]: poly = a.characteristic_poly(); poly
-Out[7]: Poly(x^5 + 2x^4 + 2x^2 + x + 2, GF(3))
+Out[7]: Poly(x^5 + x^3 + x + 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(α^173, order=3^5)
+Out[10]: GF(α^100, order=3^5)
In [11]: poly = a.characteristic_poly(); poly
-Out[11]: Poly(x^5 + x^4 + 2x^3 + x^2 + x + 1, GF(3))
+Out[11]: Poly(x^5 + x^3 + x^2 + 2, 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([[203, 24, 98],
- [105, 17, 106],
- [ 22, 214, 4]], order=3^5)
+GF([[108, 58, 128],
+ [137, 155, 129],
+ [ 75, 110, 41]], order=3^5)
In [15]: poly = A.characteristic_poly(); poly
-Out[15]: Poly(x^3 + 151x^2 + 135x + 128, GF(3^5))
+Out[15]: Poly(x^3 + 143x^2 + 7x + 218, GF(3^5))
# The x^0 coefficient is det(-A)
In [16]: poly.coeffs[-1] == np.linalg.det(-A)
@@ -7919,15 +7919,15 @@
In [20]: A = GF.Random((3,3)); A
Out[20]:
-GF([[ α^4 + α^3 + 2α^2 + 2, α^4 + 2α^3 + 2α^2 + α,
- 2α^4 + 2α^2 + 2α],
- [ 2α^4 + 2α + 1, 2α^4 + 2α^3 + 2α + 2,
- 2α^4 + 2α^3 + 2α^2 + α],
- [ 2α^3 + 2α + 2, 2α^2 + α + 2,
- α^4 + 2α^3 + 1]], order=3^5)
+GF([[ 2α^3 + α^2 + 2α, α^4 + α^3 + α^2 + 2α + 2,
+ 2α^4 + α^3 + α],
+ [ α^3 + 2α, 2α^4 + α^2 + 2α + 1,
+ 2α^4 + α^3 + α^2 + α + 1],
+ [ 2α^2 + α, α^4 + α + 2,
+ 2α^3 + 2α^2 + α]], order=3^5)
In [21]: poly = A.characteristic_poly(); poly
-Out[21]: Poly(x^3 + (2α^4 + α^3 + α^2 + α + 1)x^2 + (2α^4 + 2α^3 + 2α^2 + 2α + 2)x + (α^3 + 2α^2 + α + 1), GF(3^5))
+Out[21]: Poly(x^3 + (α^4 + 2α^3 + 2α^2 + α + 2)x^2 + (2α^3 + α^2 + α + 1)x + (α^4 + 2α^3 + α^2 + 2α + 1), GF(3^5))
# The x^0 coefficient is det(-A)
In [22]: poly.coeffs[-1] == np.linalg.det(-A)
@@ -7951,12 +7951,12 @@
In [26]: A = GF.Random((3,3)); A
Out[26]:
-GF([[α^105, α^217, α^25],
- [α^170, α^225, α^189],
- [α^185, α^73, α^215]], order=3^5)
+GF([[α^102, 0, α^64],
+ [α^128, α^220, α^197],
+ [α^125, α^144, α^230]], order=3^5)
In [27]: poly = A.characteristic_poly(); poly
-Out[27]: Poly(x^3 + (α^180)x^2 + (α^77)x + α^53, GF(3^5))
+Out[27]: Poly(x^3 + (α^57)x^2 + (α^134)x + α^12, 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 b866be7bb..5b69c545e 100644
--- a/v0.3.x/api/galois.FieldArray.column_space/index.html
+++ b/v0.3.x/api/galois.FieldArray.column_space/index.html
@@ -7790,9 +7790,9 @@
In [3]: A = GF.Random((m, n)); A
Out[3]:
-GF([[29, 27, 11, 25, 26],
- [ 9, 6, 8, 27, 0],
- [28, 25, 20, 29, 4]], order=31)
+GF([[24, 2, 8, 19, 21],
+ [25, 20, 4, 19, 20],
+ [12, 24, 8, 14, 28]], 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, 6, 22, 5],
- [ 0, 1, 18, 22, 0]], order=31)
+GF([[ 1, 0, 10, 5, 23],
+ [ 0, 1, 0, 11, 18]], order=31)
In [6]: C.shape[0] + N.shape[0] == n
Out[6]: True
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 a60500a1b..68a6797e2 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
@@ -7789,16 +7789,16 @@
In [3]: A = GF.Random((m, n)); A
Out[3]:
-GF([[18, 10, 11],
- [22, 29, 11],
- [21, 29, 7],
- [21, 13, 16],
- [25, 0, 7]], order=31)
+GF([[16, 9, 12],
+ [23, 1, 16],
+ [ 9, 23, 4],
+ [26, 5, 5],
+ [ 7, 22, 18]], order=31)
In [4]: LN = A.left_null_space(); LN
Out[4]:
-GF([[ 1, 0, 2, 21, 6],
- [ 0, 1, 30, 0, 26]], order=31)
+GF([[ 1, 0, 14, 3, 4],
+ [ 0, 1, 25, 25, 9]], 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 3fc0a50ae..cb0019954 100644
--- a/v0.3.x/api/galois.FieldArray.log/index.html
+++ b/v0.3.x/api/galois.FieldArray.log/index.html
@@ -7831,10 +7831,10 @@
Out[2]: GF(3, order=3^5)
In [3]: x = GF.Random(10, low=1); x
-Out[3]: GF([ 1, 89, 206, 114, 142, 213, 177, 12, 182, 167], order=3^5)
+Out[3]: GF([170, 192, 146, 51, 160, 216, 150, 56, 34, 10], order=3^5)
In [4]: i = x.log(); i
-Out[4]: array([ 0, 166, 55, 231, 20, 183, 78, 70, 27, 9])
+Out[4]: array([100, 158, 219, 223, 184, 193, 52, 86, 198, 46])
In [5]: np.array_equal(alpha ** i, x)
Out[5]: True
@@ -7849,14 +7849,14 @@
In [8]: x = GF.Random(10, low=1); x
Out[8]:
-GF([ 2α^4 + 1, α^4 + 2α^3 + α^2 + 2α,
- 2α^4 + α^3 + 2, 2α^4 + 2α^3 + 2α^2 + 2α + 1,
- 2α^3 + 2α^2 + 2α, 2α^4 + 2α^3 + 2,
- α^2 + 2α, 2α^3 + α + 2,
- α^4 + α^3 + 2α + 1, 2α^4 + 2α^3 + 2α^2 + 2], order=3^5)
+GF([ α^3 + 2, α^2,
+ 2α^3, α^4 + 2α + 2,
+ α^4 + 2α^2 + 2α + 1, α^4 + 2α^3 + α^2 + 1,
+ α^3 + 2α^2 + α + 2, 2α^3 + 1,
+ α^4 + α^3 + 2α + 1, α^4 + α^3 + 2α^2 + α + 2], order=3^5)
In [9]: i = x.log(); i
-Out[9]: array([241, 52, 220, 238, 132, 44, 6, 77, 104, 204])
+Out[9]: array([ 15, 2, 124, 166, 235, 179, 51, 136, 104, 218])
In [10]: np.array_equal(alpha ** i, x)
Out[10]: True
@@ -7871,11 +7871,11 @@
In [13]: x = GF.Random(10, low=1); x
Out[13]:
-GF([ α^83, α^76, α^233, α^53, α^137, α^119, α^151, α^91, α^186, α^73],
+GF([ α^2, α^86, α^206, α^13, α^114, α^175, α^61, α^136, α^128, α^201],
order=3^5)
In [14]: i = x.log(); i
-Out[14]: array([ 83, 76, 233, 53, 137, 119, 151, 91, 186, 73])
+Out[14]: array([ 2, 86, 206, 13, 114, 175, 61, 136, 128, 201])
In [15]: np.array_equal(alpha ** i, x)
Out[15]: True
@@ -7902,7 +7902,7 @@
Out[17]: GF(242, order=3^5)
In [18]: i = x.log(beta); i
-Out[18]: array([ 41, 160, 153, 67, 91, 155, 95, 147, 226, 211])
+Out[18]: array([208, 232, 128, 21, 240, 171, 173, 108, 2, 213])
In [19]: np.array_equal(beta ** i, x)
Out[19]: True
@@ -7914,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([ 41, 160, 153, 67, 91, 155, 95, 147, 226, 211])
+Out[21]: array([208, 232, 128, 21, 240, 171, 173, 108, 2, 213])
In [22]: np.array_equal(beta ** i, x)
Out[22]: True
@@ -7926,7 +7926,7 @@
Out[23]: GF(α^185, order=3^5)
In [24]: i = x.log(beta); i
-Out[24]: array([ 41, 160, 153, 67, 91, 155, 95, 147, 226, 211])
+Out[24]: array([208, 232, 128, 21, 240, 171, 173, 108, 2, 213])
In [25]: np.array_equal(beta ** i, x)
Out[25]: True
@@ -7944,21 +7944,21 @@
In [26]: x = GF.Random(low=1); x
-Out[26]: GF(135, order=3^5)
+Out[26]: GF(83, order=3^5)
In [27]: bases = GF.primitive_elements
In [28]: i = x.log(bases); i
Out[28]:
-array([ 8, 186, 50, 4, 144, 158, 82, 48, 214, 90, 146, 164, 62,
- 178, 98, 94, 84, 104, 116, 64, 160, 174, 108, 16, 152, 76,
- 92, 138, 54, 26, 236, 80, 30, 210, 130, 114, 184, 20, 170,
- 18, 204, 180, 188, 118, 226, 68, 60, 238, 224, 38, 240, 232,
- 12, 190, 70, 10, 172, 206, 120, 156, 46, 142, 168, 136, 124,
- 202, 218, 6, 2, 234, 182, 140, 216, 14, 102, 200, 42, 96,
- 222, 208, 72, 126, 58, 122, 112, 194, 32, 134, 100, 230, 166,
- 56, 128, 86, 212, 36, 148, 196, 28, 34, 228, 74, 150, 24,
- 40, 52, 162, 78, 192, 106])
+array([120, 128, 24, 60, 224, 192, 20, 236, 64, 140, 12, 40, 204,
+ 8, 18, 200, 50, 108, 46, 234, 222, 190, 168, 240, 102, 172,
+ 170, 134, 84, 148, 152, 232, 208, 4, 14, 16, 98, 58, 130,
+ 28, 156, 38, 158, 76, 2, 52, 174, 182, 214, 86, 212, 92,
+ 180, 188, 82, 150, 160, 186, 106, 162, 206, 194, 100, 104, 166,
+ 126, 124, 90, 30, 122, 68, 164, 94, 210, 78, 96, 146, 230,
+ 184, 216, 112, 196, 144, 136, 228, 6, 238, 74, 48, 62, 70,
+ 114, 226, 80, 34, 56, 42, 36, 178, 26, 32, 142, 72, 118,
+ 116, 54, 10, 202, 218, 138])
In [29]: np.all(bases ** i == x)
Out[29]: True
@@ -7967,21 +7967,21 @@
In [30]: x = GF.Random(low=1); x
-Out[30]: GF(2α^3 + α + 2, order=3^5)
+Out[30]: GF(2α^3 + 2α + 2, order=3^5)
In [31]: bases = GF.primitive_elements
In [32]: i = x.log(bases); i
Out[32]:
-array([ 77, 187, 209, 99, 55, 99, 33, 99, 33, 231, 165, 187, 143,
- 231, 187, 209, 143, 33, 209, 11, 209, 11, 11, 33, 11, 187,
- 99, 209, 187, 99, 33, 165, 77, 55, 11, 99, 77, 11, 33,
- 143, 209, 99, 55, 77, 209, 231, 33, 143, 99, 33, 11, 55,
- 55, 165, 99, 187, 143, 77, 187, 231, 231, 187, 165, 99, 165,
- 99, 11, 209, 231, 165, 209, 77, 143, 165, 165, 231, 11, 77,
- 231, 187, 209, 33, 165, 55, 231, 143, 187, 231, 55, 187, 55,
- 55, 143, 11, 165, 165, 33, 11, 209, 55, 77, 77, 143, 231,
- 143, 77, 77, 55, 33, 143])
+array([ 93, 75, 67, 107, 101, 173, 197, 195, 219, 169, 215, 31, 25,
+ 103, 141, 155, 69, 241, 199, 139, 45, 117, 227, 65, 73, 97,
+ 41, 1, 53, 151, 21, 83, 137, 233, 29, 85, 203, 51, 131,
+ 179, 133, 217, 189, 71, 177, 125, 153, 135, 63, 109, 7, 35,
+ 79, 61, 239, 207, 3, 5, 185, 59, 81, 229, 17, 129, 171,
+ 19, 205, 221, 235, 149, 89, 115, 91, 193, 127, 147, 95, 27,
+ 191, 119, 111, 43, 39, 57, 213, 47, 9, 15, 13, 163, 145,
+ 167, 157, 183, 105, 237, 87, 161, 23, 123, 49, 225, 201, 37,
+ 223, 181, 159, 211, 175, 113])
In [33]: np.all(bases ** i == x)
Out[33]: True
@@ -7990,21 +7990,21 @@
In [34]: x = GF.Random(low=1); x
-Out[34]: GF(α^43, order=3^5)
+Out[34]: GF(α^224, order=3^5)
In [35]: bases = GF.primitive_elements
In [36]: i = x.log(bases); i
Out[36]:
-array([ 43, 183, 57, 203, 169, 93, 229, 137, 31, 151, 89, 95, 61,
- 19, 73, 233, 149, 75, 79, 223, 13, 179, 157, 207, 91, 227,
- 71, 167, 139, 49, 119, 67, 131, 191, 3, 159, 21, 47, 97,
- 127, 189, 181, 103, 241, 35, 63, 141, 39, 115, 53, 201, 37,
- 125, 23, 225, 205, 17, 109, 161, 173, 217, 7, 177, 5, 1,
- 27, 113, 123, 41, 199, 101, 87, 193, 45, 155, 107, 135, 153,
- 195, 29, 145, 163, 221, 81, 239, 105, 51, 85, 235, 117, 15,
- 59, 83, 69, 111, 133, 9, 25, 211, 213, 197, 65, 171, 129,
- 215, 219, 175, 147, 185, 237])
+array([224, 126, 190, 112, 160, 68, 118, 134, 184, 100, 216, 236, 42,
+ 144, 82, 212, 174, 8, 102, 98, 124, 32, 120, 206, 142, 192,
+ 156, 234, 60, 2, 74, 62, 114, 72, 10, 46, 70, 76, 162,
+ 20, 146, 200, 182, 158, 36, 210, 228, 130, 222, 96, 186, 204,
+ 94, 238, 24, 38, 218, 202, 214, 12, 78, 104, 106, 178, 84,
+ 90, 54, 168, 56, 18, 14, 48, 240, 150, 194, 34, 208, 26,
+ 166, 16, 80, 140, 172, 28, 232, 108, 170, 122, 138, 148, 50,
+ 116, 196, 230, 128, 40, 30, 164, 58, 226, 92, 136, 86, 188,
+ 152, 4, 180, 6, 52, 64])
In [37]: np.all(bases ** i == x)
Out[37]: True
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 dac5cc280..a459005ad 100644
--- a/v0.3.x/api/galois.FieldArray.minimal_poly/index.html
+++ b/v0.3.x/api/galois.FieldArray.minimal_poly/index.html
@@ -7831,10 +7831,10 @@
In [1]: GF = galois.GF(3**5)
In [2]: a = GF.Random(); a
-Out[2]: GF(6, order=3^5)
+Out[2]: GF(38, order=3^5)
In [3]: poly = a.minimal_poly(); poly
-Out[3]: Poly(x^5 + 2x + 2, GF(3))
+Out[3]: Poly(x^5 + 2x^4 + x^3 + x + 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 + 2α^2, order=3^5)
+Out[7]: GF(2α^4 + α + 2, order=3^5)
In [8]: poly = a.minimal_poly(); poly
-Out[8]: Poly(x^5 + 2x^4 + x^3 + 2x^2 + 2x + 2, GF(3))
+Out[8]: Poly(x^5 + 2x + 1, 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(α^134, order=3^5)
+Out[12]: GF(α^207, order=3^5)
In [13]: poly = a.minimal_poly(); poly
-Out[13]: Poly(x^5 + 2x^4 + x^3 + x + 2, GF(3))
+Out[13]: Poly(x^5 + x^4 + x^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.null_space/index.html b/v0.3.x/api/galois.FieldArray.null_space/index.html
index 27f9bce3b..a6ad8dcb0 100644
--- a/v0.3.x/api/galois.FieldArray.null_space/index.html
+++ b/v0.3.x/api/galois.FieldArray.null_space/index.html
@@ -7789,14 +7789,14 @@
In [3]: A = GF.Random((m, n)); A
Out[3]:
-GF([[28, 12, 7, 2, 29],
- [11, 27, 11, 4, 14],
- [ 5, 8, 2, 3, 24]], order=31)
+GF([[ 8, 9, 8, 6, 9],
+ [14, 6, 8, 20, 15],
+ [ 3, 7, 5, 26, 27]], order=31)
In [4]: N = A.null_space(); N
Out[4]:
-GF([[ 1, 0, 27, 7, 7],
- [ 0, 1, 8, 24, 27]], order=31)
+GF([[ 1, 0, 20, 23, 28],
+ [ 0, 1, 14, 28, 23]], 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.row_space/index.html b/v0.3.x/api/galois.FieldArray.row_space/index.html
index daeb79f84..d0e8a2ea9 100644
--- a/v0.3.x/api/galois.FieldArray.row_space/index.html
+++ b/v0.3.x/api/galois.FieldArray.row_space/index.html
@@ -7790,11 +7790,11 @@
In [3]: A = GF.Random((m, n)); A
Out[3]:
-GF([[ 5, 14, 25],
- [23, 25, 9],
- [14, 10, 23],
- [29, 20, 10],
- [ 1, 14, 16]], order=31)
+GF([[ 7, 14, 17],
+ [ 7, 15, 18],
+ [ 2, 10, 11],
+ [24, 26, 18],
+ [13, 2, 21]], 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, 12, 27, 5],
- [ 0, 1, 20, 12, 0]], order=31)
+GF([[ 1, 0, 2, 21, 20],
+ [ 0, 1, 22, 19, 23]], order=31)
In [6]: R.shape[0] + LN.shape[0] == m
Out[6]: True
diff --git a/v0.3.x/api/galois.Poly.Random/index.html b/v0.3.x/api/galois.Poly.Random/index.html
index c36bf3602..5692dc58d 100644
--- a/v0.3.x/api/galois.Poly.Random/index.html
+++ b/v0.3.x/api/galois.Poly.Random/index.html
@@ -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^2 + x + 1, GF(2))
+Out[1]: Poly(x^5 + x^4 + 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.derivative/index.html b/v0.3.x/api/galois.Poly.derivative/index.html
index efa2803d3..df7119403 100644
--- a/v0.3.x/api/galois.Poly.derivative/index.html
+++ b/v0.3.x/api/galois.Poly.derivative/index.html
@@ -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^5 + x^3 + x^2 + x + 1, GF(2))
+Out[1]: Poly(x^7 + x^6 + x^3, GF(2))
In [2]: f.derivative()
-Out[2]: Poly(x^6 + x^4 + x^2 + 1, GF(2))
+Out[2]: Poly(x^6 + x^2, 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 + 3x^10 + 4x^9 + 6x^8 + x^7 + 5x^6 + 4x^5 + 6x^4 + 4x^3 + x^2 + 2x + 1, GF(7))
+Out[5]: Poly(5x^11 + 3x^10 + 3x^8 + 4x^7 + 2x^6 + 3x^5 + 3x^4 + 4x^3 + 3x^2, GF(7))
In [6]: f.derivative()
-Out[6]: Poly(5x^10 + 2x^9 + x^8 + 6x^7 + 2x^5 + 6x^4 + 3x^3 + 5x^2 + 2x + 2, GF(7))
+Out[6]: Poly(6x^10 + 2x^9 + 3x^7 + 5x^5 + x^4 + 5x^3 + 5x^2 + 6x, GF(7))
In [7]: f.derivative(2)
-Out[7]: Poly(x^9 + 4x^8 + x^7 + 3x^4 + 3x^3 + 2x^2 + 3x + 2, GF(7))
+Out[7]: Poly(4x^9 + 4x^8 + 4x^4 + 4x^3 + x^2 + 3x + 6, GF(7))
In [8]: f.derivative(3)
-Out[8]: Poly(2x^8 + 4x^7 + 5x^3 + 2x^2 + 4x + 3, GF(7))
+Out[8]: Poly(x^8 + 4x^7 + 2x^3 + 5x^2 + 2x + 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(80x^7 + 191x^6 + 168x^5 + 204x^4 + 217x^3 + 222x^2 + 196x + 60, GF(3^5))
+Out[11]: Poly(35x^7 + 22x^6 + 58x^5 + 29x^4 + 162x^3 + 117x^2 + 124x + 171, GF(3^5))
In [12]: f.derivative()
-Out[12]: Poly(80x^6 + 84x^4 + 204x^3 + 111x + 196, GF(3^5))
+Out[12]: Poly(35x^6 + 35x^4 + 29x^3 + 234x + 124, GF(3^5))
In [13]: f.derivative(2)
-Out[13]: Poly(84x^3 + 111, GF(3^5))
+Out[13]: Poly(35x^3 + 234, 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.field/index.html b/v0.3.x/api/galois.Poly.field/index.html
index 3afdd4dea..f9cf585c2 100644
--- a/v0.3.x/api/galois.Poly.field/index.html
+++ b/v0.3.x/api/galois.Poly.field/index.html
@@ -7751,7 +7751,7 @@
In [3]: GF = galois.GF(2**8)
In [4]: b = galois.Poly.Random(5, field=GF); b
-Out[4]: Poly(218x^5 + 60x^4 + 247x^3 + 50x^2 + 163x + 76, GF(2^8))
+Out[4]: Poly(200x^5 + 73x^4 + 49x^3 + 114x^2 + 99x + 10, GF(2^8))
In [5]: b.field
Out[5]: <class 'galois.GF(2^8)'>
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 94cf3b4b8..6de4ded89 100644
--- a/v0.3.x/api/galois.Poly.is_irreducible/index.html
+++ b/v0.3.x/api/galois.Poly.is_irreducible/index.html
@@ -7826,13 +7826,13 @@
In [4]: g = galois.irreducible_poly(2**4, 2, method="random"); g
-Out[4]: Poly(x^2 + x + 10, GF(2^4))
+Out[4]: Poly(x^2 + x + 13, GF(2^4))
In [5]: h = galois.irreducible_poly(2**4, 3, method="random"); h
-Out[5]: Poly(x^3 + 13x^2 + 12x + 5, GF(2^4))
+Out[5]: Poly(x^3 + 13x^2 + 12x + 9, GF(2^4))
In [6]: f = g * h; f
-Out[6]: Poly(x^5 + 12x^4 + 11x^3 + 2x^2 + 4x + 4, GF(2^4))
+Out[6]: Poly(x^5 + 12x^4 + 12x^3 + 11x^2 + 10x + 15, GF(2^4))
In [7]: f.is_irreducible()
Out[7]: False
diff --git a/v0.3.x/api/galois.ReedSolomon.decode/index.html b/v0.3.x/api/galois.ReedSolomon.decode/index.html
index 3797a9a28..479d78296 100644
--- a/v0.3.x/api/galois.ReedSolomon.decode/index.html
+++ b/v0.3.x/api/galois.ReedSolomon.decode/index.html
@@ -7915,23 +7915,23 @@
In [2]: GF = rs.field
In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([ 0, 0, 9, 15, 13, 2, 6, 6, 2], order=2^4)
+Out[3]: GF([13, 8, 1, 2, 5, 10, 1, 7, 10], order=2^4)
In [4]: c = rs.encode(m); c
-Out[4]: GF([ 0, 0, 9, 15, 13, 2, 6, 6, 2, 6, 2, 6, 4, 7, 9], order=2^4)
+Out[4]: GF([13, 8, 1, 2, 5, 10, 1, 7, 10, 6, 1, 4, 1, 6, 7], order=2^4)
Corrupt \(t\) symbols of the codeword.
In [5]: e = GF.Random(rs.t, low=1); e
-Out[5]: GF([ 3, 3, 11], order=2^4)
+Out[5]: GF([4, 9, 5], order=2^4)
In [6]: c[0:rs.t] += e; c
-Out[6]: GF([ 3, 3, 2, 15, 13, 2, 6, 6, 2, 6, 2, 6, 4, 7, 9], order=2^4)
+Out[6]: GF([ 9, 1, 4, 2, 5, 10, 1, 7, 10, 6, 1, 4, 1, 6, 7], order=2^4)
Decode the codeword and recover the message.
In [7]: d = rs.decode(c); d
-Out[7]: GF([ 0, 0, 9, 15, 13, 2, 6, 6, 2], order=2^4)
+Out[7]: GF([13, 8, 1, 2, 5, 10, 1, 7, 10], 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([ 0, 0, 9, 15, 13, 2, 6, 6, 2], order=2^4), 3)
+Out[9]: (GF([13, 8, 1, 2, 5, 10, 1, 7, 10], 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([ 6, 13, 9, 8, 4], order=2^4)
+Out[13]: GF([3, 3, 0, 2, 3], order=2^4)
In [14]: c = rs.encode(m); c
-Out[14]: GF([ 6, 13, 9, 8, 4, 9, 5, 3, 8, 11, 7], order=2^4)
+Out[14]: GF([ 3, 3, 0, 2, 3, 14, 10, 1, 1, 0, 5], order=2^4)
Corrupt \(t\) symbols of the codeword.
In [15]: e = GF.Random(rs.t, low=1); e
-Out[15]: GF([14, 11, 3], order=2^4)
+Out[15]: GF([4, 9, 5], order=2^4)
In [16]: c[0:rs.t] += e; c
-Out[16]: GF([ 8, 6, 10, 8, 4, 9, 5, 3, 8, 11, 7], order=2^4)
+Out[16]: GF([ 7, 10, 5, 2, 3, 14, 10, 1, 1, 0, 5], order=2^4)
Decode the codeword and recover the message.
In [17]: d = rs.decode(c); d
-Out[17]: GF([ 6, 13, 9, 8, 4], order=2^4)
+Out[17]: GF([3, 3, 0, 2, 3], 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([ 6, 13, 9, 8, 4], order=2^4), 3)
+Out[19]: (GF([3, 3, 0, 2, 3], 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([[ 2, 2, 13, 11, 10, 7, 11, 13, 2],
- [ 4, 12, 1, 15, 4, 0, 5, 3, 12],
- [ 0, 10, 3, 7, 7, 3, 9, 9, 6]], order=2^4)
+GF([[12, 2, 13, 10, 15, 11, 7, 1, 9],
+ [ 1, 1, 0, 7, 5, 6, 3, 4, 10],
+ [12, 13, 0, 4, 2, 10, 5, 4, 7]], order=2^4)
In [24]: c = rs.encode(m); c
Out[24]:
-GF([[ 2, 2, 13, 11, 10, 7, 11, 13, 2, 11, 12, 4, 8, 6, 15],
- [ 4, 12, 1, 15, 4, 0, 5, 3, 12, 9, 7, 9, 6, 7, 12],
- [ 0, 10, 3, 7, 7, 3, 9, 9, 6, 3, 5, 2, 5, 15, 11]],
+GF([[12, 2, 13, 10, 15, 11, 7, 1, 9, 15, 1, 10, 11, 12, 11],
+ [ 1, 1, 0, 7, 5, 6, 3, 4, 10, 2, 14, 4, 9, 9, 5],
+ [12, 13, 0, 4, 2, 10, 5, 4, 7, 13, 14, 12, 4, 11, 12]],
order=2^4)
@@ -8014,18 +8014,18 @@
In [28]: c
Out[28]:
-GF([[ 3, 2, 13, 11, 10, 7, 11, 13, 2, 11, 12, 4, 8, 6, 15],
- [12, 3, 1, 15, 4, 0, 5, 3, 12, 9, 7, 9, 6, 7, 12],
- [ 1, 12, 2, 7, 7, 3, 9, 9, 6, 3, 5, 2, 5, 15, 11]],
+GF([[ 9, 2, 13, 10, 15, 11, 7, 1, 9, 15, 1, 10, 11, 12, 11],
+ [ 2, 0, 0, 7, 5, 6, 3, 4, 10, 2, 14, 4, 9, 9, 5],
+ [ 8, 7, 14, 4, 2, 10, 5, 4, 7, 13, 14, 12, 4, 11, 12]],
order=2^4)
Decode the codeword and recover the message.
In [29]: d = rs.decode(c); d
Out[29]:
-GF([[ 2, 2, 13, 11, 10, 7, 11, 13, 2],
- [ 4, 12, 1, 15, 4, 0, 5, 3, 12],
- [ 0, 10, 3, 7, 7, 3, 9, 9, 6]], order=2^4)
+GF([[12, 2, 13, 10, 15, 11, 7, 1, 9],
+ [ 1, 1, 0, 7, 5, 6, 3, 4, 10],
+ [12, 13, 0, 4, 2, 10, 5, 4, 7]], 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([[ 2, 2, 13, 11, 10, 7, 11, 13, 2],
- [ 4, 12, 1, 15, 4, 0, 5, 3, 12],
- [ 0, 10, 3, 7, 7, 3, 9, 9, 6]], order=2^4),
+(GF([[12, 2, 13, 10, 15, 11, 7, 1, 9],
+ [ 1, 1, 0, 7, 5, 6, 3, 4, 10],
+ [12, 13, 0, 4, 2, 10, 5, 4, 7]], 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([[ 7, 1, 3, 9, 1],
- [ 3, 3, 4, 10, 1],
- [12, 1, 0, 6, 6]], order=2^4)
+GF([[13, 6, 2, 4, 9],
+ [ 7, 3, 8, 6, 11],
+ [13, 5, 12, 6, 3]], order=2^4)
In [36]: c = rs.encode(m); c
Out[36]:
-GF([[ 7, 1, 3, 9, 1, 3, 2, 7, 5, 1, 7],
- [ 3, 3, 4, 10, 1, 9, 5, 7, 9, 11, 11],
- [12, 1, 0, 6, 6, 7, 10, 7, 0, 10, 15]], order=2^4)
+GF([[13, 6, 2, 4, 9, 14, 14, 5, 11, 0, 13],
+ [ 7, 3, 8, 6, 11, 5, 5, 12, 11, 6, 9],
+ [13, 5, 12, 6, 3, 0, 12, 7, 10, 12, 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([[ 8, 1, 3, 9, 1, 3, 2, 7, 5, 1, 7],
- [14, 13, 4, 10, 1, 9, 5, 7, 9, 11, 11],
- [11, 5, 2, 6, 6, 7, 10, 7, 0, 10, 15]], order=2^4)
+GF([[ 1, 6, 2, 4, 9, 14, 14, 5, 11, 0, 13],
+ [ 4, 0, 8, 6, 11, 5, 5, 12, 11, 6, 9],
+ [11, 1, 8, 6, 3, 0, 12, 7, 10, 12, 15]], order=2^4)
Decode the codeword and recover the message.
In [41]: d = rs.decode(c); d
Out[41]:
-GF([[ 7, 1, 3, 9, 1],
- [ 3, 3, 4, 10, 1],
- [12, 1, 0, 6, 6]], order=2^4)
+GF([[13, 6, 2, 4, 9],
+ [ 7, 3, 8, 6, 11],
+ [13, 5, 12, 6, 3]], 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([[ 7, 1, 3, 9, 1],
- [ 3, 3, 4, 10, 1],
- [12, 1, 0, 6, 6]], order=2^4),
+(GF([[13, 6, 2, 4, 9],
+ [ 7, 3, 8, 6, 11],
+ [13, 5, 12, 6, 3]], 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 4ff47ca47..ed05e45f4 100644
--- a/v0.3.x/api/galois.ReedSolomon.detect/index.html
+++ b/v0.3.x/api/galois.ReedSolomon.detect/index.html
@@ -7828,10 +7828,10 @@
In [2]: GF = rs.field
In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([11, 0, 0, 15, 10, 3, 11, 11, 0], order=2^4)
+Out[3]: GF([15, 5, 13, 6, 2, 0, 4, 7, 6], order=2^4)
In [4]: c = rs.encode(m); c
-Out[4]: GF([11, 0, 0, 15, 10, 3, 11, 11, 0, 4, 0, 11, 2, 7, 5], order=2^4)
+Out[4]: GF([15, 5, 13, 6, 2, 0, 4, 7, 6, 2, 9, 5, 14, 15, 14], 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([ 4, 13, 12, 10, 1, 1], order=2^4)
+Out[7]: GF([ 1, 2, 8, 9, 13, 7], order=2^4)
In [8]: c[0:rs.d - 1] += e; c
-Out[8]: GF([15, 13, 12, 5, 11, 2, 11, 11, 0, 4, 0, 11, 2, 7, 5], order=2^4)
+Out[8]: GF([14, 7, 5, 15, 15, 7, 4, 7, 6, 2, 9, 5, 14, 15, 14], 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([12, 11, 12, 1, 7], order=2^4)
+Out[12]: GF([ 6, 13, 11, 12, 10], order=2^4)
In [13]: c = rs.encode(m); c
-Out[13]: GF([12, 11, 12, 1, 7, 4, 6, 7, 7, 3, 5], order=2^4)
+Out[13]: GF([ 6, 13, 11, 12, 10, 8, 5, 2, 4, 11, 8], 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([ 9, 3, 12, 11, 15, 4], order=2^4)
+Out[16]: GF([ 5, 15, 6, 12, 15, 8], order=2^4)
In [17]: c[0:rs.d - 1] += e; c
-Out[17]: GF([ 5, 8, 0, 10, 8, 0, 6, 7, 7, 3, 5], order=2^4)
+Out[17]: GF([ 3, 2, 13, 0, 5, 0, 5, 2, 4, 11, 8], 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([[ 8, 13, 0, 13, 12, 5, 14, 14, 3],
- [10, 15, 12, 1, 7, 14, 5, 4, 10],
- [15, 3, 7, 7, 11, 10, 11, 8, 2]], order=2^4)
+GF([[12, 8, 3, 8, 0, 8, 13, 3, 13],
+ [ 8, 1, 3, 14, 3, 2, 12, 10, 11],
+ [ 0, 9, 12, 10, 7, 12, 6, 15, 11]], order=2^4)
In [22]: c = rs.encode(m); c
Out[22]:
-GF([[ 8, 13, 0, 13, 12, 5, 14, 14, 3, 10, 8, 0, 11, 8, 1],
- [10, 15, 12, 1, 7, 14, 5, 4, 10, 6, 0, 0, 2, 5, 8],
- [15, 3, 7, 7, 11, 10, 11, 8, 2, 3, 7, 12, 2, 13, 4]],
+GF([[12, 8, 3, 8, 0, 8, 13, 3, 13, 5, 4, 12, 4, 11, 12],
+ [ 8, 1, 3, 14, 3, 2, 12, 10, 11, 3, 7, 2, 9, 8, 9],
+ [ 0, 9, 12, 10, 7, 12, 6, 15, 11, 12, 0, 15, 7, 13, 12]],
order=2^4)
@@ -7924,9 +7924,9 @@
In [28]: c
Out[28]:
-GF([[ 2, 13, 0, 13, 12, 5, 14, 14, 3, 10, 8, 0, 11, 8, 1],
- [ 4, 10, 12, 1, 7, 14, 5, 4, 10, 6, 0, 0, 2, 5, 8],
- [14, 6, 9, 15, 12, 3, 11, 8, 2, 3, 7, 12, 2, 13, 4]],
+GF([[14, 8, 3, 8, 0, 8, 13, 3, 13, 5, 4, 12, 4, 11, 12],
+ [14, 13, 3, 14, 3, 2, 12, 10, 11, 3, 7, 2, 9, 8, 9],
+ [ 1, 11, 11, 2, 1, 1, 6, 15, 11, 12, 0, 15, 7, 13, 12]],
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([[ 0, 1, 7, 5, 5],
- [ 1, 10, 0, 1, 3],
- [15, 0, 4, 3, 0]], order=2^4)
+GF([[14, 6, 4, 10, 14],
+ [14, 3, 2, 1, 6],
+ [ 5, 0, 6, 4, 5]], order=2^4)
In [33]: c = rs.encode(m); c
Out[33]:
-GF([[ 0, 1, 7, 5, 5, 5, 15, 15, 4, 1, 5],
- [ 1, 10, 0, 1, 3, 1, 9, 0, 13, 1, 14],
- [15, 0, 4, 3, 0, 8, 14, 13, 0, 5, 14]], order=2^4)
+GF([[14, 6, 4, 10, 14, 4, 1, 11, 11, 6, 13],
+ [14, 3, 2, 1, 6, 4, 7, 13, 5, 14, 6],
+ [ 5, 0, 6, 4, 5, 2, 2, 5, 3, 9, 15]], order=2^4)
Detect no errors in the valid codewords.
@@ -7970,9 +7970,9 @@
In [39]: c
Out[39]:
-GF([[15, 1, 7, 5, 5, 5, 15, 15, 4, 1, 5],
- [ 8, 7, 0, 1, 3, 1, 9, 0, 13, 1, 14],
- [ 4, 11, 11, 13, 6, 10, 14, 13, 0, 5, 14]], order=2^4)
+GF([[15, 6, 4, 10, 14, 4, 1, 11, 11, 6, 13],
+ [ 8, 15, 2, 1, 6, 4, 7, 13, 5, 14, 6],
+ [ 3, 6, 7, 7, 1, 4, 2, 5, 3, 9, 15]], 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 ea2519b01..8023c2b86 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([ 2, 7, 3, 7, 9, 13, 1, 8, 8], order=2^4)
+Out[3]: GF([ 5, 6, 4, 12, 7, 2, 4, 4, 11], order=2^4)
In [4]: c = rs.encode(m); c
-Out[4]: GF([ 2, 7, 3, 7, 9, 13, 1, 8, 8, 1, 9, 5, 9, 1, 3], order=2^4)
+Out[4]: GF([ 5, 6, 4, 12, 7, 2, 4, 4, 11, 11, 10, 10, 4, 3, 7], order=2^4)
Compute the parity symbols only.
In [5]: p = rs.encode(m, output="parity"); p
-Out[5]: GF([1, 9, 5, 9, 1, 3], order=2^4)
+Out[5]: GF([11, 10, 10, 4, 3, 7], order=2^4)
@@ -7904,15 +7904,15 @@
In [7]: GF = rs.field
In [8]: m = GF.Random(rs.k - 4); m
-Out[8]: GF([ 5, 0, 10, 2, 11], order=2^4)
+Out[8]: GF([13, 10, 10, 8, 5], order=2^4)
In [9]: c = rs.encode(m); c
-Out[9]: GF([ 5, 0, 10, 2, 11, 1, 11, 8, 0, 15, 13], order=2^4)
+Out[9]: GF([13, 10, 10, 8, 5, 14, 4, 8, 10, 8, 8], order=2^4)
Compute the parity symbols only.
In [10]: p = rs.encode(m, output="parity"); p
-Out[10]: GF([ 1, 11, 8, 0, 15, 13], order=2^4)
+Out[10]: GF([14, 4, 8, 10, 8, 8], order=2^4)
@@ -7924,24 +7924,24 @@
In [13]: m = GF.Random((3, rs.k)); m
Out[13]:
-GF([[ 2, 5, 0, 13, 6, 2, 6, 6, 13],
- [10, 14, 15, 0, 0, 2, 15, 10, 1],
- [ 2, 9, 1, 9, 11, 1, 7, 11, 0]], order=2^4)
+GF([[12, 11, 10, 2, 4, 14, 2, 9, 2],
+ [ 9, 13, 10, 2, 8, 3, 8, 0, 1],
+ [ 0, 14, 2, 4, 4, 3, 9, 12, 13]], order=2^4)
In [14]: c = rs.encode(m); c
Out[14]:
-GF([[ 2, 5, 0, 13, 6, 2, 6, 6, 13, 8, 5, 9, 9, 5, 6],
- [10, 14, 15, 0, 0, 2, 15, 10, 1, 2, 10, 0, 7, 11, 1],
- [ 2, 9, 1, 9, 11, 1, 7, 11, 0, 12, 4, 1, 15, 2, 14]],
+GF([[12, 11, 10, 2, 4, 14, 2, 9, 2, 13, 5, 8, 0, 7, 2],
+ [ 9, 13, 10, 2, 8, 3, 8, 0, 1, 6, 12, 8, 15, 5, 13],
+ [ 0, 14, 2, 4, 4, 3, 9, 12, 13, 3, 6, 10, 11, 8, 11]],
order=2^4)
Compute the parity symbols only.
In [15]: p = rs.encode(m, output="parity"); p
Out[15]:
-GF([[ 8, 5, 9, 9, 5, 6],
- [ 2, 10, 0, 7, 11, 1],
- [12, 4, 1, 15, 2, 14]], order=2^4)
+GF([[13, 5, 8, 0, 7, 2],
+ [ 6, 12, 8, 15, 5, 13],
+ [ 3, 6, 10, 11, 8, 11]], order=2^4)
@@ -7953,23 +7953,23 @@
In [18]: m = GF.Random((3, rs.k - 4)); m
Out[18]:
-GF([[13, 14, 4, 1, 7],
- [11, 11, 9, 0, 9],
- [14, 15, 3, 5, 0]], order=2^4)
+GF([[ 7, 4, 14, 8, 11],
+ [15, 10, 15, 10, 12],
+ [13, 4, 0, 9, 12]], order=2^4)
In [19]: c = rs.encode(m); c
Out[19]:
-GF([[13, 14, 4, 1, 7, 6, 10, 7, 14, 3, 1],
- [11, 11, 9, 0, 9, 4, 10, 4, 2, 2, 7],
- [14, 15, 3, 5, 0, 7, 0, 6, 3, 8, 5]], order=2^4)
+GF([[ 7, 4, 14, 8, 11, 4, 9, 1, 11, 10, 7],
+ [15, 10, 15, 10, 12, 5, 14, 9, 11, 14, 5],
+ [13, 4, 0, 9, 12, 15, 10, 3, 4, 1, 11]], order=2^4)
Compute the parity symbols only.
In [20]: p = rs.encode(m, output="parity"); p
Out[20]:
-GF([[ 6, 10, 7, 14, 3, 1],
- [ 4, 10, 4, 2, 2, 7],
- [ 7, 0, 6, 3, 8, 5]], order=2^4)
+GF([[ 4, 9, 1, 11, 10, 7],
+ [ 5, 14, 9, 11, 14, 5],
+ [15, 10, 3, 4, 1, 11]], order=2^4)
diff --git a/v0.3.x/api/galois.ReedSolomon/index.html b/v0.3.x/api/galois.ReedSolomon/index.html
index da96e84bb..0a8ef5741 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, 2, 10, 2, 4, 10, 10, 2, 6], order=2^4)
+Out[3]: GF([ 3, 7, 9, 2, 2, 14, 9, 13, 2], order=2^4)
In [4]: c = rs.encode(m); c
-Out[4]: GF([15, 2, 10, 2, 4, 10, 10, 2, 6, 6, 10, 14, 6, 2, 0], order=2^4)
+Out[4]: GF([ 3, 7, 9, 2, 2, 14, 9, 13, 2, 1, 7, 5, 5, 9, 5], 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, 2, 10, 2, 4, 10, 10, 2, 6, 6, 10, 14, 6, 2, 0], order=2^4)
+Out[5]: GF([14, 7, 9, 2, 2, 14, 9, 13, 2, 1, 7, 5, 5, 9, 5], order=2^4)
In [6]: dec_m = rs.decode(c); dec_m
-Out[6]: GF([15, 2, 10, 2, 4, 10, 10, 2, 6], order=2^4)
+Out[6]: GF([ 3, 7, 9, 2, 2, 14, 9, 13, 2], 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, 2, 10, 2, 4, 10, 10, 2, 6], order=2^4), 1)
+Out[8]: (GF([ 3, 7, 9, 2, 2, 14, 9, 13, 2], order=2^4), 1)
In [9]: np.array_equal(dec_m, m)
Out[9]: True
diff --git a/v0.3.x/api/galois.crt/index.html b/v0.3.x/api/galois.crt/index.html
index 817a52e5e..d655bc4bf 100644
--- a/v0.3.x/api/galois.crt/index.html
+++ b/v0.3.x/api/galois.crt/index.html
@@ -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(x^6 + 4x^4 + 4x^3 + 2x^2 + 2x + 3, GF(7))
+Out[6]: Poly(6x^6 + 6x^5 + 2x^4 + 6x^3 + x^2 + 4x + 6, 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 + 2x^2 + 6x + 1, GF(7)),
- Poly(6x^4 + 5x^2 + 4x + 4, GF(7)),
- Poly(5x^5 + 3x^4 + 5x^3 + 6x^2 + 2x, GF(7))]
+[Poly(6x^3 + x^2 + 4x + 2, GF(7)),
+ Poly(3x^4 + x^3 + x^2, GF(7)),
+ Poly(4x^5 + 3x^4 + 6x^3 + 6x^2 + 3x, GF(7))]
In [11]: a = [x_truth % m3, x_truth % m4, x_truth % m5]; a
Out[11]:
-[Poly(3x^2 + 6x + 6, GF(7)),
- Poly(x^3 + 2x^2 + 3x + 4, GF(7)),
- Poly(2x^3 + 4x^2 + 3, GF(7))]
+[Poly(x^2 + 6x + 4, GF(7)),
+ Poly(2x^3 + 3x^2 + 4x + 6, GF(7)),
+ Poly(5x^4 + 3x^2 + 2x + 6, GF(7))]
Solve the system of congruences.
In [12]: x = galois.crt(a, m); x
-Out[12]: Poly(x^6 + 4x^4 + 4x^3 + 2x^2 + 2x + 3, GF(7))
+Out[12]: Poly(6x^6 + 6x^5 + 2x^4 + 6x^3 + x^2 + 4x + 6, GF(7))
Show that the solution satisfies each congruence.
@@ -7929,9 +7929,9 @@
....: ai = x % m[i]
....: print(ai, ai == a[i])
....:
-3x^2 + 6x + 6 True
-x^3 + 2x^2 + 3x + 4 True
-2x^3 + 4x^2 + 3 True
+x^2 + 6x + 4 True
+2x^3 + 3x^2 + 4x + 6 True
+5x^4 + 3x^2 + 2x + 6 True
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 9a4f19dae..995300e12 100644
--- a/v0.3.x/api/galois.fermat_primality_test/index.html
+++ b/v0.3.x/api/galois.fermat_primality_test/index.html
@@ -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, False, True]
+Out[7]: [True, True, False]
And the pseudoprimes base 3 from A005935.
diff --git a/v0.3.x/api/galois.irreducible_poly/index.html b/v0.3.x/api/galois.irreducible_poly/index.html
index 5b8ef3b8f..187bfe669 100644
--- a/v0.3.x/api/galois.irreducible_poly/index.html
+++ b/v0.3.x/api/galois.irreducible_poly/index.html
@@ -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^2 + x + 1, GF(7))
+Out[3]: Poly(x^3 + 2x^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 + 6x^4 + x^3 + 3x^2 + 5x + 1, GF(7))
+Out[7]: Poly(x^5 + 4x^4 + 3x^3 + 5x^2 + 6, GF(7))
In [8]: f.is_irreducible()
Out[8]: True
In [9]: g = f * GF(3); g
-Out[9]: Poly(3x^5 + 4x^4 + 3x^3 + 2x^2 + x + 3, GF(7))
+Out[9]: Poly(3x^5 + 5x^4 + 2x^3 + x^2 + 4, 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 e81ba8e58..9cfe05c1e 100644
--- a/v0.3.x/api/galois.irreducible_polys/index.html
+++ b/v0.3.x/api/galois.irreducible_polys/index.html
@@ -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 0x7f06d4c4ee90>
+Out[5]: <generator object irreducible_polys at 0x7f839dd309c0>
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.lagrange_poly/index.html b/v0.3.x/api/galois.lagrange_poly/index.html
index 510a3205a..f7d1eb859 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([4, 0, 5, 0, 2, 6, 3, 3, 3], order=3^2)
+Out[3]: GF([3, 6, 5, 4, 1, 2, 0, 0, 2], order=3^2)
Find the Lagrange polynomial that interpolates the coordinates.
In [4]: L = galois.lagrange_poly(x, y); L
-Out[4]: Poly(7x^8 + 7x^7 + 5x^6 + 6x^5 + 8x^4 + x^3 + 7x^2 + 4, GF(3^2))
+Out[4]: Poly(4x^8 + 7x^7 + 7x^6 + 4x^5 + 4x^4 + 5x^3 + 4x^2 + 4x + 3, GF(3^2))
Show that the polynomial evaluated at \(x\) is \(y\).
diff --git a/v0.3.x/api/galois.primitive_element/index.html b/v0.3.x/api/galois.primitive_element/index.html
index 539490967..3ebebe8a9 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(2x^3 + x^2 + 2x + 4, GF(7))
+Out[10]: Poly(4x^4 + 4x^3 + 4x^2 + 1, 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(2x^3 + x^2 + 2x + 4, order=7^5)
+Out[11]: GF(4x^4 + 4x^3 + 4x^2 + 1, order=7^5)
In [12]: g.multiplicative_order() == GF.order - 1
Out[12]: True
diff --git a/v0.3.x/api/galois.primitive_poly/index.html b/v0.3.x/api/galois.primitive_poly/index.html
index 1c15a3c0a..f9025a625 100644
--- a/v0.3.x/api/galois.primitive_poly/index.html
+++ b/v0.3.x/api/galois.primitive_poly/index.html
@@ -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 + 3x^2 + 5x + 2, GF(7))
+Out[3]: Poly(x^3 + 6x^2 + x + 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 + 3x^4 + 5x^3 + 6x^2 + 2, GF(7))
+Out[11]: Poly(x^5 + 4x^4 + 2x^3 + x^2 + 2, GF(7))
In [12]: f.is_primitive()
Out[12]: True
In [13]: g = f * GF(3); g
-Out[13]: Poly(3x^5 + 2x^4 + x^3 + 4x^2 + 6, GF(7))
+Out[13]: Poly(3x^5 + 5x^4 + 6x^3 + 3x^2 + 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 a6f944364..2d45a683c 100644
--- a/v0.3.x/api/galois.primitive_polys/index.html
+++ b/v0.3.x/api/galois.primitive_polys/index.html
@@ -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 0x7f06d4c4f350>
+Out[5]: <generator object primitive_polys at 0x7f839dd33220>
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 12fea8f5b..c92cc3a89 100644
--- a/v0.3.x/api/galois.primitive_root/index.html
+++ b/v0.3.x/api/galois.primitive_root/index.html
@@ -8053,7 +8053,7 @@
Out[20]: 1000000000000000035000054
In [21]: galois.primitive_root(n, method="random")
-Out[21]: 372575130228424947788782
+Out[21]: 562444868854612792727866
diff --git a/v0.3.x/api/galois.primitive_roots/index.html b/v0.3.x/api/galois.primitive_roots/index.html
index a5c43bc5e..70fc984f7 100644
--- a/v0.3.x/api/galois.primitive_roots/index.html
+++ b/v0.3.x/api/galois.primitive_roots/index.html
@@ -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 0x7f06d4c4f5b0>
+Out[7]: <generator object primitive_roots at 0x7f839dd32b00>
In [8]: [next(generator) for _ in range(3)]
Out[8]: [24, 22, 21]
diff --git a/v0.3.x/api/galois.prod/index.html b/v0.3.x/api/galois.prod/index.html
index c80c03012..b12e62d14 100644
--- a/v0.3.x/api/galois.prod/index.html
+++ b/v0.3.x/api/galois.prod/index.html
@@ -7828,21 +7828,21 @@
In [2]: GF = galois.GF(7)
In [3]: f1 = galois.Poly.Random(2, field=GF); f1
-Out[3]: Poly(4x^2 + 2x + 3, GF(7))
+Out[3]: Poly(2x^2 + 4, GF(7))
In [4]: f2 = galois.Poly.Random(3, field=GF); f2
-Out[4]: Poly(4x^3 + x^2 + 2x + 3, GF(7))
+Out[4]: Poly(x^3 + 3x + 4, GF(7))
In [5]: f3 = galois.Poly.Random(4, field=GF); f3
-Out[5]: Poly(x^4 + 2x^2 + 3x + 3, GF(7))
+Out[5]: Poly(4x^4 + 6x^3 + 3x^2 + x, GF(7))
Compute the product of three polynomials.
In [6]: galois.prod(f1, f2, f3)
-Out[6]: Poly(2x^9 + 5x^8 + 5x^7 + 2x^4 + 6x^2 + 6, GF(7))
+Out[6]: Poly(x^9 + 5x^8 + 4x^7 + 3x^6 + 2x^4 + 4x^2 + 2x, GF(7))
In [7]: f1 * f2 * f3
-Out[7]: Poly(2x^9 + 5x^8 + 5x^7 + 2x^4 + 6x^2 + 6, GF(7))
+Out[7]: Poly(x^9 + 5x^8 + 4x^7 + 3x^6 + 2x^4 + 4x^2 + 2x, GF(7))
diff --git a/v0.3.x/api/galois.typing.ShapeLike/index.html b/v0.3.x/api/galois.typing.ShapeLike/index.html
index 2ca03c5e7..497bdaaa5 100644
--- a/v0.3.x/api/galois.typing.ShapeLike/index.html
+++ b/v0.3.x/api/galois.typing.ShapeLike/index.html
@@ -7756,7 +7756,7 @@
In [1]: GF = galois.GF(3**5)
In [2]: x = GF.Random(4); x
-Out[2]: GF([178, 172, 59, 241], order=3^5)
+Out[2]: GF([219, 228, 73, 229], order=3^5)
In [3]: x.shape
Out[3]: (4,)
@@ -7767,27 +7767,27 @@
iterable, ()
or []
, represents a 0-D array (scalar).
In [4]: x = GF.Random((2, 3)); x
Out[4]:
-GF([[ 95, 194, 111],
- [195, 17, 183]], order=3^5)
+GF([[ 88, 184, 131],
+ [ 60, 110, 42]], order=3^5)
In [5]: x.shape
Out[5]: (2, 3)
In [6]: x = GF.Random([2, 3, 4]); x
Out[6]:
-GF([[[229, 115, 185, 12],
- [210, 106, 119, 42],
- [ 62, 118, 98, 68]],
+GF([[[124, 31, 59, 177],
+ [213, 173, 186, 166],
+ [ 54, 242, 40, 119]],
- [[155, 207, 79, 98],
- [ 9, 178, 25, 3],
- [208, 134, 153, 4]]], order=3^5)
+ [[125, 147, 116, 121],
+ [180, 81, 132, 131],
+ [182, 42, 26, 195]]], order=3^5)
In [7]: x.shape
Out[7]: (2, 3, 4)
In [8]: x = GF.Random(()); x
-Out[8]: GF(212, order=3^5)
+Out[8]: GF(33, order=3^5)
In [9]: x.shape
Out[9]: ()
diff --git a/v0.3.x/basic-usage/array-creation/index.html b/v0.3.x/basic-usage/array-creation/index.html
index 6bced5a86..8ef8b95b4 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([566, 472, 347, 286], order=2^10)
+Out[93]: GF([302, 798, 729, 464], 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([ 645227892947816375756107097864, 889687374296644455173138754008,
- 1010627866593864881984551226991, 469893071539974484466935920922],
+GF([ 40018422420484499393093200610, 1103213387805423169473010788732,
+ 1063315987903958219322465525619, 859349201801127771404919990300],
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 e97ecf1a3..4e5ac1fd8 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([[ 2α^2 + α + 2, 2α^2 + 2,
- 2α^4 + α^3 + 2α^2 + α, 2α^3 + α^2 + 2α,
- α^4 + α^2 + 2α],
- [ 2α^3 + 2α + 1, 2α^4 + α^3 + 2α^2 + 2,
- 2α^4 + 2α^3 + α^2 + 2α + 1, 2α^3 + α + 2,
- 2α^4 + 2α^3 + 2α + 1],
- [ 2α^4, α^4 + 2α^3 + α^2 + 2α + 1,
- α^4 + α^3 + α, α^4 + 2α^2 + α + 1,
- 2α^4 + α^3],
- [ α^4 + 2α^3 + α + 2, 2α^2 + α + 1,
- 2α^4 + 2α^2 + 2α + 2, 2α^3 + 2α^2 + 2α + 1,
- α^3 + 2α^2 + 1],
- [ 2α^4 + 2α^2 + 2, 2α^4 + α^2 + α,
- 2α^4 + 2α^2 + α + 2, 2α^3 + 2α^2 + α + 2,
- 2α^4 + 1]], order=3^5)
+GF([[ α^4 + α^3 + α^2 + 1, 2α^4 + 2α^3 + α^2,
+ 2α^4 + 2α^3 + α + 1, α^3 + 2α^2 + 2,
+ α^4 + α^3 + α],
+ [ α^4 + α^2 + α + 2, 2α^4 + 2α^2 + 2,
+ α^4 + α^3 + α^2 + 2α, α^3 + 2α + 1,
+ 2α^4 + α^3 + α^2 + 2],
+ [ 2α^4 + α^3 + 2α, α^4 + 2α^3 + 2α^2 + 2α + 2,
+ α^2 + α, α^2 + α + 2,
+ 2α^4 + α^3 + 2α^2 + 2α + 1],
+ [ 2α^4 + α^3 + 2α^2 + α + 1, α^4 + 2α^2 + α + 2,
+ α^4 + 2α^3 + 2α, α^4 + α^2 + α + 2,
+ 2α^4 + 2α^2 + 2α + 2],
+ [ 2α^3 + 2α, α^4 + α^3 + α^2 + 2α + 2,
+ α^4 + 2α^3, α^4 + α^3 + α^2 + 1,
+ 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([[ 2α^2 + α + 2, 2α^2 + 2, 2α^4 + α^3 + 2α^2 + α, 2α^3 + α^2 + 2α, α^4 + α^2 + 2α],
- [ 2α^3 + 2α + 1, 2α^4 + α^3 + 2α^2 + 2, 2α^4 + 2α^3 + α^2 + 2α + 1, 2α^3 + α + 2, 2α^4 + 2α^3 + 2α + 1],
- [ 2α^4, α^4 + 2α^3 + α^2 + 2α + 1, α^4 + α^3 + α, α^4 + 2α^2 + α + 1, 2α^4 + α^3],
- [ α^4 + 2α^3 + α + 2, 2α^2 + α + 1, 2α^4 + 2α^2 + 2α + 2, 2α^3 + 2α^2 + 2α + 1, α^3 + 2α^2 + 1],
- [ 2α^4 + 2α^2 + 2, 2α^4 + α^2 + α, 2α^4 + 2α^2 + α + 2, 2α^3 + 2α^2 + α + 2, 2α^4 + 1]], order=3^5)
+GF([[ α^4 + α^3 + α^2 + 1, 2α^4 + 2α^3 + α^2, 2α^4 + 2α^3 + α + 1, α^3 + 2α^2 + 2, α^4 + α^3 + α],
+ [ α^4 + α^2 + α + 2, 2α^4 + 2α^2 + 2, α^4 + α^3 + α^2 + 2α, α^3 + 2α + 1, 2α^4 + α^3 + α^2 + 2],
+ [ 2α^4 + α^3 + 2α, α^4 + 2α^3 + 2α^2 + 2α + 2, α^2 + α, α^2 + α + 2, 2α^4 + α^3 + 2α^2 + 2α + 1],
+ [ 2α^4 + α^3 + 2α^2 + α + 1, α^4 + 2α^2 + α + 2, α^4 + 2α^3 + 2α, α^4 + α^2 + α + 2, 2α^4 + 2α^2 + 2α + 2],
+ [ 2α^3 + 2α, α^4 + α^3 + α^2 + 2α + 2, α^4 + 2α^3, α^4 + α^3 + α^2 + 1, 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 bf628338f..4457fef8a 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(18x^4 + 178x^3 + 76x^2 + 226x + 1, GF(3^5))
+Out[23]: Poly(208x^4 + 183x^3 + 159x^2 + 108x + 65, GF(3^5))
Methods¶
diff --git a/v0.3.x/getting-started/index.html b/v0.3.x/getting-started/index.html
index 085b0358b..baef5e6d1 100644
--- a/v0.3.x/getting-started/index.html
+++ b/v0.3.x/getting-started/index.html
@@ -7799,7 +7799,7 @@ Install the packageIn [1]: import galois
In [2]: galois.__version__
-Out[2]: '0.3.6.dev16+g3ab62683'
+Out[2]: '0.3.6.dev17+g737239b2'
Create a FieldArray
subclass¶
diff --git a/v0.3.x/objects.inv b/v0.3.x/objects.inv
index 5cab6ceb1..57c639a0c 100644
Binary files a/v0.3.x/objects.inv and b/v0.3.x/objects.inv differ
diff --git a/v0.3.x/release-notes/v0.3/index.html b/v0.3.x/release-notes/v0.3/index.html
index 5aab7577a..c887b342a 100644
--- a/v0.3.x/release-notes/v0.3/index.html
+++ b/v0.3.x/release-notes/v0.3/index.html
@@ -7609,6 +7609,13 @@
v0.3.5
+
+
+
+
+ v0.3.6
+
+
@@ -7784,6 +7791,13 @@
v0.3.5
+
+
+
+
+ v0.3.6
+
+
@@ -8039,6 +8053,21 @@ ChangesContributors¶
Matt Hostetter (@mhostetter)
+
+v0.3.6¶
+Released October 1, 2023
+Changes¶
+
+Added support for NumPy 1.25. (#507)
+Added support for Numba 0.58. (#507)
+Fixed rare overflow with computing a large modular exponentiation of polynomials. (#488)
+Resolved various deprecations warnings with NumPy 1.25. (#492)
+
+Contributors¶
+
+Iyán Méndez Veiga (@iyanmv)
+
+Matt Hostetter (@mhostetter)
@@ -8047,7 +8076,7 @@ Contributors 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, "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"]], "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"]], "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"]], "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, 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, 76, 77, 78, 82, 91, 97, 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, 82, 89, 91, 93, 94, 97, 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, 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, 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, 82, 83, 84, 89, 90, 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, 159, 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, 91, 93, 94, 101, 102, 107, 108, 109, 110, 113, 115, 117, 129, 135, 139, 142, 152, 159, 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, 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, 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, 82, 90, 91, 97, 101, 102, 107, 109, 110, 113, 117, 170, 173, 176, 177, 178, 180, 185, 186, 187, 189, 253, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "17": [25, 31, 32, 33, 45, 65, 69, 73, 75, 82, 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, 76, 82, 89, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 156, 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, 101, 102, 103, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 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, 76, 82, 89, 90, 91, 92, 93, 94, 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, 64, 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, 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, 91, 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, 90, 91, 92, 101, 102, 107, 109, 110, 113, 115, 117, 169, 170, 173, 177, 178, 184, 187, 209, 228, 241, 250, 254, 255, 256, 258, 259, 260, 262, 268, 276, 277], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 76, 82, 90, 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, 65, 67, 69, 73, 75, 78, 82, 90, 91, 92, 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, 65, 69, 75, 76, 82, 91, 92, 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, 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, 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, 76, 82, 90, 91, 97, 101, 102, 107, 109, 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, 90, 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, 82, 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, 110, 113, 115, 155, 173, 177, 178, 199, 223, 254, 255, 256, 258, 259, 260, 268, 276, 277], "29": [31, 32, 64, 75, 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, 82, 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, 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, 253, 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, 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, 93, 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, 253, 254, 256, 258, 259, 260, 266, 268, 271, 276, 277], "41": [31, 75, 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, 160, 163, 164, 165, 167, 170, 175, 181, 182, 187, 188, 191, 194, 197, 206, 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, 222, 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, 115, 155, 177, 199, 254, 255, 256, 258, 259, 260, 268, 270, 271, 276, 277], "236": [61, 91, 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, 254, 259, 268], "204": [61, 91, 254, 266], "55": [61, 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, "100": [75, 78, 80, 91, 111, 112, 115, 210, 231, 232, 247, 249, 254, 255, 256, 257, 263, 266, 268, 269, 270, 271, 272, 274], "108": [75, 91, 254, 256, 266, 271], "58": [75, 91, 240, 241, 254, 256, 259, 260, 268, 271, 274, 276, 277], "128": [75, 91, 254, 268], "137": [75, 91, 254, 259, 268, 271], "155": [75, 91, 254], "129": [75, 91, 254, 268, 271], "75": [75, 91, 228, 254, 256, 258, 268, 276], "110": [75, 253, 254, 256], "143x": 75, "7x": [75, 170, 175, 181, 182, 187, 188, 222], "218": [75, 91, 141, 201, 254, 268, 271], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "102": [75, 91, 254, 256, 268, 269, 271], "64": [75, 91, 210, 231, 254, 256, 260, 268, 269, 276, 277], "220": [75, 254, 268, 269], "197": [75, 91, 240, 241, 254, 268], "125": [75, 91, 253, 254], "144": [75, 91, 254], "230": [75, 91, 254, 255, 266], "57": [75, 91, 115, 254, 255, 256, 260, 268, 271, 274, 276, 277], "134": [75, 91, 254, 268, 271], "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], "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], "170": [91, 254], "192": [91, 141, 254, 266, 268], "146": [91, 141, 254, 266, 268], "51": [91, 254, 256, 259, 260, 266, 268, 272, 274, 276, 277], "160": [91, 254], "216": [91, 254, 255, 256, 268], "150": [91, 210, 231, 254, 268, 271], "56": [91, 115, 254, 255, 256, 260, 268, 271, 276, 277], "158": [91, 254], "219": [91, 253, 254, 268], "223": [91, 132, 171, 172, 173, 174, 183, 254], "184": [91, 253, 254, 268], "193": [91, 254, 255, 256, 268, 271, 272], "52": [91, 115, 254, 255, 256, 259, 260, 268, 271, 276, 277], "86": [91, 254, 256, 268, 276], "198": [91, 138, 254], "46": [91, 115, 155, 199, 254, 255, 256, 260, 268, 273, 276, 277], "124": [91, 132, 152, 253, 254, 255, 256], "166": [91, 253, 254, 268, 271], "235": [91, 254, 268, 271], "179": [91, 254, 255, 259, 266, 268], "136": [91, 254, 271], "104": [91, 201, 254, 256], "114": [91, 254, 255, 256, 271], "175": [91, 254], "61": [91, 226, 254, 256, 260, 271, 276, 277], "201": [91, 141, 145, 254, 271], "anoth": [91, 108, 260, 277], "242": [91, 253, 254, 255, 256, 271], "208": [91, 254], "232": [91, 254, 268, 271], "240": [91, 254, 271], "171": [91, 152, 254, 271, 272], "173": [91, 253, 254, 266], "213": [91, 253, 254, 256, 268], "185": [91, 133, 141, 254, 255, 256, 272], "83": [91, 242, 245, 254, 256, 268, 271, 276], "120": [91, 199, 254, 263], "60": [91, 216, 253, 254, 255, 256, 260, 268, 272, 276, 277], "224": [91, 254, 266], "140": [91, 254], "200": [91, 254, 258, 268, 271], "50": [91, 254, 256, 260, 268, 271, 272, 276, 277], "234": [91, 152, 254], "190": [91, 254, 272], "168": [91, 254, 268, 271], "172": [91, 254, 271], "84": [91, 141, 254, 256, 268, 276], "152": [91, 254, 268], "98": [91, 254, 256, 268], "130": [91, 254], "156": [91, 141, 254, 268], "76": [91, 254, 256, 268, 271, 276], "174": [91, 254, 268], "182": [91, 253, 254, 268], "214": [91, 133, 254, 256, 271], "212": [91, 254, 268], "92": [91, 254, 256, 268, 269, 271, 276], "180": [91, 253, 254], "188": [91, 254], "82": [91, 228, 254, 256, 266, 268, 271, 276], "186": [91, 253, 254, 268], "106": [91, 254, 256], "162": [91, 254, 271], "194": [91, 254], "126": [91, 254], "90": [91, 228, 254, 256, 268, 271, 276], "122": [91, 254, 268], "68": [91, 254, 256, 260, 268, 274, 276], "164": [91, 254, 268], "94": [91, 254, 256, 268, 276], "210": [91, 254, 271], "78": [91, 254, 255, 256, 268, 270, 276], "96": [91, 141, 254, 256, 268, 271, 274], "112": [91, 243, 254, 266], "196": [91, 254], "228": [91, 253, 254, 268], "238": [91, 254], "74": [91, 228, 254, 256, 260, 271, 276], "48": [91, 115, 240, 241, 254, 255, 256, 260, 268, 270, 271, 276, 277], "62": [91, 228, 254, 256, 260, 268, 270, 276, 277], "70": [91, 254, 256, 260, 271, 273, 276], "226": [91, 254, 268, 271], "80": [91, 214, 254, 256, 268, 271, 276], "178": [91, 254, 268, 271], "142": [91, 254], "72": [91, 254, 256, 260, 268, 271, 276], "118": [91, 254], "116": [91, 253, 254], "202": [91, 254, 268], "93": [91, 254, 256, 271, 276], "67": [91, 254, 256, 260, 266, 268, 271, 272, 276], "107": [91, 197, 226, 254, 256], "101": [91, 254, 256], "195": [91, 253, 254, 256, 271], "169": [91, 254], "215": [91, 254, 268, 271], "103": [91, 141, 254, 256], "141": [91, 254, 268], "241": [91, 254, 255, 266, 268, 271], "199": [91, 254, 268], "139": [91, 254], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 276, 277], "117": [91, 135, 139, 254, 259], "227": [91, 166, 254], "65": [91, 171, 172, 173, 174, 183, 254, 256, 259, 260, 268, 270, 271, 276, 277], "73": [91, 133, 253, 254, 256, 260, 268, 276], "97": [91, 254, 256, 268], "53": [91, 228, 254, 256, 260, 268, 271, 276, 277], "151": [91, 254, 272], "233": [91, 254, 268], "85": [91, 171, 172, 173, 174, 183, 254, 256, 268, 272, 276], "203": [91, 254], "131": [91, 253, 254, 268, 271], "133": [91, 254], "217": [91, 254, 271], "189": [91, 254], "71": [91, 254, 256, 260, 268, 271, 276], "177": [91, 253, 254, 268], "153": [91, 166, 254, 256, 268, 269], "135": [91, 254, 266], "63": [91, 254, 256, 260, 268, 276, 277], "109": [91, 242, 245, 254, 256, 266, 271], "79": [91, 228, 254, 256, 268, 274, 276], "239": [91, 254], "207": [91, 93, 254, 268, 271], "59": [91, 173, 253, 254, 256, 260, 268, 271, 276, 277], "81": [91, 228, 237, 253, 254, 255, 256, 268, 272, 274, 276], "229": [91, 253, 254, 268], "221": [91, 197, 254, 271], "149": [91, 219, 220, 224, 254, 268], "89": [91, 226, 254, 256, 268, 276], "115": [91, 254, 268, 271], "91": [91, 195, 228, 254, 256, 268, 276], "127": [91, 226, 227, 254, 266, 271], "147": [91, 253, 254, 268], "95": [91, 254, 256, 266, 268, 271], "191": [91, 254, 268, 271], "119": [91, 137, 138, 253, 254], "111": [91, 254, 256], "43": [91, 115, 137, 177, 254, 255, 256, 258, 259, 260, 268, 276, 277], "47": [91, 115, 254, 255, 256, 260, 266, 268, 274, 276, 277], "163": [91, 141, 254, 255, 271], "145": [91, 254, 268], "167": [91, 254, 256, 268], "157": [91, 254], "183": [91, 254, 256], "105": [91, 254, 256], "237": [91, 254, 271], "87": [91, 254, 256, 266, 268, 274, 276], "161": [91, 254, 268, 272], "123": [91, 141, 145, 254, 256, 271], "49": [91, 254, 255, 256, 260, 268, 272, 276, 277], "225": [91, 138, 254, 271], "181": [91, 197, 254, 269, 271], "159": [91, 254, 271], "211": [91, 254], "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, 156], "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, 152, 259], "hex": [135, 259, 271], "_gener": 137, "56x": 137, "228x": 137, "157x": 137, "218x": 137, "148x": 137, "194x": 137, "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, 253, 254, 259, 271], "215x": 138, "90x": 138, "183x": [138, 259, 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, 160, 165, 167, 194, 197, 206, 222, 236, 238, 243, 259, 260], "6x": [152, 157, 158, 193, 194, 206, 236, 238, 243, 260, 270, 271], "35x": 152, "22x": [152, 170, 187], "58x": 152, "29x": [152, 173], "117x": 152, "234x": 152, "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], "49x": 156, "114x": [156, 166, 271], "99x": 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], "12x": [159, 175, 181, 182, 188], "11x": [159, 169, 170, 184, 187], "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, "202x": 166, "153x": 166, "107x": [166, 173], "187x": 166, "66x": 166, "221x": 166, "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, 270], "15x": [170, 173, 175, 181, 182, 187, 188], "18x": [170, 173, 187], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "25x": [170, 187, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "232x": 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, "239x": 173, "216x": [173, 271], "126x": 173, "190x": 173, "191x": 173, "96x": [173, 271], "116x": 173, "137x": 173, "26x": 173, "203x": [173, 271], "23x": 173, "208x": [173, 259], "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], "0x7f839dd309c0": 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, 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, "0x7f839dd33220": 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, "562444868854612792727866": 240, "0x7f839dd32b00": 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, "88": [253, 254, 256, 268, 269, 271, 276], "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], "176": [254, 271], "209": [254, 256], "essenti": [254, 260], "how": [254, 260, 263, 264, 273], "66": [254, 256, 260, 268, 276], "99": [254, 256, 268, 271], "154": 254, "165": [254, 268], "across": [254, 274], "target": [254, 271], "axi": 254, "187": [254, 271], "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, 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, 256], "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], "798": 256, "729": 256, "464": 256, "40018422420484499393093200610": 256, "1103213387805423169473010788732": 256, "1063315987903958219322465525619": 256, "859349201801127771404919990300": 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], "159x": [259, 271], "108x": 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], "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, "dev17": 266, "g737239b2": 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, "83x": 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