diff --git a/v0.4.x/.doctrees/api/galois.BCH.decode.doctree b/v0.4.x/.doctrees/api/galois.BCH.decode.doctree index 1ecea09e4..6f7ba8319 100644 Binary files a/v0.4.x/.doctrees/api/galois.BCH.decode.doctree and b/v0.4.x/.doctrees/api/galois.BCH.decode.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.BCH.detect.doctree b/v0.4.x/.doctrees/api/galois.BCH.detect.doctree index d030c7f06..61601ba7c 100644 Binary files a/v0.4.x/.doctrees/api/galois.BCH.detect.doctree and b/v0.4.x/.doctrees/api/galois.BCH.detect.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.BCH.doctree b/v0.4.x/.doctrees/api/galois.BCH.doctree index b9f08d35c..79c4231af 100644 Binary files a/v0.4.x/.doctrees/api/galois.BCH.doctree and b/v0.4.x/.doctrees/api/galois.BCH.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.BCH.encode.doctree b/v0.4.x/.doctrees/api/galois.BCH.encode.doctree index 5398f3773..48ca7dc65 100644 Binary files a/v0.4.x/.doctrees/api/galois.BCH.encode.doctree and b/v0.4.x/.doctrees/api/galois.BCH.encode.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.Random.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.Random.doctree index 4355981fa..3dbc81052 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.Random.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.Random.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree index eb2f0b1e2..e0a82fe03 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.column_space.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.column_space.doctree index bc6482215..ee249aada 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.column_space.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.column_space.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.left_null_space.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.left_null_space.doctree index 3fd627b53..ff9882727 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.left_null_space.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.left_null_space.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.log.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.log.doctree index 0f3e4b08f..d4f59b38f 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.log.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.log.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree index 5456b29d9..a889e1c11 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.null_space.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.null_space.doctree index c55b42cd0..18254252e 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.null_space.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.null_space.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.FieldArray.row_space.doctree b/v0.4.x/.doctrees/api/galois.FieldArray.row_space.doctree index a5f8eecb1..ef9272150 100644 Binary files a/v0.4.x/.doctrees/api/galois.FieldArray.row_space.doctree and b/v0.4.x/.doctrees/api/galois.FieldArray.row_space.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.Poly.Random.doctree b/v0.4.x/.doctrees/api/galois.Poly.Random.doctree index 24e9ea5ae..46516b785 100644 Binary files a/v0.4.x/.doctrees/api/galois.Poly.Random.doctree and b/v0.4.x/.doctrees/api/galois.Poly.Random.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.Poly.derivative.doctree b/v0.4.x/.doctrees/api/galois.Poly.derivative.doctree index ec00e3723..3fa434c67 100644 Binary files a/v0.4.x/.doctrees/api/galois.Poly.derivative.doctree and b/v0.4.x/.doctrees/api/galois.Poly.derivative.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.Poly.field.doctree b/v0.4.x/.doctrees/api/galois.Poly.field.doctree index 7d32e5aec..33b895eaf 100644 Binary files a/v0.4.x/.doctrees/api/galois.Poly.field.doctree and b/v0.4.x/.doctrees/api/galois.Poly.field.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.Poly.is_irreducible.doctree b/v0.4.x/.doctrees/api/galois.Poly.is_irreducible.doctree index ca4b7ef3e..366a394b6 100644 Binary files a/v0.4.x/.doctrees/api/galois.Poly.is_irreducible.doctree and b/v0.4.x/.doctrees/api/galois.Poly.is_irreducible.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.ReedSolomon.decode.doctree b/v0.4.x/.doctrees/api/galois.ReedSolomon.decode.doctree index 40ae24823..4c4967ec3 100644 Binary files a/v0.4.x/.doctrees/api/galois.ReedSolomon.decode.doctree and b/v0.4.x/.doctrees/api/galois.ReedSolomon.decode.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.ReedSolomon.detect.doctree b/v0.4.x/.doctrees/api/galois.ReedSolomon.detect.doctree index 578f50735..5106c8305 100644 Binary files a/v0.4.x/.doctrees/api/galois.ReedSolomon.detect.doctree and b/v0.4.x/.doctrees/api/galois.ReedSolomon.detect.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.ReedSolomon.doctree b/v0.4.x/.doctrees/api/galois.ReedSolomon.doctree index e65a0003b..77a656437 100644 Binary files a/v0.4.x/.doctrees/api/galois.ReedSolomon.doctree and b/v0.4.x/.doctrees/api/galois.ReedSolomon.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.ReedSolomon.encode.doctree b/v0.4.x/.doctrees/api/galois.ReedSolomon.encode.doctree index bdadaaa45..4798b40f4 100644 Binary files a/v0.4.x/.doctrees/api/galois.ReedSolomon.encode.doctree and b/v0.4.x/.doctrees/api/galois.ReedSolomon.encode.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.crt.doctree b/v0.4.x/.doctrees/api/galois.crt.doctree index 00a9a4ea6..fa7fcd222 100644 Binary files a/v0.4.x/.doctrees/api/galois.crt.doctree and b/v0.4.x/.doctrees/api/galois.crt.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.fermat_primality_test.doctree b/v0.4.x/.doctrees/api/galois.fermat_primality_test.doctree index aeaaa94fb..39f07c7a2 100644 Binary files a/v0.4.x/.doctrees/api/galois.fermat_primality_test.doctree and b/v0.4.x/.doctrees/api/galois.fermat_primality_test.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.irreducible_poly.doctree b/v0.4.x/.doctrees/api/galois.irreducible_poly.doctree index a9c9d4321..9a5dd13eb 100644 Binary files a/v0.4.x/.doctrees/api/galois.irreducible_poly.doctree and b/v0.4.x/.doctrees/api/galois.irreducible_poly.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.irreducible_polys.doctree b/v0.4.x/.doctrees/api/galois.irreducible_polys.doctree index abbee8f99..60262cca8 100644 Binary files a/v0.4.x/.doctrees/api/galois.irreducible_polys.doctree and b/v0.4.x/.doctrees/api/galois.irreducible_polys.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.lagrange_poly.doctree b/v0.4.x/.doctrees/api/galois.lagrange_poly.doctree index 7222bb070..f10884359 100644 Binary files a/v0.4.x/.doctrees/api/galois.lagrange_poly.doctree and b/v0.4.x/.doctrees/api/galois.lagrange_poly.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.primitive_element.doctree b/v0.4.x/.doctrees/api/galois.primitive_element.doctree index f0042fde8..b7e9cbd1f 100644 Binary files a/v0.4.x/.doctrees/api/galois.primitive_element.doctree and b/v0.4.x/.doctrees/api/galois.primitive_element.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.primitive_poly.doctree b/v0.4.x/.doctrees/api/galois.primitive_poly.doctree index 4c9f2d738..2491d059c 100644 Binary files a/v0.4.x/.doctrees/api/galois.primitive_poly.doctree and b/v0.4.x/.doctrees/api/galois.primitive_poly.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.primitive_polys.doctree b/v0.4.x/.doctrees/api/galois.primitive_polys.doctree index 944b08b8f..90ccc9b91 100644 Binary files a/v0.4.x/.doctrees/api/galois.primitive_polys.doctree and b/v0.4.x/.doctrees/api/galois.primitive_polys.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.primitive_root.doctree b/v0.4.x/.doctrees/api/galois.primitive_root.doctree index b1fa96070..f71648127 100644 Binary files a/v0.4.x/.doctrees/api/galois.primitive_root.doctree and b/v0.4.x/.doctrees/api/galois.primitive_root.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.primitive_roots.doctree b/v0.4.x/.doctrees/api/galois.primitive_roots.doctree index 78012a5b8..1a986678e 100644 Binary files a/v0.4.x/.doctrees/api/galois.primitive_roots.doctree and b/v0.4.x/.doctrees/api/galois.primitive_roots.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.prod.doctree b/v0.4.x/.doctrees/api/galois.prod.doctree index da43cd5e4..0663a15a9 100644 Binary files a/v0.4.x/.doctrees/api/galois.prod.doctree and b/v0.4.x/.doctrees/api/galois.prod.doctree differ diff --git a/v0.4.x/.doctrees/api/galois.typing.ShapeLike.doctree b/v0.4.x/.doctrees/api/galois.typing.ShapeLike.doctree index 927892c22..ef9bf750c 100644 Binary files a/v0.4.x/.doctrees/api/galois.typing.ShapeLike.doctree and b/v0.4.x/.doctrees/api/galois.typing.ShapeLike.doctree differ diff --git a/v0.4.x/.doctrees/basic-usage/array-creation.doctree b/v0.4.x/.doctrees/basic-usage/array-creation.doctree index f0d25a332..088a32983 100644 Binary files a/v0.4.x/.doctrees/basic-usage/array-creation.doctree and b/v0.4.x/.doctrees/basic-usage/array-creation.doctree differ diff --git a/v0.4.x/.doctrees/basic-usage/element-representation.doctree b/v0.4.x/.doctrees/basic-usage/element-representation.doctree index be6eb193d..40b9d6aab 100644 Binary files a/v0.4.x/.doctrees/basic-usage/element-representation.doctree and b/v0.4.x/.doctrees/basic-usage/element-representation.doctree differ diff --git a/v0.4.x/.doctrees/basic-usage/poly.doctree b/v0.4.x/.doctrees/basic-usage/poly.doctree index 2040feb2f..c98c3404e 100644 Binary files a/v0.4.x/.doctrees/basic-usage/poly.doctree and b/v0.4.x/.doctrees/basic-usage/poly.doctree differ diff --git a/v0.4.x/.doctrees/environment.pickle b/v0.4.x/.doctrees/environment.pickle index 90604e6e9..d7cb62d49 100644 Binary files a/v0.4.x/.doctrees/environment.pickle and b/v0.4.x/.doctrees/environment.pickle differ diff --git a/v0.4.x/.doctrees/getting-started.doctree b/v0.4.x/.doctrees/getting-started.doctree index d095d1921..d1558d875 100644 Binary files a/v0.4.x/.doctrees/getting-started.doctree and b/v0.4.x/.doctrees/getting-started.doctree differ diff --git a/v0.4.x/.doctrees/release-notes/v0.4.doctree b/v0.4.x/.doctrees/release-notes/v0.4.doctree index 7b8b781ed..892090912 100644 Binary files a/v0.4.x/.doctrees/release-notes/v0.4.doctree and b/v0.4.x/.doctrees/release-notes/v0.4.doctree differ diff --git a/v0.4.x/_sources/release-notes/v0.4.md.txt b/v0.4.x/_sources/release-notes/v0.4.md.txt index 73edda7c9..b904a1a41 100644 --- a/v0.4.x/_sources/release-notes/v0.4.md.txt +++ b/v0.4.x/_sources/release-notes/v0.4.md.txt @@ -34,3 +34,15 @@ tocdepth: 2 - Semjon Kravtšenko ([@semjon00](https://github.com/semjon00)) - [@MrVeka](https://github.com/MrVeka) - Matt Hostetter ([@mhostetter](https://github.com/mhostetter)) + +## v0.4.2 + +*Released September 5, 2024* + +### Changes + +- Added support for NumPy 2.1. ([#567](https://github.com/mhostetter/galois/issues/567)) + +### Contributors + +- Matt Hostetter ([@mhostetter](https://github.com/mhostetter)) diff --git a/v0.4.x/api/galois.BCH.decode/index.html b/v0.4.x/api/galois.BCH.decode/index.html index 2fbcc02b7..15068f5c4 100644 --- a/v0.4.x/api/galois.BCH.decode/index.html +++ b/v0.4.x/api/galois.BCH.decode/index.html @@ -7937,10 +7937,10 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([0, 0, 1, 1, 0, 0, 1], order=2) +Out[3]: GF([1, 0, 1, 1, 1, 0, 1], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0], order=2) +Out[4]: GF([1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], order=2)

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

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

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

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

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

Decode the codeword and recover the message.

In [28]: d = bch.decode(c); d
 Out[28]: 
-GF([[1, 0, 0, 1, 1, 0, 1],
-    [0, 0, 0, 0, 1, 0, 0],
-    [1, 0, 0, 1, 1, 0, 1]], order=2)
+GF([[0, 1, 0, 1, 1, 0, 1],
+    [1, 1, 0, 0, 0, 1, 0],
+    [0, 1, 1, 0, 0, 0, 1]], order=2)
 
 In [29]: np.array_equal(d, m)
 Out[29]: True
@@ -8052,9 +8052,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, 0, 0, 1, 1, 0, 1],
-     [0, 0, 0, 0, 1, 0, 0],
-     [1, 0, 0, 1, 1, 0, 1]], order=2),
+(GF([[0, 1, 0, 1, 1, 0, 1],
+     [1, 1, 0, 0, 0, 1, 0],
+     [0, 1, 1, 0, 0, 0, 1]], order=2),
  array([0, 1, 2]))
 
 In [31]: np.array_equal(d, m)
@@ -8070,15 +8070,15 @@
 
 In [34]: m = GF.Random((3, bch.k - 3)); m
 Out[34]: 
-GF([[0, 0, 1, 0],
-    [1, 0, 1, 0],
-    [0, 0, 1, 0]], order=2)
+GF([[0, 0, 0, 1],
+    [0, 0, 0, 1],
+    [0, 1, 1, 1]], order=2)
 
 In [35]: c = bch.encode(m); c
 Out[35]: 
-GF([[0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 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([[0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1],
+    [0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1],
+    [0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0]], order=2)
 

Corrupt the codeword. Add zero errors to the first codeword, one to the second, and two to the @@ -8089,17 +8089,17 @@ In [38]: c Out[38]: -GF([[0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 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([[0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1], + [1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1], + [1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0]], order=2)

Decode the codeword and recover the message.

In [39]: d = bch.decode(c); d
 Out[39]: 
-GF([[0, 0, 1, 0],
-    [1, 0, 1, 0],
-    [0, 0, 1, 0]], order=2)
+GF([[0, 0, 0, 1],
+    [0, 0, 0, 1],
+    [0, 1, 1, 1]], order=2)
 
 In [40]: np.array_equal(d, m)
 Out[40]: True
@@ -8108,9 +8108,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([[0, 0, 1, 0],
-     [1, 0, 1, 0],
-     [0, 0, 1, 0]], order=2),
+(GF([[0, 0, 0, 1],
+     [0, 0, 0, 1],
+     [0, 1, 1, 1]], order=2),
  array([0, 1, 2]))
 
 In [42]: np.array_equal(d, m)
diff --git a/v0.4.x/api/galois.BCH.detect/index.html b/v0.4.x/api/galois.BCH.detect/index.html
index b2341018c..bee0130ad 100644
--- a/v0.4.x/api/galois.BCH.detect/index.html
+++ b/v0.4.x/api/galois.BCH.detect/index.html
@@ -7843,10 +7843,10 @@
 In [2]: GF = bch.field
 
 In [3]: m = GF.Random(bch.k); m
-Out[3]: GF([0, 0, 1, 0, 1, 1, 0], order=2)
+Out[3]: GF([0, 1, 1, 0, 0, 0, 0], order=2)
 
 In [4]: c = bch.encode(m); c
-Out[4]: GF([0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1], order=2)
+Out[4]: GF([0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0], order=2)
 

Detect no errors in the valid codeword.

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

Detect no errors in the valid codeword.

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

Detect no errors in the valid codewords.

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

Detect no errors in the valid codewords.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

In [20]: p = bch.encode(m, output="parity"); p
 Out[20]: 
-GF([[0, 1, 1, 0, 1, 1, 1, 0],
-    [1, 0, 1, 1, 1, 1, 1, 1],
-    [0, 0, 1, 0, 1, 0, 1, 0]], order=2)
+GF([[1, 1, 1, 1, 1, 0, 1, 1],
+    [1, 1, 0, 0, 1, 1, 0, 0],
+    [0, 1, 1, 1, 0, 0, 1, 1]], order=2)
 
diff --git a/v0.4.x/api/galois.BCH/index.html b/v0.4.x/api/galois.BCH/index.html index 4b12866e6..760708ab1 100644 --- a/v0.4.x/api/galois.BCH/index.html +++ b/v0.4.x/api/galois.BCH/index.html @@ -8078,19 +8078,19 @@

Encode a message.

In [3]: m = GF.Random(bch.k); m
-Out[3]: GF([0, 0, 0, 1, 0, 1, 1], order=2)
+Out[3]: GF([1, 0, 0, 0, 0, 0, 1], order=2)
 
 In [4]: c = bch.encode(m); c
-Out[4]: GF([0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], order=2)
+Out[4]: GF([1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 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, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], order=2)
+Out[5]: GF([0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1], order=2)
 
 In [6]: dec_m = bch.decode(c); dec_m
-Out[6]: GF([0, 0, 0, 1, 0, 1, 1], order=2)
+Out[6]: GF([1, 0, 0, 0, 0, 0, 1], order=2)
 
 In [7]: np.array_equal(dec_m, m)
 Out[7]: True
@@ -8098,7 +8098,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, 0, 1, 0, 1, 1], order=2), 1)
+Out[8]: (GF([1, 0, 0, 0, 0, 0, 1], order=2), 1)
 
 In [9]: np.array_equal(dec_m, m)
 Out[9]: True
diff --git a/v0.4.x/api/galois.FieldArray.Random/index.html b/v0.4.x/api/galois.FieldArray.Random/index.html
index ae427ff51..782f8e9f3 100644
--- a/v0.4.x/api/galois.FieldArray.Random/index.html
+++ b/v0.4.x/api/galois.FieldArray.Random/index.html
@@ -7894,8 +7894,8 @@
 
 In [2]: GF.Random((2, 5))
 Out[2]: 
-GF([[ 2, 21,  3, 22, 27],
-    [23, 12,  6,  4,  3]], order=31)
+GF([[27, 24, 19,  2, 22],
+    [26,  3,  4, 22, 12]], order=31)
 

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

diff --git a/v0.4.x/api/galois.FieldArray.characteristic_poly/index.html b/v0.4.x/api/galois.FieldArray.characteristic_poly/index.html index d6152a049..8c320f6ad 100644 --- a/v0.4.x/api/galois.FieldArray.characteristic_poly/index.html +++ b/v0.4.x/api/galois.FieldArray.characteristic_poly/index.html @@ -7850,10 +7850,10 @@
In [1]: GF = galois.GF(3**5)
 
 In [2]: a = GF.Random(); a
-Out[2]: GF(13, order=3^5)
+Out[2]: GF(197, order=3^5)
 
 In [3]: poly = a.characteristic_poly(); poly
-Out[3]: Poly(x^5 + x^4 + 2x^3 + 2x + 2, GF(3))
+Out[3]: Poly(x^5 + 2x^3 + x^2 + x + 2, GF(3))
 
 # The characteristic polynomial annihilates a
 In [4]: poly(a, field=GF)
@@ -7865,10 +7865,10 @@
 
In [5]: GF = galois.GF(3**5, repr="poly")
 
 In [6]: a = GF.Random(); a
-Out[6]: GF(α^4 + α^2 + α, order=3^5)
+Out[6]: GF(α^4 + α^3 + 2α^2 + 2, order=3^5)
 
 In [7]: poly = a.characteristic_poly(); poly
-Out[7]: Poly(x^5 + 2x^4 + 1, GF(3))
+Out[7]: Poly(x^5 + x^4 + 2x^3 + x^2 + 2, GF(3))
 
 # The characteristic polynomial annihilates a
 In [8]: poly(a, field=GF)
@@ -7880,10 +7880,10 @@
 
In [9]: GF = galois.GF(3**5, repr="power")
 
 In [10]: a = GF.Random(); a
-Out[10]: GF(α^59, order=3^5)
+Out[10]: GF(α^174, order=3^5)
 
 In [11]: poly = a.characteristic_poly(); poly
-Out[11]: Poly(x^5 + 2x^3 + 2x^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)
@@ -7905,12 +7905,12 @@
 
 In [14]: A = GF.Random((3,3)); A
 Out[14]: 
-GF([[ 39, 211, 199],
-    [150, 234, 199],
-    [ 46, 187, 141]], order=3^5)
+GF([[146,  50, 220],
+    [185,  27, 137],
+    [129,  65,  68]], order=3^5)
 
 In [15]: poly = A.characteristic_poly(); poly
-Out[15]: Poly(x^3 + 27x^2 + 93x + 159, GF(3^5))
+Out[15]: Poly(x^3 + 206x^2 + 146x + 164, GF(3^5))
 
 # The x^0 coefficient is det(-A)
 In [16]: poly.coeffs[-1] == np.linalg.det(-A)
@@ -7934,13 +7934,15 @@
 
 In [20]: A = GF.Random((3,3)); A
 Out[20]: 
-GF([[              α^2 + 1,              2α^3 + 2,        α^3 + 2α^2 + 1],
-    [       α^4 + 2α^2 + 2, α^4 + 2α^3 + 2α^2 + α,             α^4 + α^3],
-    [          2α^4 + 2α^3,         α^4 + α^3 + 1,           α^3 + α + 1]],
-   order=3^5)
+GF([[       α^4 + α^3 + 2α + 2, 2α^4 + 2α^3 + α^2 + α + 1,
+                2α^4 + α^3 + α],
+    [          2α^4 + 2α^2 + 2,    α^4 + 2α^3 + 2α^2 + 2α,
+                 α^3 + α^2 + 1],
+    [                 2α^4 + 2,        2α^4 + 2α^3 + 2α^2,
+             α^4 + 2α^3 + 2α^2]], order=3^5)
 
 In [21]: poly = A.characteristic_poly(); poly
-Out[21]: Poly(x^3 + (2α^4 + α + 1)x^2 + (α^4 + α^3 + 2α + 2)x + (α^4 + 2α^2 + 1), GF(3^5))
+Out[21]: Poly(x^3 + (α^3 + 2α^2 + 2α + 1)x^2 + (α^4 + 2α^3 + α^2 + 2α + 2)x + (α^4 + α^2 + α + 1), GF(3^5))
 
 # The x^0 coefficient is det(-A)
 In [22]: poly.coeffs[-1] == np.linalg.det(-A)
@@ -7964,12 +7966,12 @@
 
 In [26]: A = GF.Random((3,3)); A
 Out[26]: 
-GF([[ α^64,  α^84, α^186],
-    [α^225, α^191,  α^28],
-    [α^163, α^233,  α^81]], order=3^5)
+GF([[ α^77, α^163,  α^29],
+    [α^198,  α^60, α^108],
+    [α^166,  α^29,  α^14]], order=3^5)
 
 In [27]: poly = A.characteristic_poly(); poly
-Out[27]: Poly(x^3 + (α^191)x^2 + (α^18)x + α^27, GF(3^5))
+Out[27]: Poly(x^3 + (α^71)x^2 + (α^150)x + α^205, GF(3^5))
 
 # The x^0 coefficient is det(-A)
 In [28]: poly.coeffs[-1] == np.linalg.det(-A)
diff --git a/v0.4.x/api/galois.FieldArray.column_space/index.html b/v0.4.x/api/galois.FieldArray.column_space/index.html
index 49852a98b..207733a76 100644
--- a/v0.4.x/api/galois.FieldArray.column_space/index.html
+++ b/v0.4.x/api/galois.FieldArray.column_space/index.html
@@ -7805,9 +7805,9 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[30, 12, 13, 25, 29],
-    [14, 14, 30,  6, 29],
-    [ 4, 15, 26, 18, 22]], order=31)
+GF([[ 7, 25, 15,  9, 23],
+    [29, 22, 25, 25,  2],
+    [28, 11, 23, 11, 13]], order=31)
 
 In [4]: C = A.column_space(); C
 Out[4]: 
@@ -7819,8 +7819,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,  2, 14, 17],
-    [ 0,  1,  0,  5, 22]], order=31)
+GF([[ 1,  0, 14,  6, 30],
+    [ 0,  1, 24, 20, 28]], order=31)
 
 In [6]: C.shape[0] + N.shape[0] == n
 Out[6]: True
diff --git a/v0.4.x/api/galois.FieldArray.left_null_space/index.html b/v0.4.x/api/galois.FieldArray.left_null_space/index.html
index 063cbedbe..32b5031e1 100644
--- a/v0.4.x/api/galois.FieldArray.left_null_space/index.html
+++ b/v0.4.x/api/galois.FieldArray.left_null_space/index.html
@@ -7804,16 +7804,16 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[13, 12, 20],
-    [13,  6,  6],
-    [ 3, 20, 18],
-    [14, 14,  8],
-    [17, 18, 30]], order=31)
+GF([[17,  2,  3],
+    [ 2,  9, 27],
+    [14,  8, 19],
+    [12,  3,  3],
+    [26,  2,  9]], order=31)
 
 In [4]: LN = A.left_null_space(); LN
 Out[4]: 
-GF([[ 1,  0, 28,  3, 21],
-    [ 0,  1,  9, 15,  9]], order=31)
+GF([[ 1,  0,  1, 17, 16],
+    [ 0,  1, 13, 19,  8]], order=31)
 

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

diff --git a/v0.4.x/api/galois.FieldArray.log/index.html b/v0.4.x/api/galois.FieldArray.log/index.html index d0a7145e8..06b95c251 100644 --- a/v0.4.x/api/galois.FieldArray.log/index.html +++ b/v0.4.x/api/galois.FieldArray.log/index.html @@ -7846,10 +7846,10 @@ Out[2]: GF(3, order=3^5) In [3]: x = GF.Random(10, low=1); x -Out[3]: GF([158, 90, 37, 10, 55, 27, 239, 65, 31, 215], order=3^5) +Out[3]: GF([ 68, 18, 28, 127, 150, 179, 128, 128, 21, 75], order=3^5) In [4]: i = x.log(); i -Out[4]: array([145, 48, 227, 46, 136, 3, 162, 233, 214, 175]) +Out[4]: array([200, 123, 207, 25, 52, 60, 66, 66, 127, 89]) In [5]: np.array_equal(alpha ** i, x) Out[5]: True @@ -7864,14 +7864,14 @@ In [8]: x = GF.Random(10, low=1); x Out[8]: -GF([2α^4 + 2α^3 + α^2 + 2α + 2, 2α^3 + 2α^2 + 2α + 2, - α^4 + α^3 + 2α^2 + 1, 2α^4 + α^3 + 2α^2 + 2, - 2α^4 + 2α^3 + 1, α^4 + 2α^3 + 2α + 2, - 2α^3 + 2α^2, α^2 + 2α + 2, - α^4 + α^3 + α^2 + 1, α^2 + 2α + 1], order=3^5) +GF([2α^4 + 2α^3 + 2α^2 + 2α + 1, 2α^3 + α^2 + α + 2, + 2α^4 + α^3 + 2α^2 + α + 2, 2α^4 + 2α^3 + α + 1, + 2α^4 + 2, 2α^4 + 2α^3 + 2α^2 + α + 2, + 2α^4 + 2α^3 + 1, α^3 + 2α^2 + 2α, + 2α^3 + 2α^2 + 2, α^4 + 2α^3 + 1], order=3^5) In [9]: i = x.log(); i -Out[9]: array([177, 236, 25, 58, 240, 26, 192, 222, 83, 138]) +Out[9]: array([238, 200, 53, 205, 68, 162, 240, 223, 106, 99]) In [10]: np.array_equal(alpha ** i, x) Out[10]: True @@ -7886,11 +7886,11 @@ In [13]: x = GF.Random(10, low=1); x Out[13]: -GF([ α^13, α^229, α^122, α^43, α^169, α^213, α^76, α^240, α^100, α^232], +GF([α^181, α^32, α^60, α^223, α^166, α^11, α^223, α^113, α^15, α^141], order=3^5) In [14]: i = x.log(); i -Out[14]: array([ 13, 229, 122, 43, 169, 213, 76, 240, 100, 232]) +Out[14]: array([181, 32, 60, 223, 166, 11, 223, 113, 15, 141]) In [15]: np.array_equal(alpha ** i, x) Out[15]: True @@ -7917,7 +7917,7 @@ Out[17]: GF(242, order=3^5) In [18]: i = x.log(beta); i -Out[18]: array([ 21, 221, 104, 237, 31, 9, 160, 34, 236, 170]) +Out[18]: array([ 69, 182, 190, 81, 82, 55, 81, 15, 229, 23]) In [19]: np.array_equal(beta ** i, x) Out[19]: True @@ -7929,7 +7929,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([ 21, 221, 104, 237, 31, 9, 160, 34, 236, 170]) +Out[21]: array([ 69, 182, 190, 81, 82, 55, 81, 15, 229, 23]) In [22]: np.array_equal(beta ** i, x) Out[22]: True @@ -7941,7 +7941,7 @@ Out[23]: GF(α^185, order=3^5) In [24]: i = x.log(beta); i -Out[24]: array([ 21, 221, 104, 237, 31, 9, 160, 34, 236, 170]) +Out[24]: array([ 69, 182, 190, 81, 82, 55, 81, 15, 229, 23]) In [25]: np.array_equal(beta ** i, x) Out[25]: True @@ -7959,21 +7959,21 @@
In [26]: x = GF.Random(low=1); x
-Out[26]: GF(200, order=3^5)
+Out[26]: GF(138, order=3^5)
 
 In [27]: bases = GF.primitive_elements
 
 In [28]: i = x.log(bases); i
 Out[28]: 
-array([ 33,  11,  55,  77, 231,  77, 187,  77, 187,  99, 209,  11, 165,
-        99,  11,  55, 165, 187,  55, 143,  55, 143, 143, 187, 143,  11,
-        77,  55,  11,  77, 187, 209,  33, 231, 143,  77,  33, 143, 187,
-       165,  55,  77, 231,  33,  55,  99, 187, 165,  77, 187, 143, 231,
-       231, 209,  77,  11, 165,  33,  11,  99,  99,  11, 209,  77, 209,
-        77, 143,  55,  99, 209,  55,  33, 165, 209, 209,  99, 143,  33,
-        99,  11,  55, 187, 209, 231,  99, 165,  11,  99, 231,  11, 231,
-       231, 165, 143, 209, 209, 187, 143,  55, 231,  33,  33, 165,  99,
-       165,  33,  33, 231, 187, 165])
+array([113, 177,  71, 117, 219, 205,  39,  73, 149,  31, 217, 199,  59,
+       185,  23,  27,  37,  17,   5,  57, 203, 189,  13, 105, 211,  45,
+        29, 225,  67,  95, 127,  41,  91, 153, 233,   7, 179, 101, 193,
+       103, 159, 183, 175,   3, 137,  53,  61, 125, 139,  83, 123, 131,
+       109, 173,  51, 111, 191, 157,   1, 207,  75, 221, 195, 227, 239,
+       161, 145, 115, 119, 129, 181, 223, 147, 107,  19, 163,  79,  25,
+       141, 155,  49, 237,  63, 241,   9, 169,  89, 229,  21, 133, 197,
+        65, 235,  35, 151,  85, 215, 167,  93,  87, 135,  47, 213,  97,
+        81,  69, 201,  43, 171,  15])
 
 In [29]: np.all(bases ** i == x)
 Out[29]: np.True_
@@ -7982,21 +7982,21 @@
 
In [30]: x = GF.Random(low=1); x
-Out[30]: GF(α^4 + 2α^3 + α + 1, order=3^5)
+Out[30]: GF(2α^4 + α^3 + 2α^2 + 1, order=3^5)
 
 In [31]: bases = GF.primitive_elements
 
 In [32]: i = x.log(bases); i
 Out[32]: 
-array([ 59,  71, 157, 211, 215, 167, 151, 233, 217,  89, 139, 181, 185,
-       133,  27, 179,  75,  41,  69, 109,  91,  43, 131, 239, 153, 137,
-        13, 201,   5, 101, 107, 227, 191, 127,  21, 145, 147,  87, 195,
-       163, 113,  57, 237, 235,   3, 199,  19,  31,  79, 129, 197,  17,
-       149, 161, 123, 225, 119,  37, 159,   1,  67,  49,  29,  35,   7,
-       189,  65, 135,  45, 183, 223, 125, 141,  73, 117,  23, 219, 103,
-       155, 203,  47, 173,  95,  83, 221,   9, 115, 111, 193,  93, 105,
-       171,  97, 241,  51, 205,  63, 175,  25,  39, 169, 213, 229, 177,
-        53,  81,  15,  61,  85, 207])
+array([ 98,  40,  68, 170,  70,  60, 218, 104,  20,  74,  34, 194,  94,
+       184, 172,   2, 182,  64,  90,  58,  24,  14, 234, 196, 168,  84,
+        38, 178, 238,  16, 108,  12, 186,  92,  80, 126,  76, 124,  86,
+       160, 200, 148,   4,  54,  46, 228, 130,  72,  82,  42,  36, 180,
+        26, 210, 192,  62,  50, 164,  18,  96, 140, 106, 122, 214, 188,
+       236, 190, 134, 206, 144, 112, 142, 226, 232, 100,  30, 212, 208,
+       118, 128, 156, 152, 166, 224, 162, 138, 150,   8, 136, 216, 158,
+       202, 116, 146,  56,  78, 240, 102, 222, 114,  10, 120, 204,  52,
+         6,  32, 230,  48, 174,  28])
 
 In [33]: np.all(bases ** i == x)
 Out[33]: np.True_
@@ -8005,21 +8005,21 @@
 
In [34]: x = GF.Random(low=1); x
-Out[34]: GF(α^130, order=3^5)
+Out[34]: GF(α^94, order=3^5)
 
 In [35]: bases = GF.primitive_elements
 
 In [36]: i = x.log(bases); i
 Out[36]: 
-array([130,  58,  26, 186, 162, 208,  62,  54, 150, 192, 134, 124, 100,
-       170,  80, 136,  34, 238,  70,  72, 180, 226, 182,  18,  50, 146,
-       164,   4, 212, 120,  84,  90,  64, 206, 116,  98,  86, 204,  40,
-       232,  48, 142,  30,  42, 224,  16, 128,  56,  10, 194,  28, 140,
-        74,   2, 230, 102,  12,  20,  14, 236,  82, 190,  68,  32, 200,
-        76,  94, 158, 214, 112, 114, 218, 122,  46,  24, 104, 138, 108,
-        38, 234, 202, 172, 156, 228, 126, 188,  36,  60,  52, 168,  96,
-       184, 144,   6, 178, 222, 106, 160,  92,   8, 196, 174,  78, 148,
-       166, 240, 152, 118, 216, 210])
+array([ 94,  68, 164, 168, 240, 102,  56,  80,  34, 150,  82, 112, 184,
+       216,   2,  76, 140,  12,  32,  26, 186,  48, 180, 188,  92,  46,
+       234, 230,  90, 124, 232, 214,  50, 108, 136, 190, 226, 114, 122,
+        30,  98,  58, 152, 116,  54, 194, 100,  74, 212, 144, 158,  64,
+        20, 236,  36, 178, 206, 182, 200,  18, 238, 156,  38, 146, 126,
+        14, 202,  10,  84, 148, 142,  72, 118, 104, 170, 172,  70, 160,
+       128,  24, 120, 210,  16,  42, 106, 162, 134,  62,  86, 222, 196,
+       174,  52, 224, 192,  60, 166,   4, 208, 218, 138, 204,   8,  40,
+       228,   6,  28, 130,  78,  96])
 
 In [37]: np.all(bases ** i == x)
 Out[37]: np.True_
diff --git a/v0.4.x/api/galois.FieldArray.minimal_poly/index.html b/v0.4.x/api/galois.FieldArray.minimal_poly/index.html
index ffb8594ca..b69b2e987 100644
--- a/v0.4.x/api/galois.FieldArray.minimal_poly/index.html
+++ b/v0.4.x/api/galois.FieldArray.minimal_poly/index.html
@@ -7846,7 +7846,7 @@
 
In [1]: GF = galois.GF(3**5)
 
 In [2]: a = GF.Random(); a
-Out[2]: GF(40, order=3^5)
+Out[2]: GF(137, order=3^5)
 
 In [3]: poly = a.minimal_poly(); poly
 Out[3]: Poly(x^5 + x^4 + x^2 + 1, GF(3))
@@ -7865,10 +7865,10 @@
 
In [6]: GF = galois.GF(3**5, repr="poly")
 
 In [7]: a = GF.Random(); a
-Out[7]: GF(2α^4 + α^3 + 2α^2 + 2, order=3^5)
+Out[7]: GF(2α^4 + 2α^3 + 1, order=3^5)
 
 In [8]: poly = a.minimal_poly(); poly
-Out[8]: Poly(x^5 + x^3 + x^2 + 2, GF(3))
+Out[8]: Poly(x^5 + 2x^4 + 2x^2 + 2, GF(3))
 
 # The minimal polynomial annihilates a
 In [9]: poly(a, field=GF)
@@ -7884,10 +7884,10 @@
 
In [11]: GF = galois.GF(3**5, repr="power")
 
 In [12]: a = GF.Random(); a
-Out[12]: GF(α^6, order=3^5)
+Out[12]: GF(α^227, order=3^5)
 
 In [13]: poly = a.minimal_poly(); poly
-Out[13]: Poly(x^5 + x^3 + x + 2, GF(3))
+Out[13]: Poly(x^5 + x^4 + x^3 + x^2 + 2x + 1, GF(3))
 
 # The minimal polynomial annihilates a
 In [14]: poly(a, field=GF)
diff --git a/v0.4.x/api/galois.FieldArray.null_space/index.html b/v0.4.x/api/galois.FieldArray.null_space/index.html
index 578497cf0..e4f4c2f18 100644
--- a/v0.4.x/api/galois.FieldArray.null_space/index.html
+++ b/v0.4.x/api/galois.FieldArray.null_space/index.html
@@ -7804,14 +7804,14 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[ 9, 29, 30,  7, 22],
-    [24, 13, 29, 14, 23],
-    [13, 29, 15,  9, 23]], order=31)
+GF([[19,  4, 12, 12, 13],
+    [27, 26,  9, 30, 16],
+    [17,  3, 12,  1,  8]], order=31)
 
 In [4]: N = A.null_space(); N
 Out[4]: 
-GF([[ 1,  0, 15, 24, 18],
-    [ 0,  1,  7, 27, 20]], order=31)
+GF([[ 1,  0, 13,  5,  1],
+    [ 0,  1,  4, 28, 25]], order=31)
 

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

diff --git a/v0.4.x/api/galois.FieldArray.row_space/index.html b/v0.4.x/api/galois.FieldArray.row_space/index.html index c7f984201..6bac0351d 100644 --- a/v0.4.x/api/galois.FieldArray.row_space/index.html +++ b/v0.4.x/api/galois.FieldArray.row_space/index.html @@ -7805,11 +7805,11 @@ In [3]: A = GF.Random((m, n)); A Out[3]: -GF([[25, 11, 0], - [10, 3, 20], - [20, 30, 17], - [ 1, 5, 27], - [25, 0, 27]], order=31) +GF([[26, 3, 12], + [ 7, 28, 6], + [30, 22, 23], + [23, 29, 18], + [22, 20, 7]], order=31) In [4]: R = A.row_space(); R Out[4]: @@ -7821,8 +7821,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, 22, 27, 20],
-    [ 0,  1, 13,  2,  4]], order=31)
+GF([[ 1,  0, 14, 27, 29],
+    [ 0,  1,  6, 19, 28]], order=31)
 
 In [6]: R.shape[0] + LN.shape[0] == m
 Out[6]: True
diff --git a/v0.4.x/api/galois.Poly.Random/index.html b/v0.4.x/api/galois.Poly.Random/index.html
index 058e60787..be7f2fe61 100644
--- a/v0.4.x/api/galois.Poly.Random/index.html
+++ b/v0.4.x/api/galois.Poly.Random/index.html
@@ -7858,7 +7858,7 @@
 

Examples

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

In [1]: galois.Poly.Random(5)
-Out[1]: Poly(x^5 + 1, GF(2))
+Out[1]: Poly(x^5 + x^3 + 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.4.x/api/galois.Poly.derivative/index.html b/v0.4.x/api/galois.Poly.derivative/index.html index a785a9192..1e56fdc50 100644 --- a/v0.4.x/api/galois.Poly.derivative/index.html +++ b/v0.4.x/api/galois.Poly.derivative/index.html @@ -7868,10 +7868,10 @@

Examples

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

In [1]: f = galois.Poly.Random(7); f
-Out[1]: Poly(x^7 + x^6 + x^5 + x^4 + x^2 + x, GF(2))
+Out[1]: Poly(x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + 1, GF(2))
 
 In [2]: f.derivative()
-Out[2]: Poly(x^6 + x^4 + 1, GF(2))
+Out[2]: Poly(x^6 + x^4 + 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)
@@ -7882,16 +7882,16 @@
 
In [4]: GF = galois.GF(7)
 
 In [5]: f = galois.Poly.Random(11, field=GF); f
-Out[5]: Poly(3x^11 + 4x^10 + 3x^9 + 4x^8 + 6x^7 + 5x^6 + x^5 + 5x^4 + x^3 + 4x^2 + 6x + 2, GF(7))
+Out[5]: Poly(3x^11 + 4x^10 + 2x^9 + 2x^8 + 4x^7 + 5x^6 + x^5 + 5x^4 + 4x^3 + 4x^2 + 3x, GF(7))
 
 In [6]: f.derivative()
-Out[6]: Poly(5x^10 + 5x^9 + 6x^8 + 4x^7 + 2x^5 + 5x^4 + 6x^3 + 3x^2 + x + 6, GF(7))
+Out[6]: Poly(5x^10 + 5x^9 + 4x^8 + 2x^7 + 2x^5 + 5x^4 + 6x^3 + 5x^2 + x + 3, GF(7))
 
 In [7]: f.derivative(2)
-Out[7]: Poly(x^9 + 3x^8 + 6x^7 + 3x^4 + 6x^3 + 4x^2 + 6x + 1, GF(7))
+Out[7]: Poly(x^9 + 3x^8 + 4x^7 + 3x^4 + 6x^3 + 4x^2 + 3x + 1, GF(7))
 
 In [8]: f.derivative(3)
-Out[8]: Poly(2x^8 + 3x^7 + 5x^3 + 4x^2 + x + 6, GF(7))
+Out[8]: Poly(2x^8 + 3x^7 + 5x^3 + 4x^2 + x + 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)
@@ -7902,13 +7902,13 @@
 
In [10]: GF = galois.GF(3**5)
 
 In [11]: f = galois.Poly.Random(7, field=GF); f
-Out[11]: Poly(134x^7 + 101x^6 + 38x^5 + 136x^4 + 222x^3 + 168x^2 + 187x + 69, GF(3^5))
+Out[11]: Poly(85x^7 + 124x^6 + 162x^5 + 65x^4 + 170x^3 + 164x^2 + 188x + 189, GF(3^5))
 
 In [12]: f.derivative()
-Out[12]: Poly(134x^6 + 73x^4 + 136x^3 + 84x + 187, GF(3^5))
+Out[12]: Poly(85x^6 + 81x^4 + 65x^3 + 82x + 188, GF(3^5))
 
 In [13]: f.derivative(2)
-Out[13]: Poly(73x^3 + 84, GF(3^5))
+Out[13]: Poly(81x^3 + 82, 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.4.x/api/galois.Poly.field/index.html b/v0.4.x/api/galois.Poly.field/index.html
index 8fbd15a86..79d747572 100644
--- a/v0.4.x/api/galois.Poly.field/index.html
+++ b/v0.4.x/api/galois.Poly.field/index.html
@@ -7757,7 +7757,7 @@
 

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

Examples

In [1]: a = galois.Poly.Random(5); a
-Out[1]: Poly(x^5 + x^4, GF(2))
+Out[1]: Poly(x^5 + x^4 + x, GF(2))
 
 In [2]: a.field
 Out[2]: <class 'galois.GF(2)'>
@@ -7766,7 +7766,7 @@
 
In [3]: GF = galois.GF(2**8)
 
 In [4]: b = galois.Poly.Random(5, field=GF); b
-Out[4]: Poly(196x^5 + 219x^4 + 184x^3 + 7x^2 + 159x + 213, GF(2^8))
+Out[4]: Poly(89x^5 + 82x^4 + 135x^3 + 161x^2 + 42x + 168, GF(2^8))
 
 In [5]: b.field
 Out[5]: <class 'galois.GF(2^8)'>
diff --git a/v0.4.x/api/galois.Poly.is_irreducible/index.html b/v0.4.x/api/galois.Poly.is_irreducible/index.html
index 56fcebde9..2a01e2dce 100644
--- a/v0.4.x/api/galois.Poly.is_irreducible/index.html
+++ b/v0.4.x/api/galois.Poly.is_irreducible/index.html
@@ -7841,13 +7841,13 @@
 
In [4]: g = galois.irreducible_poly(2**4, 2, method="random"); g
-Out[4]: Poly(x^2 + 14x + 9, GF(2^4))
+Out[4]: Poly(x^2 + 8x + 1, GF(2^4))
 
 In [5]: h = galois.irreducible_poly(2**4, 3, method="random"); h
-Out[5]: Poly(x^3 + 9x^2 + 8x + 1, GF(2^4))
+Out[5]: Poly(x^3 + 12x^2 + 5x + 15, GF(2^4))
 
 In [6]: f = g * h; f
-Out[6]: Poly(x^5 + 7x^4 + 6x^3 + 5x^2 + 10x + 9, GF(2^4))
+Out[6]: Poly(x^5 + 4x^4 + 14x^3 + 13x^2 + 4x + 15, GF(2^4))
 
 In [7]: f.is_irreducible()
 Out[7]: False
diff --git a/v0.4.x/api/galois.ReedSolomon.decode/index.html b/v0.4.x/api/galois.ReedSolomon.decode/index.html
index c5a428a1f..1eb87fc85 100644
--- a/v0.4.x/api/galois.ReedSolomon.decode/index.html
+++ b/v0.4.x/api/galois.ReedSolomon.decode/index.html
@@ -7930,23 +7930,23 @@
 In [2]: GF = rs.field
 
 In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([ 8, 12,  1, 11,  0,  4,  1,  6, 14], order=2^4)
+Out[3]: GF([ 2,  7,  1,  7, 15,  5,  1, 10,  1], order=2^4)
 
 In [4]: c = rs.encode(m); c
-Out[4]: GF([ 8, 12,  1, 11,  0,  4,  1,  6, 14, 15, 12, 12,  5,  4,  6], order=2^4)
+Out[4]: GF([ 2,  7,  1,  7, 15,  5,  1, 10,  1,  7, 14, 15,  3, 11, 11], order=2^4)
 

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

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

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

Decode the codeword and recover the message.

In [29]: d = rs.decode(c); d
 Out[29]: 
-GF([[ 1,  8,  1,  9, 13, 11,  8, 15,  9],
-    [ 4,  8,  2,  6, 15,  1, 15,  6,  8],
-    [ 3,  4,  5,  6,  5, 11, 12,  3, 14]], order=2^4)
+GF([[ 1,  0,  1,  7,  1,  0, 12, 15,  9],
+    [15,  4, 11, 13, 12, 10, 12,  8,  2],
+    [ 5, 11,  9,  0,  6,  5, 13, 12, 14]], order=2^4)
 
 In [30]: np.array_equal(d, m)
 Out[30]: True
@@ -8049,9 +8049,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([[ 1,  8,  1,  9, 13, 11,  8, 15,  9],
-     [ 4,  8,  2,  6, 15,  1, 15,  6,  8],
-     [ 3,  4,  5,  6,  5, 11, 12,  3, 14]], order=2^4),
+(GF([[ 1,  0,  1,  7,  1,  0, 12, 15,  9],
+     [15,  4, 11, 13, 12, 10, 12,  8,  2],
+     [ 5, 11,  9,  0,  6,  5, 13, 12, 14]], order=2^4),
  array([1, 2, 3]))
 
 In [32]: np.array_equal(d, m)
@@ -8067,15 +8067,15 @@
 
 In [35]: m = GF.Random((3, rs.k - 4)); m
 Out[35]: 
-GF([[ 3, 14,  5,  2, 14],
-    [ 3, 10, 15,  1,  0],
-    [10,  9, 12, 13,  4]], order=2^4)
+GF([[ 8, 10, 12,  5,  1],
+    [ 9, 11,  5,  6,  2],
+    [ 1,  2, 15, 14, 10]], order=2^4)
 
 In [36]: c = rs.encode(m); c
 Out[36]: 
-GF([[ 3, 14,  5,  2, 14, 13,  2, 12,  6, 15, 14],
-    [ 3, 10, 15,  1,  0,  3,  5, 14, 13,  4,  9],
-    [10,  9, 12, 13,  4,  5,  4,  0,  7, 15, 15]], order=2^4)
+GF([[ 8, 10, 12,  5,  1,  5,  2,  5,  1,  5, 10],
+    [ 9, 11,  5,  6,  2,  9, 15,  1,  4, 13, 13],
+    [ 1,  2, 15, 14, 10,  2, 14, 10, 15, 10,  3]], order=2^4)
 

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

Decode the codeword and recover the message.

In [41]: d = rs.decode(c); d
 Out[41]: 
-GF([[ 3, 14,  5,  2, 14],
-    [ 3, 10, 15,  1,  0],
-    [10,  9, 12, 13,  4]], order=2^4)
+GF([[ 8, 10, 12,  5,  1],
+    [ 9, 11,  5,  6,  2],
+    [ 1,  2, 15, 14, 10]], order=2^4)
 
 In [42]: np.array_equal(d, m)
 Out[42]: True
@@ -8107,9 +8107,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([[ 3, 14,  5,  2, 14],
-     [ 3, 10, 15,  1,  0],
-     [10,  9, 12, 13,  4]], order=2^4),
+(GF([[ 8, 10, 12,  5,  1],
+     [ 9, 11,  5,  6,  2],
+     [ 1,  2, 15, 14, 10]], order=2^4),
  array([1, 2, 3]))
 
 In [44]: np.array_equal(d, m)
diff --git a/v0.4.x/api/galois.ReedSolomon.detect/index.html b/v0.4.x/api/galois.ReedSolomon.detect/index.html
index 75cd671ad..715a5d2bb 100644
--- a/v0.4.x/api/galois.ReedSolomon.detect/index.html
+++ b/v0.4.x/api/galois.ReedSolomon.detect/index.html
@@ -7843,10 +7843,10 @@
 In [2]: GF = rs.field
 
 In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([ 5,  0,  8, 14,  0,  9, 12,  4,  6], order=2^4)
+Out[3]: GF([ 5,  2,  9,  8, 11, 10, 13, 14, 14], order=2^4)
 
 In [4]: c = rs.encode(m); c
-Out[4]: GF([ 5,  0,  8, 14,  0,  9, 12,  4,  6, 10,  7,  4, 15, 13, 15], order=2^4)
+Out[4]: GF([ 5,  2,  9,  8, 11, 10, 13, 14, 14,  4,  4, 14,  5, 10,  7], order=2^4)
 

Detect no errors in the valid codeword.

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

Detect no errors in the valid codeword.

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

Detect no errors in the valid codewords.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

In [20]: p = rs.encode(m, output="parity"); p
 Out[20]: 
-GF([[ 3,  6,  8,  4,  1, 11],
-    [11, 13,  6,  8,  7,  7],
-    [ 2,  0,  9,  8, 13, 10]], order=2^4)
+GF([[ 4, 14, 13, 15,  5,  0],
+    [ 5,  9, 13,  5,  9,  9],
+    [14,  9,  1,  1, 13, 10]], order=2^4)
 
diff --git a/v0.4.x/api/galois.ReedSolomon/index.html b/v0.4.x/api/galois.ReedSolomon/index.html index 42c7145a9..9243ead16 100644 --- a/v0.4.x/api/galois.ReedSolomon/index.html +++ b/v0.4.x/api/galois.ReedSolomon/index.html @@ -8071,19 +8071,19 @@

Encode a message.

In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([ 1, 15,  1,  0, 15, 14,  0,  0,  5], order=2^4)
+Out[3]: GF([12,  1, 11,  9,  2, 10, 15,  0,  0], order=2^4)
 
 In [4]: c = rs.encode(m); c
-Out[4]: GF([ 1, 15,  1,  0, 15, 14,  0,  0,  5,  2,  8,  2, 11,  6,  7], order=2^4)
+Out[4]: GF([12,  1, 11,  9,  2, 10, 15,  0,  0,  0,  8, 11, 13, 13, 11], 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([12, 15,  1,  0, 15, 14,  0,  0,  5,  2,  8,  2, 11,  6,  7], order=2^4)
+Out[5]: GF([ 1,  1, 11,  9,  2, 10, 15,  0,  0,  0,  8, 11, 13, 13, 11], order=2^4)
 
 In [6]: dec_m = rs.decode(c); dec_m
-Out[6]: GF([ 1, 15,  1,  0, 15, 14,  0,  0,  5], order=2^4)
+Out[6]: GF([12,  1, 11,  9,  2, 10, 15,  0,  0], order=2^4)
 
 In [7]: np.array_equal(dec_m, m)
 Out[7]: True
@@ -8091,7 +8091,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([ 1, 15,  1,  0, 15, 14,  0,  0,  5], order=2^4), 1)
+Out[8]: (GF([12,  1, 11,  9,  2, 10, 15,  0,  0], order=2^4), 1)
 
 In [9]: np.array_equal(dec_m, m)
 Out[9]: True
diff --git a/v0.4.x/api/galois.crt/index.html b/v0.4.x/api/galois.crt/index.html
index c65d55b32..1ac8fd170 100644
--- a/v0.4.x/api/galois.crt/index.html
+++ b/v0.4.x/api/galois.crt/index.html
@@ -7913,7 +7913,7 @@
 
In [5]: GF = galois.GF(7)
 
 In [6]: x_truth = galois.Poly.Random(6, field=GF); x_truth
-Out[6]: Poly(3x^6 + 2x^4 + 3x^2 + 2x, GF(7))
+Out[6]: Poly(6x^6 + 3x^3 + 5x^2 + 3x + 6, GF(7))
 
 In [7]: m3 = galois.Poly.Random(3, field=GF)
 
@@ -7923,20 +7923,20 @@
 
 In [10]: m = [m3, m4, m5]; m
 Out[10]: 
-[Poly(2x^3 + 6x^2 + 2x + 3, GF(7)),
- Poly(6x^4 + 3x^3 + 2x^2 + 2x, GF(7)),
- Poly(5x^5 + 6x^4 + x^2 + 3x + 4, GF(7))]
+[Poly(4x^3 + 2x^2 + 3, GF(7)),
+ Poly(3x^4 + 4x^3 + 6x^2, GF(7)),
+ Poly(x^5 + 6x^4 + 2x^3 + x^2 + x, GF(7))]
 
 In [11]: a = [x_truth % m3, x_truth % m4, x_truth % m5]; a
 Out[11]: 
-[Poly(x^2 + 5x, GF(7)),
- Poly(3x^3 + 2x, GF(7)),
- Poly(x^4 + 5x^3 + 5x^2 + 4x + 4, GF(7))]
+[Poly(4x^2 + x + 2, GF(7)),
+ Poly(6x^3 + 3x^2 + 3x + 6, GF(7)),
+ Poly(x^4 + 6x^3 + 4x + 6, GF(7))]
 

Solve the system of congruences.

In [12]: x = galois.crt(a, m); x
-Out[12]: Poly(3x^6 + 2x^4 + 3x^2 + 2x, GF(7))
+Out[12]: Poly(6x^6 + 3x^3 + 5x^2 + 3x + 6, GF(7))
 

Show that the solution satisfies each congruence.

@@ -7944,9 +7944,9 @@ ....: ai = x % m[i] ....: print(ai, ai == a[i]) ....: -x^2 + 5x True -3x^3 + 2x True -x^4 + 5x^3 + 5x^2 + 4x + 4 True +4x^2 + x + 2 True +6x^3 + 3x^2 + 3x + 6 True +x^4 + 6x^3 + 4x + 6 True
diff --git a/v0.4.x/api/galois.fermat_primality_test/index.html b/v0.4.x/api/galois.fermat_primality_test/index.html index bf663e345..fcede1ec2 100644 --- a/v0.4.x/api/galois.fermat_primality_test/index.html +++ b/v0.4.x/api/galois.fermat_primality_test/index.html @@ -7921,7 +7921,7 @@ # But they may not satisfy a^(p-1) = 1 (mod p) for other a In [7]: [galois.fermat_primality_test(p) for p in pseudoprimes] -Out[7]: [True, True, False] +Out[7]: [False, True, False]

And the pseudoprimes base 3 from A005935.

diff --git a/v0.4.x/api/galois.irreducible_poly/index.html b/v0.4.x/api/galois.irreducible_poly/index.html index d59819636..4a2ff6bfc 100644 --- a/v0.4.x/api/galois.irreducible_poly/index.html +++ b/v0.4.x/api/galois.irreducible_poly/index.html @@ -7939,7 +7939,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 + x^2 + 3, GF(7)) +Out[3]: Poly(x^3 + 3x^2 + 4x + 3, GF(7))

Find the lexicographically first monic irreducible polynomial with four terms.

@@ -7956,13 +7956,13 @@
In [6]: GF = galois.GF(7)
 
 In [7]: f = galois.irreducible_poly(7, 5, method="random"); f
-Out[7]: Poly(x^5 + 3x^4 + 6x^3 + x^2 + 6x + 6, GF(7))
+Out[7]: Poly(x^5 + 6x^4 + 3x^3 + 5x^2 + 5, GF(7))
 
 In [8]: f.is_irreducible()
 Out[8]: True
 
 In [9]: g = f * GF(3); g
-Out[9]: Poly(3x^5 + 2x^4 + 4x^3 + 3x^2 + 4x + 4, GF(7))
+Out[9]: Poly(3x^5 + 4x^4 + 2x^3 + x^2 + 1, GF(7))
 
 In [10]: g.is_irreducible()
 Out[10]: True
diff --git a/v0.4.x/api/galois.irreducible_polys/index.html b/v0.4.x/api/galois.irreducible_polys/index.html
index 5727cc34f..ed63f4067 100644
--- a/v0.4.x/api/galois.irreducible_polys/index.html
+++ b/v0.4.x/api/galois.irreducible_polys/index.html
@@ -7960,7 +7960,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 0x7f7beb6823e0>
+Out[5]: <generator object irreducible_polys at 0x7f7341c13a70>
 
 In [6]: next(generator)
 Out[6]: Poly(x^4 + 2x^3 + 2x^2 + x + 2, GF(3))
diff --git a/v0.4.x/api/galois.lagrange_poly/index.html b/v0.4.x/api/galois.lagrange_poly/index.html
index e7c4cd5d1..8ffaf317b 100644
--- a/v0.4.x/api/galois.lagrange_poly/index.html
+++ b/v0.4.x/api/galois.lagrange_poly/index.html
@@ -7885,12 +7885,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([0, 1, 0, 2, 3, 6, 2, 5, 0], order=3^2)
+Out[3]: GF([4, 4, 6, 2, 4, 0, 8, 1, 1], order=3^2)
 

Find the Lagrange polynomial that interpolates the coordinates.

In [4]: L = galois.lagrange_poly(x, y); L
-Out[4]: Poly(8x^8 + x^7 + 6x^6 + 4x^5 + 8x^4 + 7x^3 + x^2 + 2x, GF(3^2))
+Out[4]: Poly(6x^8 + 8x^7 + 2x^6 + 7x^5 + 5x^4 + 6x^3 + 6x^2 + 5x + 4, GF(3^2))
 

Show that the polynomial evaluated at \(x\) is \(y\).

diff --git a/v0.4.x/api/galois.primitive_element/index.html b/v0.4.x/api/galois.primitive_element/index.html index 519446651..a1a83f831 100644 --- a/v0.4.x/api/galois.primitive_element/index.html +++ b/v0.4.x/api/galois.primitive_element/index.html @@ -7888,11 +7888,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(5x^4 + 6x^3 + x, GF(7))
+Out[10]: Poly(2x^4 + 2x^3 + 2x^2 + 3x, 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(5x^4 + 6x^3 + x, order=7^5)
+Out[11]: GF(2x^4 + 2x^3 + 2x^2 + 3x, order=7^5)
 
 In [12]: g.multiplicative_order() == GF.order - 1
 Out[12]: True
diff --git a/v0.4.x/api/galois.primitive_poly/index.html b/v0.4.x/api/galois.primitive_poly/index.html
index 7deffbc73..8c9d28075 100644
--- a/v0.4.x/api/galois.primitive_poly/index.html
+++ b/v0.4.x/api/galois.primitive_poly/index.html
@@ -7930,7 +7930,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 + 5x^2 + 5x + 2, GF(7))
+Out[3]: Poly(x^3 + 5x^2 + 3x + 2, GF(7))
 

Find the lexicographically first monic primitive polynomial with four terms.

@@ -7965,13 +7965,13 @@
In [10]: GF = galois.GF(7)
 
 In [11]: f = galois.primitive_poly(7, 5, method="random"); f
-Out[11]: Poly(x^5 + 6x^4 + 6x^3 + 5x^2 + 2x + 4, GF(7))
+Out[11]: Poly(x^5 + 2x^4 + 2x^3 + 4x^2 + 6x + 2, GF(7))
 
 In [12]: f.is_primitive()
 Out[12]: True
 
 In [13]: g = f * GF(3); g
-Out[13]: Poly(3x^5 + 4x^4 + 4x^3 + x^2 + 6x + 5, GF(7))
+Out[13]: Poly(3x^5 + 6x^4 + 6x^3 + 5x^2 + 4x + 6, GF(7))
 
 In [14]: g.is_primitive()
 Out[14]: True
diff --git a/v0.4.x/api/galois.primitive_polys/index.html b/v0.4.x/api/galois.primitive_polys/index.html
index 24c30eef6..c85faf2c2 100644
--- a/v0.4.x/api/galois.primitive_polys/index.html
+++ b/v0.4.x/api/galois.primitive_polys/index.html
@@ -7945,7 +7945,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 0x7f7beb681a60>
+Out[5]: <generator object primitive_polys at 0x7f734188c9c0>
 
 In [6]: next(generator)
 Out[6]: Poly(x^4 + 2x^3 + 2x^2 + x + 2, GF(3))
diff --git a/v0.4.x/api/galois.primitive_root/index.html b/v0.4.x/api/galois.primitive_root/index.html
index de712a510..22896ad4e 100644
--- a/v0.4.x/api/galois.primitive_root/index.html
+++ b/v0.4.x/api/galois.primitive_root/index.html
@@ -8068,7 +8068,7 @@
 Out[20]: 1000000000000000035000054
 
 In [21]: galois.primitive_root(n, method="random")
-Out[21]: 108723438239233879546880
+Out[21]: 484689598172782070449805
 
diff --git a/v0.4.x/api/galois.primitive_roots/index.html b/v0.4.x/api/galois.primitive_roots/index.html index 96dbc4762..d8ab27865 100644 --- a/v0.4.x/api/galois.primitive_roots/index.html +++ b/v0.4.x/api/galois.primitive_roots/index.html @@ -7950,7 +7950,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 0x7f7bea6fa9d0>
+Out[7]: <generator object primitive_roots at 0x7f734188da60>
 
 In [8]: [next(generator) for _ in range(3)]
 Out[8]: [24, 22, 21]
diff --git a/v0.4.x/api/galois.prod/index.html b/v0.4.x/api/galois.prod/index.html
index 76d8b7c98..8ebfbe34e 100644
--- a/v0.4.x/api/galois.prod/index.html
+++ b/v0.4.x/api/galois.prod/index.html
@@ -7843,21 +7843,21 @@
 
In [2]: GF = galois.GF(7)
 
 In [3]: f1 = galois.Poly.Random(2, field=GF); f1
-Out[3]: Poly(2x^2 + 5x + 2, GF(7))
+Out[3]: Poly(3x^2 + x + 2, GF(7))
 
 In [4]: f2 = galois.Poly.Random(3, field=GF); f2
-Out[4]: Poly(x^3 + x^2 + 5, GF(7))
+Out[4]: Poly(5x^3 + 2x^2 + 2x, GF(7))
 
 In [5]: f3 = galois.Poly.Random(4, field=GF); f3
-Out[5]: Poly(4x^4 + 4x^3 + x^2, GF(7))
+Out[5]: Poly(x^4 + 2x^3 + 4x + 4, GF(7))
 

Compute the product of three polynomials.

In [6]: galois.prod(f1, f2, f3)
-Out[6]: Poly(x^9 + x^8 + 2x^7 + 6x^6 + x^5 + 5x^4 + 2x^3 + 3x^2, GF(7))
+Out[6]: Poly(x^9 + 6x^8 + 5x^7 + 4x^6 + x^5 + 5x^4 + 5x^3 + 5x^2 + 2x, GF(7))
 
 In [7]: f1 * f2 * f3
-Out[7]: Poly(x^9 + x^8 + 2x^7 + 6x^6 + x^5 + 5x^4 + 2x^3 + 3x^2, GF(7))
+Out[7]: Poly(x^9 + 6x^8 + 5x^7 + 4x^6 + x^5 + 5x^4 + 5x^3 + 5x^2 + 2x, GF(7))
 
diff --git a/v0.4.x/api/galois.typing.ShapeLike/index.html b/v0.4.x/api/galois.typing.ShapeLike/index.html index ad0912fd3..27f9fb7cd 100644 --- a/v0.4.x/api/galois.typing.ShapeLike/index.html +++ b/v0.4.x/api/galois.typing.ShapeLike/index.html @@ -7771,7 +7771,7 @@
In [1]: GF = galois.GF(3**5)
 
 In [2]: x = GF.Random(4); x
-Out[2]: GF([125,  37,  18, 242], order=3^5)
+Out[2]: GF([162,  98, 181,  29], order=3^5)
 
 In [3]: x.shape
 Out[3]: (4,)
@@ -7782,27 +7782,27 @@
 iterable, () or [], represents a 0-D array (scalar).

In [4]: x = GF.Random((2, 3)); x
 Out[4]: 
-GF([[ 14,  90, 196],
-    [155, 242, 235]], order=3^5)
+GF([[187, 164, 238],
+    [ 89, 158, 114]], order=3^5)
 
 In [5]: x.shape
 Out[5]: (2, 3)
 
 In [6]: x = GF.Random([2, 3, 4]); x
 Out[6]: 
-GF([[[149,  39, 166, 204],
-     [105, 139,   2, 153],
-     [ 68, 172, 110, 151]],
+GF([[[149, 187, 233, 147],
+     [224, 227, 226, 183],
+     [210, 186, 167, 143]],
 
-    [[149, 166, 235, 179],
-     [222,  50, 177, 204],
-     [136, 148,  85, 160]]], order=3^5)
+    [[ 26, 190, 128, 198],
+     [124, 119, 107,  66],
+     [151,   1, 138, 195]]], order=3^5)
 
 In [7]: x.shape
 Out[7]: (2, 3, 4)
 
 In [8]: x = GF.Random(()); x
-Out[8]: GF(73, order=3^5)
+Out[8]: GF(183, order=3^5)
 
 In [9]: x.shape
 Out[9]: ()
diff --git a/v0.4.x/basic-usage/array-creation/index.html b/v0.4.x/basic-usage/array-creation/index.html
index 178a83252..49d98df2b 100644
--- a/v0.4.x/basic-usage/array-creation/index.html
+++ b/v0.4.x/basic-usage/array-creation/index.html
@@ -8577,7 +8577,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([675, 728, 563, 915], order=2^10) +Out[93]: GF([257, 64, 575, 740], order=2^10) In [94]: x.dtype Out[94]: dtype('uint16') @@ -8590,8 +8590,8 @@

Default data typeIn [97]: x = GF.Random(4); x Out[97]: -GF([ 869678115253105560125180876704, 1238038735503179132913869235243, - 1131933253538768751818813635633, 899883568447770183966720120001], +GF([ 74598920225304096821610436672, 472576952995018846429182946458, + 1184553176008292346690470337130, 603089891271457145289894068390], order=2^100) In [98]: x.dtype diff --git a/v0.4.x/basic-usage/element-representation/index.html b/v0.4.x/basic-usage/element-representation/index.html index 317133300..cb8f84a58 100644 --- a/v0.4.x/basic-usage/element-representation/index.html +++ b/v0.4.x/basic-usage/element-representation/index.html @@ -8016,21 +8016,21 @@

NumPy print optionsIn [40]: x = GF.Random((5, 5)); x Out[40]: -GF([[ α^4 + α^3 + 2α^2 + 2, 2α^2 + 1, - α^2 + α + 2, 2α^4 + 2α^2 + 1, - α^2], - [ α + 2, 2α^3 + α^2 + α, - α^3 + 2α^2 + 2α + 2, 2α^3 + α^2 + 1, - α^2 + 2α + 1], - [ α^4 + 2α^3 + α + 2, 2α^3 + α^2 + 2α, - 2α^4 + 2α^3 + α, α^4 + 2α^3 + α^2 + α + 1, - α^2 + 2α + 2], - [ 2α^4 + 2, α^4 + 2α, - 2α^3 + 2α^2 + α + 1, α^4 + α^3 + 2α + 1, - α^4 + 2α^2 + 1], - [ 2α^4 + 2α^2 + 2α + 1, 2α^3 + 2, - 2α^3 + 2α + 2, α^4 + 2α^3 + α^2 + α + 1, - 2α^4 + α^3 + 2α^2 + 1]], order=3^5) +GF([[α^4 + α^3 + α^2 + 2α + 2, α^4 + α^3 + 2α^2 + α, + α^4 + α^2 + 2, 2α^2 + 2α, + 2α^3 + α^2 + 2α + 1], + [ α^3 + 2α + 2, α^3 + 2, + 2α^3 + 2α^2 + 1, α^3 + 2α^2 + 2α + 2, + α^2 + 2α], + [ α^4 + 2α^3 + α + 1, 2α^4 + 2α^3 + 2α^2, + α^4 + α^3 + 1, α^4 + α, + α^4 + 2α^2 + α + 2], + [ 2α^4 + 1, 2α^3 + α^2 + 2α + 2, + 2α^4, 2α^4 + α^2 + 2α, + 2α^4 + α + 1], + [ α^4 + 2α^3 + α^2 + 2α, α^4 + 2α^3 + 2α^2 + 2α, + α^4 + 2α^3 + 2α, 2α^4 + α^3 + α^2 + 1, + α^4 + α^3 + 2α^2 + α + 1]], order=3^5)

The readability is improved by increasing the line width using numpy.set_printoptions().

@@ -8038,11 +8038,11 @@

NumPy print optionsIn [42]: x Out[42]: -GF([[ α^4 + α^3 + 2α^2 + 2, 2α^2 + 1, α^2 + α + 2, 2α^4 + 2α^2 + 1, α^2], - [ α + 2, 2α^3 + α^2 + α, α^3 + 2α^2 + 2α + 2, 2α^3 + α^2 + 1, α^2 + 2α + 1], - [ α^4 + 2α^3 + α + 2, 2α^3 + α^2 + 2α, 2α^4 + 2α^3 + α, α^4 + 2α^3 + α^2 + α + 1, α^2 + 2α + 2], - [ 2α^4 + 2, α^4 + 2α, 2α^3 + 2α^2 + α + 1, α^4 + α^3 + 2α + 1, α^4 + 2α^2 + 1], - [ 2α^4 + 2α^2 + 2α + 1, 2α^3 + 2, 2α^3 + 2α + 2, α^4 + 2α^3 + α^2 + α + 1, 2α^4 + α^3 + 2α^2 + 1]], order=3^5) +GF([[α^4 + α^3 + α^2 + 2α + 2, α^4 + α^3 + 2α^2 + α, α^4 + α^2 + 2, 2α^2 + 2α, 2α^3 + α^2 + 2α + 1], + [ α^3 + 2α + 2, α^3 + 2, 2α^3 + 2α^2 + 1, α^3 + 2α^2 + 2α + 2, α^2 + 2α], + [ α^4 + 2α^3 + α + 1, 2α^4 + 2α^3 + 2α^2, α^4 + α^3 + 1, α^4 + α, α^4 + 2α^2 + α + 2], + [ 2α^4 + 1, 2α^3 + α^2 + 2α + 2, 2α^4, 2α^4 + α^2 + 2α, 2α^4 + α + 1], + [ α^4 + 2α^3 + α^2 + 2α, α^4 + 2α^3 + 2α^2 + 2α, α^4 + 2α^3 + 2α, 2α^4 + α^3 + α^2 + 1, α^4 + α^3 + 2α^2 + α + 1]], order=3^5)

Representation comparisons

diff --git a/v0.4.x/basic-usage/poly/index.html b/v0.4.x/basic-usage/poly/index.html index 5903add9e..6b7bb2e09 100644 --- a/v0.4.x/basic-usage/poly/index.html +++ b/v0.4.x/basic-usage/poly/index.html @@ -7932,7 +7932,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(238x^4 + 110x^3 + 216x^2 + 215x + 107, GF(3^5))
+Out[23]: Poly(156x^4 + 25x^3 + 211x^2 + 148x + 143, GF(3^5))
 

Methods

diff --git a/v0.4.x/getting-started/index.html b/v0.4.x/getting-started/index.html index c898994d9..dd7612bb7 100644 --- a/v0.4.x/getting-started/index.html +++ b/v0.4.x/getting-started/index.html @@ -7814,7 +7814,7 @@

Install the package
In [1]: import galois
 
 In [2]: galois.__version__
-Out[2]: '0.4.2.dev3+gbb6be08d1'
+Out[2]: '0.4.2.dev4+g2a965108f'
 

Create a FieldArray subclass

diff --git a/v0.4.x/objects.inv b/v0.4.x/objects.inv index c1568eca1..29c087fb8 100644 Binary files a/v0.4.x/objects.inv and b/v0.4.x/objects.inv differ diff --git a/v0.4.x/release-notes/v0.4/index.html b/v0.4.x/release-notes/v0.4/index.html index 3f93e4b3d..c98862884 100644 --- a/v0.4.x/release-notes/v0.4/index.html +++ b/v0.4.x/release-notes/v0.4/index.html @@ -7581,6 +7581,13 @@ v0.4.1 + + +
  • + + v0.4.2 + +
  • @@ -7743,6 +7750,13 @@ v0.4.1 + + +
  • + + v0.4.2 + +
  • @@ -7786,6 +7800,16 @@

    Contributors@semjon00)

  • @MrVeka

  • Matt Hostetter (@mhostetter)

  • + +

    v0.4.2

    +

    Released September 5, 2024

    +

    Changes

    +
      +
    • Added support for NumPy 2.1. (#567)

    • +
    +

    Contributors

    + @@ -7794,7 +7818,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 mid 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, 278], "field": [0, 255, 269, 270, 277, 278], "primit": [0, 277, 278], "element": [0, 61, 116, 258, 259, 260, 266, 277, 278], "polynomi": [0, 22, 45, 117, 168, 256, 258, 259, 260, 277], "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, 277], "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, 277, 278], "congruenc": 0, "root": [0, 254, 278], "integ": [0, 258], "arithmet": [0, 61, 116, 254, 260, 266, 277, 278], "factor": [0, 132, 260], "prime": [0, 270, 278], "composit": [0, 260], "specif": 0, "algorithm": 0, "gener": [0, 264], "primal": 0, "test": [0, 264], "configur": [0, 262, 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, 262, 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, 277, 278], "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, 277, 278], "x": [254, 260], "y": 254, "np": 254, "add": 254, "invers": [254, 260, 277, 278], "neg": 254, "subtract": [254, 260, 277, 278], "multipl": [254, 260, 277, 278], "multipli": 254, "scalar": [254, 256, 260], "4": [254, 274, 275], "1": [254, 272, 274, 275], "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, 277, 278], "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, 275], "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, "format": 262, "run": [262, 264], "linter": 262, "formatt": 262, "pre": 262, "commit": 262, "from": [262, 263, 264], "v": [262, 264], "pypi": 263, "github": 263, "edit": 263, "local": 263, "folder": 263, "dev": 263, "depend": [263, 268], "unit": 264, "command": 264, "line": 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, 277], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274, 275], "0": [271, 272, 273, 274, 275], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274, 275], "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, "7": 274, "8": 274, "9": 274, "10": 274, "version": 276, "alpha": 276, "releas": 276, "beta": 276, "intro": [277, 278], "other": [277, 278], "non": [277, 278], "\u00e9varist": 278, "mod": 278, "p": 278}, "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"], [277, "primitive-elements"], [278, "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"], [262, "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"], [277, "elements"], [278, "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], [277, null], [278, 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"], [262, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Formatting": [[262, "formatting"]], "Run the linter": [[262, "run-the-linter"]], "Run the formatter": [[262, "run-the-formatter"]], "Pre-commit": [[262, "pre-commit"]], "Run from VS Code": [[262, "run-from-vs-code"], [264, "run-from-vs-code"]], "Installation": [[263, "installation"]], "Install from PyPI": [[263, "install-from-pypi"]], "Install from GitHub": [[263, "install-from-github"]], "Editable install from local folder": [[263, "editable-install-from-local-folder"]], "Install the dev dependencies": [[263, "install-the-dev-dependencies"]], "Unit Tests": [[264, "unit-tests"]], "Run from the command line": [[264, "run-from-the-command-line"]], "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"], [274, "id13"], [274, "id15"], [274, "id17"], [274, "id19"], [275, "changes"], [275, "id1"]], "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"], [274, "id14"], [274, "id16"], [274, "id18"], [274, "id20"], [275, "contributors"], [275, "id2"]], "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"]], "v0.3.7": [[274, "v0-3-7"]], "v0.3.8": [[274, "v0-3-8"]], "v0.3.9": [[274, "v0-3-9"]], "v0.3.10": [[274, "v0-3-10"]], "v0.4": [[275, "v0-4"]], "v0.4.0": [[275, "v0-4-0"]], "v0.4.1": [[275, "v0-4-1"]], "Versioning": [[276, "versioning"]], "Alpha releases": [[276, "alpha-releases"]], "Beta releases": [[276, "beta-releases"]], "Intro to Extension Fields": [[277, "intro-to-extension-fields"]], "Extension field": [[277, "extension-field"]], "Irreducible polynomial": [[277, "irreducible-polynomial"]], "Arithmetic": [[277, "arithmetic"], [278, "arithmetic"]], "Addition": [[277, "addition"], [278, "addition"]], "Subtraction": [[277, "subtraction"], [278, "subtraction"]], "Multiplication": [[277, "multiplication"], [278, "multiplication"]], "Multiplicative inverse": [[277, "multiplicative-inverse"], [278, "multiplicative-inverse"]], "Division": [[277, "division"], [278, "division"]], "A primitive element": [[277, "a-primitive-element"], [278, "a-primitive-element"]], "Other primitive elements": [[277, "other-primitive-elements"], [278, "other-primitive-elements"]], "Non-primitive elements": [[277, "non-primitive-elements"], [278, "non-primitive-elements"]], "Intro to Prime Fields": [[278, "intro-to-prime-fields"]], "\u00c9variste Galois": [[278, null]], "Prime field": [[278, "prime-field"]], "Primitive roots mod p": [[278, "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/formatting/", "development/installation/", "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/v0.4/", "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", "Formatting", "Installation", "Unit Tests", "Index", "Getting Started", "Features", "Benchmarks", "Binary Extension Fields", "Prime Fields", "v0.0", "v0.1", "v0.2", "v0.3", "v0.4", "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, 277, 278], "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, 275], "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, 263, 266, 267, 271, 272, 274, 277, 278], "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, 277, 278], "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, 277], "ring": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 255, 267, 277, 278], "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, 262, 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, 262, 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, 277, 278], "object": [0, 115, 142, 191, 207, 239, 241, 248, 249, 250, 251, 252, 253, 259, 260, 266, 271, 277], "can": [0, 4, 8, 18, 31, 36, 44, 64, 73, 77, 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, 263, 266, 267, 270, 271, 276, 277, 278], "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, 262, 267, 271, 272, 273, 274, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277], "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, 277, 278], "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, 261, 264, 266, 267, 268, 269, 270, 271, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "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, 275, 277], "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, 277, 278], "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, 277, 278], "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, 262, 271, 274, 277], "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, 276, 277, 278], "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, 271, 278], "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, 262, 264, 266, 267, 271, 274, 277, 278], "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, 278], "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, 276, 277, 278], "section": [0, 89, 153, 154, 155, 159, 167, 194, 197, 198, 199, 200, 228, 232, 233, 246, 254, 260, 269, 270, 271, 277, 278], "contain": [0, 268, 271], "mani": [0, 31, 177, 212, 250, 254, 257, 260, 262, 278], "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, 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, 278], "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, 262, 271, 273, 274, 277, 278], "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, 277], "conwai": [0, 115, 132, 157, 158, 159, 161, 193, 238, 259, 267, 274, 277], "c_": [0, 31, 33, 45, 46, 47, 50, 51, 58, 115, 117, 118, 119, 122, 123, 130, 132, 157, 158, 177, 179, 191, 193, 277], "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, 264, 266, 267, 271, 272, 274, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "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, 278], "code": [0, 8, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 77, 115, 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, 263, 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, 262, 263, 264, 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, 277, 278], "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, 277, 278], "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, 262, 271], "argument": [0, 69, 91, 103, 104, 115, 190, 197, 201, 223, 230, 243, 256, 257, 258, 259, 262, 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, 263, 264, 266, 267, 268, 269, 270, 271, 274, 276, 277, 278], "pairwis": [0, 190], "coprim": [0, 190, 192, 198, 209, 215, 219, 240, 241, 246, 278], "egcd": [0, 197, 201, 223, 243, 271, 277, 278], "b": [0, 142, 153, 154, 156, 167, 197, 201, 203, 211, 216, 232, 244, 247, 261, 262, 267, 269, 270, 271, 272, 274, 277, 278], "_poli": [0, 197, 199], "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, 261, 269, 270, 271, 277, 278], "gcd": [0, 159, 197, 201, 210, 223, 228, 231, 233, 243, 271, 277, 278], "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, 261, 266, 267, 268, 269, 270, 271, 273, 276, 277, 278], "greatest": [0, 197, 201, 271], "common": [0, 193, 197, 200, 201, 223, 228, 259, 271, 277], "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, 277, 278], "mod": [0, 31, 177, 192, 194, 200, 224, 228, 233, 270, 271, 277], "everi": [0, 36, 72, 89, 92, 110, 181, 192, 209, 240, 256, 257, 277, 278], "crt": [0, 194, 271], "remaind": [0, 31, 177, 194, 269, 271, 277], "moduli": [0, 194, 204, 230, 271], "solv": [0, 194, 272, 278], "simultan": [0, 194], "system": [0, 194, 249, 262, 264, 268], "jacobi_symbol": [0, 219, 220, 224, 271], "jacobi": [0, 219, 220, 278], "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, 262, 267, 271, 277, 278], "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, 277, 278], "mathbb": [0, 192, 204, 209, 215, 230, 240, 241, 246, 266, 267, 270, 278], "z": [0, 191, 192, 209, 215, 240, 241, 246, 254, 257, 270, 278], "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, 277, 278], "cyclic": [0, 22, 168, 192, 209, 215, 240, 241, 271, 277, 278], "primitive_root": [0, 115, 204, 209, 215, 230, 240, 241, 271, 278], "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, 277, 278], "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, 278], "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, 262, 271, 273, 274, 275], "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, 277, 278], "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, 263, 266, 273, 277, 278], "mid": [0, 132, 157, 158, 159, 161, 193, 195, 196, 198, 224, 254], "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, 263, 268, 271, 273, 277, 278], "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, 274, 277, 278], "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, 277, 278], "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, 278], "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, 278], "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, 261, 262, 266, 267, 268, 269, 270, 271, 272, 273, 277, 278], "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, 262, 263, 266, 268, 269, 270, 271, 272, 273, 277, 278], "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, 277, 278], "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, 275, 277, 278], "7": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 114, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 266, 267, 268, 269, 270, 271, 272, 273, 277, 278], "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, 274], "nearest": [0, 229, 234], "prev_prim": [0, 221, 229, 234, 235, 244, 271, 274], "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, 277, 278], "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, 8, 73, 74, 77, 107, 108, 115, 139, 202, 209, 211, 228, 240, 250, 254, 258, 260, 263, 264, 266, 267, 271, 277, 278], "current": [0, 1, 12, 19, 45, 56, 61, 81, 111, 115, 116, 117, 128, 141, 202, 256, 258, 260, 263, 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, 277, 278], "option": [0, 31, 73, 115, 166, 177, 202, 232, 242, 245, 268, 271, 274], "packag": [0, 103, 104, 202, 209, 232, 240, 242, 245, 263, 267, 271, 272, 277, 278], "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, 263, 264, 266, 267, 268, 269, 270, 271, 274, 277, 278], "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, 270, 271, 277, 278], "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, 276, 277], "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, 277, 278], "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, 275], "cannot": [1, 8, 31, 61, 77, 78, 80, 111, 112, 115, 177, 232, 233, 247, 257, 269, 277, 278], "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, 277, 278], "ident": [1, 2, 59, 61, 62, 89, 108, 110, 116, 131, 132, 134, 141, 204, 255, 259, 260, 271, 272, 278], "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, 275], "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, 277, 278], "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, 277], "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, 277, 278], "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, 277, 278], "set": [1, 18, 61, 90, 97, 106, 115, 116, 148, 190, 209, 219, 240, 241, 256, 257, 259, 262, 264, 266, 268, 271, 274, 277, 278], "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, 275, 277, 278], "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, 275, 278], "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, 266, 267, 268, 271, 273, 274, 278], "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, 277, 278], "compat": [1, 11, 61, 80, 116, 157, 158, 193, 276], "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, 278], "name": [1, 15, 34, 35, 45, 61, 69, 88, 94, 95, 103, 104, 105, 107, 115, 116, 180, 224, 228, 236, 237, 255, 256, 262, 266, 268, 271, 274, 277, 278], "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, 275], "ufunc_mod": [1, 8, 19, 20, 61, 77, 91, 111, 112, 116, 257, 268, 269, 270, 271, 274], "support": [1, 20, 61, 112, 115, 116, 225, 254, 256, 257, 259, 260, 266, 267, 271, 272, 273, 274, 275], "unit": [1, 21, 61, 94, 113, 116, 256, 263, 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, 275, 278], "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, 277, 278], "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, 262, 264, 268, 270, 271, 272, 274, 277, 278], "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, 263, 266, 268, 276, 277, 278], "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, 277, 278], "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, 277, 278], "pass": [4, 22, 31, 32, 33, 47, 64, 119, 137, 168, 177, 178, 179, 204, 230, 256, 258, 259, 261, 263, 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, 277, 278], "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, 266, 271, 273, 274, 277, 278], "auto": [8, 60, 77, 115], "updat": [8, 18, 77, 106, 261, 272], "select": [8, 77, 115, 200, 226, 257, 262, 277, 278], "less": [8, 77, 78, 111, 115, 161, 214, 227, 228, 236, 237, 257, 258, 269, 270, 274, 277, 278], "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, 277, 278], "20": [8, 25, 31, 32, 33, 45, 64, 65, 69, 75, 76, 77, 78, 82, 91, 99, 101, 102, 104, 107, 109, 110, 111, 113, 115, 117, 155, 169, 170, 173, 177, 178, 179, 184, 187, 192, 198, 199, 209, 214, 235, 240, 246, 250, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 273, 277, 278], "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, 108, 111, 112, 115, 249, 254, 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, 277, 278], "effici": [8, 57, 77, 115, 129, 212, 233, 235, 240, 260, 267, 269, 270, 271, 278], "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, 277, 278], "few": [8, 77, 115, 277, 278], "case": [8, 77, 115, 224, 232, 257, 264, 270], "explicit": [8, 18, 77, 78, 91, 106, 111, 112, 115, 250, 258, 267, 271, 277, 278], "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, 262, 267, 271, 274], "should": [8, 25, 77, 94, 115, 171, 206, 212, 238], "store": [8, 77, 115, 256, 257, 261, 263, 264], "ram": [8, 77, 115], "slower": [8, 77, 115, 257, 269, 270], "pure": [8, 77, 78, 111, 112, 115, 257, 267], "intend": [8, 77, 115, 266, 267], "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], "howev": [8, 18, 77, 103, 104, 106, 115, 142, 175, 182, 192, 200, 204, 214, 219, 225, 228, 230, 238, 255, 256, 257, 258, 269, 270, 271, 277, 278], "enabl": [8, 77, 115, 254, 262, 271, 273], "run": [8, 77, 115, 212, 261, 268, 269, 270, 271, 272, 274], "without": [8, 61, 71, 77, 115, 116, 132, 147, 250, 259, 266, 267], "numba": [8, 77, 115, 257, 267, 271, 274, 275], "To": [18, 22, 106, 168, 258, 263, 264, 268, 269, 271, 278], "displai": [18, 61, 70, 71, 73, 106, 116, 146, 147, 242, 245, 258, 268, 271, 272, 273, 277, 278], "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, 268, 270, 277], "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, 261, 269, 270, 271, 272, 273, 277, 278], "process": [18, 106, 258], "take": [18, 106, 115, 257, 258, 261, 278], "while": [18, 106, 115, 206, 207, 238, 239, 255, 258, 259, 268], "when": [18, 22, 75, 93, 103, 104, 106, 115, 192, 233, 254, 256, 258, 260, 266, 267, 269, 270, 271, 272, 274, 275, 277, 278], "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, 276], "statement": [18, 106, 242, 262, 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, 277, 278], "_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, 275], "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, 275, 277, 278], "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, 278], "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, 277, 278], "binari": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 115, 135, 206, 254, 259, 271, 274], "15": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 57, 61, 64, 65, 69, 73, 75, 76, 82, 89, 91, 93, 94, 101, 102, 103, 104, 107, 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, 277, 278], "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, 277, 278], "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, 261, 264, 266, 267, 268, 269, 270, 271, 273, 275, 277, 278], "dec_m": [22, 168], "np": [22, 28, 29, 31, 64, 69, 75, 88, 91, 92, 99, 103, 104, 108, 110, 137, 141, 160, 168, 174, 175, 177, 191, 204, 222, 230, 237, 248, 249, 255, 256, 258, 260, 266, 269, 270, 271, 273, 274, 277, 278], "array_equ": [22, 31, 91, 92, 99, 110, 168, 177, 191, 222, 254, 271], "true": [22, 25, 27, 28, 31, 32, 34, 35, 37, 38, 39, 50, 51, 60, 61, 69, 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, 161, 162, 166, 167, 168, 171, 173, 174, 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, 277, 278], "instruct": [22, 168, 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, 277, 278], "correct": [22, 31, 44, 168, 177, 189, 197, 267, 269, 277, 278], "error": [22, 31, 32, 44, 168, 177, 178, 189, 197, 225, 262, 267, 271, 274, 275], "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, 79, 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, 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, 266, 268, 269, 270, 271, 272, 273, 277, 278], "9": [22, 23, 25, 27, 28, 31, 32, 33, 37, 39, 45, 55, 57, 61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 82, 83, 84, 89, 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, 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, 277, 278], "__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, 268, 274], "relev": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 271], "_field": [22, 31, 103, 104, 168, 177], "_arrai": [22, 31, 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, 277, 278], "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, 278], "length": [22, 31, 32, 33, 41, 61, 67, 114, 116, 132, 145, 148, 168, 177, 178, 179, 186, 204, 230, 256, 262, 271], "capabl": [22, 44, 168, 189, 277, 278], "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, 277, 278], "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, 262], "generator_poli": [22, 23, 27, 36, 37, 39, 43, 168, 169, 173, 175, 181, 182, 184, 188], "parity_check_poli": [22, 24, 42, 168, 170, 187], "13": [23, 24, 25, 26, 27, 28, 31, 32, 33, 38, 39, 42, 45, 57, 61, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 97, 101, 102, 107, 108, 110, 113, 115, 117, 129, 135, 139, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 195, 197, 198, 204, 208, 209, 210, 212, 226, 229, 230, 231, 232, 234, 235, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 271, 272, 273, 274, 277, 278], "fals": [23, 27, 31, 32, 37, 38, 39, 75, 86, 87, 88, 89, 115, 132, 141, 142, 157, 158, 159, 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, 222, 223, 236, 237, 238, 239, 243, 248, 250, 251, 252, 255, 256, 258, 259, 260, 266, 271, 277], "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, 262, 269, 271, 277, 278], "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, 278], "long": [25, 171, 262], "thei": [25, 103, 104, 115, 133, 138, 142, 143, 157, 158, 171, 193, 200, 210, 231, 255, 256, 257, 259, 260, 268, 269, 276, 277, 278], "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, 262, 267, 268, 271, 274, 278], "primitive_root_of_un": [25, 61, 103, 116, 171, 254, 271], "26": [25, 26, 27, 30, 31, 32, 34, 35, 40, 41, 44, 64, 69, 75, 82, 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, 261, 268, 270, 274, 277, 278], "17": [25, 31, 32, 33, 45, 65, 69, 73, 75, 82, 90, 91, 92, 97, 101, 102, 107, 108, 110, 113, 115, 117, 169, 173, 177, 178, 179, 184, 198, 204, 209, 226, 228, 229, 230, 231, 232, 235, 240, 241, 246, 247, 248, 250, 251, 254, 255, 256, 258, 259, 260, 261, 266, 268, 272, 273, 274, 277, 278], "10": [25, 31, 32, 33, 37, 45, 53, 55, 56, 57, 59, 61, 64, 65, 69, 72, 73, 75, 82, 89, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 157, 158, 166, 167, 168, 169, 170, 173, 177, 178, 179, 182, 184, 187, 191, 192, 193, 194, 197, 199, 200, 204, 206, 209, 210, 212, 216, 217, 225, 228, 230, 231, 232, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 277, 278], "11": [25, 27, 31, 32, 33, 45, 55, 57, 61, 65, 67, 69, 72, 73, 75, 76, 82, 89, 91, 92, 93, 94, 96, 101, 102, 103, 104, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 181, 182, 184, 187, 188, 190, 191, 192, 194, 197, 198, 200, 204, 209, 210, 230, 231, 232, 235, 236, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 274, 277, 278], "discov": [25, 199, 225, 232, 247, 271, 274, 278], "loop": [25, 207, 239, 241, 262, 269, 270, 271, 272, 274], "12": [25, 27, 31, 32, 33, 45, 55, 57, 61, 64, 65, 67, 69, 72, 73, 75, 82, 89, 90, 91, 92, 93, 94, 97, 101, 102, 106, 107, 108, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 168, 169, 170, 173, 175, 177, 178, 179, 181, 182, 184, 187, 188, 192, 194, 196, 197, 198, 201, 204, 209, 210, 216, 225, 228, 231, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 270, 271, 272, 274, 277, 278], "14": [25, 26, 27, 30, 31, 32, 33, 34, 35, 40, 41, 44, 45, 57, 61, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 129, 135, 152, 166, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 204, 209, 223, 225, 230, 231, 238, 240, 243, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 277, 278], "24": [25, 31, 32, 45, 64, 69, 75, 76, 82, 91, 99, 101, 102, 107, 110, 113, 115, 117, 155, 169, 173, 177, 178, 184, 196, 199, 209, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 268, 273, 274, 277, 278], "22": [25, 31, 32, 45, 64, 69, 75, 76, 82, 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, 268, 277, 278], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 82, 91, 101, 102, 104, 107, 109, 110, 113, 115, 117, 155, 166, 169, 173, 176, 177, 178, 179, 180, 184, 185, 186, 189, 192, 199, 209, 217, 231, 240, 250, 251, 254, 255, 256, 258, 259, 260, 261, 266, 268, 273, 274, 277, 278], "16": [25, 31, 32, 33, 34, 45, 65, 67, 69, 73, 75, 78, 82, 90, 91, 92, 97, 101, 102, 103, 104, 107, 108, 110, 111, 113, 114, 115, 117, 135, 169, 170, 173, 177, 178, 179, 180, 184, 187, 192, 197, 201, 209, 225, 228, 231, 237, 240, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 272, 273, 277, 278], "string": [27, 49, 73, 95, 105, 107, 121, 135, 139, 147, 173, 248, 249, 250, 251, 252, 256, 259, 271, 275, 277], "true_": [28, 29, 75, 91, 160, 174, 175, 237], "multiplicative_ord": [28, 61, 94, 107, 116, 174, 214, 236, 237, 255, 271, 273, 274, 277, 278], "notic": [29, 36, 37, 43, 57, 59, 107, 115, 129, 131, 141, 175, 182, 204, 219, 230, 238, 277, 278], "greater": [30, 78, 89, 96, 110, 111, 162, 210, 217, 231, 257, 269, 270, 271, 277], "d_": [30, 31, 32, 178], "min": [30, 31, 32, 76, 109, 178, 206, 207, 209, 225, 236, 238, 239, 240, 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, 277, 278], "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, 261, 273, 274, 277], "entir": [31, 177, 269, 277], "too": [31, 80, 177, 262], "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, 264, 267, 268, 271, 277, 278], "up": [31, 115, 199, 226, 227, 235, 247, 257, 262, 267, 271, 274], "singl": [31, 32, 33, 64, 72, 75, 89, 91, 93, 94, 139, 177, 178, 179, 254, 256, 271], "recov": [31, 177, 232, 255], "19": [31, 32, 33, 45, 64, 65, 69, 75, 82, 90, 91, 92, 97, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 179, 184, 198, 199, 209, 226, 235, 240, 241, 246, 250, 252, 254, 255, 256, 258, 259, 260, 266, 268, 272, 277, 278], "three": [31, 32, 33, 177, 178, 179, 223, 225, 241, 243, 257, 277], "21": [31, 32, 45, 69, 75, 82, 91, 92, 101, 102, 107, 110, 113, 115, 117, 169, 171, 172, 173, 174, 177, 178, 183, 184, 209, 240, 241, 250, 254, 255, 256, 258, 259, 260, 266, 268, 270, 274, 277, 278], "23": [31, 32, 45, 69, 75, 76, 82, 91, 101, 102, 107, 109, 110, 113, 117, 155, 173, 177, 178, 199, 209, 250, 254, 255, 256, 258, 259, 260, 268, 272, 274, 277, 278], "add": [31, 108, 177, 250, 260, 271, 276, 277], "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, 277, 278], "third": [31, 177, 264], "25": [31, 32, 45, 69, 75, 76, 82, 91, 92, 97, 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, 277, 278], "27": [31, 32, 34, 64, 69, 75, 82, 90, 91, 92, 97, 101, 102, 107, 108, 109, 110, 113, 115, 173, 177, 178, 180, 254, 255, 256, 258, 259, 260, 268, 270, 272, 277, 278], "28": [31, 32, 64, 75, 76, 82, 85, 91, 97, 99, 101, 102, 104, 109, 110, 113, 115, 155, 173, 177, 178, 199, 223, 254, 255, 256, 258, 259, 260, 268, 277, 278], "29": [31, 32, 64, 75, 76, 82, 91, 92, 99, 101, 102, 108, 109, 110, 113, 155, 173, 177, 178, 199, 228, 253, 254, 255, 256, 258, 259, 260, 268, 270, 272, 277, 278], "30": [31, 32, 75, 76, 82, 91, 92, 97, 101, 102, 103, 104, 109, 110, 113, 115, 155, 173, 177, 178, 199, 241, 254, 255, 256, 258, 259, 260, 268, 274, 277, 278], "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, 254, 255, 256, 258, 259, 260, 268, 270, 272, 274, 277, 278], "32": [31, 32, 78, 91, 111, 112, 155, 173, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 269, 270, 274, 277, 278], "33": [31, 32, 91, 141, 155, 171, 172, 173, 174, 177, 178, 183, 199, 254, 255, 256, 258, 259, 260, 268, 269, 277, 278], "34": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 266, 268, 271, 277, 278], "35": [31, 32, 91, 115, 177, 178, 210, 231, 254, 255, 256, 258, 259, 260, 268, 271, 277, 278], "36": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 270, 277, 278], "37": [31, 32, 91, 115, 141, 145, 155, 177, 178, 199, 232, 254, 255, 256, 258, 259, 260, 268, 271, 277, 278], "38": [31, 32, 91, 155, 157, 158, 177, 178, 193, 199, 228, 254, 256, 258, 259, 260, 266, 268, 277, 278], "39": [31, 91, 155, 177, 178, 194, 199, 254, 256, 258, 259, 260, 268, 271, 277, 278], "40": [31, 91, 155, 177, 178, 199, 254, 256, 258, 259, 260, 266, 268, 271, 277, 278], "41": [31, 91, 115, 155, 177, 199, 232, 254, 255, 256, 258, 259, 260, 268, 272, 277, 278], "42": [31, 91, 177, 254, 256, 258, 259, 260, 268, 277, 278], "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, 277, 278], "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, 277, 278], "dual": [42, 187], "These": [43, 188, 204, 230, 257, 259, 263, 267, 269, 274], "specif": [43, 138, 188, 232, 255, 263, 264, 266, 268], "bigg": [44, 189, 198, 224], "reciproc": [45, 47, 50, 51, 117, 119, 122, 123, 271, 277, 278], "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, 263, 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, 263, 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, 236, 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, 159, 163, 164, 165, 170, 187, 191, 194, 197, 206, 222, 238, 242, 243, 245, 259, 260, 269, 270, 271], "10x": [45, 117, 170, 175, 181, 182, 187, 188], "reset": [45, 55, 117, 127, 266], "to_galois_lfsr": [45, 59], "convert": [45, 59, 61, 67, 114, 116, 117, 131, 133, 138, 143, 204, 230, 236, 237, 256, 257, 258, 259, 266, 270, 271], "same": [45, 57, 59, 115, 117, 129, 131, 132, 141, 142, 153, 155, 175, 182, 199, 204, 222, 225, 230, 238, 255, 270, 271], "finit": [45, 52, 61, 65, 69, 70, 71, 72, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 89, 91, 93, 94, 95, 103, 104, 107, 110, 113, 115, 116, 117, 124, 132, 141, 142, 144, 146, 147, 152, 156, 157, 158, 159, 193, 204, 230, 240, 241, 248, 250, 254, 256, 257, 258, 259, 260, 266, 267, 269, 270, 271, 273, 274, 277, 278], "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, 277, 278], "unaffect": [53, 125], "view": [55, 127, 204, 230, 262, 266, 269, 270, 271, 277, 278], "direct": [57, 129, 209, 240], "backward": [57, 129, 276], "ab": [57, 129, 277], "end": [57, 129, 224, 262], "more": [57, 129, 132, 148, 254, 258, 259, 260, 266, 271, 277, 278], "origin": [57, 129], "given": [59, 76, 90, 97, 109, 131, 137, 157, 193, 215, 232, 237, 240, 241, 255, 257, 259, 274, 277, 278], "fibonacci_lfsr": [59, 131], "differ": [59, 91, 107, 131, 142, 144, 175, 182, 204, 209, 230, 240, 250, 254, 255, 260, 264, 270, 277, 278], "galois_lfsr": [59, 131], "see": [59, 81, 103, 104, 115, 131, 132, 153, 154, 155, 199, 252, 254, 258, 259, 260, 266, 271, 277, 278], "verifi": [60, 115, 244, 255, 271, 274], "factori": [61, 115, 116, 255, 258, 266, 271, 277, 278], "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, 267, 271], "44": [61, 115, 155, 177, 199, 254, 255, 256, 258, 259, 260, 268, 270, 271, 277, 278], "236": [61, 91, 254, 266, 271], "206": [61, 91, 254, 268, 271], "138": [61, 91, 253, 254, 256, 268], "isinst": [61, 116, 255, 266, 271], "\u03b1": [61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 277, 278], "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, 277], "143": [61, 253, 254, 259, 268], "204": [61, 91, 254, 266], "55": [61, 91, 115, 141, 254, 255, 256, 259, 260, 268, 271, 274, 277, 278], "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, 277], "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], "arithmetic_t": [61, 73, 116, 271, 277, 278], "repr_tabl": [61, 107, 116, 258, 271, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "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, 277, 278], "echelon": [61, 108, 116], "form": [61, 108, 116, 209, 240, 246, 277, 278], "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, 262, 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, 277, 278], "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, 75, 91, 248, 251, 254, 256], "69": [69, 91, 228, 248, 251, 254, 256, 258, 259, 260, 268, 271, 277], "54": [69, 91, 248, 251, 254, 256, 260, 268, 271, 277, 278], "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, 262, 271, 272, 273, 274, 275], "alwai": [74, 93, 152, 159, 238, 260, 271, 277, 278], "result": [74, 94, 137, 141, 152, 212, 225, 254, 257, 260, 269, 271, 277, 278], "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, 277], "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, "197": [75, 91, 240, 241, 254, 268], "174": [75, 91, 254, 268], "146": [75, 91, 141, 254, 266, 268], "50": [75, 91, 254, 256, 260, 268, 271, 272, 277, 278], "220": [75, 254, 268, 269], "185": [75, 91, 133, 141, 254, 255, 256, 272], "137": [75, 91, 93, 254, 259, 268, 271], "129": [75, 91, 254, 268, 271], "65": [75, 91, 171, 172, 173, 174, 183, 254, 256, 260, 268, 270, 271, 277, 278], "68": [75, 91, 254, 256, 260, 268, 274, 277], "206x": 75, "146x": [75, 173], "164": [75, 91, 253, 254, 268], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "77": [75, 161, 254, 256, 268, 271, 272, 277], "163": [75, 91, 141, 254, 255, 271], "198": [75, 138, 253, 254], "60": [75, 91, 216, 254, 255, 256, 260, 268, 272, 275, 277, 278], "108": [75, 91, 254, 256, 266, 271], "166": [75, 91, 254, 268, 271], "71": [75, 91, 254, 256, 260, 268, 271, 277], "150": [75, 91, 210, 231, 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, 277], "mathcal": [76, 90, 97, 109], "dim": [76, 90, 97, 109], "speed": [78, 111, 257, 267, 271, 274], "65537": [78, 111, 112, 274], "memori": [78, 111, 256, 257, 267], "save": [78, 111, 267, 268], "still": [78, 111, 142], "fit": [78, 111, 112], "within": [78, 111, 112], "2147483647": [78, 111, 227], "36893488147419103183": [78, 80, 111, 112, 115], "100": [78, 80, 91, 111, 112, 115, 210, 231, 232, 247, 249, 254, 255, 256, 257, 266, 268, 269, 270, 271, 272, 274], "unsupport": 80, "typeerror": [80, 104, 271], "small": [80, 233, 256, 270, 271, 274, 277, 278], "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, 261, 267, 270, 271, 277, 278], "certain": [80, 254, 256, 259, 271, 274], "unlimit": [80, 256, 257], "chang": [81, 257, 258, 259, 263, 276], "further": [81, 115], "discuss": [81, 115, 256, 266, 277], "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], "false_": [88, 160], "exist": [89, 96, 103, 104, 110, 115, 157, 159, 193, 204, 206, 209, 225, 230, 238, 240, 254, 266, 271, 277, 278], "exactli": [89, 96, 110, 277], "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, 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, 277, 278], "ln": [90, 97, 109], "invok": [91, 257, 260, 264, 266, 268, 269, 270, 271], "obei": 91, "broadcast": [91, 254, 266, 272], "rule": [91, 139, 266], "127": [91, 226, 227, 254, 266, 271], "179": [91, 254, 255, 259, 266, 268], "128": [91, 253, 254, 268], "75": [91, 228, 254, 256, 258, 268, 277], "200": [91, 254, 258, 268, 271], "123": [91, 141, 145, 254, 256, 271], "207": [91, 254, 268, 271], "52": [91, 115, 254, 255, 256, 259, 260, 268, 271, 277, 278], "66": [91, 253, 254, 256, 260, 268, 277], "89": [91, 226, 253, 254, 256, 268, 277], "238": [91, 253, 254], "53": [91, 228, 254, 256, 260, 268, 271, 277, 278], "162": [91, 253, 254, 271], "240": [91, 254, 271], "223": [91, 132, 171, 172, 173, 174, 183, 254], "106": [91, 254, 256], "99": [91, 254, 256, 268, 271], "181": [91, 197, 253, 254, 269, 271], "141": [91, 254, 268], "anoth": [91, 108, 260, 278], "242": [91, 254, 255, 256, 271], "182": [91, 254, 268], "190": [91, 253, 254, 272], "81": [91, 228, 237, 254, 255, 256, 268, 272, 274, 277], "82": [91, 152, 228, 254, 256, 266, 268, 271, 277], "229": [91, 254, 268], "177": [91, 254, 268], "117": [91, 135, 139, 254, 259], "219": [91, 254, 268], "73": [91, 133, 254, 256, 260, 268, 277], "149": [91, 219, 220, 224, 253, 254, 268], "217": [91, 254, 271], "199": [91, 254, 268], "59": [91, 173, 254, 256, 260, 268, 271, 274, 277, 278], "57": [91, 115, 254, 255, 256, 260, 268, 271, 274, 277, 278], "203": [91, 254], "189": [91, 152, 254], "105": [91, 254, 256], "211": [91, 254], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 277, 278], "225": [91, 138, 254, 271], "67": [91, 254, 256, 260, 266, 268, 271, 272, 277], "95": [91, 254, 256, 266, 268, 271], "91": [91, 195, 228, 254, 256, 268, 277], "153": [91, 166, 254, 256, 268, 269], "233": [91, 253, 254, 268], "101": [91, 254, 256], "193": [91, 254, 255, 256, 268, 271, 272], "103": [91, 141, 254, 256], "159": [91, 254, 271], "183": [91, 253, 254, 256], "175": [91, 254], "61": [91, 226, 254, 256, 260, 271, 277, 278], "125": [91, 254], "139": [91, 254], "83": [91, 242, 245, 254, 256, 268, 271, 277], "131": [91, 254, 268, 271], "109": [91, 242, 245, 254, 256, 266, 271], "173": [91, 254, 266], "51": [91, 254, 256, 259, 260, 266, 268, 272, 274, 277, 278], "111": [91, 254, 256], "191": [91, 254, 268, 271], "157": [91, 254], "221": [91, 197, 254, 271], "195": [91, 253, 254, 256, 271], "227": [91, 93, 166, 253, 254], "239": [91, 254], "161": [91, 254, 268, 272], "145": [91, 254, 268], "115": [91, 254, 268, 271], "119": [91, 137, 138, 253, 254], "147": [91, 253, 254, 268], "107": [91, 197, 226, 253, 254, 256], "79": [91, 228, 254, 256, 268, 274, 277], "155": [91, 254], "49": [91, 254, 255, 256, 260, 268, 272, 277, 278], "237": [91, 254, 271], "63": [91, 254, 256, 260, 268, 277, 278], "241": [91, 254, 255, 266, 268, 271], "169": [91, 254], "133": [91, 254], "235": [91, 254, 268, 271], "151": [91, 253, 254, 272], "85": [91, 171, 172, 173, 174, 183, 254, 256, 268, 272, 277], "215": [91, 254, 268, 271], "167": [91, 253, 254, 256, 268], "93": [91, 254, 256, 271, 277], "87": [91, 254, 256, 266, 268, 274, 277], "135": [91, 254, 266], "47": [91, 115, 254, 255, 256, 260, 266, 268, 274, 277, 278], "213": [91, 254, 256, 268], "97": [91, 254, 256, 268], "201": [91, 141, 145, 254, 271], "43": [91, 115, 137, 177, 254, 255, 256, 258, 259, 260, 268, 277, 278], "171": [91, 254, 271, 272], "98": [91, 253, 254, 256, 268], "170": [91, 254], "70": [91, 254, 256, 260, 271, 273, 277], "218": [91, 141, 201, 254, 268, 271], "104": [91, 201, 254, 256], "74": [91, 228, 254, 256, 260, 271, 277], "194": [91, 254], "94": [91, 254, 256, 268, 277], "184": [91, 254, 268], "172": [91, 254, 271], "64": [91, 210, 231, 254, 256, 260, 268, 269, 277, 278], "90": [91, 228, 254, 256, 268, 271, 277], "58": [91, 240, 241, 254, 256, 259, 260, 268, 271, 274, 277, 278], "234": [91, 254], "196": [91, 254], "168": [91, 156, 254, 268, 271], "84": [91, 141, 254, 256, 268, 277], "178": [91, 254, 268, 271], "186": [91, 253, 254, 268], "92": [91, 254, 256, 268, 269, 271, 277], "80": [91, 214, 254, 256, 268, 271, 277], "126": [91, 254], "76": [91, 254, 256, 268, 271, 277], "124": [91, 132, 253, 254, 255, 256], "86": [91, 254, 256, 268, 277], "160": [91, 254], "46": [91, 115, 155, 199, 254, 255, 256, 260, 268, 273, 277, 278], "228": [91, 254, 268], "130": [91, 254], "72": [91, 254, 256, 260, 268, 271, 277], "180": [91, 254], "210": [91, 253, 254, 271], "192": [91, 141, 254, 266, 268], "62": [91, 228, 254, 256, 260, 268, 270, 277, 278], "96": [91, 141, 254, 256, 268, 271, 274], "140": [91, 254], "122": [91, 254, 268], "214": [91, 133, 254, 256, 271], "188": [91, 152, 254], "134": [91, 254, 268, 271], "144": [91, 254], "112": [91, 243, 254, 266], "142": [91, 254], "226": [91, 253, 254, 268, 271], "232": [91, 254, 268, 271], "212": [91, 254, 268], "208": [91, 254], "118": [91, 254], "156": [91, 141, 254, 268], "152": [91, 254, 268], "224": [91, 253, 254, 266], "136": [91, 254, 271], "216": [91, 254, 255, 256, 268], "158": [91, 253, 254], "202": [91, 254, 268], "116": [91, 254], "56": [91, 115, 254, 255, 256, 260, 268, 271, 277, 278], "78": [91, 254, 255, 256, 268, 270, 277], "102": [91, 254, 256, 268, 269, 271], "114": [91, 253, 254, 255, 256, 271], "120": [91, 199, 254, 262], "230": [91, 254, 255, 266], "48": [91, 115, 240, 241, 254, 255, 256, 260, 268, 270, 271, 277, 278], "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, 276, 277, 278], "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, 277], "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, 278], "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, 258, 262], "file": [103, 104, 209, 232, 240, 262, 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, 262, 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, 263, 264, 268], "y1": 110, "y2": 110, "constructor": [114, 256, 266, 267, 271], "vec": 114, "build": [115, 262], "exponenti": [115, 141, 256, 257, 271, 274], "user": [115, 254, 266, 267, 268, 271, 274], "fact": [115, 116, 228], "alreadi": [115, 255, 257, 277, 278], "never": [115, 200, 206, 207, 228, 238, 239, 241, 274, 277], "respect": [115, 277], "after": [115, 153, 154, 207, 239, 241, 254, 257, 260, 277], "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, 277], "avoid": [115, 267, 271], "need": [115, 207, 239, 241, 255, 257, 261, 262, 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, 277], "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, 277, 278], "api": [116, 271, 273, 276], "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, 277], "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, 277], "is_mon": [132, 160, 271], "won": [133, 138, 143], "assum": [133, 138, 143], "214x": 133, "73x": 133, "186535908": 135, "13x": [135, 139, 159, 173, 259], "0b1011": [135, 259, 271], "bin": [135, 259, 271], "octal": [135, 259], "0o5034": [135, 259], "oct": [135, 259, 271], "hexadecim": [135, 259], "0xf700a275": [135, 259], "247x": [135, 259], "162x": [135, 152, 259], "hex": [135, 259, 271], "_gener": 137, "56x": 137, "228x": 137, "157x": 137, "218x": 137, "148x": [137, 259], "194x": 137, "195x": 137, "200x": 137, "141x": [137, 166], "164x": [137, 152, 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, 277], "a_1": [138, 143, 144, 152, 165, 166, 194], "a_0": [138, 143, 144, 152, 165, 166, 277], "m_i": [138, 159, 166, 194], "121": [138, 254, 259, 271], "215x": 138, "90x": 138, "183x": [138, 271], "pars": 139, "indetermin": [139, 141, 250, 260], "requir": [139, 191, 233, 261, 262, 263, 264, 268, 270, 271, 274, 277], "charact": [139, 258], "13y": 139, "term": [139, 148, 206, 207, 225, 238, 239, 270, 271, 274], "abov": [139, 209, 240, 250], "wise": [141, 266, 277], "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, 262, 269, 271], "allow": [142, 230, 232, 253, 254, 257, 258, 263, 264, 271, 277, 278], "interpret": [143, 271], "lowest": 143, "consid": [144, 277, 278], "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, 276], "higher": 148, "accessor": 148, "similar": [148, 256, 257, 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, 278], "brought": 152, "down": 152, "formal_deriv": 152, "4x": [152, 154, 159, 160, 165, 167, 194, 197, 206, 238, 243, 259, 260], "6x": [152, 157, 158, 193, 194, 206, 222, 236, 238, 243, 260, 270, 271], "85x": 152, "65x": 152, "170x": 152, "188x": [152, 173], "81x": 152, "82x": [152, 156, 173], "f_i": 153, "algorithm": [153, 154, 155, 157, 158, 159, 161, 167, 191, 193, 197, 199, 201, 204, 212, 219, 220, 224, 230, 232, 233, 240, 247, 267, 271, 274, 277, 278], "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, 277], "appli": [153, 154, 155, 199, 249, 254, 266, 271, 274], "complet": [153, 154, 167, 267, 271, 277, 278], "implement": [153, 154, 159, 166, 167, 191, 192, 194, 195, 197, 198, 201, 204, 230, 235, 267, 269, 270, 271, 277, 278], "hachenberg": [153, 155, 167, 199], "jungnickel": [153, 155, 167, 199], "topic": [153, 155, 167, 199], "peopl": [153, 154, 155, 167, 199, 278], "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], "89x": 156, "135x": 156, "161x": 156, "42x": 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, 262, 264, 274], "frank": [157, 158, 193, 267, 274], "luebeck": [157, 158, 193, 267, 274], "databas": [157, 158, 193, 199, 206, 274, 275], "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, 277, 278], "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, 263, 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, 278], "necessarili": [158, 211], "strictli": [159, 271], "algebra": [159, 267, 271], "close": [159, 277, 278], "test": [159, 199, 200, 209, 212, 217, 225, 228, 240, 244, 256, 262, 263, 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, 277], "suffici": 159, "condit": [159, 206, 207, 239, 241], "being": [159, 209, 212, 214, 271], "8x": [159, 169, 175, 181, 182, 184, 188, 222, 270], "12x": [159, 175, 181, 182, 188], "14x": 159, "therefor": [162, 217, 256, 258, 277], "canon": [162, 217, 271], "f1": [162, 190, 197, 201, 217, 223, 243], "f2": [162, 190, 197, 201, 217, 223, 243], "rev": [165, 262], "_d": 165, "chien": 166, "a_1x": [166, 277], "r_i": 166, "a_j": 166, "remain": 166, "equat": 166, "overset": 166, "delta": 166, "lambda_": [166, 192], "easili": [166, 255, 258, 259, 260, 261, 262, 264, 266, 268, 269, 277, 278], "118x": 166, "172x": 166, "50x": [166, 173], "204x": 166, "202x": 166, "153x": 166, "107x": [166, 173], "187x": 166, "66x": 166, "221x": 166, "114x": [166, 271], "121x": 166, "226x": 166, "reed": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "solomon": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "9x": [169, 175, 181, 182, 184, 188, 269], "11x": [169, 170, 184, 187], "7x": [170, 175, 181, 182, 187, 188, 222], "15x": [170, 173, 175, 181, 182, 187, 188], "18x": [170, 173, 187], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "22x": [170, 187], "25x": [170, 187, 259, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "232x": 173, "29x": 173, "189x": 173, "142x": 173, "246x": 173, "43x": 173, "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, "130x": 173, "53x": 173, "94x": 173, "182x": 173, "f3": [190, 197, 201, 223, 243], "berlekamp": [191, 271], "massei": [191, 271], "depend": [191, 206, 261, 262, 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, 261, 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, 263, 270, 274, 277, 278], "congruenc": [194, 200], "a_i": 194, "solut": 194, "chines": 194, "theorem": [194, 200, 271, 278], "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, "euclidean": [197, 201, 277, 278], "chap2": [197, 198, 201, 219, 220, 224, 246], "moon": 197, "domain": 197, "totient": [198, 209, 237, 240], "big": 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, 277], "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, 278], "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, 256, 268, 274], "24841": [200, 228], "65497": [200, 228], "here": [200, 232, 255, 256, 257, 260, 267, 269, 273, 277, 278], "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, 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, 262, 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, 263, 266, 270, 271, 272, 273, 274, 278], "forward": [204, 230, 267, 271], "ifft": [204, 271], "exact": [206, 207, 238, 239], "request": [206, 263, 268], "precomput": 206, "under": [206, 268, 277, 278], "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, 277, 278], "you": [207, 225, 239, 241, 255, 256, 262, 263, 264, 266, 267, 268, 277, 278], "them": [207, 239, 241, 257, 268, 276], "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], "0x7f7341c13a70": 207, "2p": [209, 240], "znx": [209, 240, 241], "observ": [209, 240], "although": [209, 240, 277], "2d": [209, 240], "maximum": [209, 240], "stopiter": [209, 240], "_modular": [209, 240], "560": [209, 240], "559": [209, 240, 268], "561": [209, 240], "elif": [209, 240], "wa": [209, 240, 267, 271, 277], "caus": [209, 240, 271, 274], "567": [209, 240, 275], "565": [209, 240], "566": [209, 240], "No": [209, 240, 248, 250, 252], "750": [210, 231], "even": [210, 231, 257, 267, 269, 270], "could": [212, 232, 267, 271, 275], "1000000000000000035000061": [212, 240], "controversi": 213, "regard": 213, "altern": [215, 240, 241, 255], "regular": 216, "humbl": 216, "highli": 216, "As": [217, 255, 259, 267, 277, 278], "consequ": 217, "version": [218, 257, 261, 263, 266, 271, 273, 274], "befor": [218, 270, 276, 277, 278], "later": [218, 271, 278], "librari": [218, 244, 255, 257, 259, 262, 263, 264, 266, 267, 268, 269, 271, 276, 277, 278], "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, "spot": 225, "pleas": [225, 267], "submit": 225, "lin": 225, "costello": 225, "control": 225, "a000043": 226, "2000": [226, 227], "521": [226, 274], "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, 277], "gg": 232, "pq": 232, "1039": 232, "1458757": 232, "1326001": 232, "_prime": 232, "1182": 232, "1179": 232, "1180": 232, "1183": 232, "1184": 232, "secondari": 232, "1185": 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, 278], "five": 239, "0x7f734188c9c0": 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, "484689598172782070449805": 240, "0x7f734188da60": 241, "insid": [242, 258, 271], "randomli": 244, "prime_number_theorem": 244, "327845897586213436751081882871255331286648902836386839087617368608439574698192016043769533823474001379935585889197488144338014865193967937011638431094821943416361149113909692569658970713864593781874423564706915495970135894084612689487074397782022398597547611189482697523681694691585678818112329605903872356773": 244, "openssl": 244, "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, 275], "coercion": [248, 250, 252], "width": [249, 258, 271], "variabl": [250, 262], "decreas": 250, "187": [253, 254, 271], "nearli": [254, 260, 266], "univers": 254, "unari": 254, "variou": [254, 256, 262, 267, 271, 273, 274], "expand": [254, 260], "detail": [254, 258, 259, 260, 266, 271, 277, 278], "88": [254, 256, 268, 269, 271, 277], "176": [254, 271], "209": [254, 256], "essenti": [254, 260], "how": [254, 260, 264, 273], "110": [254, 256], "132": [254, 255, 268], "154": 254, "165": [254, 268], "across": [254, 274], "target": [254, 271], "axi": 254, "231": [254, 255, 256, 268, 272], "place": [254, 256], "negat": 254, "244": 254, "245": [254, 268], "246": 254, "247": 254, "248": 254, "249": 254, "250": [254, 268], "251": 254, "252": 254, "253": 254, "254": 254, "258": 254, "259": 254, "260": [254, 268], "261": [254, 272], "occur": 254, "262": 254, "263": [254, 268, 271], "264": 254, "265": 254, "7952": 254, "12470": 254, "8601": 254, "11055": 254, "12691": 254, "9895": 254, "266": 254, "9387": 254, "10789": 254, "14695": 254, "13079": 254, "14025": 254, "5694": 254, "267": [254, 268], "268": [254, 259], "269": 254, "270": [254, 268, 271], "271": [254, 268], "5\u03b1": 254, "6\u03b1": 254, "272": 254, "274": [254, 268], "275": 254, "276": 254, "277": [254, 268], "11363": 254, "2127": 254, "15189": 254, "5863": 254, "1240": 254, "278": 254, "7664": 254, "14905": 254, "15266": 254, "13358": 254, "9822": 254, "16312": 254, "279": 254, "281": [254, 268, 271], "282": [254, 268], "283": [254, 271], "284": [254, 268], "285": [254, 271], "286": 254, "287": 254, "288": 254, "289": [254, 271], "290": [254, 268], "291": 254, "292": 254, "293": 254, "294": 254, "295": [254, 268, 271], "296": [254, 271], "297": 254, "nativ": [254, 256, 267, 269, 270, 271], "298": 254, "299": [254, 271], "300": [254, 271, 274], "301": 254, "302": 254, "303": 254, "304": 254, "305": [254, 268], "306": [254, 271], "307": [254, 268], "308": 254, "309": [254, 268, 271], "310": [254, 271], "311": [254, 268], "312": [254, 271], "313": [254, 268, 271], "314": 254, "315": 254, "316": 254, "317": [254, 271], "318": 254, "319": 254, "320": [254, 271], "321": [254, 268], "322": [254, 268, 271], "323": 254, "324": 254, "325": [254, 271], "326": [254, 268], "327": [254, 268], "328": [254, 268, 271], "329": [254, 268, 275], "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, 263, 268], "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, 275], "access": [255, 258, 261, 274], "sever": [255, 256, 259, 260], "pascalcas": [255, 259], "snake_cas": [255, 259], "act": 255, "we": [256, 257, 266, 271, 277, 278], "work": [256, 260, 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], "575": [256, 268], "740": 256, "74598920225304096821610436672": 256, "472576952995018846429182946458": 256, "1184553176008292346690470337130": 256, "603089891271457145289894068390": 256, "388": 256, "400": [256, 271, 274], "astyp": [256, 270], "expect": 256, "reshap": 256, "subok": [256, 271], "Be": 256, "mind": 256, "custom": [257, 272], "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, 277, 278], "map": 257, "simplifi": [257, 262, 271], "becom": [257, 258, 278], "limit": 257, "usual": 257, "concern": 257, "intermedi": 257, "frompyfunc": 257, "lack": 257, "come": [257, 268], "penalti": 257, "intention": 257, "immedi": [257, 263], "demand": 257, "invoc": [257, 271], "Their": 258, "proper": 258, "compact": [258, 271], "old": 258, "signific": [258, 271], "natur": [258, 266, 278], "clutter": 258, "clearli": 258, "problemat": 258, "occupi": 258, "lot": [258, 271], "quit": 258, "difficult": [258, 278], "read": [258, 275], "readabl": [258, 277, 278], "improv": [258, 271, 272, 273, 274, 275], "linewidth": 258, "179x": [259, 271], "180x": 259, "19x": 259, "simpl": [259, 270, 278], "156x": 259, "211x": 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, 277], "overload": [260, 271], "sphinx": [261, 271], "immateri": [261, 271], "theme": 261, "txt": [261, 262, 263, 264, 268, 274], "reason": 261, "aren": [261, 271], "resolut": 261, "minut": 261, "ci": 261, "myst": 261, "parser": 261, "git": [261, 263, 268], "dollar": 261, "ipykernel": 261, "nb": 261, "pickleshar": 261, "switch": [261, 277, 278], "pip": [261, 262, 263, 264, 266, 268], "command": [261, 262], "dirhtml": 261, "home": 261, "directori": [261, 263, 271], "webpag": 261, "local": [261, 264], "webserv": 261, "modul": 261, "server": 261, "8080": 261, "web": 261, "browser": 261, "localhost": 261, "ruff": [262, 263], "static": 262, "analysi": 262, "lint": [262, 263], "your": [262, 264, 267, 268], "develop": [262, 263, 264, 267, 268, 274], "dev": [262, 264, 268, 269, 270, 271, 272, 274], "pyproject": [262, 264, 271], "toml": [262, 263, 264, 271], "tool": [262, 264], "src": [262, 271], "ipynb": 262, "exclud": 262, "dist": 262, "doc": [262, 273], "_version": 262, "pycodestyl": 262, "w": 262, "warn": [262, 268, 274], "pyflak": 262, "pyupgrad": 262, "flake8": 262, "bugbear": 262, "sim": 262, "dtz": 262, "datetimez": 262, "isort": [262, 274], "pl": 262, "pylint": 262, "ignor": [262, 278], "e501": 262, "e713": 262, "e714": 262, "e741": 262, "ambigu": 262, "plr0911": 262, "plr0912": 262, "branch": [262, 263, 268], "plr0913": 262, "plr0915": 262, "plr2004": 262, "magic": 262, "plr5501": 262, "collaps": 262, "els": 262, "plw0603": 262, "plw2901": 262, "redefin": [262, 271], "up006": 262, "pep585": 262, "annot": [262, 271, 272, 274], "render": [262, 271], "wrong": 262, "per": [262, 268, 269, 270, 271, 272, 274], "__init__": 262, "f401": 262, "f403": 262, "hook": 262, "config": 262, "yaml": 262, "repo": [262, 263, 268], "v2": 262, "id": [262, 271], "fixer": 262, "trail": 262, "whitespac": 262, "astral": 262, "sh": 262, "v0": 262, "disabl": [262, 271], "uninstal": 262, "vscode": [262, 264], "json": [262, 264, 268], "edit": 262, "latest": [263, 266, 272], "releas": [263, 271, 272, 273, 274, 275], "mhostett": [263, 267, 271, 272, 273, 274, 275], "activ": 263, "benefici": 263, "fashion": 263, "seen": [263, 271], "upon": 263, "clone": 263, "wherev": [263, 271], "like": [263, 266, 267, 268, 271, 277], "flag": 263, "pytest": [263, 264, 268], "cov": [263, 268], "xdist": 263, "benchmark": [263, 271], "pdfminer": 263, "six": 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, "basic": 266, "usag": [266, 271, 273], "pypi": [266, 271, 272], "__version__": 266, "dev4": 266, "g2a965108f": 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, 277, 278], "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, 275], "matt": [267, 271, 272, 273, 274, 275], "month": 267, "year": 267, "2020": 267, "url": [267, 271], "apa": 267, "test_field_arithmet": 268, "advis": 268, "extra": [268, 274], "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, "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, 275], "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, "1175": 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, "impact": 268, "0001_master": 268, "checkout": 268, "0001_branch": 268, "modular": [269, 271, 274, 278], "involv": 269, "convolut": 269, "make": [269, 271, 276], "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, 276], "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, 274], "fieldmeta": 271, "fieldclass": 271, "remov": [271, 272, 273, 274], "better": 271, "consolid": 271, "verify_irreduc": 271, "verify_primit": 271, "abil": [271, 272, 274, 277, 278], "ipython": 271, "tab": [271, 277, 278], "cleanup": 271, "tutori": [271, 277, 278], "convers": 271, "minor": [271, 274, 275, 276], "dominik": 271, "wernberg": 271, "werni2a": 271, "juli": [271, 275], "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, 277], "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, 275], "docstr": 271, "correctli": 271, "decemb": [271, 274], "style": 271, "randint": 271, "offici": 271, "major": [271, 272, 276], "syntax": 271, "express": 271, "bump": 271, "iy\u00e1n": [271, 274, 275], "m\u00e9ndez": [271, 274, 275], "veiga": [271, 274, 275], "iyanmv": [271, 274, 275], "januari": 271, "2022": [271, 272, 273, 274], "hint": 271, "februari": [271, 274], "refactor": [271, 273], "lup_decompos": 271, "is_quadratic_residu": 271, "quadratic_residu": 271, "quadratic_non_residu": 271, "co": 271, "march": 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, 275], "longer": [271, 274], "needlessli": 271, "overhaul": 271, "websit": 271, "immut": 271, "actual": 271, "obtain": 271, "answer": [271, 277, 278], "binarypoli": 271, "densepoli": 271, "sparsepoli": 271, "redund": 271, "03": 271, "nest": 271, "436": [271, 273], "910": 271, "900": 271, "242x": 271, "32x": 271, "230x": 271, "159x": 271, "83x": 271, "101x": 271, "68x": 271, "442": [271, 274], "439": 271, "april": 271, "sunset": 271, "__future__": 271, "That": 271, "alias": 271, "subpackag": 271, "metaclass": 271, "inabl": 271, "monkei": 271, "patch": [271, 276], "343": 271, "anywher": 271, "coercibl": 271, "throughout": 271, "simpler": 271, "clear": 271, "695": 271, "clariti": 271, "broken": [271, 278], "boost": 271, "722": 271, "574": 271, "527": [271, 274], "690": 271, "concis": 271, "descript": 271, "362": 271, "wide": 271, "363": 271, "polymorph": 271, "believ": 271, "introduc": [271, 276], "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, 278], "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, 274], "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, "441": 274, "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512": 274, "core": 274, "440": 274, "664": 274, "776": 274, "bitwise_xor": 274, "infinit": 274, "450": 274, "2400610585866217": 274, "black": 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, "wheel": 274, "510": 274, "511": 274, "instal": 274, "avadov": 274, "2024": [274, 275], "534": 274, "533": 274, "oo": 274, "545": 274, "justin": 274, "charlong": 274, "jcharlong": 274, "551": 274, "550": 275, "multithread": 275, "incompat": 275, "thread": 275, "sqlite": 275, "558": 275, "clarifi": 275, "underli": 275, "typo": 275, "semjon": 275, "kravt\u0161enko": 275, "semjon00": 275, "mrveka": 275, "semant": 276, "featur": 276, "guarante": 276, "thought": 276, "prove": [277, 278], "mostli": 277, "gf9": 277, "suggest": [277, 278], "compactli": 277, "retriev": [277, 278], "inform": 277, "analogu": 277, "mathemat": [277, 278], "speak": [277, 278], "gf3": 277, "a_poli": 277, "b_poli": 277, "nonetheless": [277, 278], "convinc": [277, 278], "yourself": [277, 278], "reduct": 277, "reformul": [277, 278], "onto": 277, "let": [277, 278], "earlier": [277, 278], "learn": [277, 278], "b_inv_poli": 277, "examin": [277, 278], "honor": 278, "father": 278, "theori": 278, "ask": 278, "gauss": 278, "publicli": 278, "give": 278, "opinion": 278, "truth": 278, "hope": 278, "who": 278, "advantag": 278, "deciph": 278, "mess": 278, "1832": 278, "dai": 278, "hi": 278, "death": 278, "categori": 278, "focu": 278, "gf7": 278, "a_int": 278, "b_int": 278, "similarli": 278, "euclid": 278, "b\u00e9zout": 278, "yt": 278, "b_inv_int": 278}, "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 mid 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 mid 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, 278], "field": [0, 255, 269, 270, 277, 278], "primit": [0, 277, 278], "element": [0, 61, 116, 258, 259, 260, 266, 277, 278], "polynomi": [0, 22, 45, 117, 168, 256, 258, 259, 260, 277], "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, 277], "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, 277, 278], "congruenc": 0, "root": [0, 254, 278], "integ": [0, 258], "arithmet": [0, 61, 116, 254, 260, 266, 277, 278], "factor": [0, 132, 260], "prime": [0, 270, 278], "composit": [0, 260], "specif": 0, "algorithm": 0, "gener": [0, 264], "primal": 0, "test": [0, 264], "configur": [0, 262, 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, 262, 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, 277, 278], "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, 277, 278], "x": [254, 260], "y": 254, "np": 254, "add": 254, "invers": [254, 260, 277, 278], "neg": 254, "subtract": [254, 260, 277, 278], "multipl": [254, 260, 277, 278], "multipli": 254, "scalar": [254, 256, 260], "4": [254, 274, 275], "1": [254, 272, 274, 275], "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, 277, 278], "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, 275], "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, "format": 262, "run": [262, 264], "linter": 262, "formatt": 262, "pre": 262, "commit": 262, "from": [262, 263, 264], "v": [262, 264], "pypi": 263, "github": 263, "edit": 263, "local": 263, "folder": 263, "dev": 263, "depend": [263, 268], "unit": 264, "command": 264, "line": 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, 277], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274, 275], "0": [271, 272, 273, 274, 275], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274, 275], "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, 275], "5": 274, "6": 274, "7": 274, "8": 274, "9": 274, "10": 274, "version": 276, "alpha": 276, "releas": 276, "beta": 276, "intro": [277, 278], "other": [277, 278], "non": [277, 278], "\u00e9varist": 278, "mod": 278, "p": 278}, "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"], [277, "primitive-elements"], [278, "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"], [262, "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"], [277, "elements"], [278, "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], [277, null], [278, 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"], [262, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Formatting": [[262, "formatting"]], "Run the linter": [[262, "run-the-linter"]], "Run the formatter": [[262, "run-the-formatter"]], "Pre-commit": [[262, "pre-commit"]], "Run from VS Code": [[262, "run-from-vs-code"], [264, "run-from-vs-code"]], "Installation": [[263, "installation"]], "Install from PyPI": [[263, "install-from-pypi"]], "Install from GitHub": [[263, "install-from-github"]], "Editable install from local folder": [[263, "editable-install-from-local-folder"]], "Install the dev dependencies": [[263, "install-the-dev-dependencies"]], "Unit Tests": [[264, "unit-tests"]], "Run from the command line": [[264, "run-from-the-command-line"]], "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"], [274, "id13"], [274, "id15"], [274, "id17"], [274, "id19"], [275, "changes"], [275, "id1"], [275, "id3"]], "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"], [274, "id14"], [274, "id16"], [274, "id18"], [274, "id20"], [275, "contributors"], [275, "id2"], [275, "id4"]], "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"]], "v0.3.7": [[274, "v0-3-7"]], "v0.3.8": [[274, "v0-3-8"]], "v0.3.9": [[274, "v0-3-9"]], "v0.3.10": [[274, "v0-3-10"]], "v0.4": [[275, "v0-4"]], "v0.4.0": [[275, "v0-4-0"]], "v0.4.1": [[275, "v0-4-1"]], "v0.4.2": [[275, "v0-4-2"]], "Versioning": [[276, "versioning"]], "Alpha releases": [[276, "alpha-releases"]], "Beta releases": [[276, "beta-releases"]], "Intro to Extension Fields": [[277, "intro-to-extension-fields"]], "Extension field": [[277, "extension-field"]], "Irreducible polynomial": [[277, "irreducible-polynomial"]], "Arithmetic": [[277, "arithmetic"], [278, "arithmetic"]], "Addition": [[277, "addition"], [278, "addition"]], "Subtraction": [[277, "subtraction"], [278, "subtraction"]], "Multiplication": [[277, "multiplication"], [278, "multiplication"]], "Multiplicative inverse": [[277, "multiplicative-inverse"], [278, "multiplicative-inverse"]], "Division": [[277, "division"], [278, "division"]], "A primitive element": [[277, "a-primitive-element"], [278, "a-primitive-element"]], "Other primitive elements": [[277, "other-primitive-elements"], [278, "other-primitive-elements"]], "Non-primitive elements": [[277, "non-primitive-elements"], [278, "non-primitive-elements"]], "Intro to Prime Fields": [[278, "intro-to-prime-fields"]], "\u00c9variste Galois": [[278, null]], "Prime field": [[278, "prime-field"]], "Primitive roots mod p": [[278, "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/formatting/", "development/installation/", "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/v0.4/", "release-notes/versioning/", "tutorials/intro-to-extension-fields/", "tutorials/intro-to-prime-fields/"]}) \ No newline at end of file