diff --git a/v0.3.x/.doctrees/api/galois.BCH.decode.doctree b/v0.3.x/.doctrees/api/galois.BCH.decode.doctree index 2bcea08e2..4d49a76d8 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.decode.doctree and b/v0.3.x/.doctrees/api/galois.BCH.decode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.detect.doctree b/v0.3.x/.doctrees/api/galois.BCH.detect.doctree index 35097c4b3..f1d14e55b 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.detect.doctree and b/v0.3.x/.doctrees/api/galois.BCH.detect.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.doctree b/v0.3.x/.doctrees/api/galois.BCH.doctree index c59c2abe2..09120b82d 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.doctree and b/v0.3.x/.doctrees/api/galois.BCH.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.encode.doctree b/v0.3.x/.doctrees/api/galois.BCH.encode.doctree index b39b104a3..bd5a5710d 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.encode.doctree and b/v0.3.x/.doctrees/api/galois.BCH.encode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree index ed7f14ff8..aae516207 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.Random.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree index 978578551..74fbf175a 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.characteristic_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree index b1dc3d433..5f9d4005b 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.column_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree index f4f1beafc..257e9b2ce 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.left_null_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree index 27c71ed96..80d0bbae7 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.log.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree index 742e27a44..abc47ee1d 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.minimal_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree index aeaeede28..8297a29e4 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.null_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree b/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree index f6b9fcc48..eb3ff21dc 100644 Binary files a/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree and b/v0.3.x/.doctrees/api/galois.FieldArray.row_space.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.Random.doctree b/v0.3.x/.doctrees/api/galois.Poly.Random.doctree index 46516b785..db10b9812 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Random.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Random.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree b/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree index 72c4a2fd0..0b72cca6a 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree and b/v0.3.x/.doctrees/api/galois.Poly.derivative.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.field.doctree b/v0.3.x/.doctrees/api/galois.Poly.field.doctree index 1c89fafd4..3699fcabf 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.field.doctree and b/v0.3.x/.doctrees/api/galois.Poly.field.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree b/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree index 06d20337a..06d89b5c2 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree and b/v0.3.x/.doctrees/api/galois.Poly.is_irreducible.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree index a746dbacd..8c944a153 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.decode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree index 1d00c9b21..5c0e32a17 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.detect.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree index c4eb34154..0900dfcaa 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree index 2b2b3154c..f1c38b7e3 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.encode.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.crt.doctree b/v0.3.x/.doctrees/api/galois.crt.doctree index b1282516e..a08cefad9 100644 Binary files a/v0.3.x/.doctrees/api/galois.crt.doctree and b/v0.3.x/.doctrees/api/galois.crt.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree b/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree index 21b4ebe99..6072be00a 100644 Binary files a/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree and b/v0.3.x/.doctrees/api/galois.fermat_primality_test.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree b/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree index ba7a594fe..56f060594 100644 Binary files a/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree and b/v0.3.x/.doctrees/api/galois.irreducible_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree b/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree index 897e5dd77..9c88e227d 100644 Binary files a/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree and b/v0.3.x/.doctrees/api/galois.irreducible_polys.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree b/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree index 3ff80ec57..d070c675d 100644 Binary files a/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree and b/v0.3.x/.doctrees/api/galois.lagrange_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_element.doctree b/v0.3.x/.doctrees/api/galois.primitive_element.doctree index b47b0a8d1..d85b686e4 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_element.doctree and b/v0.3.x/.doctrees/api/galois.primitive_element.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_poly.doctree b/v0.3.x/.doctrees/api/galois.primitive_poly.doctree index 77c628e56..54dd96952 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_poly.doctree and b/v0.3.x/.doctrees/api/galois.primitive_poly.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_polys.doctree b/v0.3.x/.doctrees/api/galois.primitive_polys.doctree index 8fdeb5cb9..a31fd5237 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_polys.doctree and b/v0.3.x/.doctrees/api/galois.primitive_polys.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_root.doctree b/v0.3.x/.doctrees/api/galois.primitive_root.doctree index 832b7074d..19d2e6061 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_root.doctree and b/v0.3.x/.doctrees/api/galois.primitive_root.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.primitive_roots.doctree b/v0.3.x/.doctrees/api/galois.primitive_roots.doctree index c8198f3cb..28bf9c8f1 100644 Binary files a/v0.3.x/.doctrees/api/galois.primitive_roots.doctree and b/v0.3.x/.doctrees/api/galois.primitive_roots.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.prod.doctree b/v0.3.x/.doctrees/api/galois.prod.doctree index eb03797af..09ce38153 100644 Binary files a/v0.3.x/.doctrees/api/galois.prod.doctree and b/v0.3.x/.doctrees/api/galois.prod.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree b/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree index aa0b5dd77..2ae4b4bb1 100644 Binary files a/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree and b/v0.3.x/.doctrees/api/galois.typing.ShapeLike.doctree differ diff --git a/v0.3.x/.doctrees/basic-usage/array-creation.doctree b/v0.3.x/.doctrees/basic-usage/array-creation.doctree index 5cccffadf..29c57feb1 100644 Binary files a/v0.3.x/.doctrees/basic-usage/array-creation.doctree and b/v0.3.x/.doctrees/basic-usage/array-creation.doctree differ diff --git a/v0.3.x/.doctrees/basic-usage/element-representation.doctree b/v0.3.x/.doctrees/basic-usage/element-representation.doctree index 5e629c906..b8fc72c38 100644 Binary files a/v0.3.x/.doctrees/basic-usage/element-representation.doctree and b/v0.3.x/.doctrees/basic-usage/element-representation.doctree differ diff --git a/v0.3.x/.doctrees/basic-usage/poly.doctree b/v0.3.x/.doctrees/basic-usage/poly.doctree index b0f164ac5..0277f4c71 100644 Binary files a/v0.3.x/.doctrees/basic-usage/poly.doctree and b/v0.3.x/.doctrees/basic-usage/poly.doctree differ diff --git a/v0.3.x/.doctrees/environment.pickle b/v0.3.x/.doctrees/environment.pickle index 9f2db956a..60426e711 100644 Binary files a/v0.3.x/.doctrees/environment.pickle and b/v0.3.x/.doctrees/environment.pickle differ diff --git a/v0.3.x/.doctrees/getting-started.doctree b/v0.3.x/.doctrees/getting-started.doctree index adfdf2405..3468d593d 100644 Binary files a/v0.3.x/.doctrees/getting-started.doctree and b/v0.3.x/.doctrees/getting-started.doctree differ diff --git a/v0.3.x/api/galois.BCH.decode/index.html b/v0.3.x/api/galois.BCH.decode/index.html index 5e0dfcc12..c960d9a70 100644 --- a/v0.3.x/api/galois.BCH.decode/index.html +++ b/v0.3.x/api/galois.BCH.decode/index.html @@ -7922,10 +7922,10 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([1, 1, 1, 0, 1, 0, 0], order=2) +Out[3]: GF([0, 1, 0, 1, 0, 0, 0], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], order=2) +Out[4]: GF([0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1], order=2)

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

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

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

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

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

Decode the codeword and recover the message.

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

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

In [30]: d, e = bch.decode(c, errors=True); d, e
 Out[30]: 
-(GF([[1, 1, 0, 0, 1, 0, 1],
-     [0, 1, 0, 0, 0, 1, 0],
-     [1, 1, 0, 0, 1, 0, 1]], order=2),
+(GF([[1, 1, 1, 1, 1, 1, 1],
+     [0, 0, 0, 1, 0, 0, 1],
+     [1, 1, 0, 1, 0, 1, 0]], order=2),
  array([0, 1, 2]))
 
 In [31]: np.array_equal(d, m)
@@ -8055,15 +8055,15 @@
 
 In [34]: m = GF.Random((3, bch.k - 3)); m
 Out[34]: 
-GF([[0, 0, 1, 0],
-    [1, 1, 1, 0],
-    [1, 0, 0, 1]], order=2)
+GF([[1, 0, 1, 1],
+    [1, 0, 1, 0],
+    [0, 0, 1, 0]], 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, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0],
-    [1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0]], order=2)
+GF([[1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
+    [1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0],
+    [0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1]], order=2)
 

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

Decode the codeword and recover the message.

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

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

In [41]: d, e = bch.decode(c, errors=True); d, e
 Out[41]: 
-(GF([[0, 0, 1, 0],
-     [1, 1, 1, 0],
-     [1, 0, 0, 1]], order=2),
+(GF([[1, 0, 1, 1],
+     [1, 0, 1, 0],
+     [0, 0, 1, 0]], order=2),
  array([0, 1, 2]))
 
 In [42]: np.array_equal(d, m)
diff --git a/v0.3.x/api/galois.BCH.detect/index.html b/v0.3.x/api/galois.BCH.detect/index.html
index 4f77d4d86..e3c3a0192 100644
--- a/v0.3.x/api/galois.BCH.detect/index.html
+++ b/v0.3.x/api/galois.BCH.detect/index.html
@@ -7828,10 +7828,10 @@
 In [2]: GF = bch.field
 
 In [3]: m = GF.Random(bch.k); m
-Out[3]: GF([1, 0, 0, 0, 1, 0, 1], order=2)
+Out[3]: GF([0, 0, 0, 0, 1, 1, 1], order=2)
 
 In [4]: c = bch.encode(m); c
-Out[4]: GF([1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1], order=2)
+Out[4]: GF([0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0], order=2)
 

Detect no errors in the valid codeword.

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

Detect no errors in the valid codeword.

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

Detect no errors in the valid codewords.

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

Detect no errors in the valid codewords.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Encode a message.

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

Corrupt the codeword and decode the message.

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

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

In [8]: dec_m, N = bch.decode(c, errors=True); dec_m, N
-Out[8]: (GF([0, 1, 1, 1, 0, 0, 0], order=2), 1)
+Out[8]: (GF([0, 0, 1, 1, 1, 1, 0], order=2), 1)
 
 In [9]: np.array_equal(dec_m, m)
 Out[9]: True
diff --git a/v0.3.x/api/galois.FieldArray.Random/index.html b/v0.3.x/api/galois.FieldArray.Random/index.html
index dc5ecaf54..b8cfc373d 100644
--- a/v0.3.x/api/galois.FieldArray.Random/index.html
+++ b/v0.3.x/api/galois.FieldArray.Random/index.html
@@ -7879,8 +7879,8 @@
 
 In [2]: GF.Random((2, 5))
 Out[2]: 
-GF([[25, 17, 11,  7, 30],
-    [ 8, 26, 30,  9, 17]], order=31)
+GF([[ 7,  8, 28, 21, 26],
+    [ 1, 15, 27, 16, 15]], order=31)
 

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

diff --git a/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html b/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html index 5a64c89ba..56bac7f8b 100644 --- a/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html +++ b/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html @@ -7835,10 +7835,10 @@
In [1]: GF = galois.GF(3**5)
 
 In [2]: a = GF.Random(); a
-Out[2]: GF(164, order=3^5)
+Out[2]: GF(168, order=3^5)
 
 In [3]: poly = a.characteristic_poly(); poly
-Out[3]: Poly(x^5 + 2x^3 + 2x^2 + 2, GF(3))
+Out[3]: Poly(x^5 + x^4 + 2x^3 + 1, GF(3))
 
 # The characteristic polynomial annihilates a
 In [4]: poly(a, field=GF)
@@ -7850,10 +7850,10 @@
 
In [5]: GF = galois.GF(3**5, repr="poly")
 
 In [6]: a = GF.Random(); a
-Out[6]: GF(α^4 + 2α^2 + 2α + 1, order=3^5)
+Out[6]: GF(α^4 + α^3 + α^2, order=3^5)
 
 In [7]: poly = a.characteristic_poly(); poly
-Out[7]: Poly(x^5 + x^3 + 2x^2 + 1, GF(3))
+Out[7]: Poly(x^5 + 2x^4 + 2x^2 + x + 2, GF(3))
 
 # The characteristic polynomial annihilates a
 In [8]: poly(a, field=GF)
@@ -7865,10 +7865,10 @@
 
In [9]: GF = galois.GF(3**5, repr="power")
 
 In [10]: a = GF.Random(); a
-Out[10]: GF(α^90, order=3^5)
+Out[10]: GF(α^173, order=3^5)
 
 In [11]: poly = a.characteristic_poly(); poly
-Out[11]: Poly(x^5 + x^4 + 2x^3 + 2x + 2, GF(3))
+Out[11]: Poly(x^5 + x^4 + 2x^3 + x^2 + x + 1, GF(3))
 
 # The characteristic polynomial annihilates a
 In [12]: poly(a, field=GF)
@@ -7890,12 +7890,12 @@
 
 In [14]: A = GF.Random((3,3)); A
 Out[14]: 
-GF([[116, 169,  65],
-    [227,  20,  98],
-    [200, 184, 120]], order=3^5)
+GF([[203,  24,  98],
+    [105,  17, 106],
+    [ 22, 214,   4]], order=3^5)
 
 In [15]: poly = A.characteristic_poly(); poly
-Out[15]: Poly(x^3 + 110x^2 + 189x + 225, GF(3^5))
+Out[15]: Poly(x^3 + 151x^2 + 135x + 128, GF(3^5))
 
 # The x^0 coefficient is det(-A)
 In [16]: poly.coeffs[-1] == np.linalg.det(-A)
@@ -7919,15 +7919,15 @@
 
 In [20]: A = GF.Random((3,3)); A
 Out[20]: 
-GF([[2α^4 + 2α^3 + 2α^2 + α + 2,                    α^3 + α,
-             α^3 + α^2 + 2α + 1],
-    [               α^2 + α + 2,               2α^4 + α + 2,
-                    2α^4 + 2α^2],
-    [                   α^3 + α,                   2α^2 + α,
-     α^4 + 2α^3 + 2α^2 + 2α + 1]], order=3^5)
+GF([[  α^4 + α^3 + 2α^2 + 2,  α^4 + 2α^3 + 2α^2 + α,
+           2α^4 + 2α^2 + 2α],
+    [         2α^4 + 2α + 1,   2α^4 + 2α^3 + 2α + 2,
+     2α^4 + 2α^3 + 2α^2 + α],
+    [         2α^3 + 2α + 2,           2α^2 + α + 2,
+             α^4 + 2α^3 + 1]], order=3^5)
 
 In [21]: poly = A.characteristic_poly(); poly
-Out[21]: Poly(x^3 + (α^4 + 2α^3 + 2α^2 + 2α + 1)x^2 + (2α^3 + α + 2)x + 2α^2, GF(3^5))
+Out[21]: Poly(x^3 + (2α^4 + α^3 + α^2 + α + 1)x^2 + (2α^4 + 2α^3 + 2α^2 + 2α + 2)x + (α^3 + 2α^2 + α + 1), GF(3^5))
 
 # The x^0 coefficient is det(-A)
 In [22]: poly.coeffs[-1] == np.linalg.det(-A)
@@ -7951,12 +7951,12 @@
 
 In [26]: A = GF.Random((3,3)); A
 Out[26]: 
-GF([[α^147,  α^56,  α^16],
-    [α^150, α^128, α^204],
-    [α^169, α^200, α^127]], order=3^5)
+GF([[α^105, α^217,  α^25],
+    [α^170, α^225, α^189],
+    [α^185,  α^73, α^215]], order=3^5)
 
 In [27]: poly = A.characteristic_poly(); poly
-Out[27]: Poly(x^3 + (α^73)x^2 + (α^130)x + α^140, GF(3^5))
+Out[27]: Poly(x^3 + (α^180)x^2 + (α^77)x + α^53, GF(3^5))
 
 # The x^0 coefficient is det(-A)
 In [28]: poly.coeffs[-1] == np.linalg.det(-A)
diff --git a/v0.3.x/api/galois.FieldArray.column_space/index.html b/v0.3.x/api/galois.FieldArray.column_space/index.html
index c365bc692..b866be7bb 100644
--- a/v0.3.x/api/galois.FieldArray.column_space/index.html
+++ b/v0.3.x/api/galois.FieldArray.column_space/index.html
@@ -7790,9 +7790,9 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[ 2, 27, 12, 22, 13],
-    [30, 25, 15,  8, 25],
-    [15,  2,  5, 16, 19]], order=31)
+GF([[29, 27, 11, 25, 26],
+    [ 9,  6,  8, 27,  0],
+    [28, 25, 20, 29,  4]], order=31)
 
 In [4]: C = A.column_space(); C
 Out[4]: 
@@ -7804,8 +7804,8 @@
 

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

In [5]: N = A.null_space(); N
 Out[5]: 
-GF([[ 1,  0, 23, 26, 30],
-    [ 0,  1,  8, 30, 28]], order=31)
+GF([[ 1,  0,  6, 22,  5],
+    [ 0,  1, 18, 22,  0]], order=31)
 
 In [6]: C.shape[0] + N.shape[0] == n
 Out[6]: True
diff --git a/v0.3.x/api/galois.FieldArray.left_null_space/index.html b/v0.3.x/api/galois.FieldArray.left_null_space/index.html
index cf6057e7c..a60500a1b 100644
--- a/v0.3.x/api/galois.FieldArray.left_null_space/index.html
+++ b/v0.3.x/api/galois.FieldArray.left_null_space/index.html
@@ -7789,16 +7789,16 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[ 5,  6, 12],
-    [ 5, 16, 27],
-    [ 9,  3, 24],
-    [25, 21, 11],
-    [10,  2, 27]], order=31)
+GF([[18, 10, 11],
+    [22, 29, 11],
+    [21, 29,  7],
+    [21, 13, 16],
+    [25,  0,  7]], order=31)
 
 In [4]: LN = A.left_null_space(); LN
 Out[4]: 
-GF([[ 1,  0,  5,  9, 19],
-    [ 0,  1,  6, 30,  9]], order=31)
+GF([[ 1,  0,  2, 21,  6],
+    [ 0,  1, 30,  0, 26]], order=31)
 

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

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

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

diff --git a/v0.3.x/api/galois.FieldArray.row_space/index.html b/v0.3.x/api/galois.FieldArray.row_space/index.html index 08d6250fa..daeb79f84 100644 --- a/v0.3.x/api/galois.FieldArray.row_space/index.html +++ b/v0.3.x/api/galois.FieldArray.row_space/index.html @@ -7790,11 +7790,11 @@ In [3]: A = GF.Random((m, n)); A Out[3]: -GF([[15, 25, 4], - [26, 13, 3], - [17, 12, 7], - [ 3, 28, 24], - [28, 10, 14]], order=31) +GF([[ 5, 14, 25], + [23, 25, 9], + [14, 10, 23], + [29, 20, 10], + [ 1, 14, 16]], order=31) In [4]: R = A.row_space(); R Out[4]: @@ -7806,8 +7806,8 @@

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

In [5]: LN = A.left_null_space(); LN
 Out[5]: 
-GF([[ 1,  0, 10, 27,  6],
-    [ 0,  1, 22, 15, 14]], order=31)
+GF([[ 1,  0, 12, 27,  5],
+    [ 0,  1, 20, 12,  0]], order=31)
 
 In [6]: R.shape[0] + LN.shape[0] == m
 Out[6]: True
diff --git a/v0.3.x/api/galois.Poly.Random/index.html b/v0.3.x/api/galois.Poly.Random/index.html
index 0a1094b20..c36bf3602 100644
--- a/v0.3.x/api/galois.Poly.Random/index.html
+++ b/v0.3.x/api/galois.Poly.Random/index.html
@@ -7843,7 +7843,7 @@
 

Examples

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

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

Construct a random degree-5 polynomial over \(\mathrm{GF}(3^5)\) with a given seed. This produces diff --git a/v0.3.x/api/galois.Poly.derivative/index.html b/v0.3.x/api/galois.Poly.derivative/index.html index 075672dca..efa2803d3 100644 --- a/v0.3.x/api/galois.Poly.derivative/index.html +++ b/v0.3.x/api/galois.Poly.derivative/index.html @@ -7853,10 +7853,10 @@

Examples

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

In [1]: f = galois.Poly.Random(7); f
-Out[1]: Poly(x^7 + x^6 + x^2 + x, GF(2))
+Out[1]: Poly(x^7 + x^5 + x^3 + x^2 + x + 1, GF(2))
 
 In [2]: f.derivative()
-Out[2]: Poly(x^6 + 1, GF(2))
+Out[2]: Poly(x^6 + x^4 + x^2 + 1, GF(2))
 
 # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
 In [3]: f.derivative(GF.characteristic)
@@ -7867,16 +7867,16 @@
 
In [4]: GF = galois.GF(7)
 
 In [5]: f = galois.Poly.Random(11, field=GF); f
-Out[5]: Poly(5x^11 + x^10 + 5x^8 + 3x^7 + 6x^6 + 4x^5 + 4x^4 + x^3 + 6x^2 + x + 4, GF(7))
+Out[5]: Poly(3x^11 + 3x^10 + 4x^9 + 6x^8 + x^7 + 5x^6 + 4x^5 + 6x^4 + 4x^3 + x^2 + 2x + 1, GF(7))
 
 In [6]: f.derivative()
-Out[6]: Poly(6x^10 + 3x^9 + 5x^7 + x^5 + 6x^4 + 2x^3 + 3x^2 + 5x + 1, GF(7))
+Out[6]: Poly(5x^10 + 2x^9 + x^8 + 6x^7 + 2x^5 + 6x^4 + 3x^3 + 5x^2 + 2x + 2, GF(7))
 
 In [7]: f.derivative(2)
-Out[7]: Poly(4x^9 + 6x^8 + 5x^4 + 3x^3 + 6x^2 + 6x + 5, GF(7))
+Out[7]: Poly(x^9 + 4x^8 + x^7 + 3x^4 + 3x^3 + 2x^2 + 3x + 2, GF(7))
 
 In [8]: f.derivative(3)
-Out[8]: Poly(x^8 + 6x^7 + 6x^3 + 2x^2 + 5x + 6, GF(7))
+Out[8]: Poly(2x^8 + 4x^7 + 5x^3 + 2x^2 + 4x + 3, GF(7))
 
 # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
 In [9]: f.derivative(GF.characteristic)
@@ -7887,13 +7887,13 @@
 
In [10]: GF = galois.GF(3**5)
 
 In [11]: f = galois.Poly.Random(7, field=GF); f
-Out[11]: Poly(103x^7 + 61x^6 + 29x^5 + 68x^4 + 210x^3 + 56x^2 + 137x + 200, GF(3^5))
+Out[11]: Poly(80x^7 + 191x^6 + 168x^5 + 204x^4 + 217x^3 + 222x^2 + 196x + 60, GF(3^5))
 
 In [12]: f.derivative()
-Out[12]: Poly(103x^6 + 55x^4 + 68x^3 + 28x + 137, GF(3^5))
+Out[12]: Poly(80x^6 + 84x^4 + 204x^3 + 111x + 196, GF(3^5))
 
 In [13]: f.derivative(2)
-Out[13]: Poly(55x^3 + 28, GF(3^5))
+Out[13]: Poly(84x^3 + 111, GF(3^5))
 
 # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
 In [14]: f.derivative(GF.characteristic)
diff --git a/v0.3.x/api/galois.Poly.field/index.html b/v0.3.x/api/galois.Poly.field/index.html
index 0588ee85a..3afdd4dea 100644
--- a/v0.3.x/api/galois.Poly.field/index.html
+++ b/v0.3.x/api/galois.Poly.field/index.html
@@ -7742,7 +7742,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 + x^2 + x + 1, GF(2))
+Out[1]: Poly(x^5 + x^3 + x^2 + x, GF(2))
 
 In [2]: a.field
 Out[2]: <class 'galois.GF(2)'>
@@ -7751,7 +7751,7 @@
 
In [3]: GF = galois.GF(2**8)
 
 In [4]: b = galois.Poly.Random(5, field=GF); b
-Out[4]: Poly(72x^5 + 103x^4 + 234x^3 + 113x^2 + 174x + 58, GF(2^8))
+Out[4]: Poly(218x^5 + 60x^4 + 247x^3 + 50x^2 + 163x + 76, GF(2^8))
 
 In [5]: b.field
 Out[5]: <class 'galois.GF(2^8)'>
diff --git a/v0.3.x/api/galois.Poly.is_irreducible/index.html b/v0.3.x/api/galois.Poly.is_irreducible/index.html
index 2bad560ef..94cf3b4b8 100644
--- a/v0.3.x/api/galois.Poly.is_irreducible/index.html
+++ b/v0.3.x/api/galois.Poly.is_irreducible/index.html
@@ -7826,13 +7826,13 @@
 
In [4]: g = galois.irreducible_poly(2**4, 2, method="random"); g
-Out[4]: Poly(x^2 + 2x + 14, GF(2^4))
+Out[4]: Poly(x^2 + x + 10, GF(2^4))
 
 In [5]: h = galois.irreducible_poly(2**4, 3, method="random"); h
-Out[5]: Poly(x^3 + 9x^2 + 3, GF(2^4))
+Out[5]: Poly(x^3 + 13x^2 + 12x + 5, GF(2^4))
 
 In [6]: f = g * h; f
-Out[6]: Poly(x^5 + 11x^4 + 15x^3 + 4x^2 + 6x + 1, GF(2^4))
+Out[6]: Poly(x^5 + 12x^4 + 11x^3 + 2x^2 + 4x + 4, GF(2^4))
 
 In [7]: f.is_irreducible()
 Out[7]: False
diff --git a/v0.3.x/api/galois.ReedSolomon.decode/index.html b/v0.3.x/api/galois.ReedSolomon.decode/index.html
index a3d07444e..3797a9a28 100644
--- a/v0.3.x/api/galois.ReedSolomon.decode/index.html
+++ b/v0.3.x/api/galois.ReedSolomon.decode/index.html
@@ -7915,23 +7915,23 @@
 In [2]: GF = rs.field
 
 In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([15, 10,  0,  6,  4, 12,  4,  8,  7], order=2^4)
+Out[3]: GF([ 0,  0,  9, 15, 13,  2,  6,  6,  2], order=2^4)
 
 In [4]: c = rs.encode(m); c
-Out[4]: GF([15, 10,  0,  6,  4, 12,  4,  8,  7,  0,  3, 12,  2, 14,  3], order=2^4)
+Out[4]: GF([ 0,  0,  9, 15, 13,  2,  6,  6,  2,  6,  2,  6,  4,  7,  9], order=2^4)
 

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

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

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

In [17]: d = rs.decode(c); d
-Out[17]: GF([6, 4, 1, 8, 6], order=2^4)
+Out[17]: GF([ 6, 13,  9,  8,  4], order=2^4)
 
 In [18]: np.array_equal(d, m)
 Out[18]: True
@@ -7977,7 +7977,7 @@
 

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

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

Decode the codeword and recover the message.

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

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

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

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

Decode the codeword and recover the message.

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

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

In [43]: d, e = rs.decode(c, errors=True); d, e
 Out[43]: 
-(GF([[ 8,  6,  8, 11, 12],
-     [13,  8,  5,  7,  3],
-     [ 8,  1,  1,  5,  6]], order=2^4),
+(GF([[ 7,  1,  3,  9,  1],
+     [ 3,  3,  4, 10,  1],
+     [12,  1,  0,  6,  6]], order=2^4),
  array([1, 2, 3]))
 
 In [44]: np.array_equal(d, m)
diff --git a/v0.3.x/api/galois.ReedSolomon.detect/index.html b/v0.3.x/api/galois.ReedSolomon.detect/index.html
index 495ed450a..4ff47ca47 100644
--- a/v0.3.x/api/galois.ReedSolomon.detect/index.html
+++ b/v0.3.x/api/galois.ReedSolomon.detect/index.html
@@ -7828,10 +7828,10 @@
 In [2]: GF = rs.field
 
 In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([ 5,  1, 10, 13,  2, 10,  2, 11,  7], order=2^4)
+Out[3]: GF([11,  0,  0, 15, 10,  3, 11, 11,  0], order=2^4)
 
 In [4]: c = rs.encode(m); c
-Out[4]: GF([ 5,  1, 10, 13,  2, 10,  2, 11,  7, 14,  3,  2,  7,  7,  2], order=2^4)
+Out[4]: GF([11,  0,  0, 15, 10,  3, 11, 11,  0,  4,  0, 11,  2,  7,  5], order=2^4)
 

Detect no errors in the valid codeword.

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

Detect no errors in the valid codeword.

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

Detect no errors in the valid codewords.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Encode a message.

In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([ 4,  9,  2, 15,  0,  2,  9,  6,  8], order=2^4)
+Out[3]: GF([15,  2, 10,  2,  4, 10, 10,  2,  6], order=2^4)
 
 In [4]: c = rs.encode(m); c
-Out[4]: GF([ 4,  9,  2, 15,  0,  2,  9,  6,  8,  5,  3,  2,  3,  0, 11], order=2^4)
+Out[4]: GF([15,  2, 10,  2,  4, 10, 10,  2,  6,  6, 10, 14,  6,  2,  0], 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([ 9,  9,  2, 15,  0,  2,  9,  6,  8,  5,  3,  2,  3,  0, 11], order=2^4)
+Out[5]: GF([ 2,  2, 10,  2,  4, 10, 10,  2,  6,  6, 10, 14,  6,  2,  0], order=2^4)
 
 In [6]: dec_m = rs.decode(c); dec_m
-Out[6]: GF([ 4,  9,  2, 15,  0,  2,  9,  6,  8], order=2^4)
+Out[6]: GF([15,  2, 10,  2,  4, 10, 10,  2,  6], order=2^4)
 
 In [7]: np.array_equal(dec_m, m)
 Out[7]: True
@@ -8076,7 +8076,7 @@
 

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

In [8]: dec_m, N = rs.decode(c, errors=True); dec_m, N
-Out[8]: (GF([ 4,  9,  2, 15,  0,  2,  9,  6,  8], order=2^4), 1)
+Out[8]: (GF([15,  2, 10,  2,  4, 10, 10,  2,  6], order=2^4), 1)
 
 In [9]: np.array_equal(dec_m, m)
 Out[9]: True
diff --git a/v0.3.x/api/galois.crt/index.html b/v0.3.x/api/galois.crt/index.html
index e0d86d217..817a52e5e 100644
--- a/v0.3.x/api/galois.crt/index.html
+++ b/v0.3.x/api/galois.crt/index.html
@@ -7898,7 +7898,7 @@
 
In [5]: GF = galois.GF(7)
 
 In [6]: x_truth = galois.Poly.Random(6, field=GF); x_truth
-Out[6]: Poly(4x^6 + 2x^5 + 4x^4 + 6x^3 + 3x^2 + 3x + 6, GF(7))
+Out[6]: Poly(x^6 + 4x^4 + 4x^3 + 2x^2 + 2x + 3, GF(7))
 
 In [7]: m3 = galois.Poly.Random(3, field=GF)
 
@@ -7908,20 +7908,20 @@
 
 In [10]: m = [m3, m4, m5]; m
 Out[10]: 
-[Poly(3x^3 + 3x + 6, GF(7)),
- Poly(2x^4 + 2x^3 + x^2 + 6x + 6, GF(7)),
- Poly(5x^5 + 2x^4 + 6x^3 + 6x^2 + 4x + 4, GF(7))]
+[Poly(6x^3 + 2x^2 + 6x + 1, GF(7)),
+ Poly(6x^4 + 5x^2 + 4x + 4, GF(7)),
+ Poly(5x^5 + 3x^4 + 5x^3 + 6x^2 + 2x, GF(7))]
 
 In [11]: a = [x_truth % m3, x_truth % m4, x_truth % m5]; a
 Out[11]: 
-[Poly(6x^2, GF(7)),
- Poly(5x^3 + 2x^2 + 4x + 1, GF(7)),
- Poly(x^4 + x^3 + x^2 + 2x + 4, GF(7))]
+[Poly(3x^2 + 6x + 6, GF(7)),
+ Poly(x^3 + 2x^2 + 3x + 4, GF(7)),
+ Poly(2x^3 + 4x^2 + 3, GF(7))]
 

Solve the system of congruences.

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

Show that the solution satisfies each congruence.

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

And the pseudoprimes base 3 from A005935.

diff --git a/v0.3.x/api/galois.irreducible_poly/index.html b/v0.3.x/api/galois.irreducible_poly/index.html index 601b0cd43..5b8ef3b8f 100644 --- a/v0.3.x/api/galois.irreducible_poly/index.html +++ b/v0.3.x/api/galois.irreducible_poly/index.html @@ -7924,7 +7924,7 @@ Out[2]: Poly(x^3 + 6x^2 + 6x + 4, GF(7)) In [3]: galois.irreducible_poly(7, 3, method="random") -Out[3]: Poly(x^3 + 4x^2 + 3x + 1, GF(7)) +Out[3]: Poly(x^3 + 3x^2 + x + 1, GF(7))

Find the lexicographically-first monic irreducible polynomial with four terms.

@@ -7941,13 +7941,13 @@
In [6]: GF = galois.GF(7)
 
 In [7]: f = galois.irreducible_poly(7, 5, method="random"); f
-Out[7]: Poly(x^5 + 5x^4 + 6x^3 + x^2 + 3x + 3, GF(7))
+Out[7]: Poly(x^5 + 6x^4 + x^3 + 3x^2 + 5x + 1, GF(7))
 
 In [8]: f.is_irreducible()
 Out[8]: True
 
 In [9]: g = f * GF(3); g
-Out[9]: Poly(3x^5 + x^4 + 4x^3 + 3x^2 + 2x + 2, GF(7))
+Out[9]: Poly(3x^5 + 4x^4 + 3x^3 + 2x^2 + x + 3, GF(7))
 
 In [10]: g.is_irreducible()
 Out[10]: True
diff --git a/v0.3.x/api/galois.irreducible_polys/index.html b/v0.3.x/api/galois.irreducible_polys/index.html
index e86018612..e81ba8e58 100644
--- a/v0.3.x/api/galois.irreducible_polys/index.html
+++ b/v0.3.x/api/galois.irreducible_polys/index.html
@@ -7945,7 +7945,7 @@
 

Or, manually iterate over the generator.

In [5]: generator = galois.irreducible_polys(3, 4, reverse=True); generator
-Out[5]: <generator object irreducible_polys at 0x7fd4bdc66d60>
+Out[5]: <generator object irreducible_polys at 0x7f06d4c4ee90>
 
 In [6]: next(generator)
 Out[6]: Poly(x^4 + 2x^3 + 2x^2 + x + 2, GF(3))
diff --git a/v0.3.x/api/galois.lagrange_poly/index.html b/v0.3.x/api/galois.lagrange_poly/index.html
index b74c054c3..510a3205a 100644
--- a/v0.3.x/api/galois.lagrange_poly/index.html
+++ b/v0.3.x/api/galois.lagrange_poly/index.html
@@ -7870,12 +7870,12 @@
 Out[2]: GF([0, 1, 2, 3, 4, 5, 6, 7, 8], order=3^2)
 
 In [3]: y = GF.Random(x.size); y
-Out[3]: GF([3, 1, 1, 5, 0, 6, 2, 5, 5], order=3^2)
+Out[3]: GF([4, 0, 5, 0, 2, 6, 3, 3, 3], order=3^2)
 

Find the Lagrange polynomial that interpolates the coordinates.

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

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

diff --git a/v0.3.x/api/galois.primitive_element/index.html b/v0.3.x/api/galois.primitive_element/index.html index 80671be8b..539490967 100644 --- a/v0.3.x/api/galois.primitive_element/index.html +++ b/v0.3.x/api/galois.primitive_element/index.html @@ -7873,11 +7873,11 @@

Find a random primitive element for the degree-5 extension of \(\mathrm{GF}(7)\) with irreducible polynomial \(f(x)\).

In [10]: g = galois.primitive_element(f, method="random"); g
-Out[10]: Poly(2x^4 + 2x^3 + x^2 + 4, GF(7))
+Out[10]: Poly(2x^3 + x^2 + 2x + 4, GF(7))
 
 # Convert the polynomial over GF(7) into an element of GF(7^5)
 In [11]: g = GF(int(g)); g
-Out[11]: GF(2x^4 + 2x^3 + x^2 + 4, order=7^5)
+Out[11]: GF(2x^3 + x^2 + 2x + 4, order=7^5)
 
 In [12]: g.multiplicative_order() == GF.order - 1
 Out[12]: True
diff --git a/v0.3.x/api/galois.primitive_poly/index.html b/v0.3.x/api/galois.primitive_poly/index.html
index 56ea4295d..1c15a3c0a 100644
--- a/v0.3.x/api/galois.primitive_poly/index.html
+++ b/v0.3.x/api/galois.primitive_poly/index.html
@@ -7915,7 +7915,7 @@
 Out[2]: Poly(x^3 + 6x^2 + 6x + 4, GF(7))
 
 In [3]: galois.primitive_poly(7, 3, method="random")
-Out[3]: Poly(x^3 + 3x^2 + 2x + 2, GF(7))
+Out[3]: Poly(x^3 + 3x^2 + 5x + 2, GF(7))
 

Find the lexicographically-first monic primitive polynomial with four terms.

@@ -7950,13 +7950,13 @@
In [10]: GF = galois.GF(7)
 
 In [11]: f = galois.primitive_poly(7, 5, method="random"); f
-Out[11]: Poly(x^5 + 4x^3 + 3x^2 + 5x + 2, GF(7))
+Out[11]: Poly(x^5 + 3x^4 + 5x^3 + 6x^2 + 2, GF(7))
 
 In [12]: f.is_primitive()
 Out[12]: True
 
 In [13]: g = f * GF(3); g
-Out[13]: Poly(3x^5 + 5x^3 + 2x^2 + x + 6, GF(7))
+Out[13]: Poly(3x^5 + 2x^4 + x^3 + 4x^2 + 6, GF(7))
 
 In [14]: g.is_primitive()
 Out[14]: True
diff --git a/v0.3.x/api/galois.primitive_polys/index.html b/v0.3.x/api/galois.primitive_polys/index.html
index ee5cfdf07..a6f944364 100644
--- a/v0.3.x/api/galois.primitive_polys/index.html
+++ b/v0.3.x/api/galois.primitive_polys/index.html
@@ -7930,7 +7930,7 @@
 

Or, manually iterate over the generator.

In [5]: generator = galois.primitive_polys(3, 4, reverse=True); generator
-Out[5]: <generator object primitive_polys at 0x7fd4bca62640>
+Out[5]: <generator object primitive_polys at 0x7f06d4c4f350>
 
 In [6]: next(generator)
 Out[6]: Poly(x^4 + 2x^3 + 2x^2 + x + 2, GF(3))
diff --git a/v0.3.x/api/galois.primitive_root/index.html b/v0.3.x/api/galois.primitive_root/index.html
index bb28275b2..12fea8f5b 100644
--- a/v0.3.x/api/galois.primitive_root/index.html
+++ b/v0.3.x/api/galois.primitive_root/index.html
@@ -8053,7 +8053,7 @@
 Out[20]: 1000000000000000035000054
 
 In [21]: galois.primitive_root(n, method="random")
-Out[21]: 416503130311581878610352
+Out[21]: 372575130228424947788782
 
diff --git a/v0.3.x/api/galois.primitive_roots/index.html b/v0.3.x/api/galois.primitive_roots/index.html index d410849c6..a5c43bc5e 100644 --- a/v0.3.x/api/galois.primitive_roots/index.html +++ b/v0.3.x/api/galois.primitive_roots/index.html @@ -7935,7 +7935,7 @@

Find the three largest primitive roots modulo 31 in reversed order.

In [7]: generator = galois.primitive_roots(31, reverse=True); generator
-Out[7]: <generator object primitive_roots at 0x7fd4bdc66c30>
+Out[7]: <generator object primitive_roots at 0x7f06d4c4f5b0>
 
 In [8]: [next(generator) for _ in range(3)]
 Out[8]: [24, 22, 21]
diff --git a/v0.3.x/api/galois.prod/index.html b/v0.3.x/api/galois.prod/index.html
index 2f7fc4e2e..c80c03012 100644
--- a/v0.3.x/api/galois.prod/index.html
+++ b/v0.3.x/api/galois.prod/index.html
@@ -7828,21 +7828,21 @@
 
In [2]: GF = galois.GF(7)
 
 In [3]: f1 = galois.Poly.Random(2, field=GF); f1
-Out[3]: Poly(4x^2 + 4x + 6, GF(7))
+Out[3]: Poly(4x^2 + 2x + 3, GF(7))
 
 In [4]: f2 = galois.Poly.Random(3, field=GF); f2
-Out[4]: Poly(6x^3 + 5, GF(7))
+Out[4]: Poly(4x^3 + x^2 + 2x + 3, GF(7))
 
 In [5]: f3 = galois.Poly.Random(4, field=GF); f3
-Out[5]: Poly(5x^4 + 4x^3 + x^2 + 2x + 3, GF(7))
+Out[5]: Poly(x^4 + 2x^2 + 3x + 3, GF(7))
 

Compute the product of three polynomials.

In [6]: galois.prod(f1, f2, f3)
-Out[6]: Poly(x^9 + 6x^8 + 6x^7 + x^6 + 2x^4 + x^3 + 4x^2 + x + 6, GF(7))
+Out[6]: Poly(2x^9 + 5x^8 + 5x^7 + 2x^4 + 6x^2 + 6, GF(7))
 
 In [7]: f1 * f2 * f3
-Out[7]: Poly(x^9 + 6x^8 + 6x^7 + x^6 + 2x^4 + x^3 + 4x^2 + x + 6, GF(7))
+Out[7]: Poly(2x^9 + 5x^8 + 5x^7 + 2x^4 + 6x^2 + 6, GF(7))
 
diff --git a/v0.3.x/api/galois.typing.ShapeLike/index.html b/v0.3.x/api/galois.typing.ShapeLike/index.html index 1c0c5a94b..2ca03c5e7 100644 --- a/v0.3.x/api/galois.typing.ShapeLike/index.html +++ b/v0.3.x/api/galois.typing.ShapeLike/index.html @@ -7756,7 +7756,7 @@
In [1]: GF = galois.GF(3**5)
 
 In [2]: x = GF.Random(4); x
-Out[2]: GF([ 15,  17, 180,  20], order=3^5)
+Out[2]: GF([178, 172,  59, 241], order=3^5)
 
 In [3]: x.shape
 Out[3]: (4,)
@@ -7767,27 +7767,27 @@
 iterable, () or [], represents a 0-D array (scalar).

In [4]: x = GF.Random((2, 3)); x
 Out[4]: 
-GF([[132,  56, 187],
-    [ 17, 105,  40]], order=3^5)
+GF([[ 95, 194, 111],
+    [195,  17, 183]], order=3^5)
 
 In [5]: x.shape
 Out[5]: (2, 3)
 
 In [6]: x = GF.Random([2, 3, 4]); x
 Out[6]: 
-GF([[[ 36,  14,  43,  21],
-     [ 33, 160,   8, 196],
-     [ 86, 135, 104,  11]],
+GF([[[229, 115, 185,  12],
+     [210, 106, 119,  42],
+     [ 62, 118,  98,  68]],
 
-    [[ 55,  36, 116, 176],
-     [104, 126,  85, 217],
-     [102,  85, 170, 100]]], order=3^5)
+    [[155, 207,  79,  98],
+     [  9, 178,  25,   3],
+     [208, 134, 153,   4]]], order=3^5)
 
 In [7]: x.shape
 Out[7]: (2, 3, 4)
 
 In [8]: x = GF.Random(()); x
-Out[8]: GF(119, order=3^5)
+Out[8]: GF(212, order=3^5)
 
 In [9]: x.shape
 Out[9]: ()
diff --git a/v0.3.x/basic-usage/array-creation/index.html b/v0.3.x/basic-usage/array-creation/index.html
index a2e24323c..6bced5a86 100644
--- a/v0.3.x/basic-usage/array-creation/index.html
+++ b/v0.3.x/basic-usage/array-creation/index.html
@@ -8562,7 +8562,7 @@ 

Default data typeOut[92]: [numpy.uint16, numpy.uint32, numpy.int16, numpy.int32, numpy.int64] In [93]: x = GF.Random(4); x -Out[93]: GF([202, 871, 416, 348], order=2^10) +Out[93]: GF([566, 472, 347, 286], order=2^10) In [94]: x.dtype Out[94]: dtype('uint16') @@ -8575,8 +8575,8 @@

Default data typeIn [97]: x = GF.Random(4); x Out[97]: -GF([ 625878077724101089069890471640, 240008496769034837587114095139, - 1205086372667035865489619573902, 954498947266343527411772670761], +GF([ 645227892947816375756107097864, 889687374296644455173138754008, + 1010627866593864881984551226991, 469893071539974484466935920922], order=2^100) In [98]: x.dtype diff --git a/v0.3.x/basic-usage/element-representation/index.html b/v0.3.x/basic-usage/element-representation/index.html index 0364641f7..e97ecf1a3 100644 --- a/v0.3.x/basic-usage/element-representation/index.html +++ b/v0.3.x/basic-usage/element-representation/index.html @@ -8001,21 +8001,21 @@

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

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

@@ -8023,11 +8023,11 @@

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

Representation comparisons

diff --git a/v0.3.x/basic-usage/poly/index.html b/v0.3.x/basic-usage/poly/index.html index 551fe32a3..bf628338f 100644 --- a/v0.3.x/basic-usage/poly/index.html +++ b/v0.3.x/basic-usage/poly/index.html @@ -7917,7 +7917,7 @@

Alternate constructors

Random polynomials of a given degree are easily created with Random().

In [23]: galois.Poly.Random(4, field=GF)
-Out[23]: Poly(164x^4 + 168x^3 + 222x^2 + 52x + 225, GF(3^5))
+Out[23]: Poly(18x^4 + 178x^3 + 76x^2 + 226x + 1, GF(3^5))
 

Methods

diff --git a/v0.3.x/getting-started/index.html b/v0.3.x/getting-started/index.html index f279a4b05..085b0358b 100644 --- a/v0.3.x/getting-started/index.html +++ b/v0.3.x/getting-started/index.html @@ -7799,7 +7799,7 @@

Install the package
In [1]: import galois
 
 In [2]: galois.__version__
-Out[2]: '0.3.6.dev15+ge8e5bf58'
+Out[2]: '0.3.6.dev16+g3ab62683'
 

Create a FieldArray subclass

diff --git a/v0.3.x/objects.inv b/v0.3.x/objects.inv index d1d110e86..5cab6ceb1 100644 Binary files a/v0.3.x/objects.inv and b/v0.3.x/objects.inv differ diff --git a/v0.3.x/searchindex.js b/v0.3.x/searchindex.js index 3a8cfc5b0..7fb2a8c9d 100644 --- a/v0.3.x/searchindex.js +++ b/v0.3.x/searchindex.js @@ -1 +1 @@ -Search.setIndex({"titles": ["Arrays", "galois.Array", "galois.Array.Identity", "galois.Array.Ones", "galois.Array.Random", "galois.Array.Range", "galois.Array.Zeros", "galois.Array.characteristic", "galois.Array.compile", "galois.Array.default_ufunc_mode", "galois.Array.degree", "galois.Array.dtypes", "galois.Array.element_repr", "galois.Array.elements", "galois.Array.irreducible_poly", "galois.Array.name", "galois.Array.order", "galois.Array.primitive_element", "galois.Array.repr", "galois.Array.ufunc_mode", "galois.Array.ufunc_modes", "galois.Array.units", "galois.BCH", "galois.BCH.G", "galois.BCH.H", "galois.BCH.__init__", "galois.BCH.__repr__", "galois.BCH.__str__", "galois.BCH.alpha", "galois.BCH.c", "galois.BCH.d", "galois.BCH.decode", "galois.BCH.detect", "galois.BCH.encode", "galois.BCH.extension_field", "galois.BCH.field", "galois.BCH.generator_poly", "galois.BCH.is_narrow_sense", "galois.BCH.is_primitive", "galois.BCH.is_systematic", "galois.BCH.k", "galois.BCH.n", "galois.BCH.parity_check_poly", "galois.BCH.roots", "galois.BCH.t", "galois.FLFSR", "galois.FLFSR.Taps", "galois.FLFSR.__init__", "galois.FLFSR.__repr__", "galois.FLFSR.__str__", "galois.FLFSR.characteristic_poly", "galois.FLFSR.feedback_poly", "galois.FLFSR.field", "galois.FLFSR.initial_state", "galois.FLFSR.order", "galois.FLFSR.reset", "galois.FLFSR.state", "galois.FLFSR.step", "galois.FLFSR.taps", "galois.FLFSR.to_galois_lfsr", "galois.Field", "galois.FieldArray", "galois.FieldArray.Identity", "galois.FieldArray.Ones", "galois.FieldArray.Random", "galois.FieldArray.Range", "galois.FieldArray.Vandermonde", "galois.FieldArray.Vector", "galois.FieldArray.Zeros", "galois.FieldArray.__init__", "galois.FieldArray.__repr__", "galois.FieldArray.__str__", "galois.FieldArray.additive_order", "galois.FieldArray.arithmetic_table", "galois.FieldArray.characteristic", "galois.FieldArray.characteristic_poly", "galois.FieldArray.column_space", "galois.FieldArray.compile", "galois.FieldArray.default_ufunc_mode", "galois.FieldArray.degree", "galois.FieldArray.dtypes", "galois.FieldArray.element_repr", "galois.FieldArray.elements", "galois.FieldArray.field_norm", "galois.FieldArray.field_trace", "galois.FieldArray.irreducible_poly", "galois.FieldArray.is_extension_field", "galois.FieldArray.is_prime_field", "galois.FieldArray.is_primitive_poly", "galois.FieldArray.is_square", "galois.FieldArray.left_null_space", "galois.FieldArray.log", "galois.FieldArray.lu_decompose", "galois.FieldArray.minimal_poly", "galois.FieldArray.multiplicative_order", "galois.FieldArray.name", "galois.FieldArray.non_squares", "galois.FieldArray.null_space", "galois.FieldArray.order", "galois.FieldArray.plu_decompose", "galois.FieldArray.prime_subfield", "galois.FieldArray.primitive_element", "galois.FieldArray.primitive_elements", "galois.FieldArray.primitive_root_of_unity", "galois.FieldArray.primitive_roots_of_unity", "galois.FieldArray.properties", "galois.FieldArray.repr", "galois.FieldArray.repr_table", "galois.FieldArray.row_reduce", "galois.FieldArray.row_space", "galois.FieldArray.squares", "galois.FieldArray.ufunc_mode", "galois.FieldArray.ufunc_modes", "galois.FieldArray.units", "galois.FieldArray.vector", "galois.GF", "galois.GF2", "galois.GLFSR", "galois.GLFSR.Taps", "galois.GLFSR.__init__", "galois.GLFSR.__repr__", "galois.GLFSR.__str__", "galois.GLFSR.characteristic_poly", "galois.GLFSR.feedback_poly", "galois.GLFSR.field", "galois.GLFSR.initial_state", "galois.GLFSR.order", "galois.GLFSR.reset", "galois.GLFSR.state", "galois.GLFSR.step", "galois.GLFSR.taps", "galois.GLFSR.to_fibonacci_lfsr", "galois.Poly", "galois.Poly.Degrees", "galois.Poly.Identity", "galois.Poly.Int", "galois.Poly.One", "galois.Poly.Random", "galois.Poly.Roots", "galois.Poly.Str", "galois.Poly.Zero", "galois.Poly.__call__", "galois.Poly.__eq__", "galois.Poly.__init__", "galois.Poly.__int__", "galois.Poly.__len__", "galois.Poly.__repr__", "galois.Poly.__str__", "galois.Poly.coefficients", "galois.Poly.coeffs", "galois.Poly.degree", "galois.Poly.degrees", "galois.Poly.derivative", "galois.Poly.distinct_degree_factors", "galois.Poly.equal_degree_factors", "galois.Poly.factors", "galois.Poly.field", "galois.Poly.is_conway", "galois.Poly.is_conway_consistent", "galois.Poly.is_irreducible", "galois.Poly.is_monic", "galois.Poly.is_primitive", "galois.Poly.is_square_free", "galois.Poly.nonzero_coeffs", "galois.Poly.nonzero_degrees", "galois.Poly.reverse", "galois.Poly.roots", "galois.Poly.square_free_factors", "galois.ReedSolomon", "galois.ReedSolomon.G", "galois.ReedSolomon.H", "galois.ReedSolomon.__init__", "galois.ReedSolomon.__repr__", "galois.ReedSolomon.__str__", "galois.ReedSolomon.alpha", "galois.ReedSolomon.c", "galois.ReedSolomon.d", "galois.ReedSolomon.decode", "galois.ReedSolomon.detect", "galois.ReedSolomon.encode", "galois.ReedSolomon.field", "galois.ReedSolomon.generator_poly", "galois.ReedSolomon.is_narrow_sense", "galois.ReedSolomon.is_primitive", "galois.ReedSolomon.is_systematic", "galois.ReedSolomon.k", "galois.ReedSolomon.n", "galois.ReedSolomon.parity_check_poly", "galois.ReedSolomon.roots", "galois.ReedSolomon.t", "galois.are_coprime", "galois.berlekamp_massey", "galois.carmichael_lambda", "galois.conway_poly", "galois.crt", "galois.divisor_sigma", "galois.divisors", "galois.egcd", "galois.euler_phi", "galois.factors", "galois.fermat_primality_test", "galois.gcd", "galois.get_printoptions", "galois.ilog", "galois.intt", "galois.iroot", "galois.irreducible_poly", "galois.irreducible_polys", "galois.is_composite", "galois.is_cyclic", "galois.is_perfect_power", "galois.is_powersmooth", "galois.is_prime", "galois.is_prime_power", "galois.is_primitive_element", "galois.is_primitive_root", "galois.is_smooth", "galois.is_square_free", "galois.isqrt", "galois.jacobi_symbol", "galois.kronecker_symbol", "galois.kth_prime", "galois.lagrange_poly", "galois.lcm", "galois.legendre_symbol", "galois.matlab_primitive_poly", "galois.mersenne_exponents", "galois.mersenne_primes", "galois.miller_rabin_primality_test", "galois.next_prime", "galois.ntt", "galois.perfect_power", "galois.pollard_p1", "galois.pollard_rho", "galois.prev_prime", "galois.primes", "galois.primitive_element", "galois.primitive_elements", "galois.primitive_poly", "galois.primitive_polys", "galois.primitive_root", "galois.primitive_roots", "galois.printoptions", "galois.prod", "galois.random_prime", "galois.set_printoptions", "galois.totatives", "galois.trial_division", "galois.typing.ArrayLike", "galois.typing.DTypeLike", "galois.typing.ElementLike", "galois.typing.IterableLike", "galois.typing.PolyLike", "galois.typing.ShapeLike", "Array Arithmetic", "Array Classes", "Array Creation", "Compilation Modes", "Element Representation", "Polynomials", "Polynomial Arithmetic", "Documentation", "Installation", "Linter", "Unit Tests", "Index", "Getting Started", "Features", "Benchmarks", "Binary Extension Fields", "Prime Fields", "v0.0", "v0.1", "v0.2", "v0.3", "Versioning", "Intro to Extension Fields", "Intro to Prime Fields"], "terms": {"class": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 34, 35, 45, 52, 61, 70, 71, 74, 78, 79, 80, 81, 82, 85, 86, 87, 88, 95, 96, 98, 100, 101, 102, 105, 110, 111, 112, 113, 115, 116, 117, 124, 132, 156, 168, 180, 258, 259, 266, 271, 273, 274, 276, 277], "numpi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 22, 31, 32, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 77, 78, 80, 89, 91, 94, 111, 112, 114, 115, 116, 132, 137, 166, 168, 177, 178, 202, 204, 230, 242, 245, 248, 249, 253, 254, 257, 266, 267, 269, 270, 271, 272, 273, 274], "ndarrai": [0, 1, 22, 31, 32, 61, 72, 89, 91, 94, 116, 132, 133, 138, 151, 164, 166, 168, 177, 178, 204, 230, 248, 252, 255, 256, 266, 267, 269, 270, 271], "an": [0, 1, 2, 3, 4, 6, 22, 31, 55, 57, 59, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 76, 80, 86, 89, 90, 91, 92, 93, 94, 96, 97, 104, 107, 108, 109, 110, 113, 114, 115, 116, 127, 129, 131, 132, 133, 138, 143, 148, 151, 152, 164, 166, 168, 177, 190, 195, 196, 200, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 219, 220, 222, 223, 224, 226, 228, 229, 231, 232, 233, 234, 235, 236, 237, 239, 241, 243, 251, 252, 253, 255, 257, 258, 260, 262, 263, 266, 267, 271, 272, 274, 276, 277], "abstract": [0, 255, 271], "subclass": [0, 1, 2, 3, 4, 5, 6, 18, 45, 52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 78, 106, 107, 111, 112, 114, 115, 116, 117, 124, 132, 133, 138, 143, 156, 254, 256, 257, 258, 267, 271, 276, 277], "over": [0, 1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 67, 69, 75, 76, 83, 84, 85, 90, 93, 97, 101, 102, 108, 109, 114, 115, 116, 117, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 213, 214, 217, 223, 225, 230, 236, 237, 238, 239, 241, 243, 254, 255, 256, 258, 259, 260, 267, 271, 273, 276], "ring": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 255, 267, 276, 277], "type": [0, 2, 3, 4, 5, 6, 22, 25, 34, 35, 45, 52, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 100, 104, 114, 115, 116, 117, 124, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 156, 168, 171, 180, 191, 206, 248, 249, 250, 251, 252, 253, 255, 257, 271, 272, 273, 274], "arraylik": [0, 22, 31, 32, 33, 45, 46, 47, 55, 61, 67, 69, 91, 116, 117, 118, 119, 127, 132, 133, 138, 141, 143, 168, 177, 178, 179, 204, 230, 248, 252, 256, 266, 271], "A": [0, 1, 2, 3, 4, 5, 6, 17, 18, 22, 25, 26, 27, 28, 31, 32, 45, 46, 47, 48, 49, 61, 62, 63, 64, 65, 66, 68, 69, 73, 75, 76, 89, 90, 91, 92, 97, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 113, 115, 116, 117, 118, 119, 120, 121, 132, 137, 141, 146, 153, 154, 157, 158, 159, 160, 161, 162, 167, 168, 171, 172, 173, 174, 177, 178, 190, 191, 192, 193, 198, 199, 202, 203, 204, 205, 209, 215, 217, 218, 224, 226, 230, 232, 233, 236, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 267, 269, 270, 271, 272, 274], "union": [0, 248, 249, 250, 251, 252, 253, 272], "repres": [0, 2, 3, 4, 5, 6, 8, 36, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 108, 114, 115, 141, 152, 159, 166, 181, 193, 209, 240, 248, 249, 250, 251, 252, 253, 258, 266, 271, 276, 277], "object": [0, 115, 142, 191, 207, 239, 241, 248, 249, 250, 251, 252, 253, 259, 260, 266, 271, 276], "can": [0, 4, 18, 31, 36, 44, 64, 73, 81, 103, 104, 106, 112, 115, 137, 139, 159, 166, 181, 189, 204, 209, 210, 215, 230, 231, 232, 240, 241, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 260, 262, 266, 267, 270, 271, 275, 276, 277], "coerc": [0, 248, 249, 250, 251, 252, 253], "dtypelik": [0, 2, 3, 4, 5, 6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 114, 116, 249], "data": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 157, 158, 193, 249, 257, 264, 271], "elementlik": [0, 1, 4, 5, 25, 61, 64, 65, 66, 69, 91, 107, 116, 132, 141, 171, 250, 251, 256, 271], "iterablelik": [0, 248, 251, 252], "iter": [0, 57, 129, 200, 207, 228, 239, 241, 248, 251, 253, 271], "shapelik": [0, 1, 3, 4, 6, 61, 63, 64, 68, 116, 253], "shape": [0, 1, 2, 3, 4, 6, 22, 23, 24, 61, 62, 63, 64, 67, 68, 76, 90, 91, 97, 109, 114, 116, 141, 168, 169, 170, 253, 255, 256, 260, 268], "tupl": [0, 3, 4, 6, 22, 31, 61, 63, 64, 68, 92, 99, 116, 132, 153, 155, 166, 167, 168, 177, 197, 199, 207, 231, 239, 241, 247, 253], "fieldarrai": [0, 1, 18, 22, 23, 24, 25, 28, 31, 33, 34, 35, 43, 45, 46, 52, 53, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 124, 125, 128, 129, 130, 168, 169, 170, 171, 174, 177, 179, 180, 188, 191, 204, 214, 230, 236, 237, 254, 256, 257, 258, 259, 267, 271, 272, 273, 274, 276, 277], "mathrm": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 61, 66, 67, 69, 72, 74, 75, 76, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 94, 96, 97, 98, 100, 101, 102, 103, 104, 107, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 243, 254, 255, 256, 257, 258, 260, 266, 267, 269, 270, 271, 274, 276, 277], "gf": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "p": [0, 1, 7, 10, 16, 33, 45, 61, 67, 69, 70, 71, 72, 73, 74, 75, 79, 82, 83, 84, 85, 89, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 149, 150, 151, 152, 157, 158, 159, 160, 163, 164, 166, 179, 191, 193, 197, 198, 199, 200, 204, 209, 213, 221, 224, 225, 226, 227, 228, 229, 230, 232, 233, 234, 235, 240, 244, 254, 255, 256, 258, 260, 267, 270, 271, 274, 276], "m": [0, 1, 7, 10, 16, 22, 25, 28, 31, 32, 33, 34, 36, 38, 43, 45, 61, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 157, 158, 159, 161, 166, 167, 168, 171, 177, 178, 179, 191, 192, 193, 194, 199, 204, 206, 207, 214, 222, 225, 230, 233, 236, 237, 238, 239, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 274, 276, 277], "gf2": [0, 116, 133, 134, 135, 136, 137, 138, 139, 140, 143], "2": [0, 2, 8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 262, 264, 266, 267, 268, 269, 270, 271, 276, 277], "order": [0, 1, 4, 8, 16, 22, 23, 24, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 141, 143, 144, 145, 146, 147, 148, 149, 151, 154, 155, 157, 158, 159, 163, 164, 166, 168, 169, 170, 174, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 191, 193, 199, 204, 206, 207, 209, 214, 215, 222, 230, 236, 237, 238, 239, 240, 241, 245, 248, 250, 251, 252, 253, 254, 255, 257, 258, 260, 266, 269, 270, 271, 272, 273, 274, 276, 277], "int": [0, 1, 2, 4, 5, 7, 8, 10, 12, 16, 18, 22, 25, 29, 30, 31, 40, 41, 44, 45, 54, 57, 60, 61, 62, 64, 65, 66, 69, 72, 74, 77, 79, 80, 81, 91, 94, 98, 103, 104, 106, 107, 108, 115, 116, 117, 126, 129, 132, 133, 135, 137, 138, 144, 145, 148, 150, 152, 153, 154, 155, 167, 168, 171, 175, 176, 177, 185, 186, 189, 190, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 256, 258, 259, 266, 269, 270, 271, 273], "characterist": [0, 1, 7, 34, 35, 45, 47, 50, 51, 60, 61, 69, 72, 74, 75, 88, 89, 93, 96, 105, 107, 110, 115, 116, 117, 119, 122, 123, 152, 180, 191, 193, 225, 236, 237, 254, 255, 256, 260, 266, 271, 274, 276, 277], "degre": [0, 1, 10, 31, 33, 34, 35, 36, 45, 54, 60, 61, 67, 69, 75, 79, 85, 88, 105, 107, 114, 115, 116, 117, 126, 132, 133, 137, 138, 139, 143, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 177, 179, 180, 181, 191, 193, 195, 199, 206, 207, 214, 222, 225, 236, 237, 238, 239, 242, 245, 250, 252, 255, 256, 258, 260, 266, 271, 274, 276, 277], "alia": [0, 60, 248, 249, 250, 251, 252, 253, 271], "creat": [0, 1, 2, 3, 4, 5, 6, 22, 45, 55, 59, 61, 62, 63, 64, 65, 66, 68, 69, 80, 107, 115, 116, 117, 127, 131, 132, 141, 143, 168, 222, 248, 250, 252, 254, 255, 257, 258, 260, 267, 271, 273, 276, 277], "primitive_el": [0, 1, 17, 34, 35, 60, 61, 66, 69, 88, 91, 94, 101, 102, 103, 104, 105, 107, 115, 116, 180, 209, 214, 236, 237, 254, 255, 256, 258, 266, 271, 274, 276, 277], "irreducible_poli": [0, 1, 14, 34, 35, 47, 60, 61, 69, 85, 88, 105, 107, 115, 116, 119, 155, 159, 162, 180, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 239, 255, 256, 259, 266, 269, 271, 274, 276, 277], "poli": [0, 1, 12, 14, 18, 22, 23, 24, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 85, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 175, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 256, 258, 259, 260, 264, 266, 267, 271, 273, 274, 276], "find": [0, 31, 61, 103, 104, 116, 166, 177, 191, 192, 196, 197, 198, 199, 201, 204, 206, 207, 209, 222, 230, 232, 233, 235, 236, 237, 238, 239, 240, 241, 246, 247, 259, 271, 273, 274, 276, 277], "g": [0, 22, 23, 25, 28, 29, 31, 33, 36, 39, 43, 132, 141, 157, 158, 159, 168, 169, 171, 174, 175, 177, 179, 181, 184, 188, 193, 206, 209, 214, 215, 236, 237, 238, 240, 241, 259, 268, 271, 273, 276, 277], "q": [0, 22, 25, 28, 31, 33, 34, 35, 36, 38, 43, 61, 66, 76, 90, 97, 109, 116, 132, 159, 161, 162, 168, 171, 174, 177, 179, 180, 181, 183, 188, 206, 207, 214, 219, 224, 232, 236, 237, 238, 239, 254, 271, 273], "f": [0, 45, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 69, 85, 101, 102, 103, 104, 116, 117, 119, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 152, 153, 154, 155, 157, 158, 159, 161, 162, 165, 166, 167, 193, 199, 203, 205, 206, 207, 209, 214, 217, 218, 219, 224, 225, 232, 233, 236, 237, 238, 239, 240, 241, 242, 245, 259, 271, 274, 276], "x": [0, 22, 23, 24, 25, 27, 28, 29, 31, 33, 34, 35, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 69, 70, 71, 72, 73, 75, 76, 81, 83, 84, 85, 88, 89, 90, 91, 93, 94, 96, 97, 101, 102, 105, 106, 107, 109, 110, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 179, 180, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 198, 199, 201, 203, 204, 205, 206, 207, 214, 217, 218, 219, 222, 223, 224, 225, 230, 233, 236, 237, 238, 239, 243, 246, 248, 249, 250, 251, 253, 255, 256, 257, 258, 259, 266, 267, 271, 272, 273, 274, 275, 276, 277], "list": [0, 1, 11, 20, 61, 80, 112, 116, 132, 138, 153, 154, 155, 167, 196, 199, 200, 204, 207, 209, 215, 226, 227, 230, 235, 237, 239, 241, 242, 246, 247, 253, 256, 257, 259, 263, 271, 277], "_poli": [0, 132, 153, 154, 155, 167, 197, 199, 237], "all": [0, 1, 3, 6, 13, 18, 20, 21, 46, 47, 61, 63, 65, 68, 76, 80, 82, 91, 96, 102, 103, 104, 106, 109, 110, 112, 113, 116, 118, 119, 132, 133, 138, 153, 157, 158, 161, 167, 193, 196, 199, 200, 204, 207, 213, 219, 220, 225, 226, 227, 228, 230, 235, 237, 239, 241, 247, 254, 255, 256, 257, 258, 259, 264, 266, 267, 271, 276, 277], "is_primitive_el": [0, 214, 236, 237], "polylik": [0, 60, 115, 132, 142, 214, 252, 271], "bool": [0, 22, 25, 32, 37, 38, 39, 60, 61, 69, 86, 87, 88, 89, 115, 116, 132, 141, 142, 157, 158, 159, 160, 161, 162, 168, 171, 178, 182, 183, 184, 190, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 228, 239, 241, 273], "determin": [0, 61, 89, 116, 132, 142, 158, 159, 161, 162, 190, 191, 200, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 224, 228, 244, 271], "i": [0, 1, 2, 3, 4, 5, 6, 8, 18, 22, 25, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 50, 51, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 150, 152, 153, 154, 155, 160, 165, 166, 167, 168, 171, 175, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 198, 199, 200, 201, 202, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 250, 252, 254, 255, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 273, 274, 275, 276, 277], "univari": [0, 132, 259, 267], "The": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 19, 22, 23, 24, 25, 29, 30, 31, 32, 33, 34, 35, 36, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 81, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 175, 176, 177, 178, 179, 180, 181, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 200, 201, 203, 204, 205, 206, 207, 209, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "section": [0, 89, 153, 154, 155, 159, 167, 194, 197, 198, 199, 200, 228, 232, 233, 246, 254, 260, 269, 270, 271, 276, 277], "contain": [0, 268, 271], "mani": [0, 31, 177, 212, 250, 254, 257, 260, 263, 277], "function": [0, 8, 18, 70, 71, 77, 106, 153, 154, 155, 159, 167, 191, 192, 194, 195, 196, 197, 198, 199, 201, 202, 204, 206, 209, 212, 213, 218, 225, 230, 233, 235, 237, 240, 242, 244, 245, 254, 255, 257, 259, 263, 267, 271], "oper": [0, 31, 33, 61, 73, 108, 116, 135, 139, 144, 147, 177, 179, 254, 256, 257, 259, 260, 266, 267, 268, 270, 271, 277], "return": [0, 2, 3, 4, 5, 6, 18, 22, 31, 32, 33, 46, 57, 59, 62, 63, 64, 65, 66, 67, 68, 72, 73, 75, 76, 83, 84, 89, 90, 91, 92, 93, 94, 97, 99, 103, 104, 106, 107, 108, 109, 114, 115, 116, 118, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 255, 256, 260, 271, 273, 274, 276, 277], "monic": [0, 132, 138, 153, 154, 155, 157, 160, 167, 193, 199, 206, 207, 238, 239, 271], "through": [0, 207, 239, 241, 254, 271], "conway_poli": [0, 115, 157, 158, 159, 161, 193, 206, 225, 238, 259, 274, 276], "conwai": [0, 115, 132, 157, 158, 159, 161, 193, 238, 259, 267, 274, 276], "c_": [0, 31, 33, 45, 46, 47, 50, 51, 58, 115, 117, 118, 119, 122, 123, 130, 132, 157, 158, 177, 179, 191, 193, 276], "matlab_primitive_poli": [0, 25, 161, 171, 225, 238, 271], "matlab": [0, 225, 271], "": [0, 22, 31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 72, 82, 94, 95, 98, 113, 116, 117, 118, 119, 125, 127, 128, 132, 141, 144, 146, 147, 152, 157, 158, 159, 166, 168, 177, 178, 179, 193, 197, 199, 200, 209, 212, 225, 228, 232, 233, 254, 255, 256, 257, 258, 260, 263, 264, 266, 267, 271, 272, 274, 276, 277], "default": [0, 1, 2, 3, 4, 5, 6, 9, 18, 25, 31, 33, 46, 47, 55, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 78, 81, 88, 91, 106, 107, 108, 111, 114, 115, 116, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 152, 157, 158, 166, 171, 177, 179, 191, 193, 195, 200, 204, 206, 207, 225, 226, 227, 228, 230, 232, 233, 238, 239, 240, 241, 242, 244, 245, 247, 249, 255, 257, 258, 259, 266, 268, 269, 270, 271, 276, 277], "primitive_poli": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 161, 193, 206, 207, 225, 238, 239, 259, 271, 274], "lagrange_poli": [0, 222, 271, 272], "y": [0, 45, 73, 83, 84, 89, 96, 110, 117, 191, 192, 222, 257, 266, 267, 271, 272, 276, 277], "comput": [0, 8, 18, 31, 33, 61, 72, 75, 76, 77, 83, 84, 90, 91, 93, 94, 97, 106, 109, 115, 116, 132, 152, 155, 157, 158, 159, 177, 179, 193, 196, 197, 198, 199, 200, 201, 203, 204, 205, 218, 219, 220, 222, 223, 224, 226, 230, 233, 243, 254, 257, 258, 259, 260, 267, 268, 269, 270, 271, 276, 277], "lagrang": [0, 222, 271], "l": [0, 61, 83, 84, 92, 99, 116, 222, 240, 241], "x_i": [0, 222, 233], "y_i": [0, 222], "bch": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 267, 271, 273, 274], "textrm": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 61, 75, 76, 90, 94, 97, 107, 109, 116, 153, 159, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 192, 194, 200, 203, 204, 224, 228, 230, 233, 240, 241, 257, 270, 271, 276, 277], "n": [0, 1, 2, 22, 23, 24, 25, 27, 28, 30, 31, 32, 33, 36, 38, 40, 41, 45, 46, 47, 50, 51, 53, 55, 56, 57, 58, 61, 62, 66, 75, 76, 83, 90, 93, 97, 103, 104, 109, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 132, 157, 158, 165, 168, 169, 170, 171, 173, 174, 176, 177, 178, 179, 181, 183, 185, 186, 191, 192, 193, 195, 196, 198, 199, 200, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 240, 241, 246, 247, 254, 257, 258, 267, 270, 271, 273, 274], "k": [0, 22, 23, 24, 25, 27, 30, 31, 32, 33, 40, 41, 61, 69, 83, 84, 103, 104, 116, 132, 138, 152, 155, 159, 161, 162, 166, 168, 169, 170, 171, 173, 176, 177, 178, 179, 185, 186, 195, 198, 199, 204, 205, 209, 211, 213, 217, 221, 222, 230, 232, 240, 241, 273, 274, 277], "code": [0, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 153, 154, 155, 167, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 197, 199, 225, 262, 266, 267, 271, 273, 274], "reedsolomon": [0, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 267, 271, 273], "r": [0, 31, 76, 90, 104, 109, 132, 154, 157, 158, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 193, 228, 254, 261, 263, 266, 267, 268, 271], "flfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "fibonacci": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "feedback": [0, 45, 47, 50, 51, 117, 119, 122, 123, 191, 267, 271], "shift": [0, 45, 46, 58, 117, 118, 130, 191, 267], "regist": [0, 45, 46, 58, 117, 118, 130, 191, 267], "lfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 191, 271], "glfsr": [0, 45, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 191, 267, 271], "berlekamp_massei": [0, 45, 117, 191, 271], "output": [0, 31, 33, 45, 57, 59, 64, 67, 114, 117, 129, 131, 177, 179, 191, 204, 230, 261, 270, 271, 273], "minim": [0, 45, 54, 61, 93, 116, 117, 126, 191, 222, 271], "c": [0, 22, 25, 28, 29, 31, 32, 33, 36, 37, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 76, 97, 109, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 153, 167, 168, 171, 174, 175, 177, 178, 179, 181, 182, 188, 191, 204, 210, 230, 231, 233, 268, 271], "produc": [0, 45, 54, 57, 59, 64, 117, 126, 129, 131, 137, 191, 206, 207, 238, 239, 256, 269, 276, 277], "recurr": [0, 45, 50, 54, 58, 117, 122, 126, 130, 191], "intt": [0, 204, 230, 271], "invers": [0, 67, 113, 114, 135, 139, 144, 147, 204, 271], "theoret": [0, 204, 230, 267, 271], "ntt": [0, 204, 230, 254, 267, 271], "size": [0, 1, 2, 22, 25, 40, 41, 57, 61, 62, 80, 94, 98, 116, 129, 132, 148, 168, 171, 185, 186, 191, 204, 222, 230, 253, 254, 256, 257, 258, 270, 271, 273, 276, 277], "none": [0, 1, 2, 3, 4, 5, 6, 18, 22, 25, 45, 46, 47, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 91, 106, 107, 108, 114, 115, 116, 117, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 168, 171, 200, 204, 206, 207, 226, 227, 230, 232, 238, 239, 240, 241, 242, 244, 247, 255, 271], "are_coprim": [0, 190, 271], "valu": [0, 1, 11, 18, 31, 61, 72, 73, 80, 89, 94, 106, 115, 116, 133, 141, 144, 148, 177, 190, 191, 199, 204, 217, 219, 220, 222, 223, 224, 230, 240, 241, 243, 254, 256, 257, 258, 260, 271], "argument": [0, 69, 91, 103, 104, 115, 190, 197, 201, 223, 230, 243, 256, 257, 258, 259, 263, 266, 268, 271, 272, 273, 274], "ar": [0, 1, 11, 22, 25, 28, 31, 32, 37, 43, 45, 57, 59, 61, 65, 67, 76, 78, 80, 89, 90, 91, 94, 96, 97, 103, 104, 108, 109, 110, 111, 114, 115, 116, 117, 131, 132, 133, 135, 138, 139, 141, 142, 143, 144, 147, 149, 151, 153, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 168, 171, 174, 177, 178, 182, 188, 190, 191, 192, 193, 198, 199, 200, 204, 206, 209, 210, 215, 216, 217, 219, 224, 225, 227, 228, 230, 231, 238, 240, 241, 242, 245, 246, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "pairwis": [0, 190], "coprim": [0, 190, 192, 198, 209, 215, 219, 240, 241, 246, 277], "egcd": [0, 197, 201, 223, 243, 271, 276, 277], "b": [0, 142, 153, 154, 156, 167, 197, 201, 203, 211, 216, 232, 244, 247, 261, 267, 269, 270, 271, 272, 274, 276, 277], "multiplicand": [0, 197], "t": [0, 22, 31, 44, 45, 46, 58, 76, 90, 97, 99, 109, 117, 118, 130, 133, 138, 143, 168, 177, 189, 191, 197, 206, 207, 225, 228, 238, 239, 260, 263, 269, 270, 271, 276, 277], "gcd": [0, 159, 197, 201, 210, 223, 228, 231, 233, 243, 271, 276, 277], "euler_phi": [0, 192, 198, 209, 215, 237, 240, 241, 246, 271], "count": [0, 198, 209, 240], "posit": [0, 79, 108, 115, 192, 195, 196, 198, 199, 203, 205, 209, 215, 240, 241, 246, 247, 274], "tot": [0, 192, 198, 209, 215, 240, 241, 246], "1": [0, 1, 5, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 273, 275, 276, 277], "greatest": [0, 197, 201, 271], "common": [0, 193, 197, 200, 201, 223, 228, 259, 271, 276], "divisor": [0, 103, 104, 159, 195, 196, 197, 201, 247, 271], "lcm": [0, 22, 190, 197, 201, 223, 243], "least": [0, 148, 191, 203, 204, 209, 223, 230, 240, 241, 258, 271], "multipl": [0, 33, 36, 61, 73, 94, 101, 102, 108, 113, 115, 116, 132, 137, 138, 139, 141, 152, 155, 157, 158, 162, 166, 167, 179, 181, 192, 193, 199, 209, 215, 217, 223, 240, 241, 246, 250, 255, 256, 257, 266, 269, 270, 271, 274], "prod": [0, 190, 197, 201, 223, 243], "product": [0, 61, 83, 92, 99, 116, 132, 153, 154, 155, 167, 190, 199, 210, 231, 243, 267, 269, 270], "carmichael_lambda": [0, 192, 198, 209, 240, 241, 246, 271], "smallest": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 72, 94, 101, 114, 192, 204, 209, 230, 236, 240, 241, 254, 256, 260, 271], "equiv": [0, 192, 194, 200, 224, 228, 233, 276, 277], "mod": [0, 31, 177, 192, 194, 200, 224, 228, 233, 270, 271, 276], "everi": [0, 36, 72, 89, 92, 110, 181, 192, 209, 240, 256, 257, 276, 277], "crt": [0, 194, 271], "remaind": [0, 31, 177, 194, 269, 271, 276], "moduli": [0, 194, 204, 230, 271], "solv": [0, 194, 272, 277], "simultan": [0, 194], "system": [0, 194, 249, 263, 264, 268], "jacobi_symbol": [0, 219, 220, 224, 271], "jacobi": [0, 219, 220, 277], "symbol": [0, 22, 25, 31, 32, 33, 44, 45, 57, 117, 129, 157, 158, 168, 171, 177, 178, 179, 189, 191, 193, 219, 220, 224], "frac": [0, 44, 132, 152, 157, 158, 165, 189, 193, 198, 204, 205, 219, 220, 222, 224, 228], "kronecker_symbol": [0, 219, 220, 224, 271], "kroneck": [0, 220], "extend": [0, 197, 219, 220, 254, 267, 271, 276, 277], "legendre_symbol": [0, 219, 220, 224, 271], "legendr": [0, 219, 224], "is_cycl": [0, 192, 198, 209, 215, 240, 241, 246], "whether": [0, 31, 33, 61, 88, 115, 116, 132, 141, 157, 158, 159, 160, 161, 162, 177, 179, 209, 213, 256, 270], "group": [0, 64, 94, 115, 192, 209, 215, 240, 241, 246, 255, 271, 276, 277], "mathbb": [0, 192, 204, 209, 215, 230, 240, 241, 246, 266, 267, 270, 277], "z": [0, 191, 192, 209, 215, 240, 241, 246, 254, 257, 270, 277], "time": [0, 1, 2, 8, 57, 61, 62, 66, 75, 76, 77, 90, 93, 94, 97, 109, 116, 129, 192, 209, 215, 240, 241, 246, 255, 257, 258, 267, 268, 269, 270, 271, 274, 276, 277], "cyclic": [0, 22, 168, 192, 209, 215, 240, 241, 271, 276, 277], "primitive_root": [0, 115, 204, 209, 215, 230, 240, 241, 271, 277], "start": [0, 1, 5, 22, 37, 61, 65, 116, 168, 182, 209, 240, 241, 256, 261, 268, 271], "modulo": [0, 115, 209, 215, 219, 224, 233, 240, 241, 260, 269, 270, 271, 276, 277], "rang": [0, 1, 5, 25, 61, 65, 116, 192, 194, 200, 209, 219, 224, 228, 240, 241, 256, 268, 271, 273], "stop": [0, 1, 5, 61, 65, 116, 209, 240, 241, 256, 271], "is_primitive_root": [0, 215, 240, 241], "ilog": [0, 203, 205, 218], "lfloor": [0, 44, 189, 203, 205, 218], "log": [0, 8, 61, 77, 91, 115, 116, 203, 204, 230, 257, 266, 271], "_b": [0, 203], "rfloor": [0, 44, 189, 203, 205, 218], "le": [0, 25, 103, 104, 159, 166, 171, 200, 203, 205, 206, 209, 211, 215, 216, 218, 222, 225, 226, 227, 228, 232, 234, 235, 244, 247, 277], "iroot": [0, 203, 205, 218], "isqrt": [0, 203, 205, 218], "sqrt": [0, 110, 218, 247, 266, 271], "non": [0, 4, 23, 24, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 42, 43, 61, 64, 88, 94, 96, 107, 108, 116, 132, 133, 137, 150, 155, 160, 163, 164, 167, 169, 170, 171, 172, 173, 174, 177, 181, 183, 184, 187, 188, 199, 205, 206, 207, 209, 218, 219, 224, 232, 233, 238, 239, 240, 244, 249, 254, 257, 259, 260, 271, 273, 274], "constant": [0, 75, 132, 155, 167, 199, 233, 267], "divisor_sigma": [0, 195, 196, 271], "sum": [0, 76, 84, 90, 97, 109, 195, 254, 260], "th": [0, 22, 25, 28, 61, 103, 104, 116, 132, 152, 165, 168, 171, 174, 195, 204, 205, 213, 221, 230, 254, 271], "power": [0, 1, 12, 18, 22, 25, 28, 29, 37, 43, 60, 61, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 86, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 116, 141, 159, 166, 168, 171, 174, 175, 182, 188, 192, 195, 199, 206, 207, 209, 210, 213, 215, 216, 227, 230, 231, 232, 233, 238, 239, 240, 241, 248, 250, 251, 255, 256, 257, 259, 266, 271, 272, 273, 274, 276, 277], "d": [0, 1, 2, 5, 22, 25, 27, 28, 29, 30, 31, 32, 33, 37, 40, 41, 43, 44, 45, 61, 62, 65, 75, 93, 103, 104, 116, 117, 132, 137, 138, 143, 144, 152, 153, 154, 155, 159, 165, 166, 167, 168, 171, 173, 174, 175, 176, 177, 178, 179, 182, 185, 186, 188, 189, 191, 195, 196, 199, 222, 225, 232, 250, 253, 256, 258, 260, 261, 262, 266, 273, 276, 277], "perfect_pow": [0, 199, 210, 231, 271], "base": [0, 1, 61, 91, 107, 115, 116, 200, 203, 228, 231, 254, 255, 266, 271], "expon": [0, 107, 152, 199, 210, 226, 227, 231, 247, 260], "e": [0, 1, 7, 10, 16, 30, 31, 90, 97, 141, 143, 153, 177, 178, 204, 209, 210, 226, 230, 231, 240, 255, 262, 268, 271, 273, 276, 277], "If": [0, 18, 25, 31, 33, 57, 75, 88, 91, 93, 94, 103, 104, 106, 115, 129, 133, 138, 141, 143, 153, 154, 155, 157, 158, 159, 167, 171, 177, 179, 193, 199, 200, 204, 206, 207, 209, 212, 215, 228, 230, 231, 232, 233, 235, 238, 239, 240, 241, 247, 252, 267, 268, 270, 276, 277], "perfect": [0, 199, 210, 217, 231, 271], "pollard_p1": [0, 232, 233, 271], "b2": [0, 232], "attempt": [0, 200, 228, 232, 233], "trivial": [0, 199, 232, 233], "ha": [0, 8, 22, 31, 36, 43, 67, 75, 76, 77, 89, 90, 92, 93, 97, 109, 115, 141, 143, 148, 153, 154, 155, 158, 159, 162, 167, 168, 177, 204, 217, 225, 228, 232, 237, 255, 257, 270, 271, 276, 277], "smooth": [0, 211, 216, 232, 271], "pollard_rho": [0, 199, 232, 233, 271], "us": [0, 4, 8, 18, 25, 31, 32, 33, 61, 64, 73, 77, 78, 80, 88, 91, 99, 106, 107, 111, 112, 115, 116, 133, 137, 138, 139, 141, 143, 144, 146, 147, 166, 171, 177, 178, 179, 191, 199, 200, 204, 206, 207, 224, 225, 228, 230, 232, 233, 239, 241, 242, 244, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277], "cycl": [0, 233], "detect": [0, 22, 31, 32, 168, 178, 200, 228, 233, 271], "trial_divis": [0, 199, 247, 271], "p_i": [0, 159, 198, 211, 217, 232, 247, 271], "e_i": [0, 162, 198, 211, 217, 247, 271], "kth_prime": [0, 221, 229, 234, 235], "where": [0, 8, 25, 31, 32, 33, 77, 103, 104, 115, 152, 153, 157, 158, 159, 166, 171, 177, 178, 179, 193, 196, 204, 209, 210, 215, 221, 228, 230, 231, 232, 233, 237, 240, 241, 247, 257, 258, 271, 272, 277], "3": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "4": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 139, 141, 142, 144, 145, 147, 148, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 206, 207, 209, 210, 211, 214, 216, 217, 219, 221, 222, 223, 224, 225, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 266, 268, 269, 270, 271, 272, 273, 276, 277], "dot": [0, 22, 25, 28, 29, 31, 33, 37, 43, 45, 46, 47, 50, 51, 53, 55, 56, 58, 61, 73, 82, 101, 102, 113, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 138, 143, 144, 152, 153, 154, 155, 165, 166, 168, 171, 174, 175, 177, 179, 182, 188, 191, 198, 199, 209, 211, 215, 216, 221, 232, 233, 238, 239, 240, 241, 247, 258, 270, 271, 276, 277], "5": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 214, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 228, 230, 231, 232, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "7": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 114, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "mersenne_expon": [0, 226, 227], "known": [0, 115, 216, 226, 227, 252], "mersenn": [0, 226, 227, 274], "mersenne_prim": [0, 226, 227], "next_prim": [0, 221, 229, 234, 235, 244, 271], "nearest": [0, 229, 234], "prev_prim": [0, 221, 229, 234, 235, 244, 271], "random_prim": [0, 244, 272], "bit": [0, 226, 227, 244], "seed": [0, 4, 64, 137, 244, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274], "random": [0, 1, 4, 22, 31, 32, 33, 61, 64, 75, 76, 90, 91, 93, 97, 109, 116, 132, 137, 152, 156, 159, 168, 177, 178, 179, 194, 200, 206, 222, 236, 238, 240, 243, 244, 249, 253, 254, 255, 258, 259, 264, 269, 270, 271, 272, 273, 274, 276, 277], "is_composit": [0, 208, 212, 271], "is_perfect_pow": [0, 208, 210, 212, 213, 217, 231, 271], "is_powersmooth": [0, 211, 216, 271], "powersmooth": [0, 211], "is_prim": [0, 199, 200, 208, 212, 213, 226, 227, 228, 244, 271], "is_prime_pow": [0, 210, 212, 213, 217, 231, 271], "ge": [0, 30, 31, 200, 211, 213, 216, 219, 224, 228, 234], "is_smooth": [0, 211, 216, 271], "is_square_fre": [0, 132, 162, 208, 210, 217, 271], "squar": [0, 61, 75, 89, 92, 93, 96, 110, 116, 132, 141, 153, 154, 155, 162, 167, 199, 217, 218, 256, 266, 271], "free": [0, 132, 153, 154, 155, 162, 167, 199, 217], "fermat_primality_test": [0, 200, 212, 228, 271], "fermat": [0, 200, 212, 271], "miller_rabin_primality_test": [0, 200, 212, 228, 271], "miller": [0, 212, 228], "rabin": [0, 159, 212, 228], "get_printopt": [0, 202, 242, 245, 271], "dict": [0, 202], "str": [0, 1, 15, 20, 22, 26, 27, 45, 48, 49, 61, 70, 71, 73, 95, 105, 107, 112, 116, 117, 120, 121, 132, 139, 146, 147, 168, 172, 173, 202, 206, 207, 209, 238, 239, 240, 248, 249, 250, 251, 252, 259, 271, 272, 274], "ani": [0, 73, 74, 107, 108, 139, 202, 209, 211, 228, 240, 250, 254, 258, 260, 262, 264, 266, 267, 271, 276, 277], "current": [0, 1, 12, 19, 45, 56, 61, 81, 111, 115, 116, 117, 128, 141, 202, 256, 258, 260, 262, 271], "print": [0, 25, 27, 34, 35, 45, 46, 49, 59, 61, 69, 71, 73, 88, 105, 106, 107, 115, 116, 117, 118, 121, 131, 147, 173, 180, 191, 192, 194, 202, 203, 205, 207, 209, 218, 219, 224, 236, 237, 239, 240, 241, 242, 245, 255, 256, 259, 266, 271, 272, 273, 274, 276, 277], "option": [0, 31, 73, 115, 166, 177, 202, 232, 242, 245, 262, 268, 271], "packag": [0, 103, 104, 202, 209, 232, 240, 242, 245, 262, 267, 271, 272, 276, 277], "thi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 18, 22, 25, 29, 36, 37, 40, 41, 43, 47, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 77, 78, 80, 81, 91, 99, 103, 104, 106, 111, 112, 114, 115, 116, 119, 129, 133, 137, 138, 141, 143, 148, 153, 154, 155, 166, 167, 168, 171, 185, 186, 191, 192, 194, 195, 197, 198, 199, 201, 202, 204, 206, 212, 213, 217, 218, 225, 230, 232, 233, 235, 238, 242, 244, 245, 249, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 276, 277], "equival": [0, 31, 33, 59, 91, 99, 107, 116, 131, 132, 135, 141, 145, 165, 177, 179, 191, 202, 209, 225, 240, 242, 245, 255, 258, 259, 260, 263, 270, 271, 276, 277], "printopt": [0, 202, 242, 245, 271], "kwarg": [0, 242, 271], "context": [0, 18, 106, 242, 252, 258, 271], "manag": [0, 18, 106, 242, 258, 271], "temporarili": [0, 106, 242, 256, 258], "modifi": [0, 55, 56, 81, 106, 115, 127, 128, 133, 138, 143, 242, 245, 256, 258, 259, 264, 271, 273, 274], "set_printopt": [0, 146, 147, 202, 242, 245, 258, 271], "coeff": [0, 46, 58, 75, 118, 130, 132, 133, 143, 145, 148, 149, 151, 202, 207, 239, 242, 245, 259, 271], "desc": [0, 143, 148, 202, 245], "asc": [0, 143, 148, 202, 242, 245, 259, 271], "galoi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276], "arrai": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 31, 32, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 75, 80, 83, 84, 89, 91, 92, 93, 94, 99, 103, 104, 106, 114, 116, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 145, 148, 149, 151, 156, 163, 164, 166, 177, 178, 204, 222, 230, 248, 250, 251, 252, 253, 257, 258, 259, 260, 267, 268, 270, 271, 272, 274, 276, 277], "field": [1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 49, 52, 57, 59, 60, 61, 65, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 94, 95, 96, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 113, 115, 116, 117, 118, 121, 124, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178, 179, 180, 183, 184, 185, 186, 187, 189, 191, 193, 194, 199, 204, 206, 207, 209, 214, 225, 230, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 254, 256, 257, 258, 259, 260, 264, 266, 267, 271, 273, 274], "cannot": [1, 8, 31, 61, 77, 78, 80, 111, 112, 115, 177, 232, 233, 247, 257, 269, 276, 277], "instanti": [1, 61, 255, 256, 273], "directli": [1, 61, 255], "classmethod": [1, 2, 3, 4, 5, 6, 8, 18, 45, 46, 61, 62, 63, 64, 65, 66, 67, 68, 73, 77, 103, 104, 106, 107, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 255, 258, 259, 266, 271, 273, 276, 277], "ident": [1, 2, 59, 61, 62, 89, 108, 110, 116, 131, 132, 134, 141, 204, 255, 259, 260, 271, 272, 277], "self": [1, 2, 3, 4, 5, 6, 45, 46, 61, 62, 63, 64, 65, 66, 68, 76, 83, 84, 90, 92, 97, 99, 103, 104, 108, 109, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 272], "matrix": [1, 2, 22, 23, 24, 31, 32, 33, 61, 62, 64, 66, 75, 76, 90, 92, 93, 97, 99, 108, 109, 116, 141, 168, 169, 170, 177, 178, 179, 255, 258, 269, 270, 271, 272, 274], "Ones": [1, 3, 61, 63, 116, 256], "ones": [1, 3, 46, 47, 61, 63, 116, 118, 119, 133, 138], "element": [1, 2, 3, 4, 5, 6, 8, 12, 13, 17, 18, 22, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 77, 78, 80, 81, 82, 83, 84, 88, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 111, 112, 113, 114, 115, 141, 143, 152, 166, 168, 206, 209, 214, 222, 236, 237, 238, 239, 240, 241, 248, 250, 251, 254, 255, 256, 257, 271, 273], "zero": [1, 6, 31, 61, 68, 94, 108, 116, 132, 133, 140, 148, 150, 163, 164, 177, 204, 206, 207, 230, 238, 239, 254, 256, 258, 259, 260, 271, 274, 276, 277], "compil": [1, 8, 9, 19, 20, 60, 77, 78, 111, 112, 115, 249, 267, 269, 270, 271, 272, 274], "mode": [1, 8, 9, 19, 20, 61, 77, 78, 111, 112, 115, 116, 269, 270, 271], "recompil": [1, 8, 61, 77, 78, 111, 112, 116], "just": [1, 8, 18, 61, 77, 106, 116, 255, 257, 258, 267], "ufunc": [1, 8, 61, 77, 78, 111, 112, 115, 116, 267, 269, 270, 271], "new": [1, 8, 55, 61, 77, 116, 127, 157, 158, 193, 200, 257, 258, 266, 267, 269, 271], "calcul": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 132, 141, 166, 209, 255, 258, 260, 267, 268, 271, 274, 276], "repr": [1, 18, 25, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 115, 116, 146, 236, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 274, 276, 277], "gener": [1, 4, 8, 18, 22, 23, 25, 28, 29, 31, 33, 36, 37, 42, 43, 61, 64, 73, 77, 94, 101, 102, 106, 107, 115, 116, 137, 155, 157, 158, 162, 168, 169, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 197, 199, 201, 207, 209, 215, 217, 223, 239, 240, 241, 242, 243, 244, 255, 261, 267, 269, 271, 276, 277], "set": [1, 18, 61, 90, 97, 106, 115, 116, 148, 190, 209, 219, 240, 241, 256, 257, 259, 263, 264, 266, 268, 271, 274, 276, 277], "represent": [1, 12, 18, 26, 48, 65, 69, 73, 81, 106, 107, 115, 120, 135, 139, 144, 146, 147, 172, 193, 248, 250, 252, 256, 271, 273, 276, 277], "from": [1, 4, 18, 22, 45, 46, 47, 61, 64, 67, 69, 73, 88, 89, 91, 106, 114, 116, 117, 118, 119, 132, 133, 135, 137, 138, 139, 143, 153, 154, 155, 159, 161, 166, 167, 168, 194, 197, 198, 199, 200, 201, 204, 207, 209, 218, 219, 220, 224, 228, 230, 232, 233, 239, 240, 241, 244, 246, 252, 255, 256, 258, 259, 260, 261, 266, 268, 271, 273, 274, 277], "gr": [1, 7, 10, 16, 255], "default_ufunc_mod": [1, 9, 61, 78, 116], "jit": [1, 8, 9, 19, 60, 61, 77, 78, 91, 111, 112, 115, 116, 257, 268, 269, 270, 271, 272], "lookup": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 258, 267, 268, 271], "python": [1, 8, 9, 19, 60, 61, 77, 78, 80, 103, 104, 111, 112, 115, 116, 204, 209, 218, 230, 232, 240, 249, 254, 256, 260, 261, 263, 266, 267, 268, 271, 273, 274, 277], "dtype": [1, 2, 3, 4, 5, 6, 11, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 116, 249, 256, 269, 270, 271], "valid": [1, 11, 31, 32, 61, 80, 116, 141, 177, 178, 258, 271], "integ": [1, 4, 11, 18, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 79, 80, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 132, 135, 137, 144, 152, 190, 192, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 223, 224, 228, 229, 230, 231, 232, 233, 234, 235, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259, 260, 266, 267, 269, 271, 274, 276, 277], "compat": [1, 11, 61, 80, 116, 157, 158, 193, 275], "element_repr": [1, 12, 18, 61, 81, 106, 116, 258, 273], "irreduc": [1, 14, 25, 61, 85, 88, 115, 116, 132, 153, 154, 155, 159, 161, 162, 167, 171, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 238, 255, 259, 267, 269, 271, 274], "polynomi": [1, 14, 18, 25, 28, 29, 31, 33, 36, 37, 42, 43, 47, 50, 51, 54, 61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 82, 83, 84, 85, 88, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 119, 122, 123, 126, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 266, 267, 269, 271, 274, 277], "name": [1, 15, 34, 35, 45, 61, 69, 88, 94, 95, 103, 104, 105, 107, 115, 116, 180, 224, 228, 236, 237, 255, 256, 263, 266, 268, 271, 274, 276, 277], "em": [1, 16], "primit": [1, 17, 22, 23, 24, 25, 26, 27, 28, 38, 39, 42, 45, 61, 69, 88, 91, 94, 101, 102, 103, 104, 107, 115, 116, 117, 132, 157, 158, 159, 161, 166, 168, 169, 170, 171, 172, 173, 174, 183, 184, 187, 193, 204, 209, 214, 215, 225, 230, 236, 237, 238, 239, 240, 241, 254, 255, 256, 257, 258, 259, 267, 271, 273], "ufunc_mod": [1, 8, 19, 20, 61, 77, 91, 111, 112, 116, 257, 268, 269, 270, 271], "support": [1, 20, 61, 112, 115, 116, 225, 254, 256, 257, 259, 260, 266, 267, 271, 272, 273, 274], "unit": [1, 21, 61, 94, 113, 116, 256, 262, 271, 274], "paramet": [2, 3, 4, 5, 6, 8, 18, 25, 31, 32, 33, 46, 47, 55, 57, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 91, 103, 104, 106, 107, 108, 114, 115, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 148, 152, 154, 157, 158, 166, 171, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247], "along": [2, 62, 191], "one": [2, 31, 32, 57, 62, 103, 104, 129, 132, 136, 137, 160, 162, 177, 178, 209, 217, 225, 226, 227, 232, 240, 254, 255, 257, 259, 260, 268, 277], "dimens": [2, 22, 40, 62, 67, 76, 90, 97, 109, 114, 168, 185, 253, 254, 258], "which": [2, 3, 4, 5, 6, 8, 25, 46, 47, 55, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 91, 94, 107, 108, 114, 115, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 148, 154, 166, 171, 195, 200, 201, 204, 209, 223, 225, 226, 227, 230, 232, 240, 241, 244, 245, 247, 256, 257, 269, 270, 271, 276, 277], "unsign": [2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 114, 256], "first": [2, 3, 4, 5, 6, 22, 25, 29, 31, 36, 37, 43, 57, 62, 63, 64, 65, 66, 67, 68, 69, 114, 143, 152, 157, 158, 168, 171, 175, 177, 181, 182, 188, 193, 197, 201, 204, 206, 207, 212, 225, 230, 232, 238, 239, 255, 256, 257, 258, 263, 264, 268, 270, 271, 272, 274, 276, 277], "compliant": [3, 4, 6, 63, 64, 68], "low": [4, 64, 91, 177, 178, 206, 256, 271], "0": [4, 22, 23, 24, 28, 29, 31, 32, 33, 36, 39, 42, 43, 45, 46, 47, 49, 50, 51, 53, 56, 57, 58, 59, 61, 62, 64, 67, 68, 69, 72, 73, 74, 75, 76, 81, 82, 83, 84, 89, 90, 92, 93, 94, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 114, 116, 117, 118, 119, 121, 122, 123, 125, 127, 128, 129, 130, 131, 132, 133, 138, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 160, 161, 163, 164, 165, 166, 167, 168, 169, 174, 175, 177, 178, 179, 181, 184, 188, 191, 193, 194, 195, 196, 204, 206, 207, 209, 213, 219, 220, 222, 224, 228, 230, 233, 238, 239, 240, 241, 242, 245, 250, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 266, 268, 275, 276, 277], "high": [4, 64, 212, 256], "scalar": [4, 31, 32, 64, 69, 72, 75, 89, 93, 94, 103, 108, 141, 152, 177, 178, 250, 253, 271, 272, 273], "inclus": [4, 5, 64, 65, 240, 241], "largest": [4, 64, 209, 236, 240, 241, 271], "exclus": [4, 5, 64, 65, 240, 241], "neg": [4, 57, 64, 129, 137, 205, 210, 218, 231, 244, 260, 271], "initi": [4, 45, 46, 47, 53, 55, 57, 59, 64, 117, 118, 119, 125, 127, 129, 131, 137, 244, 256, 257, 271], "prng": [4, 64, 137, 244], "mean": [4, 22, 25, 37, 38, 39, 64, 132, 137, 160, 168, 171, 182, 183, 184, 209, 240, 244, 268, 269, 270, 271, 272, 274, 276, 277], "unpredict": [4, 64, 137, 244], "entropi": [4, 64, 137, 244], "pull": [4, 64, 137, 244], "o": [4, 64, 137, 204, 230, 244, 249, 256, 271], "also": [4, 22, 40, 41, 57, 64, 71, 73, 94, 129, 137, 168, 185, 186, 199, 254, 255, 256, 259, 260, 264, 266, 267, 268, 270, 274, 276, 277], "pass": [4, 22, 31, 32, 33, 47, 64, 119, 137, 168, 177, 178, 179, 204, 230, 256, 258, 259, 261, 262, 266, 268, 274], "step": [5, 45, 53, 55, 56, 57, 59, 65, 117, 125, 127, 128, 129, 131, 155, 191, 199, 232, 255], "increment": [5, 65], "between": [5, 65, 139, 193, 254, 271, 274, 276, 277], "properti": [7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, 52, 53, 54, 56, 58, 69, 74, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 90, 94, 95, 96, 97, 98, 100, 101, 102, 105, 107, 109, 110, 111, 112, 113, 115, 121, 122, 123, 124, 125, 126, 128, 130, 148, 149, 150, 151, 156, 160, 163, 164, 169, 170, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 204, 236, 237, 258, 263, 266, 271, 273, 274, 276, 277], "auto": [8, 60, 77, 115], "updat": [8, 18, 77, 106, 261, 272], "select": [8, 77, 115, 200, 226, 257, 276, 277], "less": [8, 77, 78, 111, 115, 161, 214, 227, 228, 236, 237, 257, 258, 269, 270, 274, 276, 277], "than": [8, 30, 57, 77, 78, 89, 91, 96, 110, 111, 115, 129, 161, 162, 204, 210, 214, 217, 225, 227, 228, 230, 231, 236, 237, 247, 256, 257, 258, 260, 267, 269, 270, 271, 274, 276, 277], "20": [8, 25, 31, 32, 33, 45, 64, 65, 69, 75, 77, 78, 82, 91, 97, 99, 101, 102, 104, 107, 110, 111, 113, 115, 117, 155, 169, 170, 173, 177, 178, 179, 184, 187, 192, 198, 199, 209, 214, 235, 240, 246, 250, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 273, 276, 277], "larger": [8, 77, 115, 204, 225, 230, 247, 257], "whose": [8, 22, 28, 77, 78, 80, 111, 112, 115, 132, 153, 168, 174, 209, 214, 240, 271], "int64": [8, 77, 78, 80, 111, 112, 115, 249, 256, 257, 271, 273], "arithmet": [8, 22, 25, 34, 45, 51, 52, 73, 77, 78, 80, 111, 112, 115, 117, 123, 124, 132, 144, 204, 230, 255, 257, 267, 268, 269, 270, 271, 274], "zech": [8, 77, 115, 257], "anti": [8, 77, 115], "tabl": [8, 18, 61, 73, 77, 78, 91, 106, 107, 111, 112, 115, 116, 206, 225, 258, 267, 271, 276, 277], "effici": [8, 57, 77, 115, 129, 212, 233, 235, 240, 260, 267, 269, 270, 271, 277], "In": [8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "few": [8, 77, 115, 276, 277], "case": [8, 77, 115, 224, 232, 257, 264, 270], "explicit": [8, 18, 77, 78, 91, 106, 111, 112, 115, 250, 258, 267, 271, 276, 277], "faster": [8, 77, 115, 257, 267, 270, 271, 274], "design": [8, 25, 29, 30, 36, 37, 43, 77, 115, 171, 175, 182, 261, 267, 273], "larg": [8, 18, 77, 80, 106, 115, 212, 240, 256, 257, 258, 267, 271, 274], "should": [8, 25, 77, 94, 115, 171, 206, 212, 238], "store": [8, 77, 115, 256, 257, 261, 262, 264], "ram": [8, 77, 115], "slower": [8, 77, 115, 257, 269, 270], "pure": [8, 77, 78, 111, 112, 115, 257, 267], "reserv": [8, 77, 115], "instead": [8, 61, 77, 115, 204, 230, 250, 255, 256, 267, 269, 271, 272, 273], "object_": [8, 77, 80, 115, 256, 257, 271], "arbitrari": [8, 73, 77, 115, 241], "precis": [8, 77, 115], "To": [18, 22, 106, 168, 258, 262, 264, 268, 269, 271, 277], "displai": [18, 61, 70, 71, 73, 106, 116, 146, 147, 242, 245, 258, 268, 271, 272, 273, 276, 277], "must": [18, 25, 78, 80, 103, 104, 106, 111, 115, 139, 148, 171, 190, 203, 204, 211, 222, 223, 230, 232, 243, 252, 256, 258, 263, 268, 270, 276], "discret": [18, 61, 91, 106, 116, 204, 230, 254, 258, 271], "logarithm": [18, 61, 91, 106, 115, 116, 203, 257, 258, 266, 271], "each": [18, 31, 36, 61, 72, 89, 94, 106, 107, 115, 116, 154, 155, 166, 167, 177, 181, 190, 194, 199, 209, 223, 232, 237, 240, 241, 243, 254, 255, 258, 269, 270, 271, 272, 274], "For": [18, 31, 32, 33, 65, 75, 79, 80, 83, 84, 93, 100, 103, 104, 106, 114, 115, 139, 144, 152, 153, 165, 177, 178, 179, 191, 192, 198, 204, 206, 209, 218, 228, 230, 232, 255, 256, 257, 258, 263, 269, 270, 271, 272, 273, 276, 277], "process": [18, 106, 258], "take": [18, 106, 115, 257, 258, 277], "while": [18, 106, 115, 206, 207, 238, 239, 255, 258, 259, 268], "howev": [18, 103, 104, 106, 142, 175, 182, 192, 200, 204, 214, 219, 225, 228, 230, 238, 255, 256, 257, 258, 269, 270, 271, 276, 277], "when": [18, 22, 75, 93, 103, 104, 106, 115, 192, 233, 254, 256, 258, 260, 263, 266, 267, 269, 270, 271, 272, 274, 276, 277], "fast": [18, 106, 258, 270], "other": [18, 83, 84, 106, 107, 132, 142, 200, 204, 206, 207, 225, 228, 230, 238, 239, 255, 258, 259, 267, 271, 274, 275], "statement": [18, 106, 242, 263, 271], "perman": [18, 81, 106, 258], "disregard": [18, 106, 206, 207, 238, 239], "note": [18, 30, 33, 36, 42, 44, 45, 47, 50, 51, 67, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89, 90, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 117, 119, 122, 123, 135, 138, 139, 144, 147, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 177, 179, 181, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 211, 212, 213, 214, 215, 216, 217, 219, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 237, 238, 239, 240, 241, 244, 246, 260, 263, 276, 277], "_q": [22, 30, 31, 40, 41, 168, 176, 185, 186], "linear": [22, 45, 50, 52, 54, 58, 76, 109, 117, 122, 124, 126, 130, 168, 191, 267, 271], "block": [22, 168, 242, 271], "codeword": [22, 25, 31, 32, 33, 35, 36, 39, 41, 44, 168, 171, 177, 178, 179, 180, 181, 184, 186, 189, 273], "messag": [22, 25, 31, 32, 33, 39, 40, 168, 171, 177, 178, 179, 184, 185, 273], "minimum": [22, 30, 31, 168, 176, 206, 207, 225, 238, 239, 271, 274], "distanc": [22, 25, 29, 30, 31, 36, 37, 43, 168, 171, 175, 176, 182, 273], "taken": [22, 168, 204, 230], "alphabet": [22, 25, 35, 168, 171, 180], "construct": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 73, 115, 117, 118, 119, 132, 133, 134, 135, 136, 137, 138, 139, 140, 155, 159, 168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 199, 236, 237, 257, 271], "full": [22, 168, 242], "encod": [22, 25, 31, 32, 33, 168, 171, 177, 178, 179, 271, 273], "decod": [22, 31, 168, 177, 271, 273, 274], "onli": [22, 29, 31, 32, 33, 36, 37, 43, 80, 89, 108, 112, 141, 157, 159, 166, 168, 177, 178, 179, 193, 196, 207, 209, 210, 214, 215, 231, 239, 240, 241, 242, 247, 255, 256, 257, 264, 269, 270, 271, 274, 276, 277], "applic": [22, 31, 32, 33, 45, 117, 168, 177, 178, 179, 191, 206, 207, 238, 239, 271], "systemat": [22, 23, 25, 31, 32, 33, 39, 168, 169, 171, 177, 178, 179, 184, 271], "root": [22, 25, 28, 29, 31, 36, 37, 43, 61, 89, 101, 102, 103, 104, 110, 115, 116, 132, 138, 159, 166, 168, 171, 174, 175, 177, 181, 182, 188, 204, 205, 209, 215, 218, 230, 240, 241, 259, 266, 271], "alpha": [22, 25, 28, 29, 31, 36, 37, 43, 61, 69, 91, 101, 102, 103, 104, 116, 166, 168, 171, 174, 175, 177, 181, 182, 188, 238, 239, 254, 256, 257, 258, 266, 277], "evalu": [22, 31, 36, 43, 75, 93, 132, 138, 141, 177, 181, 188, 222, 271, 274], "uniti": [22, 25, 28, 61, 103, 104, 116, 168, 171, 174, 204, 230, 254], "m_": [22, 31, 33, 177, 179], "exampl": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 255, 256, 258, 259, 266, 269, 270, 271, 272, 273, 276, 277], "binari": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 115, 135, 206, 254, 259, 271, 274], "15": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 57, 61, 64, 65, 69, 73, 75, 76, 82, 89, 91, 93, 94, 101, 102, 103, 104, 107, 109, 110, 113, 115, 117, 129, 132, 155, 166, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 199, 204, 208, 209, 212, 229, 230, 231, 232, 234, 240, 241, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 270, 273, 276, 277], "out": [22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "corrupt": [22, 31, 168, 177], "6": [22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 78, 81, 82, 83, 84, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 118, 121, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 213, 214, 217, 219, 222, 223, 224, 225, 228, 230, 231, 232, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 273, 274, 276, 277], "dec_m": [22, 168], "np": [22, 31, 64, 69, 75, 91, 92, 99, 103, 104, 108, 110, 137, 141, 168, 177, 191, 204, 222, 230, 237, 248, 249, 255, 256, 258, 260, 266, 269, 270, 271, 273, 274, 276, 277], "array_equ": [22, 31, 91, 92, 99, 110, 168, 177, 191, 222, 254, 271], "true": [22, 25, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 50, 51, 60, 61, 69, 75, 76, 86, 87, 88, 89, 90, 91, 92, 97, 99, 105, 107, 109, 110, 115, 116, 122, 123, 135, 141, 142, 144, 153, 154, 157, 158, 159, 160, 161, 162, 166, 167, 168, 171, 173, 174, 175, 177, 178, 180, 182, 183, 184, 190, 191, 192, 193, 194, 197, 198, 200, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 222, 226, 227, 228, 230, 231, 236, 237, 238, 239, 240, 241, 244, 246, 254, 255, 256, 258, 260, 266, 270, 271, 274, 276, 277], "instruct": [22, 168, 263, 264], "number": [22, 25, 31, 32, 33, 57, 66, 76, 90, 97, 108, 109, 129, 152, 168, 171, 177, 178, 179, 198, 200, 204, 206, 207, 209, 215, 216, 228, 230, 237, 238, 239, 240, 241, 244, 246, 264, 267, 271, 274, 276, 277], "correct": [22, 31, 44, 168, 177, 189, 197, 267, 269, 276, 277], "error": [22, 31, 32, 44, 168, 177, 178, 189, 197, 225, 267, 271, 274], "8": [22, 23, 25, 27, 28, 31, 32, 33, 36, 37, 39, 43, 45, 55, 57, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 148, 152, 153, 154, 155, 156, 157, 158, 161, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 204, 206, 207, 209, 210, 213, 218, 219, 222, 230, 231, 232, 236, 237, 238, 239, 240, 241, 243, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "9": [22, 23, 25, 27, 28, 31, 32, 33, 37, 39, 45, 55, 57, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 82, 83, 84, 89, 90, 91, 93, 94, 96, 97, 99, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 153, 154, 157, 158, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 206, 209, 210, 219, 228, 230, 231, 232, 236, 238, 240, 241, 243, 246, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "__repr__": [22, 26, 45, 48, 61, 70, 116, 117, 120, 132, 146, 168, 172], "ters": [22, 26, 45, 48, 117, 120, 168, 172], "__str__": [22, 27, 45, 49, 61, 71, 116, 117, 121, 132, 139, 147, 168, 173, 271, 272], "format": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 192, 209, 240, 263, 268, 274], "relev": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 271], "_field": [22, 31, 73, 103, 104, 168, 177], "_arrai": [22, 31, 73, 103, 104, 132, 166, 168, 177], "mathbf": [22, 23, 24, 31, 32, 33, 36, 61, 75, 76, 90, 92, 97, 99, 108, 109, 116, 168, 169, 170, 177, 178, 179, 181], "present": [22, 32, 168, 178, 271], "extension_field": [22, 25, 27, 34, 36, 38, 43], "defin": [22, 25, 29, 34, 35, 45, 50, 51, 52, 54, 58, 76, 83, 84, 90, 92, 94, 97, 99, 109, 115, 117, 122, 123, 124, 126, 130, 152, 157, 168, 171, 175, 180, 193, 194, 195, 204, 214, 222, 230, 233, 236, 237, 255, 257, 276, 277], "syndrom": [22, 25, 31, 34, 177], "call": [22, 40, 41, 57, 81, 94, 103, 104, 106, 115, 129, 168, 185, 186, 209, 218, 228, 232, 240, 255, 256, 257, 266, 271, 274, 277], "length": [22, 31, 32, 33, 41, 61, 67, 114, 116, 132, 145, 148, 168, 177, 178, 179, 186, 204, 230, 256, 263, 271], "capabl": [22, 44, 168, 189, 276, 277], "is_narrow_sens": [22, 27, 37, 168, 173, 182], "indic": [22, 25, 31, 32, 37, 38, 39, 61, 86, 87, 88, 89, 115, 116, 139, 141, 157, 158, 159, 161, 162, 168, 171, 177, 178, 182, 183, 184, 204, 207, 239, 241, 254, 256, 260, 271, 274], "narrow": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "sens": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "consecut": [22, 25, 28, 29, 36, 37, 43, 168, 171, 174, 175, 181, 182, 188, 228], "is_primit": [22, 27, 38, 132, 157, 158, 161, 168, 173, 183, 193, 225, 238, 239, 271, 274], "is_systemat": [22, 27, 39, 168, 173, 184, 271], "have": [22, 39, 61, 86, 87, 89, 116, 132, 142, 153, 164, 168, 184, 207, 212, 219, 222, 228, 239, 241, 256, 257, 258, 259, 266, 271, 274, 276, 277], "pariti": [22, 24, 25, 33, 39, 42, 168, 170, 171, 179, 184, 187], "append": [22, 25, 39, 70, 71, 168, 171, 184], "h": [22, 24, 42, 157, 159, 168, 170, 187, 193], "check": [22, 24, 42, 132, 157, 168, 170, 187, 212, 225, 256], "generator_poli": [22, 23, 27, 36, 37, 39, 43, 168, 169, 173, 175, 181, 182, 184, 188], "parity_check_poli": [22, 24, 42, 168, 170, 187], "13": [23, 24, 25, 26, 27, 28, 31, 32, 33, 38, 39, 42, 45, 57, 61, 65, 69, 73, 75, 76, 82, 89, 91, 93, 94, 97, 101, 102, 107, 108, 109, 110, 113, 115, 117, 129, 135, 139, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 195, 197, 198, 204, 208, 209, 210, 212, 226, 229, 230, 231, 232, 234, 235, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 271, 272, 273, 274, 276, 277], "fals": [23, 27, 31, 32, 37, 38, 39, 75, 86, 87, 88, 89, 115, 132, 141, 142, 157, 158, 159, 160, 161, 162, 166, 169, 173, 177, 178, 182, 183, 184, 190, 192, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 228, 231, 236, 237, 239, 240, 241, 255, 256, 268, 271, 273], "2x": [23, 24, 27, 34, 39, 42, 61, 69, 75, 93, 107, 115, 152, 154, 155, 157, 158, 159, 161, 162, 167, 170, 180, 187, 193, 194, 197, 199, 206, 207, 214, 217, 222, 223, 236, 237, 238, 239, 243, 248, 250, 251, 252, 255, 256, 258, 259, 260, 266, 271, 276], "either": [25, 31, 32, 33, 108, 112, 139, 148, 171, 177, 178, 179, 228, 245, 257, 258, 266, 267], "provid": [25, 94, 115, 171, 193, 255, 256, 269, 271, 276, 277], "both": [25, 59, 131, 171, 254, 271], "mai": [25, 30, 47, 73, 78, 111, 112, 115, 119, 139, 171, 200, 204, 206, 207, 225, 228, 230, 232, 239, 241, 247, 255, 256, 257, 259, 260, 271, 274, 277], "long": [25, 171, 244], "thei": [25, 103, 104, 115, 133, 138, 142, 143, 157, 158, 171, 193, 200, 210, 231, 255, 256, 257, 259, 260, 268, 269, 275, 276, 277], "consist": [25, 132, 139, 157, 158, 171, 193, 238, 271, 272], "correspond": [25, 31, 32, 33, 46, 47, 55, 107, 115, 118, 119, 127, 133, 134, 135, 136, 137, 138, 139, 140, 148, 152, 153, 155, 167, 171, 177, 178, 179, 195, 199, 204, 230, 240, 241, 247], "extens": [25, 31, 61, 65, 79, 82, 83, 84, 86, 100, 101, 102, 113, 115, 116, 193, 206, 207, 214, 232, 236, 237, 238, 239, 254, 256, 258, 267, 268, 271, 274, 277], "primitive_root_of_un": [25, 61, 103, 116, 171, 254, 271], "26": [25, 26, 27, 30, 31, 32, 34, 35, 40, 41, 44, 64, 69, 75, 76, 82, 91, 101, 102, 107, 109, 110, 113, 117, 170, 173, 176, 177, 178, 180, 185, 186, 187, 189, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "17": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 82, 91, 92, 97, 101, 102, 107, 108, 109, 110, 113, 115, 117, 169, 173, 177, 178, 179, 184, 198, 204, 209, 226, 228, 229, 230, 231, 232, 235, 240, 241, 246, 247, 248, 250, 251, 253, 254, 255, 256, 258, 259, 260, 266, 268, 272, 273, 274, 276, 277], "10": [25, 31, 32, 33, 37, 45, 53, 55, 56, 57, 59, 61, 64, 65, 69, 72, 73, 75, 82, 89, 90, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 157, 158, 166, 167, 169, 170, 173, 177, 178, 179, 182, 184, 187, 191, 192, 193, 194, 197, 199, 200, 204, 206, 209, 210, 212, 216, 217, 225, 228, 230, 231, 232, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "11": [25, 27, 31, 32, 33, 45, 55, 57, 61, 64, 65, 67, 69, 72, 73, 75, 82, 89, 90, 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, 253, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "discov": [25, 199, 225, 232, 247, 271, 274, 277], "loop": [25, 207, 239, 241, 269, 270, 271, 272, 274], "12": [25, 27, 31, 32, 33, 45, 55, 57, 61, 65, 67, 69, 72, 73, 75, 76, 82, 89, 90, 91, 92, 93, 94, 101, 102, 106, 107, 108, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 169, 170, 173, 175, 177, 178, 179, 181, 182, 184, 187, 188, 192, 194, 196, 197, 198, 201, 204, 209, 210, 216, 225, 228, 231, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 270, 271, 272, 274, 276, 277], "14": [25, 26, 27, 30, 31, 32, 33, 34, 35, 40, 41, 44, 45, 57, 61, 65, 69, 73, 75, 82, 89, 91, 93, 94, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 129, 135, 152, 159, 166, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 204, 209, 223, 225, 230, 231, 238, 240, 243, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 276, 277], "24": [25, 31, 32, 45, 64, 69, 75, 82, 90, 91, 97, 99, 101, 102, 107, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 184, 196, 199, 209, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 268, 273, 274, 276, 277], "22": [25, 31, 32, 45, 64, 69, 75, 76, 82, 91, 92, 97, 101, 102, 107, 109, 110, 113, 115, 117, 169, 170, 173, 177, 178, 184, 187, 209, 228, 241, 250, 254, 255, 256, 258, 259, 260, 262, 268, 276, 277], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 82, 91, 101, 102, 104, 107, 110, 113, 115, 117, 155, 166, 169, 173, 176, 177, 178, 179, 180, 184, 185, 186, 189, 192, 199, 209, 217, 231, 240, 250, 251, 254, 255, 256, 258, 259, 260, 266, 268, 273, 274, 276, 277], "16": [25, 31, 32, 33, 34, 45, 65, 67, 69, 73, 75, 76, 78, 82, 90, 91, 92, 101, 102, 103, 104, 107, 108, 110, 111, 113, 114, 115, 117, 135, 169, 170, 173, 177, 178, 179, 180, 184, 187, 192, 197, 201, 209, 225, 228, 231, 237, 240, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 272, 273, 276, 277], "string": [27, 49, 73, 95, 105, 107, 121, 135, 139, 147, 173, 248, 249, 250, 251, 252, 256, 259, 263, 271, 276], "multiplicative_ord": [28, 61, 94, 107, 116, 174, 214, 236, 237, 255, 271, 273, 276, 277], "notic": [29, 36, 37, 43, 57, 59, 107, 115, 129, 131, 141, 175, 182, 204, 219, 230, 238, 276, 277], "greater": [30, 78, 89, 96, 110, 111, 162, 210, 217, 231, 257, 269, 270, 271, 276], "d_": [30, 31, 32, 178], "min": [30, 31, 32, 76, 109, 178, 206, 207, 209, 225, 236, 238, 239, 240, 263, 268, 271, 274], "vector": [31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 67, 76, 90, 97, 107, 109, 114, 116, 117, 118, 119, 125, 127, 128, 141, 177, 178, 179, 256, 267, 271, 276, 277], "specifi": [31, 33, 45, 55, 61, 64, 70, 71, 73, 91, 115, 116, 117, 127, 132, 133, 139, 147, 148, 177, 179, 204, 230, 240, 241, 254, 255, 256, 259, 273, 274, 276], "entir": [31, 177, 269, 276], "too": [31, 80, 177, 244, 263], "member": [31, 33, 177, 179], "m_1": [31, 33, 138, 166, 177, 179, 194], "m_0": [31, 33, 177, 179], "divis": [31, 73, 177, 199, 217, 247, 266, 269, 271], "c_1": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "c_0": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "receiv": [31, 177], "locat": [31, 108, 177, 261, 264], "sigma": [31, 177], "It": [31, 71, 159, 195, 204, 222, 230, 233, 254, 255, 256, 257, 258, 260, 263, 264, 267, 268, 271, 276, 277], "up": [31, 115, 199, 226, 227, 235, 247, 257, 267, 271, 274], "singl": [31, 32, 33, 64, 72, 75, 89, 91, 93, 94, 139, 177, 178, 179, 254, 256, 263, 271], "recov": [31, 177, 232, 255], "19": [31, 32, 33, 45, 65, 69, 75, 76, 82, 90, 91, 92, 97, 99, 101, 102, 104, 107, 108, 110, 113, 115, 117, 155, 169, 173, 177, 178, 179, 184, 198, 199, 209, 226, 235, 240, 241, 246, 250, 252, 254, 255, 256, 258, 259, 260, 266, 268, 272, 276, 277], "three": [31, 32, 33, 177, 178, 179, 223, 225, 241, 243, 257, 276], "21": [31, 32, 45, 69, 75, 82, 90, 91, 92, 97, 101, 102, 107, 110, 113, 115, 117, 169, 171, 172, 173, 174, 177, 178, 183, 184, 209, 240, 241, 250, 253, 254, 255, 256, 258, 259, 260, 266, 268, 270, 274, 276, 277], "23": [31, 32, 45, 69, 75, 76, 82, 91, 101, 102, 107, 110, 113, 117, 155, 173, 177, 178, 199, 209, 250, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "add": [31, 108, 177, 250, 260, 271, 275, 276], "second": [31, 177, 197, 201, 232, 266, 268], "two": [31, 32, 89, 108, 110, 132, 142, 157, 177, 178, 193, 197, 201, 230, 254, 255, 257, 258, 260, 264, 269, 270, 271, 276, 277], "third": [31, 177, 264], "25": [31, 32, 45, 64, 69, 75, 76, 82, 90, 91, 92, 101, 102, 107, 108, 109, 110, 113, 115, 117, 155, 169, 170, 173, 177, 178, 184, 187, 199, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "27": [31, 32, 34, 64, 69, 75, 76, 82, 90, 91, 92, 97, 101, 102, 107, 108, 109, 110, 113, 115, 173, 177, 178, 180, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "28": [31, 32, 64, 75, 76, 82, 85, 91, 99, 101, 102, 104, 109, 110, 113, 115, 152, 155, 173, 177, 178, 199, 223, 254, 255, 256, 258, 259, 260, 268, 276, 277], "29": [31, 32, 64, 75, 82, 91, 92, 97, 99, 101, 102, 108, 110, 113, 155, 173, 177, 178, 199, 228, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "30": [31, 32, 64, 75, 76, 82, 90, 91, 92, 97, 101, 102, 103, 104, 110, 113, 115, 155, 173, 177, 178, 199, 241, 254, 255, 256, 258, 259, 260, 268, 274, 276, 277], "31": [31, 32, 62, 63, 64, 65, 68, 74, 76, 79, 80, 82, 85, 86, 87, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104, 108, 109, 113, 115, 155, 173, 177, 178, 199, 209, 218, 226, 227, 241, 254, 255, 256, 258, 259, 260, 268, 270, 272, 274, 276, 277], "32": [31, 32, 78, 91, 111, 112, 155, 173, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 269, 270, 274, 276, 277], "33": [31, 32, 91, 141, 155, 171, 172, 173, 174, 177, 178, 183, 199, 253, 254, 255, 256, 258, 259, 260, 268, 269, 276, 277], "34": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 266, 268, 271, 276, 277], "35": [31, 32, 91, 115, 177, 178, 210, 231, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "36": [31, 32, 91, 115, 155, 177, 178, 199, 253, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "37": [31, 32, 91, 115, 141, 145, 155, 177, 178, 199, 232, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "38": [31, 32, 91, 155, 157, 158, 177, 178, 193, 199, 228, 254, 256, 258, 259, 260, 266, 268, 276, 277], "39": [31, 91, 155, 177, 178, 194, 199, 254, 256, 258, 259, 260, 268, 271, 276, 277], "40": [31, 91, 155, 177, 178, 199, 253, 254, 256, 258, 259, 260, 266, 268, 271, 276, 277], "41": [31, 91, 115, 155, 177, 199, 232, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "42": [31, 91, 177, 254, 256, 258, 259, 260, 268, 276, 277], "boolean": [32, 89, 178], "were": [32, 178, 267, 271, 274], "is_primitive_poli": [34, 35, 61, 69, 88, 105, 107, 115, 116, 180, 236, 237, 255, 256, 266, 271, 274, 276, 277], "its": [36, 43, 45, 46, 47, 55, 57, 69, 76, 80, 90, 97, 106, 109, 115, 117, 118, 119, 127, 132, 133, 135, 138, 139, 155, 160, 162, 181, 188, 199, 209, 214, 217, 226, 240, 250, 252, 254, 255, 257, 258, 259, 260, 267, 270, 276, 277], "dual": [42, 187], "These": [43, 188, 204, 230, 257, 259, 262, 267, 269, 274], "specif": [43, 138, 188, 232, 255, 262, 264, 266, 268], "bigg": [44, 189, 198, 224], "reciproc": [45, 47, 50, 51, 117, 119, 122, 123, 271, 276, 277], "sequenc": [45, 50, 54, 57, 59, 117, 122, 126, 129, 131, 132, 133, 138, 191, 194, 204, 230, 233, 248, 251, 252, 253], "y_t": [45, 117, 191], "y_": [45, 117, 191], "configur": [45, 91, 117, 267], "c_n": [45, 117], "tap": [45, 46, 49, 58, 59, 117, 118, 121, 130, 131, 191], "left": [45, 61, 90, 108, 109, 116, 117], "right": [45, 108, 117, 272], "t_0": [45, 117], "t_1": [45, 117], "t_": [45, 117], "s_0": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_1": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "addition": [45, 259], "equal": [45, 98, 132, 141, 142, 154, 155, 190, 192, 199, 260, 269, 270], "next": [45, 57, 117, 129, 166, 207, 209, 239, 240, 241, 262, 266, 268], "revers": [45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 59, 117, 120, 121, 122, 123, 124, 125, 127, 128, 129, 131, 132, 165, 204, 207, 230, 239, 241, 267, 271], "refer": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 269, 271], "gardner": [45, 117, 191], "2019": [45, 117, 191], "model": [45, 117, 191], "cryptographi": [45, 117, 191], "figshar": [45, 117], "http": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 261, 262, 267, 271, 272], "hdl": [45, 117, 191], "handl": [45, 117, 191, 271], "net": [45, 117, 191], "2134": [45, 117, 191], "21932": [45, 117, 191], "feedback_poli": [45, 46, 47, 49, 50, 51, 59, 117, 118, 119, 121, 122, 123, 131, 191], "characteristic_poli": [45, 46, 49, 50, 51, 59, 61, 75, 93, 116, 117, 118, 121, 122, 123, 131, 191, 271], "initial_st": [45, 46, 49, 53, 59, 117, 118, 121, 125, 131, 191], "3x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 142, 144, 146, 147, 148, 149, 150, 151, 152, 154, 160, 163, 164, 165, 167, 170, 175, 181, 182, 187, 188, 191, 194, 197, 206, 238, 242, 245, 255, 259, 260, 271, 274], "5x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 141, 144, 146, 147, 148, 149, 150, 151, 152, 163, 164, 165, 170, 187, 191, 194, 197, 206, 222, 238, 242, 243, 245, 259, 260, 269, 270, 271], "10x": [45, 117, 170, 175, 181, 182, 187, 188], "reset": [45, 55, 117, 127, 266], "to_galois_lfsr": [45, 59], "convert": [45, 59, 61, 67, 114, 116, 117, 131, 133, 138, 143, 204, 230, 236, 237, 256, 257, 258, 259, 266, 270, 271], "same": [45, 57, 59, 115, 117, 129, 131, 132, 141, 142, 153, 155, 175, 182, 199, 204, 222, 225, 230, 238, 255, 270, 271], "finit": [45, 52, 61, 65, 69, 70, 71, 72, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 89, 91, 93, 94, 95, 103, 104, 107, 110, 113, 115, 116, 117, 124, 132, 141, 142, 144, 146, 147, 152, 156, 157, 158, 159, 193, 204, 230, 240, 241, 248, 250, 254, 256, 257, 258, 259, 260, 266, 267, 269, 270, 271, 273, 274, 276, 277], "relat": [45, 58, 117, 130, 255], "state": [46, 47, 49, 53, 55, 56, 57, 59, 118, 119, 121, 125, 127, 128, 129, 131, 191, 271], "becaus": [47, 80, 115, 119, 210, 231, 232, 233, 256, 257, 258, 269, 270, 276, 277], "unaffect": [53, 125], "view": [55, 127, 204, 230, 263, 266, 269, 270, 271, 276, 277], "direct": [57, 129, 209, 240], "backward": [57, 129, 275], "ab": [57, 129, 276], "end": [57, 129, 224], "more": [57, 129, 132, 148, 254, 258, 259, 260, 266, 271, 276, 277], "origin": [57, 129], "given": [59, 76, 90, 97, 109, 131, 137, 157, 193, 215, 232, 237, 240, 241, 255, 257, 259, 274, 276, 277], "fibonacci_lfsr": [59, 131], "differ": [59, 91, 107, 131, 142, 144, 175, 182, 204, 209, 230, 240, 250, 254, 255, 260, 264, 270, 276, 277], "galois_lfsr": [59, 131], "see": [59, 81, 103, 104, 115, 131, 132, 153, 154, 155, 199, 252, 254, 258, 259, 260, 266, 271, 276, 277], "verifi": [60, 115, 244, 255, 271, 274], "factori": [61, 115, 116, 255, 258, 266, 271, 276, 277], "issubclass": [61, 116, 255, 266, 271], "243": [61, 69, 115, 205, 254, 255, 256, 266, 268, 271], "instanc": [61, 116, 204, 230, 254, 256, 257, 259, 263, 267, 271], "44": [61, 115, 155, 177, 199, 254, 255, 256, 258, 259, 260, 268, 270, 271, 276, 277], "236": [61, 91, 254, 266, 271], "206": [61, 91, 254, 268, 271], "138": [61, 91, 254, 256, 268], "isinst": [61, 116, 255, 266, 271], "\u03b1": [61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 276, 277], "2\u03b1": [61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 91, 93, 94, 101, 102, 106, 113, 114, 237, 248, 250, 251, 254, 255, 256, 258, 266, 271, 273, 276], "143": [61, 254, 259, 268], "204": [61, 75, 91, 254, 266], "55": [61, 115, 141, 253, 254, 255, 256, 259, 260, 268, 271, 274, 276, 277], "113": [61, 91, 247, 254], "vandermond": [61, 66, 116], "row": [61, 66, 76, 90, 97, 107, 108, 109, 116], "prime": [61, 65, 67, 74, 75, 79, 82, 83, 84, 86, 87, 93, 100, 101, 102, 113, 114, 115, 116, 159, 192, 193, 196, 198, 199, 200, 204, 206, 207, 209, 210, 211, 212, 213, 216, 217, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, 244, 247, 258, 267, 269, 271, 274, 276], "subfield": [61, 67, 83, 84, 100, 114, 116, 193, 258], "non_squar": [61, 89, 96, 116, 254, 271], "primitive_roots_of_un": [61, 104, 116, 271], "without": [61, 71, 116, 132, 147, 250, 259, 266, 267], "arithmetic_t": [61, 73, 116, 271, 276, 277], "repr_tabl": [61, 107, 116, 258, 271, 276, 277], "compar": [61, 107, 116, 142, 258, 269, 270, 271], "additive_ord": [61, 72, 116, 271], "addit": [61, 72, 73, 116, 152, 200, 206, 207, 228, 238, 239, 257, 259, 266, 271, 274], "field_norm": [61, 83, 116, 271], "norm": [61, 83, 116, 271], "_": [61, 83, 84, 116, 241, 257, 276, 277], "field_trac": [61, 84, 116, 271], "trace": [61, 75, 84, 116, 271], "tr": [61, 75, 84, 116], "beta": [61, 91, 116, 254, 271, 272], "minimal_poli": [61, 93, 116, 271], "ord": [61, 94, 107, 116, 276, 277], "column_spac": [61, 76, 97, 116, 271], "column": [61, 66, 76, 97, 99, 108, 116, 268], "space": [61, 76, 90, 97, 109, 116, 139, 250, 258, 271], "left_null_spac": [61, 90, 109, 116, 271], "null": [61, 76, 90, 97, 109, 116], "lu_decompos": [61, 92, 116, 271], "decompos": [61, 92, 99, 116], "input": [61, 72, 75, 89, 92, 93, 94, 99, 108, 116, 204, 230, 254, 257, 258, 270, 271, 274], "lower": [61, 92, 99, 116, 159, 228], "upper": [61, 92, 99, 116], "triangular": [61, 92, 99, 116], "matric": [61, 92, 99, 116, 141, 254, 260, 269, 270], "null_spac": [61, 76, 97, 116, 271], "plu_decompos": [61, 99, 116, 271, 274], "partial": [61, 99, 116], "pivot": [61, 99, 116], "row_reduc": [61, 108, 116, 254, 272], "ncol": [61, 108, 116], "perform": [61, 108, 116, 141, 204, 230, 232, 254, 257, 259, 260, 267, 268, 271, 276, 277], "gaussian": [61, 108, 116], "elimin": [61, 108, 116, 255, 257, 274], "achiev": [61, 108, 116, 171, 204, 230, 271], "reduc": [61, 108, 116, 159, 200, 228, 255, 257, 260, 269, 270, 271, 276, 277], "echelon": [61, 108, 116], "form": [61, 108, 116, 209, 240, 246, 276, 277], "rref": [61, 108, 116], "row_spac": [61, 90, 109, 116, 271], "prime_subfield": [61, 100, 116], "is_extension_field": [61, 86, 116, 271], "is_prime_field": [61, 87, 116, 271], "is_squar": [61, 89, 96, 110, 116, 254, 271], "repeat": [64, 137, 141, 152, 254, 260], "123456789": [64, 137, 271], "global": [64, 137, 263, 271], "rng": [64, 137, 271], "default_rng": [64, 137, 271], "simpli": [65, 75, 93, 256, 258, 270], "sinc": [65, 83, 84, 89, 107, 159, 200, 209, 213, 228, 238, 239, 240, 247, 260, 261, 266, 271, 276, 277], "col": 66, "v": [66, 117, 240, 241, 261], "last": [67, 103, 104, 114, 206, 207, 209, 232, 238, 239, 240, 261], "n1": [67, 114], "n2": [67, 114], "By": [67, 114, 148, 242, 245, 255, 259], "convent": [67, 114, 250, 255, 259, 271], "method": [67, 76, 90, 91, 97, 107, 109, 114, 115, 206, 209, 236, 237, 238, 240, 256, 257, 258, 271, 273, 274], "copi": [69, 74, 254, 256, 266, 271], "ndmin": 69, "keyword": [69, 230, 256, 257, 258, 259, 266, 271, 272, 273, 274], "222": [69, 91, 248, 250, 251, 254, 256, 258, 268], "148": [69, 91, 248, 251, 254, 256, 269], "205": [69, 91, 248, 251, 254, 256], "69": [69, 91, 228, 248, 251, 254, 256, 258, 259, 260, 268, 271, 276], "54": [69, 91, 248, 251, 254, 256, 260, 268, 271, 276, 277], "prepend": [70, 71], "doe": [71, 96, 115, 219, 256, 257, 269, 271], "omit": [71, 139], "comma": [71, 272], "separ": [71, 271, 272, 274], "With": [72, 91, 204, 212, 230, 257, 258, 271, 274], "except": [72, 80, 158, 192, 209, 225, 232, 240, 267], "subtract": [73, 257, 266], "ad": [74, 148, 254, 258, 260, 263, 271, 272, 273, 274], "alwai": [74, 93, 152, 159, 238, 260, 271, 276, 277], "result": [74, 94, 137, 141, 152, 212, 225, 254, 257, 260, 269, 271, 276, 277], "c_a": 75, "rais": [75, 80, 93, 94, 103, 104, 148, 153, 154, 155, 157, 158, 167, 193, 206, 209, 232, 233, 238, 240, 271], "valueerror": [75, 93, 103, 104, 148, 153, 154, 155, 167, 271], "annihil": [75, 90, 93, 97], "det": 75, "coeffici": [75, 133, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 156, 160, 163, 164, 165, 245, 252, 258, 271, 276], "en": [75, 83, 84, 93, 152, 159, 222, 244, 271], "wikipedia": [75, 83, 84, 93, 152, 159, 222, 244], "org": [75, 83, 84, 93, 152, 159, 192, 198, 204, 222, 226, 227, 230, 235, 240, 241, 244, 246], "wiki": [75, 83, 84, 93, 152, 159, 222, 244], "characteristic_polynomi": 75, "164": [75, 91, 254, 268], "90": [75, 91, 228, 254, 256, 268, 271, 276], "116": [75, 91, 253, 254], "169": [75, 91, 254], "65": [75, 91, 171, 172, 173, 174, 183, 254, 256, 260, 268, 270, 271, 276, 277], "227": [75, 91, 166, 254], "98": [75, 91, 254, 256, 268], "200": [75, 91, 152, 254, 258, 268, 271], "184": [75, 91, 254, 268], "120": [75, 91, 199, 254, 263], "110x": 75, "189x": [75, 173], "225": [75, 91, 138, 254, 259, 271], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "147": [75, 91, 254, 268], "56": [75, 91, 115, 253, 254, 255, 256, 260, 268, 271, 276, 277], "150": [75, 91, 210, 231, 254, 268, 271], "128": [75, 91, 254, 268], "127": [75, 91, 226, 227, 254, 266, 271], "73": [75, 91, 133, 254, 256, 260, 268, 276], "130": [75, 91, 254], "140": [75, 91, 254], "basi": [76, 90, 97, 109], "span": [76, 90, 97, 109, 209, 240, 241], "combin": [76, 109, 139, 190, 250], "most": [76, 103, 104, 109, 192, 209, 232, 240, 256, 258, 264, 266, 276], "mathcal": [76, 90, 97, 109], "dim": [76, 90, 97, 109], "speed": [78, 111, 257, 267, 271, 274], "65537": [78, 111, 112, 274], "memori": [78, 111, 256, 257, 267], "save": [78, 111, 267, 268], "still": [78, 111, 142], "fit": [78, 111, 112], "within": [78, 111, 112], "2147483647": [78, 111, 227], "36893488147419103183": [78, 80, 111, 112, 115], "100": [78, 80, 91, 111, 112, 115, 210, 231, 232, 247, 249, 253, 254, 255, 256, 257, 263, 266, 268, 269, 270, 271, 272, 274], "unsupport": 80, "typeerror": [80, 104, 271], "small": [80, 233, 256, 270, 271, 274, 276, 277], "accept": [80, 139, 250, 271], "uint64": 80, "done": [80, 261], "uint8": [80, 256], "uint16": [80, 249, 256], "uint32": [80, 256], "int8": [80, 256], "int16": [80, 256], "int32": [80, 249, 256], "some": [80, 153, 159, 167, 200, 204, 209, 213, 224, 228, 230, 256, 257, 259, 263, 267, 270, 271, 276, 277], "certain": [80, 254, 256, 259, 271, 274], "unlimit": [80, 256, 257], "chang": [81, 257, 258, 259, 262, 275], "further": [81, 115], "discuss": [81, 115, 256, 266, 276], "increas": [82, 102, 113, 166, 250, 258, 264, 271, 274], "lexicograph": [82, 102, 104, 107, 113, 154, 155, 157, 158, 193, 199, 206, 207, 225, 238, 239, 274], "3\u03b1": [82, 101, 102, 113, 254], "4\u03b1": [82, 101, 102, 113, 254], "word": [83, 84], "rightarrow": [83, 84], "conjug": [83, 84], "prod_": [83, 153, 162, 167, 198, 217, 222], "sum_": [84, 138, 157, 166, 193, 195, 204, 222, 230, 271], "256": [88, 98, 115, 254, 274], "ae": [88, 115, 161], "exist": [89, 96, 103, 104, 110, 115, 157, 159, 193, 204, 206, 209, 225, 230, 238, 240, 254, 266, 271, 276, 277], "exactli": [89, 96, 110, 276], "half": [89, 96, 110], "nonzero": [89, 96, 110], "uniqu": [89, 104, 110, 166, 209, 240, 254, 255], "cacr": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "uwaterloo": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "ca": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "hac": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "about": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246, 263, 264, 269], "chap3": [89, 232, 233], "pdf": [89, 153, 154, 155, 159, 161, 167, 191, 194, 197, 198, 199, 200, 201, 219, 220, 224, 228, 232, 233, 240, 241, 246], "so": [89, 115, 171, 199, 204, 212, 230, 255, 260, 271, 274, 276, 277], "ln": [90, 97, 109], "invok": [91, 257, 260, 263, 264, 266, 268, 269, 270, 271], "obei": 91, "broadcast": [91, 254, 266, 272], "rule": [91, 139, 266], "57": [91, 115, 254, 255, 256, 260, 268, 271, 274, 276, 277], "223": [91, 132, 171, 172, 173, 174, 183, 254], "91": [91, 195, 228, 254, 256, 268, 276], "173": [91, 254, 266], "101": [91, 254, 256], "161": [91, 254, 268, 272], "238": [91, 254], "149": [91, 219, 220, 224, 254, 268], "196": [91, 253, 254], "134": [91, 254, 268, 271], "213": [91, 254, 256, 268], "85": [91, 171, 172, 173, 174, 183, 253, 254, 256, 268, 272, 276], "203": [91, 254], "186": [91, 254, 268], "166": [91, 254, 268, 271], "226": [91, 254, 268, 271], "211": [91, 254], "43": [91, 115, 137, 177, 253, 254, 255, 256, 258, 259, 260, 268, 276, 277], "112": [91, 243, 254, 266], "162": [91, 254, 271], "185": [91, 133, 141, 254, 255, 256, 272], "192": [91, 141, 254, 266, 268], "232": [91, 254, 268, 271], "212": [91, 254, 268], "219": [91, 254, 268], "anoth": [91, 108, 260, 277], "242": [91, 254, 255, 256, 271], "170": [91, 93, 253, 254], "237": [91, 254, 271], "131": [91, 254, 268, 271], "167": [91, 254, 256, 268], "49": [91, 254, 255, 256, 260, 268, 272, 276, 277], "61": [91, 226, 254, 256, 260, 271, 276, 277], "109": [91, 242, 245, 254, 256, 266, 271], "111": [91, 254, 256], "89": [91, 226, 254, 256, 268, 276], "51": [91, 254, 256, 259, 260, 266, 268, 272, 274, 276, 277], "115": [91, 254, 268, 271], "117": [91, 135, 139, 254, 259], "233": [91, 254, 268], "217": [91, 253, 254, 271], "67": [91, 254, 256, 260, 266, 268, 271, 272, 276], "125": [91, 254], "191": [91, 254, 268, 271], "157": [91, 254], "175": [91, 254], "79": [91, 228, 254, 256, 268, 274, 276], "47": [91, 115, 254, 255, 256, 260, 266, 268, 274, 276, 277], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 276, 277], "119": [91, 137, 138, 253, 254], "235": [91, 254, 268, 271], "193": [91, 254, 255, 256, 268, 271, 272], "177": [91, 254, 268], "107": [91, 197, 226, 254, 256], "163": [91, 141, 254, 255, 271], "83": [91, 242, 245, 254, 256, 268, 271, 276], "241": [91, 254, 255, 266, 268, 271], "95": [91, 254, 256, 266, 268, 271], "155": [91, 254], "151": [91, 254, 272], "135": [91, 253, 254, 266], "199": [91, 254, 268], "75": [91, 228, 254, 256, 258, 268, 276], "201": [91, 141, 145, 254, 271], "189": [91, 254], "139": [91, 254], "145": [91, 254, 268], "71": [91, 254, 256, 260, 268, 271, 276], "159": [91, 254, 271], "179": [91, 254, 255, 259, 266, 268], "59": [91, 173, 254, 256, 260, 268, 271, 276, 277], "197": [91, 240, 241, 254, 268], "181": [91, 197, 254, 269, 271], "87": [91, 254, 256, 266, 268, 274, 276], "195": [91, 254, 256, 271], "137": [91, 152, 254, 259, 268, 271], "53": [91, 228, 254, 256, 260, 268, 271, 276, 277], "239": [91, 254], "123": [91, 141, 145, 254, 256, 271], "97": [91, 254, 256, 268], "207": [91, 93, 254, 268, 271], "129": [91, 254, 268, 271], "81": [91, 228, 237, 254, 255, 256, 268, 272, 274, 276], "93": [91, 254, 256, 271, 276], "221": [91, 197, 254, 271], "103": [91, 141, 254, 256], "153": [91, 166, 254, 256, 268, 269], "229": [91, 254, 268], "105": [91, 253, 254, 256], "171": [91, 254, 271, 272], "183": [91, 254, 256], "63": [91, 254, 256, 260, 268, 276, 277], "215": [91, 254, 268, 271], "141": [91, 254, 268], "133": [91, 254], "86": [91, 253, 254, 256, 268, 276], "124": [91, 132, 254, 255, 256], "114": [91, 254, 255, 256, 271], "96": [91, 141, 254, 256, 268, 271, 274], "216": [91, 254, 255, 256, 268], "62": [91, 228, 254, 256, 260, 268, 270, 276, 277], "60": [91, 216, 254, 255, 256, 260, 268, 272, 276, 277], "178": [91, 254, 268, 271], "190": [91, 254, 272], "122": [91, 254, 268], "146": [91, 141, 254, 266, 268], "224": [91, 254, 266], "158": [91, 254], "72": [91, 254, 256, 260, 268, 271, 276], "172": [91, 254, 271], "182": [91, 254, 268], "142": [91, 254], "92": [91, 254, 256, 268, 269, 271, 276], "76": [91, 254, 256, 268, 271, 276], "94": [91, 254, 256, 268, 276], "194": [91, 254], "136": [91, 254, 271], "240": [91, 254, 271], "70": [91, 254, 256, 260, 271, 273, 276], "126": [91, 253, 254], "78": [91, 254, 255, 256, 268, 270, 276], "230": [91, 254, 255, 266], "106": [91, 254, 256], "160": [91, 253, 254], "74": [91, 228, 254, 256, 260, 271, 276], "46": [91, 115, 155, 199, 254, 255, 256, 260, 268, 273, 276, 277], "208": [91, 254], "168": [91, 254, 268, 271], "218": [91, 141, 201, 254, 268, 271], "80": [91, 214, 254, 256, 268, 271, 276], "104": [91, 201, 253, 254, 256], "82": [91, 228, 254, 256, 266, 268, 271, 276], "156": [91, 141, 254, 268], "202": [91, 254, 256, 268], "174": [91, 254, 268], "144": [91, 254], "68": [91, 254, 256, 260, 268, 274, 276], "214": [91, 133, 254, 256, 271], "64": [91, 210, 231, 254, 256, 260, 268, 269, 276, 277], "58": [91, 156, 240, 241, 254, 256, 259, 260, 268, 271, 276, 277], "48": [91, 115, 240, 241, 254, 255, 256, 260, 268, 270, 271, 276, 277], "84": [91, 141, 254, 256, 268, 276], "210": [91, 254, 271], "102": [91, 253, 254, 256, 268, 269, 271], "228": [91, 254, 268], "234": [91, 254], "118": [91, 254], "50": [91, 254, 256, 260, 268, 271, 272, 276, 277], "180": [91, 253, 254], "152": [91, 254, 268], "188": [91, 254], "108": [91, 254, 256, 266, 271], "52": [91, 115, 254, 255, 256, 259, 260, 268, 271, 276, 277], "lu": 92, "decomposit": [92, 99], "u": [92, 99, 267, 268], "Not": 92, "m_a": 93, "notimplementederror": 93, "divid": [93, 103, 104, 157, 158, 193, 204, 230, 260, 272], "minimal_polynomial_": 93, "field_theori": 93, "linear_algebra": 93, "divmod": [93, 271], "arithmeticerror": 94, "There": [94, 103, 104, 213, 225, 241, 257, 259, 275, 276, 277], "ever": 94, "said": [94, 144, 159, 200, 215, 240, 241], "confus": 94, "former": 94, "latter": 94, "16807": [98, 105, 236], "permut": 99, "plu": 99, "itself": [100, 271, 276], "happen": [103, 104, 233], "omega_n": [103, 104, 204, 230], "ne": [103, 104, 107, 192, 222], "lt": [103, 104], "Then": [103, 104, 166], "do": [103, 104, 277], "traceback": [103, 104, 209, 232, 240], "recent": [103, 104, 209, 232, 240, 271], "cell": [103, 104, 209, 232, 240], "line": [103, 104, 209, 232, 240, 244, 258], "file": [103, 104, 209, 232, 240, 263, 264, 268, 274], "opt": [103, 104, 209, 232, 240], "hostedtoolcach": [103, 104, 209, 232, 240], "x64": [103, 104, 209, 232, 240], "lib": [103, 104, 209, 232, 240], "python3": [103, 104, 209, 232, 240, 261, 262, 263, 264, 266, 268], "site": [103, 104, 209, 232, 240, 261], "py": [103, 104, 209, 232, 240, 263, 264, 268, 274], "890": 103, "cl": [103, 104], "888": [103, 268], "889": 103, "892": 103, "omega_5": [103, 104], "arang": [103, 104, 256], "sort": [104, 107, 155, 196, 199, 268], "952": 104, "950": [104, 271], "951": 104, "954": 104, "955": 104, "outer": 104, "outsid": [106, 258], "revert": [106, 271], "previou": [106, 166, 258, 271], "ascend": [107, 146, 147, 148, 245, 250, 258], "ey": [108, 271, 272], "elementari": 108, "swap": 108, "multipli": [108, 152, 199, 260], "get": [108, 259, 261, 271], "matrix_rank": 108, "side": [108, 267, 272], "Or": [108, 141, 207, 239, 250, 255, 259, 260, 262, 264, 268], "y1": 110, "y2": 110, "constructor": [114, 256, 266, 267, 271], "vec": 114, "build": [115, 263], "exponenti": [115, 141, 256, 257, 271], "user": [115, 254, 266, 267, 268, 271, 274], "fact": [115, 116, 228], "alreadi": [115, 255, 257, 276, 277], "never": [115, 200, 206, 207, 228, 238, 239, 241, 274, 276], "respect": [115, 276], "after": [115, 153, 154, 207, 239, 241, 254, 257, 260, 276], "newli": 115, "singleton": [115, 171], "arbitrarili": [115, 267, 271], "36893488147419103180": 115, "1267650600228229401496703205376": [115, 255], "sped": 115, "explicitli": [115, 133, 138, 143, 204, 230, 255, 256, 257, 259, 268, 269, 276], "avoid": [115, 267, 271], "need": [115, 207, 239, 241, 255, 257, 263, 264, 267, 271, 274], "factor": [115, 153, 154, 155, 162, 166, 167, 195, 196, 198, 199, 210, 211, 216, 217, 228, 231, 232, 233, 247, 255, 267, 271, 274, 276], "109987": [115, 255, 271], "146340800268433348561": [115, 255], "100525x": [115, 255], "pre": [116, 273], "includ": [116, 139, 157, 158, 193, 218, 235, 250, 254, 259, 262, 263, 264, 269, 271, 276, 277], "api": [116, 271, 273, 275], "conveni": [116, 142, 230, 256, 259, 266], "c_2": 117, "to_fibonacci_lfsr": [117, 131], "124x": [132, 271], "223x": 132, "One": [132, 136, 259], "__call__": [132, 141, 260, 271], "x_0": [132, 141, 233], "composit": [132, 141, 155, 162, 192, 199, 200, 208, 212, 216, 217, 228, 231, 232, 233, 247, 271], "__eq__": [132, 142], "__int__": [132, 135, 144, 259, 271], "__len__": [132, 145], "deriv": [132, 152, 259], "formal": [132, 152, 276], "dx": [132, 152], "_domain": [132, 166], "distinct_degree_factor": [132, 153, 154, 155, 199, 271], "equal_degree_factor": [132, 154, 155, 199, 271], "rd": [132, 154], "square_free_factor": [132, 153, 155, 167, 199, 271], "descend": [132, 148, 149, 151, 163, 164, 242, 245, 252, 259], "nonzero_coeff": [132, 163, 164, 259], "nonzero_degre": [132, 163, 164, 259], "highest": [132, 143, 150, 160, 258], "is_conwai": [132, 157, 158, 193, 274], "search": [132, 157, 158, 166, 193, 206, 207, 232, 236, 238, 239, 240, 241, 247, 271, 274], "is_conway_consist": [132, 157, 158, 193, 274], "smaller": [132, 157, 158, 193, 238, 272], "is_irreduc": [132, 153, 154, 159, 161, 167, 206, 207, 271, 274, 276], "is_mon": [132, 160, 271], "won": [133, 138, 143], "assum": [133, 138, 143], "214x": 133, "73x": 133, "186535908": 135, "13x": [135, 139, 173, 259], "0b1011": [135, 259, 271], "bin": [135, 259, 271], "octal": [135, 259], "0o5034": [135, 259], "oct": [135, 259, 271], "hexadecim": [135, 259], "0xf700a275": [135, 259], "247x": [135, 259], "162x": [135, 259], "hex": [135, 259, 271], "_gener": 137, "56x": [137, 152], "228x": 137, "157x": 137, "218x": 137, "148x": 137, "194x": 137, "195x": 137, "200x": 137, "141x": [137, 166], "164x": [137, 173, 259], "desir": [138, 206, 207, 225, 238, 239, 255, 256, 274], "r_1": [138, 166], "r_2": [138, 166], "r_k": [138, 166], "m_2": [138, 166, 194], "m_k": [138, 166], "a_d": [138, 143, 144, 152, 165], "a_": [138, 143, 144, 152, 165, 166, 276], "a_1": [138, 143, 144, 152, 165, 166, 194], "a_0": [138, 143, 144, 152, 165, 166, 276], "m_i": [138, 159, 166, 194], "121": [138, 254, 259, 271], "198": [138, 254], "215x": 138, "90x": 138, "183x": [138, 271], "pars": 139, "indetermin": [139, 141, 250, 260], "requir": [139, 191, 233, 261, 268, 270, 271, 276], "charact": [139, 258], "13y": 139, "term": [139, 148, 206, 207, 225, 238, 239, 270, 271, 274], "abov": [139, 209, 240, 250], "wise": [141, 266, 276], "37x": [141, 145, 271], "123x": [141, 145, 271], "x0": 141, "matrix_pow": [141, 260], "55x": [141, 152, 259, 271], "77x": [141, 271], "104x": [141, 173, 271], "against": [142, 268], "distinct": [142, 153, 154, 155, 199], "comparison": [142, 211, 263, 269, 271], "allow": [142, 230, 232, 253, 254, 257, 258, 262, 264, 271, 276, 277], "interpret": [143, 271], "lowest": 143, "consid": [144, 276, 277], "digit": [144, 258], "radix": [144, 204, 230, 258, 271], "decim": 144, "1066": 144, "len": [145, 194, 198, 204, 209, 228, 230, 237, 240, 246, 271], "fix": [148, 249, 256, 271, 272, 274, 275], "higher": 148, "accessor": 148, "similar": [148, 256, 257, 263, 269, 271], "entri": [149, 151, 163, 164, 222], "pair": [149, 151, 163, 164, 222, 254], "etc": [152, 250], "cdot": [152, 206, 207, 238, 239, 257, 277], "brought": 152, "down": 152, "formal_deriv": 152, "6x": [152, 157, 158, 159, 193, 194, 206, 222, 236, 238, 243, 260, 270, 271], "4x": [152, 154, 159, 160, 165, 167, 194, 197, 206, 238, 243, 259, 260], "103x": [152, 156], "61x": 152, "29x": [152, 173], "68x": [152, 271], "210x": [152, 173], "137x": [152, 173], "28x": 152, "f_i": 153, "algorithm": [153, 154, 155, 157, 158, 159, 161, 167, 191, 193, 197, 199, 201, 204, 212, 219, 220, 224, 230, 232, 233, 240, 247, 267, 271, 274, 276, 277], "suppos": [153, 167], "f_1": [153, 197, 201, 223], "f_2": [153, 197, 201, 223], "f_3": [153, 197, 201, 223], "those": [153, 167, 256, 271, 274], "often": [153, 154, 192, 213, 228, 232, 276], "appli": [153, 154, 155, 199, 249, 254, 266, 271, 274], "complet": [153, 154, 167, 267, 271, 276, 277], "implement": [153, 154, 159, 166, 167, 191, 192, 194, 195, 197, 198, 201, 204, 230, 235, 267, 269, 270, 271, 276, 277], "hachenberg": [153, 155, 167, 199], "jungnickel": [153, 155, 167, 199], "topic": [153, 155, 167, 199], "peopl": [153, 154, 155, 167, 199, 277], "csail": [153, 154, 155, 167, 199], "mit": [153, 154, 155, 167, 199], "edu": [153, 154, 155, 159, 167, 191, 199, 228], "dmoshkov": [153, 154, 155, 167, 199], "cours": [153, 154, 155, 167, 199, 240, 241], "g_1": [154, 155, 199], "g_r": 154, "cantor": 154, "zassenhau": 154, "probabilist": [154, 159], "www": [154, 157, 158, 159, 191, 193, 204, 230, 240, 241], "csa": 154, "iisc": 154, "ac": 154, "chandan": 154, "cnt": 154, "lec8": 154, "g_2": [155, 199], "g_k": [155, 199], "e_1": [155, 198, 199, 211, 216, 232, 247], "e_2": [155, 199], "e_k": [155, 198, 199, 211, 216, 232, 247], "g1": [155, 199], "g2": [155, 199], "g3": [155, 199], "e1": [155, 199], "e2": [155, 199], "e3": [155, 199], "72x": 156, "234x": 156, "113x": 156, "174x": 156, "computation": [157, 158, 159, 161, 162, 193, 271], "expens": [157, 158, 159, 161, 162, 193, 255, 271, 274], "task": [157, 158, 159, 161, 162], "manual": [157, 158, 193, 207, 239, 263, 264, 274], "frank": [157, 158, 193, 267, 274], "luebeck": [157, 158, 193, 267, 274], "databas": [157, 158, 193, 199, 206, 274], "veri": [157, 158, 193, 206, 212, 240, 255, 270, 274], "lookuperror": [157, 158, 193], "found": [157, 158, 193, 199, 204, 207, 209, 230, 232, 233, 239, 241, 274], "accord": [157, 158, 193], "special": [157, 158, 193, 204, 230], "follow": [157, 166, 193, 209, 240, 267, 269, 276, 277], "g_i": [157, 162, 193, 217], "h_i": [157, 193], "g_j": [157, 193], "h_j": [157, 167, 193], "j": [157, 166, 167, 191, 193, 204, 222, 228, 230], "math": [157, 158, 159, 193, 218, 228, 261], "rwth": [157, 158, 193], "aachen": [157, 158, 193], "de": [157, 158, 193], "conwaypol": [157, 158, 193], "cp7": [157, 158, 193], "html": [157, 158, 193, 240, 241, 261, 271], "lenwood": [157, 158, 193], "heath": [157, 158, 193], "nichola": [157, 158, 193], "loehr": [157, 158, 193], "journal": [157, 158, 159, 193, 240, 241], "volum": [157, 158, 193], "issu": [157, 158, 193, 225, 271], "2004": [157, 158, 193], "page": [157, 158, 193, 204, 230, 256, 261, 269, 270, 271, 272], "1003": [157, 158, 193], "1024": [157, 158, 193, 205, 218, 244, 271], "sciencedirect": [157, 158, 193], "com": [157, 158, 191, 193, 262, 267], "scienc": [157, 158, 193], "articl": [157, 158, 193], "pii": [157, 158, 193], "s0747717104000331": [157, 158, 193], "among": [157, 158, 193], "candid": [157, 158, 193], "accordingli": [157, 158, 193, 277], "necessarili": [158, 211], "strictli": [159, 271], "algebra": [159, 267, 271], "close": [159, 276, 277], "test": [159, 199, 200, 209, 212, 217, 225, 228, 240, 244, 256, 262, 267, 268, 269, 270, 271, 274], "sai": [159, 200], "siam": 159, "1980": 159, "273": [159, 254, 256], "280": [159, 254, 268], "app": 159, "dtic": 159, "mil": 159, "sti": 159, "ada078416": 159, "gao": 159, "panarino": 159, "clemson": 159, "sgao": 159, "paper": 159, "gp97a": 159, "chap4": [159, 161, 200, 228], "factorization_of_polynomials_over_finite_field": 159, "necessari": [159, 248, 250, 252, 261, 269, 270, 271, 276], "suffici": 159, "condit": [159, 206, 207, 239, 241], "being": [159, 209, 212, 214, 271], "9x": [159, 169, 175, 181, 182, 184, 188, 269], "11x": [159, 169, 170, 184, 187], "15x": [159, 170, 173, 175, 181, 182, 187, 188], "77": [161, 254, 256, 268, 271, 272, 276], "therefor": [162, 217, 256, 258, 276], "canon": [162, 217, 271], "f1": [162, 190, 197, 201, 217, 223, 243], "f2": [162, 190, 197, 201, 217, 223, 243], "rev": 165, "_d": 165, "chien": 166, "a_1x": [166, 276], "r_i": 166, "a_j": 166, "remain": 166, "equat": 166, "overset": 166, "delta": 166, "lambda_": [166, 192], "easili": [166, 255, 258, 259, 260, 261, 263, 264, 266, 268, 269, 276, 277], "118x": 166, "172x": 166, "50x": [166, 173], "204x": 166, "202x": 166, "153x": 166, "107x": [166, 173], "187x": 166, "66x": 166, "221x": 166, "114x": [166, 271], "121x": 166, "226x": 166, "reed": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "solomon": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "8x": [169, 175, 181, 182, 184, 188, 222, 270], "7x": [170, 175, 181, 182, 187, 188], "18x": [170, 173, 187], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "22x": [170, 187], "25x": [170, 187, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "232x": 173, "142x": 173, "246x": 173, "43x": 173, "82x": 173, "238x": 173, "158x": 173, "119x": 173, "224x": 173, "134x": 173, "227x": 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, "26x": 173, "203x": [173, 271], "23x": 173, "208x": 173, "130x": 173, "53x": 173, "188x": 173, "94x": 173, "146x": 173, "182x": 173, "12x": [175, 181, 182, 188], "f3": [190, 197, 201, 223, 243], "berlekamp": [191, 271], "massei": [191, 271], "depend": [191, 206, 261, 263, 264, 267, 271], "2n": 191, "sach": 191, "uniniti": 191, "part": 191, "vi": 191, "sing": 191, "embeddedrel": 191, "showarticl": 191, "1099": 191, "php": 191, "crypto": 191, "stanford": 191, "mironov": 191, "cs359": 191, "below": [191, 209, 225, 240, 254, 257, 258, 259, 260, 269, 270], "reproduc": [191, 264, 271], "carmichael": [192, 209, 240, 271], "lambda": [192, 209, 240], "oei": [192, 198, 226, 227, 235, 246], "a002322": 192, "euler": [192, 198, 209, 237, 240], "phi": [192, 198, 209, 215, 237, 240, 241, 246], "notabl": [192, 225, 256], "And": [192, 200, 225], "pow": [192, 209, 219, 224, 240, 241, 271], "standard": [193, 218, 266, 267, 268, 271, 273], "split": 193, "henc": 193, "wai": [193, 254, 256, 259, 262, 270, 276, 277], "congruenc": [194, 200], "a_i": 194, "solut": 194, "chines": 194, "theorem": [194, 200, 271, 277], "a_2": 194, "ldot": 194, "a_n": 194, "m_n": 194, "chap14": 194, "show": [194, 222, 237, 241], "satisfi": [194, 200, 204, 219, 222, 224, 230, 232], "ai": 194, "x_truth": 194, "m3": 194, "m4": 194, "m5": 194, "sigma_1": 195, "sigma_k": 195, "mid": 195, "euclidean": [197, 201, 276, 277], "chap2": [197, 198, 201, 219, 220, 224, 246], "moon": 197, "domain": 197, "totient": [198, 209, 237, 240], "big": 198, "1big": 198, "p_1": [198, 199, 211, 216, 232, 247], "p_k": [198, 199, 211, 216, 232, 247], "a000010": [198, 246], "p_2": 199, "cunningham": [199, 267, 274], "book": [199, 267, 274], "pm": [199, 267, 274], "trial": [199, 247], "residu": [199, 219, 224, 247, 271], "pollard": [199, 232, 233, 271, 274], "rho": [199, 233, 271, 274], "continu": [199, 276], "until": [199, 271], "avail": [199, 217, 242, 257, 271], "round": [200, 212, 228], "primal": [200, 212, 228, 244, 267], "odd": [200, 209, 210, 219, 224, 228, 231, 232, 233], "choos": [200, 228, 257, 266], "shown": [200, 228, 277], "probabl": [200, 212, 228], "hold": 200, "wit": [200, 228], "liar": [200, 228], "possibl": [200, 206, 207, 228, 238, 239, 267, 269, 270, 271], "mark": [200, 228, 271], "257": [200, 228, 254, 268, 274], "24841": [200, 228], "65497": [200, 228], "here": [200, 232, 255, 256, 257, 260, 267, 269, 273, 276, 277], "pseudoprim": [200, 212, 228], "a001567": 200, "2047": 200, "29341": 200, "65281": 200, "But": 200, "a005935": 200, "2465": 200, "7381": 200, "16531": 200, "dictionari": 202, "1000": [203, 205, 218, 221, 259], "625": [203, 271], "3125": 203, "modulu": [204, 230], "scale": [204, 206, 238], "transform": [204, 230, 254, 267, 271], "pad": [204, 230], "max": [204, 206, 209, 226, 227, 230, 236, 237, 238, 240, 247, 257, 263, 268, 271], "mn": [204, 230], "criteria": [204, 230], "nx": 204, "normal": [204, 230, 254, 257, 266, 267], "tolist": [204, 230], "fourier": [204, 230, 254], "dft": [204, 230, 254, 271], "pi": [204, 230], "neq": [204, 230], "omega_": [204, 230], "point": [204, 230, 269], "x_j": [204, 222, 230], "x_k": [204, 230], "kj": 204, "coolei": [204, 230, 271], "tukei": [204, 230, 271], "fft": [204, 230, 267, 271], "cgyurgyik": [204, 230], "github": [204, 225, 230, 267, 272], "io": [204, 230, 271, 272], "post": [204, 230], "2021": [204, 230, 271], "04": [204, 230, 268], "brief": [204, 230], "introduct": [204, 230, 271], "nayuki": [204, 230], "geeksforgeek": [204, 230], "import": [204, 230, 262, 266, 270, 271, 272, 273, 274, 277], "forward": [204, 230, 267, 271], "ifft": [204, 271], "exact": [206, 207, 238, 239], "request": [206, 262, 268], "precomput": 206, "under": [206, 268, 276, 277], "quickli": [206, 212], "10000": 206, "hp": 206, "weight": 206, "runtimeerror": [206, 209, 232, 233, 238, 240, 271], "backslash": [206, 207, 238, 239], "four": [206, 207, 238, 258, 271, 274], "now": [206, 238, 271, 274, 276, 277], "you": [207, 225, 239, 241, 255, 256, 262, 263, 264, 266, 267, 268, 276, 277], "them": [207, 239, 241, 257, 268, 275], "cost": [207, 239, 241], "would": [207, 239, 241, 256, 257, 267, 268], "been": [207, 225, 239, 241, 257], "break": [207, 239, 241], "incur": [207, 239, 241, 255, 274], "earli": [207, 239, 241], "exit": [207, 239, 241], "0x7fd4bdc66d60": 207, "2p": [209, 240], "znx": [209, 240, 241], "observ": [209, 240], "although": [209, 240, 276], "2d": [209, 240], "maximum": [209, 240], "stopiter": [209, 240], "_modular": [209, 240], "559": [209, 240, 268], "558": [209, 240], "560": [209, 240], "elif": [209, 240], "wa": [209, 240, 267, 271, 276], "caus": [209, 240, 271, 274], "566": [209, 240], "564": [209, 240], "565": [209, 240], "No": [209, 240, 248, 250, 252], "750": [210, 231], "even": [210, 231, 257, 267, 269, 270], "run": [212, 261, 268, 269, 270, 271, 272, 274], "could": [212, 232, 267, 271], "1000000000000000035000061": [212, 240], "controversi": 213, "regard": 213, "altern": [215, 240, 241, 255], "regular": [216, 263], "humbl": 216, "highli": 216, "As": [217, 255, 259, 267, 276, 277], "consequ": 217, "version": [218, 257, 262, 266, 271, 273, 274], "befor": [218, 270, 275, 276, 277], "later": [218, 271, 277], "librari": [218, 244, 255, 257, 259, 262, 263, 264, 266, 267, 268, 269, 271, 275, 276, 277], "961": 218, "unlik": [219, 269], "impli": 219, "quadrat": [219, 224, 271], "q_n": 219, "q_9": 219, "overlin": [219, 224], "_9": 219, "index": [221, 261, 274], "7919": 221, "interpol": [222, 271], "coordin": 222, "duplic": [222, 271], "y_j": 222, "ell_j": 222, "substack": 222, "x_m": [222, 233], "lagrange_polynomi": 222, "q_p": 224, "begin": 224, "_p": 224, "q_7": 224, "_7": 224, "gfprimdf": 225, "doesn": [225, 263], "spot": 225, "pleas": [225, 267], "submit": 225, "lin": 225, "costello": 225, "control": 225, "a000043": 226, "2000": [226, 227], "521": 226, "607": 226, "1279": 226, "merseen": 226, "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087": [226, 227], "a000668": 227, "8191": 227, "131071": 227, "524287": 227, "2305843009213693951": 227, "618970019642690137449562111": 227, "162259276829213363391578010288127": 227, "170141183460469231731687303715884105727": 227, "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151": 227, "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127": 227, "strong": 228, "declar": 228, "much": [228, 271], "dartmouth": 228, "carlp": 228, "paper25": 228, "strong_liar": 228, "assert": 228, "6852976918500265458318414454675831645298": 229, "6852976918500265458318414454675831645343": 229, "jk": 230, "potenti": 231, "b_2": 232, "p_": 232, "chosen": [232, 276], "gg": 232, "pq": 232, "1039": 232, "1458757": 232, "1326001": 232, "_prime": 232, "1177": 232, "1174": 232, "1175": [232, 268], "1178": 232, "1179": 232, "secondari": 232, "1180": 232, "1934313240757": 232, "2133861346249": 232, "5471": 232, "257107": 232, "1517": 232, "offset": 233, "seek": 233, "x_1": 233, "x_": 233, "unknown": 233, "2m": 233, "accomplish": 233, "look": 233, "especi": [233, 258, 271], "good": 233, "503": 233, "10007": 233, "1000003": 233, "rel": 233, "1182640843": 233, "1716279751": 233, "6298891201241929548477199440981228280038": 234, "6298891201241929548477199440981228279991": 234, "empti": [235, 253], "siev": 235, "eratosthen": 235, "a000040": 235, "gi": 237, "sometim": [238, 277], "five": 239, "0x7fd4bca62640": 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, "416503130311581878610352": 240, "0x7fd4bdc66c30": 241, "insid": [242, 258, 271], "randomli": 244, "prime_number_theorem": 244, "327845897586213436751081882871255331286648902836386839087617368608439574698192016043769533823474001379935585889197488144338014865193967937011638431094821943416361149113909692569658970713864593781874423564706915495970135894084612689487074397782022398597547611189482697523681694691585678818112329605903872356773": 244, "openssl": 244, "pylint": [244, 262, 263], "disabl": [244, 263, 271], "1d2de38de88c67e1eafdeeae77c40b8709ed9c275522c6d5578976b1abcbe7e0f8c6de1271eec6eb3827649164189788f9f3a622aea5f4039761ec708b5841de88566d9b5baf49ba92dce5a300297a9e0e890e4103ed2ad4b5e0553ce56e8c34758cd45900125dba1553ae73aa0cbd6018a2a8713d46e475bf058d1aaa52ef1a5": 244, "n_r": 247, "15013": 247, "500": [247, 274], "1696469": 247, "recurs": [248, 251], "mix": [248, 251], "match": [248, 251], "previous": [248, 250, 252, 271], "coercion": [248, 250, 252], "width": [249, 258, 271], "variabl": 250, "decreas": 250, "132": [253, 254, 255, 268], "187": [253, 254, 271], "176": [253, 254, 271], "nearli": [254, 260, 266], "univers": 254, "unari": 254, "variou": [254, 256, 263, 267, 271, 273, 274], "enabl": [254, 271, 273], "expand": [254, 260], "detail": [254, 258, 259, 260, 266, 271, 276, 277], "88": [254, 256, 268, 269, 271, 276], "209": [254, 256], "essenti": [254, 260], "how": [254, 260, 263, 264, 273], "66": [254, 256, 260, 268, 276], "99": [254, 256, 268, 271], "110": [254, 256], "154": 254, "165": [254, 268], "across": [254, 274], "target": [254, 271], "axi": 254, "220": [254, 268, 269], "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], "330": 254, "331": [254, 268], "332": 254, "333": [254, 271], "334": [254, 268], "335": [254, 271], "336": [254, 271], "337": [254, 271], "338": 254, "339": [254, 271], "340": [254, 268], "341": 254, "a_inv": 254, "342": 254, "futur": [255, 271], "main": 255, "ringarrai": [255, 271], "runtim": 255, "furthermor": 255, "know": 255, "skip": 255, "verif": [255, 270, 271], "twice": 255, "onc": [255, 257, 266, 269, 270, 271, 274], "subsequ": [255, 271], "extrem": 255, "inexpens": 255, "isomorph": 255, "document": [255, 272, 273, 274], "access": [255, 258, 261, 263, 274], "sever": [255, 256, 259, 260], "pascalcas": [255, 259], "snake_cas": [255, 259], "act": 255, "we": [256, 257, 266, 271, 276, 277], "work": [256, 260, 263, 266, 267, 271], "rather": [256, 257, 269, 270, 271], "opposit": 256, "x_np": 256, "finish": [256, 266], "back": [256, 266, 271], "assist": [256, 266], "whatev": 256, "fail": [256, 271], "dure": [256, 257, 258], "abl": 256, "medium": 256, "unless": 256, "otherwis": [256, 271], "871": 256, "416": 256, "348": [256, 268], "625878077724101089069890471640": 256, "240008496769034837587114095139": 256, "1205086372667035865489619573902": 256, "954498947266343527411772670761": 256, "388": 256, "400": [256, 271, 274], "astyp": [256, 270], "expect": 256, "reshap": 256, "subok": [256, 271], "Be": 256, "mind": 256, "custom": [257, 272], "numba": [257, 267, 271, 274], "written": [257, 267], "intercept": 257, "cach": [257, 271], "primari": [257, 264], "util": [257, 271], "built": [257, 261, 271, 274], "creation": [257, 258, 266, 267, 271, 274, 276, 277], "map": 257, "simplifi": [257, 271], "becom": [257, 258, 277], "limit": 257, "usual": 257, "concern": 257, "intermedi": 257, "frompyfunc": 257, "lack": 257, "come": [257, 268], "penalti": 257, "intention": 257, "immedi": [257, 262], "demand": 257, "invoc": [257, 271], "Their": 258, "proper": 258, "compact": [258, 271], "old": 258, "signific": [258, 271], "natur": [258, 266, 277], "clutter": 258, "clearli": 258, "problemat": 258, "occupi": 258, "lot": [258, 271], "quit": 258, "difficult": [258, 277], "read": 258, "readabl": [258, 276, 277], "improv": [258, 271, 272, 273, 274], "linewidth": 258, "179x": [259, 271], "180x": 259, "19x": 259, "simpl": [259, 270, 277], "168x": 259, "222x": 259, "52x": 259, "0xf7": 259, "0x00": 259, "0xa2": 259, "0x75": 259, "treat": 260, "vice": 260, "versa": 260, "floor": [260, 271], "fraction": 260, "keep": [260, 270], "quotient": [260, 276], "overload": [260, 271], "sphinx": [261, 271], "immateri": [261, 271], "theme": 261, "txt": [261, 268], "myst": 261, "parser": 261, "git": [261, 262, 268], "dollar": 261, "ipykernel": 261, "switch": [261, 276, 277], "pip": [261, 262, 263, 264, 266, 268], "command": 261, "dirhtml": 261, "home": 261, "directori": [261, 262, 271], "webpag": 261, "local": [261, 263, 264], "webserv": 261, "modul": 261, "server": 261, "8080": 261, "web": 261, "browser": 261, "localhost": 261, "latest": [262, 266, 272], "releas": [262, 271, 272, 273, 274], "master": [262, 268], "mhostett": [262, 267, 271, 272, 273, 274], "branch": [262, 263, 268], "activ": 262, "develop": [262, 263, 264, 267, 268], "benefici": 262, "fashion": 262, "seen": [262, 271], "upon": 262, "clone": 262, "repo": [262, 268], "wherev": [262, 271], "like": [262, 266, 267, 268, 271, 276], "flag": 262, "lint": 262, "pyproject": [262, 263, 264, 271], "toml": [262, 263, 264, 271], "project": 262, "black": [262, 263, 274], "pytest": [262, 264, 268], "cov": [262, 268], "xdist": 262, "benchmark": [262, 271], "pdfminer": 262, "six": 262, "extra": [262, 268], "static": 263, "analysi": 263, "your": [263, 264, 267, 268], "dev": [263, 264, 268, 269, 270, 271, 272, 274], "nuisanc": 263, "warn": [263, 268], "ignor": [263, 277], "tool": [263, 264], "path": 263, "src": [263, 271], "_version": 263, "callabl": 263, "understand": 263, "metaclass": [263, 271], "fixm": 263, "invalid": 263, "miss": 263, "docstr": [263, 271], "protect": 263, "ancestor": 263, "attribut": 263, "unneed": 263, "exclud": 263, "quot": 263, "express": [263, 271], "reason": 263, "isort": [263, 274], "profil": 263, "vscode": [263, 264], "json": [263, 264, 268], "edit": 263, "ini_opt": 264, "minvers": 264, "addopt": 264, "showloc": 264, "testpath": 264, "execut": 264, "test_math": 264, "test_gcd": 264, "integr": [264, 267], "infrastructur": 264, "debug": 264, "parti": 264, "pkl": 264, "folder": [264, 268, 271], "script": [264, 271], "generate_int_test_vector": 264, "generate_field_test_vector": 264, "sudo": 264, "apt": 264, "sagemath": 264, "re": [264, 271], "easi": 264, "individu": 264, "guid": 266, "intend": [266, 267], "basic": 266, "usag": [266, 271, 273], "pypi": [266, 271, 272], "__version__": 266, "dev15": 266, "ge8e5bf58": 266, "elsewher": 266, "whichev": 266, "tradit": 266, "preform": 266, "complic": 266, "array_lik": 267, "mimic": [267, 271], "signatur": [267, 274], "intern": [267, 270], "replac": [267, 271, 273], "vulner": [267, 271], "channel": 267, "attack": 267, "secur": 267, "research": 267, "engin": 267, "cryptanalysi": 267, "experiment": 267, "educ": 267, "seamless": 267, "accompani": 267, "ellipt": 267, "curv": 267, "gpu": [267, 271], "heavili": 267, "reli": 267, "llvm": 267, "optim": [267, 269, 272, 274], "wolfram": [267, 271], "sage": 267, "sympi": 267, "octav": 267, "mention": [267, 276, 277], "thank": 267, "cite": 267, "recommend": 267, "bibtex": 267, "softwar": [267, 271], "hostetter_galois_2020": 267, "titl": 267, "author": 267, "hostett": [267, 271, 272, 273, 274], "matt": [267, 271, 272, 273, 274], "month": 267, "year": 267, "2020": 267, "url": [267, 271], "apa": 267, "test_field_arithmet": 268, "advis": 268, "stddev": 268, "median": 268, "session": 268, "platform": 268, "linux": 268, "pluggi": 268, "timer": 268, "perf_count": 268, "disable_gc": 268, "min_round": 268, "min_tim": 268, "000005": 268, "max_tim": 268, "calibration_precis": 268, "warmup": 268, "warmup_iter": 268, "100000": 268, "rootdir": 268, "mnt": 268, "matth": 268, "inifil": 268, "setup": 268, "cfg": 268, "plugin": 268, "mock": 268, "typeguard": 268, "anyio": 268, "collect": 268, "item": 268, "100_000": [268, 274], "test_add": 268, "3810": 268, "3280": 268, "9455": 268, "4959": 268, "07": [268, 270], "3620": 268, "test_additive_invers": 268, "5850": 268, "5360": 268, "1445": 268, "9249": 268, "2670": 268, "test_divid": 268, "0870": 268, "0680": 268, "6357": 268, "9537": 268, "4920": 268, "test_multiplicative_invers": 268, "4410": 268, "0050": 268, "6590": 268, "8467": 268, "4670": 268, "test_multipli": 268, "0400": 268, "4400": 268, "3296": 268, "1267": 268, "9010": 268, "test_pow": 268, "2410": 268, "06": [268, 274], "2870": 268, "8103": 268, "4850": 268, "2860": 268, "test_scalar_multipli": 268, "543": 268, "3970": 268, "00": 268, "714": 268, "562": 268, "2968": 268, "4125": 268, "1370": 268, "test_subtract": 268, "3110": 268, "8710": 268, "2938": 268, "4038": 268, "2520": 268, "2620": 268, "9984": 268, "1680": 268, "7530": 268, "0860": 268, "9070": 268, "7403": 268, "0927": 268, "0520": 268, "351": 268, "6220": 268, "09": 268, "5920": 268, "4510": 268, "3240": 268, "1620": 268, "9590": 268, "350": [268, 271], "8016": 268, "05": [268, 274], "3332": 268, "1050": 268, "1090": 268, "5620": 268, "1805": 268, "9767": 268, "6600": 268, "7210": 268, "520": 268, "5480": 268, "349": 268, "02": 268, "3962": 268, "6105": 268, "544": 268, "0880": 268, "1140": 268, "575": 268, "6227": 268, "0059": 268, "4830": 268, "6160": 268, "1760": 268, "3242": 268, "6562": 268, "8905": 268, "0580": 268, "393": [268, 271], "6670": 268, "7954": 268, "6945": 268, "4630": 268, "9080": 268, "6380": 268, "0218": 268, "7213": 268, "6330": 268, "7890": 268, "8050": 268, "1431": 268, "6688": 268, "0210": 268, "8140": 268, "4620": 268, "6663": 268, "8113": 268, "5820": 268, "475": 268, "2490": 268, "4317": 268, "6557": 268, "2370": 268, "6030": 268, "389": [268, 271], "2180": 268, "9333": 268, "9217": 268, "1145": 268, "539": 268, "7710": 268, "973": 268, "1410": 268, "573": 268, "4538": 268, "0047": 268, "557": 268, "7030": 268, "3500": 268, "0450": 268, "6062": 268, "3127": 268, "1270": 268, "6110": 268, "1990": 268, "4288": 268, "8745": 268, "6750": 268, "7150": 268, "0465": 268, "2959": 268, "3070": 268, "4310": 268, "971": 268, "367": [268, 271], "6440": 268, "0968": 268, "831": 268, "5738": 268, "354": [268, 271], "6500": 268, "933": 268, "842": 268, "1600": 268, "865": 268, "404": [268, 271], "4870": 268, "1417": 268, "755": 268, "529": 268, "9702": 268, "015": 268, "3740": 268, "839": 268, "079": 268, "0300": 268, "0780": 268, "098": 268, "1473": 268, "6741": 268, "092": 268, "5140": 268, "832": 268, "8340": 268, "938": 268, "7640": 268, "942": 268, "1951": 268, "806": 268, "9381": 268, "928": 268, "9640": 268, "903": 268, "883": 268, "2930": 268, "1310": 268, "3991": 268, "9582": 268, "912": 268, "6210": 268, "7780": 268, "7528": 268, "2536": 268, "4330": 268, "0900": 268, "5990": 268, "8739": 268, "6347": 268, "1720": 268, "3340": 268, "1649": 268, "1860": 268, "8860": 268, "6730": 268, "6490": 268, "7595": 268, "0094": 268, "9500": 268, "3150": 268, "4480": 268, "0589": 268, "9483": 268, "4220": 268, "3430": 268, "2580": 268, "8079": 268, "1740": 268, "7910": 268, "401": 268, "3410": 268, "8168": 268, "4759": 268, "8730": 268, "850": 268, "2810": 268, "3010": 268, "884": 268, "6499": 268, "6705": 268, "876": 268, "5800": 268, "5460": 268, "2685": 268, "4904": 268, "8610": 268, "4770": 268, "358": 268, "2300": 268, "4561": 268, "1327": 268, "4100": 268, "6980": 268, "6550": 268, "9128": 268, "6890": 268, "3460": 268, "7130": 268, "5486": 268, "5184": 268, "1795": 268, "4600": 268, "08": 268, "2010": 268, "5927": 268, "5185": 268, "2130": 268, "1690": 268, "3098": 268, "7315": 268, "361": [268, 271], "5260": 268, "447": 268, "0060": 268, "385": [268, 271], "7585": 268, "6975": 268, "375": 268, "4475": 268, "756": 268, "014": 268, "792": 268, "1778": 268, "3465": 268, "786": 268, "1765": 268, "383": [268, 271], "7790": 268, "461": 268, "3640": 268, "411": 268, "7450": 268, "7056": 268, "403": 268, "7260": 268, "10_000": [268, 271, 272], "9310": 268, "635": 268, "8940": 268, "936": 268, "2487": 268, "1260": 268, "915": 268, "945": 268, "0700": 268, "632": 268, "3527": 268, "9239": 268, "01": 268, "578": 268, "4425": 268, "022": 268, "8560": 268, "7516": 268, "808": 268, "8230": 268, "481": [268, 274], "3870": 268, "011": 268, "817": 268, "897": 268, "2702": 268, "471": [268, 274], "2330": 268, "992": 268, "5040": 268, "847": 268, "6130": 268, "894": 268, "3920": 268, "872": 268, "3102": 268, "8231": 268, "2980": 268, "3730": 268, "040": 268, "5270": 268, "650": 268, "6814": 268, "5041": 268, "693": 268, "8380": 268, "049": 268, "1360": 268, "4565": 268, "6458": 268, "1895": 268, "4720": 268, "075": 268, "8030": 268, "944": 268, "4420": 268, "1406": 268, "5830": 268, "legend": 268, "outlier": 268, "deviat": 268, "iqr": 268, "interquartil": 268, "1st": 268, "quartil": 268, "3rd": 268, "op": 268, "per": [268, 269, 270, 271, 272, 274], "impact": 268, "0001_master": 268, "checkout": 268, "0001_branch": 268, "modular": [269, 271, 277], "involv": 269, "convolut": 269, "make": [269, 271, 275], "fair": 269, "fight": 269, "million": [269, 270], "10_000_000": [269, 270], "timeit": [269, 270, 271, 272, 274], "std": [269, 270, 271, 272, 274], "incorrect": 269, "aa": [269, 270], "bb": [269, 270], "pp": 269, "747": 269, "\u00b5": [269, 270, 271, 272, 274], "1174047800": 269, "3249326965": 269, "3196014003": 269, "3195457330": 269, "100242821": 269, "338589759": 269, "386": 269, "isn": 269, "718": 269, "definit": 269, "bla": [269, 270], "lapack": [269, 270], "parallel": [269, 274], "hardwar": 269, "acceler": 269, "4203877556": 269, "3977035749": 269, "2623937858": 269, "3721257849": 269, "4250999056": 269, "4026271867": 269, "3120760606": 269, "1017695431": 269, "1111117124": 269, "1638387264": 269, "2988805996": 269, "1734614583": 269, "2508826906": 269, "2800993411": 269, "1720697782": 269, "3858180318": 269, "2521070820": 269, "3906771227": 269, "624580545": 269, "984724090": 269, "3969931498": 269, "1692192269": 269, "473079794": 269, "1029376699": 269, "1232183301": 269, "209395954": 269, "2659712274": 269, "2967695343": 269, "2747874320": 269, "1249453570": 269, "3938433735": 269, "828783569": 269, "3286222384": 269, "3669775257": 269, "33626526": 269, "4278384359": 269, "703": 269, "000": [269, 270, 271, 274], "xy": 270, "2097169": 270, "1879104": 270, "1566761": 270, "967164": 270, "744769": 270, "975853": 270, "1142138": 270, "due": [270, 271], "don": 270, "1403108": 270, "100593": 270, "595358": 270, "852783": 270, "1035698": 270, "1207498": 270, "989189": 270, "390": 270, "absolut": 270, "overflow": [270, 271], "prevent": 270, "whenev": 270, "1147163": 270, "59466": 270, "1841183": 270, "667877": 270, "2084618": 270, "799166": 270, "306714": 270, "1380503": 270, "810935": 270, "1932687": 270, "1690697": 270, "329837": 270, "325274": 270, "575543": 270, "1327001": 270, "167724": 270, "422518": 270, "696986": 270, "862992": 270, "1143160": 270, "588384": 270, "668891": 270, "1285421": 270, "1196448": 270, "1026856": 270, "1413416": 270, "1844802": 270, "38844": 270, "1643604": 270, "10409": 270, "401717": 270, "329673": 270, "860449": 270, "1551173": 270, "1766877": 270, "986430": 270, "708": 270, "slightli": 270, "overhead": 270, "682": [270, 271], "renam": [271, 273], "gfarrai": 271, "chinese_remainder_theorem": 271, "bug": [271, 274, 275], "baalateja": 271, "kataru": 271, "bk": 271, "poly_exp_mod": 271, "poly_pow": 271, "is_prime_fermat": 271, "is_prime_miller_rabin": 271, "massiv": 271, "enhanc": 271, "convolv": 271, "oaklei": 271, "rfc": 271, "2409": 271, "restructur": 271, "is_group": 271, "is_field": 271, "poly_factor": 271, "vdot": 271, "poly_gcd": 271, "june": 271, "fieldmeta": 271, "fieldclass": 271, "remov": [271, 272, 273], "better": 271, "consolid": 271, "verify_irreduc": 271, "verify_primit": 271, "abil": [271, 272, 274, 276, 277], "ipython": 271, "tab": [271, 276, 277], "cleanup": 271, "tutori": [271, 276, 277], "convers": 271, "minor": [271, 275], "dominik": 271, "wernberg": 271, "werni2a": 271, "juli": 271, "prime_factor": 271, "poly_egcd": 271, "euler_toti": 271, "clean": 271, "dir": 271, "public": 271, "shorten": 271, "structur": 271, "hierarchi": 271, "august": [271, 272], "unnecessari": [271, 276], "log_naiv": 271, "might": 271, "overrid": 271, "coverag": 271, "though": 271, "bch_valid_cod": [271, 273], "repetit": 271, "weren": 271, "move": 271, "parit": 271, "pin": 271, "septemb": [271, 272], "render": 271, "correctli": 271, "id": 271, "decemb": [271, 274], "style": 271, "randint": 271, "offici": 271, "major": [271, 272, 275], "syntax": 271, "bump": 271, "iy\u00e1n": [271, 274], "m\u00e9ndez": [271, 274], "veiga": [271, 274], "iyanmv": [271, 274], "januari": 271, "2022": [271, 272, 273, 274], "hint": 271, "februari": [271, 274], "refactor": [271, 273], "lup_decompos": 271, "is_quadratic_residu": 271, "aren": 271, "quadratic_residu": 271, "quadratic_non_residu": 271, "co": 271, "march": 271, "redefin": 271, "differenti": 271, "wasn": 271, "memoiz": [271, 274], "routin": [271, 272], "cpu": [271, 274], "675": 271, "sy": [271, 274], "total": [271, 274], "wall": [271, 274], "741": 271, "0o13": 271, "0xb": 271, "made": 271, "longer": [271, 274], "needlessli": 271, "overhaul": 271, "websit": 271, "immut": 271, "actual": 271, "obtain": 271, "answer": [271, 276, 277], "binarypoli": 271, "densepoli": 271, "sparsepoli": 271, "redund": 271, "03": 271, "nest": 271, "436": [271, 273], "910": 271, "900": 271, "242x": 271, "32x": 271, "230x": 271, "159x": 271, "83x": 271, "101x": 271, "442": [271, 274], "439": 271, "april": 271, "sunset": 271, "__future__": 271, "annot": [271, 272], "That": 271, "alias": 271, "subpackag": 271, "inabl": 271, "monkei": 271, "patch": [271, 275], "343": 271, "anywher": 271, "coercibl": 271, "throughout": 271, "simpler": 271, "clear": 271, "695": 271, "clariti": 271, "broken": [271, 277], "boost": 271, "722": 271, "574": 271, "527": 271, "690": 271, "concis": 271, "descript": 271, "362": 271, "wide": 271, "363": 271, "polymorph": 271, "believ": 271, "introduc": [271, 275], "occasion": [271, 274], "erron": 271, "360": 271, "upgrad": 271, "cve": 271, "34141": 271, "41496": 271, "41495": 271, "366": 271, "373": 271, "376": 271, "377": 271, "rework": 271, "apigen": 271, "370": 271, "readthedoc": 271, "languag": 271, "seem": 271, "connot": 271, "hopefulli": 271, "392": 271, "complex": 271, "brute": 271, "forc": 271, "1650": 271, "pohlig": 271, "hellman": 271, "lg": 271, "387": 271, "491954233": 271, "14011": 271, "itoh": 271, "tsujii": 271, "littl": [271, 277], "646": 271, "834": 271, "479": 271, "pickl": 271, "fec": [271, 273], "397": 271, "sourc": 271, "metadata": 272, "414": 272, "409": [272, 274], "2218840874040723579228056294021": 272, "deploi": 272, "408": 272, "novemb": [272, 273], "ineffici": 272, "429": 272, "13546990": 272, "14653018": 272, "21619804": 272, "15507037": 272, "24669161": 272, "19116362": 272, "23979074": 272, "432": 272, "13693": 272, "426": 272, "modern": 272, "abbrevi": 272, "notat": 272, "418": 272, "appropri": 272, "420": 272, "424": 272, "430": 272, "413": 273, "435": 273, "ari": 273, "parity_onli": 273, "generator_to_parity_check_matrix": 273, "parity_check_to_generator_matrix": 273, "poly_to_generator_matrix": 273, "roots_to_parity_check_matrix": 273, "display_mod": 273, "bool_": 273, "437": 273, "publish": 273, "doc": 273, "441": 274, "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512": 274, "core": 274, "440": 274, "664": 274, "776": 274, "bitwise_xor": 274, "infinit": 274, "450": 274, "2400610585866217": 274, "446": 274, "449": 274, "pivi": 274, "452": 274, "took": 274, "forev": 274, "641": 274, "274177": 274, "6700417": 274, "67280421310721": 274, "59649589127497217": 274, "5704689200685129054721": 274, "454": 274, "2013": 274, "2018": 274, "2023": 274, "463": 274, "462": 274, "1001": 274, "745": 274, "470": 274, "469": 274, "415": 274, "477": 274, "mypi": 274, "checker": 274, "concurr": 274, "484": 274, "semant": 275, "featur": 275, "guarante": 275, "thought": 275, "prove": [276, 277], "mostli": 276, "gf9": 276, "suggest": [276, 277], "compactli": 276, "retriev": [276, 277], "inform": 276, "analogu": 276, "mathemat": [276, 277], "speak": [276, 277], "gf3": 276, "a_poli": 276, "b_poli": 276, "nonetheless": [276, 277], "convinc": [276, 277], "yourself": [276, 277], "reduct": 276, "reformul": [276, 277], "onto": 276, "let": [276, 277], "earlier": [276, 277], "learn": [276, 277], "b_inv_poli": 276, "examin": [276, 277], "honor": 277, "father": 277, "theori": 277, "ask": 277, "gauss": 277, "publicli": 277, "give": 277, "opinion": 277, "truth": 277, "hope": 277, "who": 277, "advantag": 277, "deciph": 277, "mess": 277, "1832": 277, "dai": 277, "hi": 277, "death": 277, "categori": 277, "focu": 277, "gf7": 277, "a_int": 277, "b_int": 277, "similarli": 277, "euclid": 277, "b\u00e9zout": 277, "yt": 277, "b_inv_int": 277}, "objects": {"": [[0, 0, 0, 1, "galois", ""]], "galois": [[1, 1, 1, "", "Array", "An abstract ndarray subclass over a Galois field or Galois ring."], [22, 1, 1, "", "BCH", "A general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [45, 1, 1, "", "FLFSR", "A Fibonacci linear-feedback shift register (LFSR)."], [60, 5, 1, "", "Field", "Alias of GF()."], [61, 1, 1, "", "FieldArray", "An abstract ndarray subclass over $mathrm{GF}(p^m)$."], [115, 5, 1, "", "GF", "Creates a FieldArray subclass for $mathrm{GF}(p^m)$."], [116, 1, 1, "", "GF2", "A FieldArray subclass over $mathrm{GF}(2)$."], [117, 1, 1, "", "GLFSR", "A Galois linear-feedback shift register (LFSR)."], [132, 1, 1, "", "Poly", "A univariate polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [168, 1, 1, "", "ReedSolomon", "A general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [190, 5, 1, "", "are_coprime", "Determines if the arguments are pairwise coprime."], [191, 5, 1, "", "berlekamp_massey", "Finds the minimal polynomial $c(x)$ that produces the linear recurrent sequence $y$."], [192, 5, 1, "", "carmichael_lambda", "Finds the smallest positive integer $m$ such that $a^m equiv 1(textrm{mod}n)$ for every integer $a$ in $[1, n)$ that is coprime to $n$."], [193, 5, 1, "", "conway_poly", "Returns the Conway polynomial $C_{p,m}(x)$ over $mathrm{GF}(p)$ with degree $m$."], [194, 5, 1, "", "crt", "Solves the simultaneous system of congruences for $x$."], [195, 5, 1, "", "divisor_sigma", "Returns the sum of $k$-th powers of the positive divisors of $n$."], [196, 5, 1, "", "divisors", "Computes all positive integer divisors $d$ of the integer $n$ such that $d|n$."], [197, 5, 1, "", "egcd", "Finds the multiplicands of $a$ and $b$ such that $a s + b t = mathrm{gcd}(a, b)$."], [198, 5, 1, "", "euler_phi", "Counts the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [199, 5, 1, "", "factors", "Computes the prime factors of a positive integer or the irreducible factors of a non-constant, monic polynomial."], [200, 5, 1, "", "fermat_primality_test", "Determines if $n$ is composite using Fermat's primality test."], [201, 5, 1, "", "gcd", "Finds the greatest common divisor of $a$ and $b$."], [202, 5, 1, "", "get_printoptions", "Returns the current print options for the package. This function is the galois equivalent of numpy.get_printoptions()."], [203, 5, 1, "", "ilog", "Computes $x = lfloortextrm{log}_b(n)rfloor$ such that $b^x le n < b^{x + 1}$."], [204, 5, 1, "", "intt", "Computes the Inverse Number-Theoretic Transform (INTT) of $X$."], [205, 5, 1, "", "iroot", "Computes $x = lfloor n^{frac{1}{k}} rfloor$ such that $x^k le n < (x + 1)^k$."], [206, 5, 1, "", "irreducible_poly", "Returns a monic irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [207, 5, 1, "", "irreducible_polys", "Iterates through all monic irreducible polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [208, 5, 1, "", "is_composite", "Determines if $n$ is composite."], [209, 5, 1, "", "is_cyclic", "Determines whether the multiplicative group $(mathbb{Z}/nmathbb{Z}){^times}$ is cyclic."], [210, 5, 1, "", "is_perfect_power", "Determines if $n$ is a perfect power $n = c^e$ with $e > 1$."], [211, 5, 1, "", "is_powersmooth", "Determines if the integer $n$ is $B$-powersmooth."], [212, 5, 1, "", "is_prime", "Determines if $n$ is prime."], [213, 5, 1, "", "is_prime_power", "Determines if $n$ is a prime power $n = p^k$ for prime $p$ and $k ge 1$."], [214, 5, 1, "", "is_primitive_element", "Determines if $g$ is a primitive element of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [215, 5, 1, "", "is_primitive_root", "Determines if $g$ is a primitive root modulo $n$."], [216, 5, 1, "", "is_smooth", "Determines if the integer $n$ is $B$-smooth."], [217, 5, 1, "", "is_square_free", "Determines if an integer or polynomial is square-free."], [218, 5, 1, "", "isqrt", "Computes $x = lfloorsqrt{n}rfloor$ such that $x^2 le n < (x + 1)^2$."], [219, 5, 1, "", "jacobi_symbol", "Computes the Jacobi symbol $(frac{a}{n})$."], [220, 5, 1, "", "kronecker_symbol", "Computes the Kronecker symbol $(frac{a}{n})$. The Kronecker symbol extends the Jacobi symbol for all $n$."], [221, 5, 1, "", "kth_prime", "Returns the $k$-th prime, where $k = {1,2,3,4,dots}$ for primes $p = {2,3,5,7,dots}$."], [222, 5, 1, "", "lagrange_poly", "Computes the Lagrange interpolating polynomial $L(x)$ such that $L(x_i) = y_i$."], [223, 5, 1, "", "lcm", "Computes the least common multiple of the arguments."], [224, 5, 1, "", "legendre_symbol", "Computes the Legendre symbol $(frac{a}{p})$."], [225, 5, 1, "", "matlab_primitive_poly", "Returns Matlab's default primitive polynomial $f(x)$ over $mathrm{GF}(p)$ with degree $m$."], [226, 5, 1, "", "mersenne_exponents", "Returns all known Mersenne exponents $e$ for $e le n$."], [227, 5, 1, "", "mersenne_primes", "Returns all known Mersenne primes $p$ for $p le 2^n - 1$."], [228, 5, 1, "", "miller_rabin_primality_test", "Determines if $n$ is composite using the Miller-Rabin primality test."], [229, 5, 1, "", "next_prime", "Returns the nearest prime $p$, such that $p > n$."], [230, 5, 1, "", "ntt", "Computes the Number-Theoretic Transform (NTT) of $x$."], [231, 5, 1, "", "perfect_power", "Returns the integer base $c$ and exponent $e$ of $n = c^e$. If $n$ is not a perfect power, then $c = n$ and $e = 1$."], [232, 5, 1, "", "pollard_p1", "Attempts to find a non-trivial factor of $n$ if it has a prime factor $p$ such that $p-1$ is $B$-smooth."], [233, 5, 1, "", "pollard_rho", "Attempts to find a non-trivial factor of $n$ using cycle detection."], [234, 5, 1, "", "prev_prime", "Returns the nearest prime $p$, such that $p le n$."], [235, 5, 1, "", "primes", "Returns all primes $p$ for $p le n$."], [236, 5, 1, "", "primitive_element", "Finds a primitive element $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [237, 5, 1, "", "primitive_elements", "Finds all primitive elements $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [238, 5, 1, "", "primitive_poly", "Returns a monic primitive polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [239, 5, 1, "", "primitive_polys", "Iterates through all monic primitive polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [240, 5, 1, "", "primitive_root", "Finds a primitive root modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [241, 5, 1, "", "primitive_roots", "Iterates through all primitive roots modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [242, 5, 1, "", "printoptions", "A context manager to temporarily modify the print options for the package. This function is the galois equivalent of numpy.printoptions()."], [243, 5, 1, "", "prod", "Computes the product of the arguments."], [244, 5, 1, "", "random_prime", "Returns a random prime $p$ with $b$ bits, such that $2^b le p < 2^{b+1}$."], [245, 5, 1, "", "set_printoptions", "Modifies the print options for the package. This function is the galois equivalent of numpy.set_printoptions()."], [246, 5, 1, "", "totatives", "Returns the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [247, 5, 1, "", "trial_division", "Finds all the prime factors $p_i^{e_i}$ of $n$ for $p_i le B$."]], "galois.Array": [[2, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [3, 2, 1, "", "Ones", "Creates an array of all ones."], [4, 2, 1, "", "Random", "Creates an array with random elements."], [5, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [6, 2, 1, "", "Zeros", "Creates an array of all zeros."], [7, 4, 1, "", "characteristic", "The characteristic $p$ of the Galois field $mathrm{GF}(p^m)$ or $p^e$ of the Galois ring $mathrm{GR}(p^e, m)$."], [8, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [9, 4, 1, "", "default_ufunc_mode", "The default compilation mode of the Galois field or Galois ring."], [10, 4, 1, "", "degree", "The degree $m$ of the Galois field $mathrm{GF}(p^m)$ or Galois ring $mathrm{GR}(p^e, m)$."], [11, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this Galois field or Galois ring."], [12, 4, 1, "", "element_repr", "The current element representation of the Galois field or Galois ring."], [13, 4, 1, "", "elements", "All elements of the Galois field or Galois ring."], [14, 4, 1, "", "irreducible_poly", "The irreducible polynomial of the Galois field or Galois ring."], [15, 4, 1, "", "name", "The name of the Galois field or Galois ring."], [16, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$ or $p^{em}$ of the Galois ring $mathrm{GR}(p^e, m)$."], [17, 4, 1, "", "primitive_element", "A primitive element of the Galois field or Galois ring."], [18, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [19, 4, 1, "", "ufunc_mode", "The current compilation mode of the Galois field or Galois ring."], [20, 4, 1, "", "ufunc_modes", "All supported compilation modes of the Galois field or Galois ring."], [21, 4, 1, "", "units", "All units of the Galois field or Galois ring."]], "galois.Array.Identity": [[2, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [2, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.Array.Ones": [[3, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [3, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.Random": [[4, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [4, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [4, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [4, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [4, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.Array.Range": [[5, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [5, 3, 2, "p-start", "start", "The starting element (inclusive)."], [5, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [5, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.Array.Zeros": [[6, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [6, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.compile": [[8, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.Array.repr": [[18, 3, 2, "p-element_repr", "element_repr", "The field element representation."]], "galois.BCH": [[23, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [24, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [25, 2, 1, "", "__init__", "Constructs a general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [26, 2, 1, "", "__repr__", "A terse representation of the BCH code."], [27, 2, 1, "", "__str__", "A formatted string with relevant properties of the BCH code."], [28, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$ in $mathrm{GF}(q^m)$."], [29, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [30, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [31, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [32, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [33, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [34, 4, 1, "", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the BCH syndrome arithmetic."], [35, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [36, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [37, 4, 1, "", "is_narrow_sense", "Indicates if the BCH code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [38, 4, 1, "", "is_primitive", "Indicates if the BCH code is primitive, meaning $n = q^m - 1$."], [39, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [40, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [41, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [42, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [43, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [44, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.BCH.__init__": [[25, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [25, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the BCH code is narrow-sense."], [25, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q^m)$."], [25, 3, 2, "p-extension_field", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the syndrome arithmetic. The default is None which corresponds to $mathrm{GF}(q^m)$ where $q^{m - 1} le n < q^m$. The default extension field will use matlab_primitive_poly(q, m) for the irreducible polynomial."], [25, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2)$."], [25, 3, 2, "p-k", "k", "The message size $k$."], [25, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q^m - 1$, the BCH code is primitive."], [25, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.BCH.decode": [[31, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [31, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [31, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.BCH.detect": [[32, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.BCH.encode": [[33, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [33, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.FLFSR": [[46, 2, 1, "", "Taps", "Constructs a Fibonacci LFSR from its taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."], [47, 2, 1, "", "__init__", "Constructs a Fibonacci LFSR from its feedback polynomial $f(x)$."], [48, 2, 1, "", "__repr__", "A terse representation of the Fibonacci LFSR."], [49, 2, 1, "", "__str__", "A formatted string of relevant properties of the Fibonacci LFSR."], [50, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [51, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [52, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [53, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [54, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [55, 2, 1, "", "reset", "Resets the Fibonacci LFSR state to the specified state."], [56, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [57, 2, 1, "", "step", "Produces the next steps output symbols."], [58, 4, 1, "", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$. The taps of the shift register define the linear recurrence relation."], [59, 2, 1, "", "to_galois_lfsr", "Converts the Fibonacci LFSR to a Galois LFSR that produces the same output."]], "galois.FLFSR.Taps": [[46, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [46, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."]], "galois.FLFSR.__init__": [[47, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [47, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.FLFSR.reset": [[55, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.FLFSR.step": [[57, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Fibonacci LFSR will step backwards."]], "galois.FieldArray": [[62, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [63, 2, 1, "", "Ones", "Creates an array of all ones."], [64, 2, 1, "", "Random", "Creates an array with random elements."], [65, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [66, 2, 1, "", "Vandermonde", "Creates an $m times n$ Vandermonde matrix of $a in mathrm{GF}(q)$."], [67, 2, 1, "", "Vector", "Converts length-$m$ vectors over the prime subfield $mathrm{GF}(p)$ to an array over $mathrm{GF}(p^m)$."], [68, 2, 1, "", "Zeros", "Creates an array of all zeros."], [69, 2, 1, "", "__init__", "Creates an array over $mathrm{GF}(p^m)$."], [70, 2, 1, "", "__repr__", "Displays the array specifying the class and finite field order."], [71, 2, 1, "", "__str__", "Displays the array without specifying the class or finite field order."], [72, 2, 1, "", "additive_order", "Computes the additive order of each element in $x$."], [73, 2, 1, "", "arithmetic_table", "Generates the specified arithmetic table for the finite field."], [74, 4, 1, "", "characteristic", "The prime characteristic $p$ of the Galois field $mathrm{GF}(p^m)$."], [75, 2, 1, "", "characteristic_poly", "Computes the characteristic polynomial of a finite field element $a$ or a square matrix $mathbf{A}$."], [76, 2, 1, "", "column_space", "Computes the column space of the matrix $mathbf{A}$."], [77, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [78, 4, 1, "", "default_ufunc_mode", "The default ufunc compilation mode for this FieldArray subclass."], [79, 4, 1, "", "degree", "The extension degree $m$ of the Galois field $mathrm{GF}(p^m)$."], [80, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this finite field."], [81, 4, 1, "", "element_repr", "The current finite field element representation."], [82, 4, 1, "", "elements", "All of the finite field's elements ${0, dots, p^m-1}$."], [83, 2, 1, "", "field_norm", "Computes the field norm $mathrm{N}_{L / K}(x)$ of the elements of $x$."], [84, 2, 1, "", "field_trace", "Computes the field trace $mathrm{Tr}_{L / K}(x)$ of the elements of $x$."], [85, 4, 1, "", "irreducible_poly", "The irreducible polynomial $f(x)$ of the Galois field $mathrm{GF}(p^m)$."], [86, 4, 1, "", "is_extension_field", "Indicates if the finite field is an extension field, having prime power order."], [87, 4, 1, "", "is_prime_field", "Indicates if the finite field is a prime field, having prime order."], [88, 4, 1, "", "is_primitive_poly", "Indicates whether the irreducible_poly is a primitive polynomial."], [89, 2, 1, "", "is_square", "Determines if the elements of $x$ are squares in the finite field."], [90, 2, 1, "", "left_null_space", "Computes the left null space of the matrix $mathbf{A}$."], [91, 2, 1, "", "log", "Computes the discrete logarithm of the array $x$ base $beta$."], [92, 2, 1, "", "lu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices."], [93, 2, 1, "", "minimal_poly", "Computes the minimal polynomial of a finite field element $a$."], [94, 2, 1, "", "multiplicative_order", "Computes the multiplicative order $textrm{ord}(x)$ of each element in $x$."], [95, 4, 1, "", "name", "The finite field's name as a string GF(p) or GF(p^m)."], [96, 4, 1, "", "non_squares", "All non-squares in the Galois field."], [97, 2, 1, "", "null_space", "Computes the null space of the matrix $mathbf{A}$."], [98, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$."], [99, 2, 1, "", "plu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices using partial pivoting."], [100, 4, 1, "", "prime_subfield", "The prime subfield $mathrm{GF}(p)$ of the extension field $mathrm{GF}(p^m)$."], [101, 4, 1, "", "primitive_element", "A primitive element $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [102, 4, 1, "", "primitive_elements", "All primitive elements $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [103, 2, 1, "", "primitive_root_of_unity", "Finds a primitive $n$-th root of unity in the finite field."], [104, 2, 1, "", "primitive_roots_of_unity", "Finds all primitive $n$-th roots of unity in the finite field."], [105, 4, 1, "", "properties", "A formatted string of relevant properties of the Galois field."], [106, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [107, 2, 1, "", "repr_table", "Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations."], [108, 2, 1, "", "row_reduce", "Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF)."], [109, 2, 1, "", "row_space", "Computes the row space of the matrix $mathbf{A}$."], [110, 4, 1, "", "squares", "All squares in the finite field."], [111, 4, 1, "", "ufunc_mode", "The current ufunc compilation mode for this FieldArray subclass."], [112, 4, 1, "", "ufunc_modes", "All supported ufunc compilation modes for this FieldArray subclass."], [113, 4, 1, "", "units", "All of the finite field's units ${1, dots, p^m-1}$."], [114, 2, 1, "", "vector", "Converts an array over $mathrm{GF}(p^m)$ to length-$m$ vectors over the prime subfield $mathrm{GF}(p)$."]], "galois.FieldArray.Identity": [[62, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [62, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.FieldArray.Ones": [[63, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [63, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.Random": [[64, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [64, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [64, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [64, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [64, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.FieldArray.Range": [[65, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [65, 3, 2, "p-start", "start", "The starting element (inclusive)."], [65, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [65, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.FieldArray.Vandermonde": [[66, 3, 2, "p-cols", "cols", "The number of columns $n$ in the Vandermonde matrix."], [66, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [66, 3, 2, "p-element", "element", "An element $a$ of $mathrm{GF}(q)$."], [66, 3, 2, "p-rows", "rows", "The number of rows $m$ in the Vandermonde matrix."]], "galois.FieldArray.Vector": [[67, 3, 2, "p-array", "array", "An array over $mathrm{GF}(p)$ with last dimension $m$. An array with shape (n1, n2, m) has output shape (n1, n2). By convention, the vectors are ordered from degree $m-1$ to degree 0."], [67, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.FieldArray.Zeros": [[68, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [68, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.__init__": [[69, 3, 2, "p-copy", "copy", "The copy keyword argument from numpy.array(). The default is True."], [69, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [69, 3, 2, "p-ndmin", "ndmin", "The ndmin keyword argument from numpy.array(). The default is 0."], [69, 3, 2, "p-order", "order", "The order keyword argument from numpy.array(). The default is \"K\"."], [69, 3, 2, "p-x", "x", "A finite field scalar or array."]], "galois.FieldArray.arithmetic_table": [[73, 3, 2, "p-operation", "operation", "The arithmetic operation."], [73, 3, 2, "p-x", "x", "Optionally specify the $x$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$."], [73, 3, 2, "p-y", "y", "Optionally specify the $y$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$ for addition, subtraction, and multiplication and ${1, dots, p^m - 1}$ for division."]], "galois.FieldArray.compile": [[77, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.FieldArray.log": [[91, 3, 2, "p-base", "base", "A primitive element or elements $beta$ of the finite field that is the base of the logarithm. The default is None which uses primitive_element."]], "galois.FieldArray.primitive_root_of_unity": [[103, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.primitive_roots_of_unity": [[104, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.repr": [[106, 3, 2, "p-element_repr", "element_repr", "The field element representation to be set."]], "galois.FieldArray.repr_table": [[107, 3, 2, "p-element", "element", "An element to use as the exponent base in the power representation. The default is None which corresponds to primitive_element."], [107, 3, 2, "p-sort", "sort", "The sorting method for the table. The default is \"power\". Sorting by \"power\" will order the rows of the table by ascending powers of element. Sorting by any of the others will order the rows in lexicographical polynomial/vector order, which is equivalent to ascending order of the integer representation."]], "galois.FieldArray.row_reduce": [[108, 3, 2, "p-eye", "eye", "The location of the identity matrix $mathbf{I}$, either on the left or the right."], [108, 3, 2, "p-ncols", "ncols", "The number of columns to perform Gaussian elimination over. The default is None which represents the number of columns of the matrix."]], "galois.FieldArray.vector": [[114, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.GF": [[115, 3, 2, "p-characteristic", "characteristic", "The characteristic $p$ of the field $mathrm{GF}(p^m)$. The characteristic must be prime."], [115, 3, 2, "p-compile", "compile", "The ufunc calculation mode. This can be modified after class construction with the compile() method. See /basic-usage/compilation-modes for a further discussion."], [115, 3, 2, "p-degree", "degree", "The degree $m$ of the field $mathrm{GF}(p^m)$. The degree must be a positive integer."], [115, 3, 2, "p-irreducible_poly", "irreducible_poly", "Optionally specify an irreducible polynomial of degree $m$ over $mathrm{GF}(p)$ that defines the finite field arithmetic. The default is None which uses the Conway polynomial $C_{p,m}$, see conway_poly()."], [115, 3, 2, "p-order", "order", "The order $p^m$ of the field $mathrm{GF}(p^m)$. The order must be a prime power."], [115, 3, 2, "p-primitive_element", "primitive_element", "Optionally specify a primitive element of the field. This value is used when building the exponential and logarithm lookup tables and as the base of numpy.log. A primitive element is a generator of the multiplicative group of the field."], [115, 3, 2, "p-repr", "repr", "The field element representation. This can be modified after class construction with the repr() method. See /basic-usage/element-representation for a further discussion."], [115, 3, 2, "p-verify", "verify", "Indicates whether to verify that the user-provided irreducible polynomial is in fact irreducible and that the user-provided primitive element is in fact a generator of the multiplicative group. The default is True."]], "galois.GLFSR": [[118, 2, 1, "", "Taps", "Constructs a Galois LFSR from its taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."], [119, 2, 1, "", "__init__", "Constructs a Galois LFSR from its feedback polynomial $f(x)$."], [120, 2, 1, "", "__repr__", "A terse representation of the Galois LFSR."], [121, 2, 1, "", "__str__", "A formatted string of relevant properties of the Galois LFSR."], [122, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [123, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [124, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [125, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [126, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [127, 2, 1, "", "reset", "Resets the Galois LFSR state to the specified state."], [128, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [129, 2, 1, "", "step", "Produces the next steps output symbols."], [130, 4, 1, "", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$. The taps of the shift register define the linear recurrence relation."], [131, 2, 1, "", "to_fibonacci_lfsr", "Converts the Galois LFSR to a Fibonacci LFSR that produces the same output."]], "galois.GLFSR.Taps": [[118, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [118, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."]], "galois.GLFSR.__init__": [[119, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [119, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.GLFSR.reset": [[127, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.GLFSR.step": [[129, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Galois LFSR will step backwards."]], "galois.Poly": [[133, 2, 1, "", "Degrees", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its non-zero degrees."], [134, 2, 1, "", "Identity", "Constructs the polynomial $f(x) = x$ over $mathrm{GF}(p^m)$."], [135, 2, 1, "", "Int", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its integer representation."], [136, 2, 1, "", "One", "Constructs the polynomial $f(x) = 1$ over $mathrm{GF}(p^m)$."], [137, 2, 1, "", "Random", "Constructs a random polynomial over $mathrm{GF}(p^m)$ with degree $d$."], [138, 2, 1, "", "Roots", "Constructs a monic polynomial over $mathrm{GF}(p^m)$ from its roots."], [139, 2, 1, "", "Str", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its string representation."], [140, 2, 1, "", "Zero", "Constructs the polynomial $f(x) = 0$ over $mathrm{GF}(p^m)$."], [141, 2, 1, "", "__call__", "Evaluates the polynomial $f(x)$ at $x_0$ or the polynomial composition $f(g(x))$."], [142, 2, 1, "", "__eq__", "Determines if two polynomials are equal."], [143, 2, 1, "", "__init__", "Creates a polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [144, 2, 1, "", "__int__", "The integer representation of the polynomial."], [145, 2, 1, "", "__len__", "Returns the length of the coefficient array, which is equivalent to Poly.degree + 1."], [146, 2, 1, "", "__repr__", "A representation of the polynomial and the finite field it's over."], [147, 2, 1, "", "__str__", "The string representation of the polynomial, without specifying the finite field it's over."], [148, 2, 1, "", "coefficients", "Returns the polynomial coefficients in the order and size specified."], [149, 4, 1, "", "coeffs", "The coefficients of the polynomial in degree-descending order."], [150, 4, 1, "", "degree", "The degree of the polynomial. The degree of a polynomial is the highest degree with a non-zero coefficient."], [151, 4, 1, "", "degrees", "An array of the polynomial degrees in descending order."], [152, 2, 1, "", "derivative", "Computes the $k$-th formal derivative $frac{d^k}{dx^k} f(x)$ of the polynomial $f(x)$."], [153, 2, 1, "", "distinct_degree_factors", "Factors the monic, square-free polynomial $f(x)$ into a product of polynomials whose irreducible factors all have the same degree."], [154, 2, 1, "", "equal_degree_factors", "Factors the monic, square-free polynomial $f(x)$ of degree $rd$ into a product of $r$ irreducible factors with degree $d$."], [155, 2, 1, "", "factors", "Computes the irreducible factors of the non-constant, monic polynomial $f(x)$."], [156, 4, 1, "", "field", "The Array subclass for the finite field the coefficients are over."], [157, 2, 1, "", "is_conway", "Checks whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is the Conway polynomial $C_{p,m}(x)$."], [158, 2, 1, "", "is_conway_consistent", "Determines whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is consistent with smaller Conway polynomials $C_{p,n}(x)$ for all $n|m$."], [159, 2, 1, "", "is_irreducible", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(p^m)$ is irreducible."], [160, 4, 1, "", "is_monic", "Returns whether the polynomial is monic, meaning its highest-degree coefficient is one."], [161, 2, 1, "", "is_primitive", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is primitive."], [162, 2, 1, "", "is_square_free", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is square-free."], [163, 4, 1, "", "nonzero_coeffs", "The non-zero coefficients of the polynomial in degree-descending order."], [164, 4, 1, "", "nonzero_degrees", "An array of the polynomial degrees that have non-zero coefficients in descending order."], [165, 2, 1, "", "reverse", "Returns the $d$-th reversal $x^d f(frac{1}{x})$ of the polynomial $f(x)$ with degree $d$."], [166, 2, 1, "", "roots", "Calculates the roots $r$ of the polynomial $f(x)$, such that $f(r) = 0$."], [167, 2, 1, "", "square_free_factors", "Factors the monic polynomial $f(x)$ into a product of square-free polynomials."]], "galois.Poly.Degrees": [[133, 3, 2, "p-coeffs", "coeffs", "The corresponding non-zero polynomial coefficients. The default is None which corresponds to all ones."], [133, 3, 2, "p-degrees", "degrees", "The polynomial degrees with non-zero coefficients."], [133, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."]], "galois.Poly.Identity": [[134, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Int": [[135, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [135, 3, 2, "p-integer", "integer", "The integer representation of the polynomial $f(x)$."]], "galois.Poly.One": [[136, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Random": [[137, 3, 2, "p-degree", "degree", "The degree of the polynomial."], [137, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [137, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."]], "galois.Poly.Roots": [[138, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [138, 3, 2, "p-multiplicities", "multiplicities", "The corresponding root multiplicities. The default is None which corresponds to all ones."], [138, 3, 2, "p-roots", "roots", "The roots of the desired polynomial."]], "galois.Poly.Str": [[139, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [139, 3, 2, "p-string", "string", "The string representation of the polynomial $f(x)$."]], "galois.Poly.Zero": [[140, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.__call__": [[141, 3, 2, "p-at", "at", "A finite field scalar or array $x_0$ to evaluate the polynomial at or the polynomial $g(x)$ to evaluate the polynomial composition $f(g(x))$."], [141, 3, 2, "p-elementwise", "elementwise", "Indicates whether to evaluate $x_0$ element-wise. The default is True. If False (only valid for square matrices), the polynomial indeterminate $x$ is exponentiated using matrix powers (repeated matrix multiplication)."], [141, 3, 2, "p-field", "field", "The Galois field to evaluate the polynomial over. The default is None which represents the polynomial's current field, i.e. field."]], "galois.Poly.__eq__": [[142, 3, 2, "p-other", "other", "The polynomial to compare against."]], "galois.Poly.__init__": [[143, 3, 2, "p-coeffs", "coeffs", "The polynomial coefficients ${a_d, a_{d-1}, dots, a_1, a_0}$."], [143, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [143, 3, 2, "p-order", "order", "The interpretation of the coefficient degrees."]], "galois.Poly.coefficients": [[148, 3, 2, "p-order", "order", "The order of the coefficient degrees, either descending (default) or ascending."], [148, 3, 2, "p-size", "size", "The fixed size of the coefficient array. Zeros will be added for higher-order terms. This value must be at least degree + 1 or a ValueError will be raised. The default is None which corresponds to degree + 1."]], "galois.Poly.derivative": [[152, 3, 2, "p-k", "k", "The number of derivatives to compute. 1 corresponds to $p'(x)$, 2 corresponds to $p''(x)$, etc. The default is 1."]], "galois.Poly.equal_degree_factors": [[154, 3, 2, "p-degree", "degree", "The degree $d$ of each irreducible factor of $f(x)$."]], "galois.Poly.is_conway": [[157, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.is_conway_consistent": [[158, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.roots": [[166, 3, 2, "p-multiplicity", "multiplicity", "Optionally return the multiplicity of each root. The default is False which only returns the unique roots."]], "galois.ReedSolomon": [[169, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [170, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [171, 2, 1, "", "__init__", "Constructs a general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [172, 2, 1, "", "__repr__", "A terse representation of the Reed-Solomon code."], [173, 2, 1, "", "__str__", "A formatted string with relevant properties of the Reed-Solomon code."], [174, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$."], [175, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [176, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [177, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [178, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [179, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [180, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [181, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [182, 4, 1, "", "is_narrow_sense", "Indicates if the Reed-Solomon code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [183, 4, 1, "", "is_primitive", "Indicates if the Reed-Solomon code is primitive, meaning $n = q - 1$."], [184, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [185, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [186, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [187, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [188, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [189, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.ReedSolomon.__init__": [[171, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [171, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the Reed-Solomon code is narrow-sense."], [171, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q)$. Reed-Solomon codes achieve the Singleton bound, so $d = n - k + 1$."], [171, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2^m)$ where $2^{m - 1} le n < 2^m$. The default field will use matlab_primitive_poly(2, m) for the irreducible polynomial."], [171, 3, 2, "p-k", "k", "The message size $k$."], [171, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q - 1$, the Reed-Solomon code is primitive."], [171, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.ReedSolomon.decode": [[177, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [177, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [177, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.ReedSolomon.detect": [[178, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.ReedSolomon.encode": [[179, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [179, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.are_coprime": [[190, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.berlekamp_massey": [[191, 3, 2, "p-output", "output", "The output object type."], [191, 3, 2, "p-sequence", "sequence", "A linear recurrent sequence $y$ in $mathrm{GF}(p^m)$."]], "galois.carmichael_lambda": [[192, 3, 2, "p-n", "n", "A positive integer."]], "galois.conway_poly": [[193, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [193, 3, 2, "p-degree", "degree", "The degree $m$ of the Conway polynomial."], [193, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.crt": [[194, 3, 2, "p-moduli", "moduli", "The integer or polynomial moduli $m_i$."], [194, 3, 2, "p-remainders", "remainders", "The integer or polynomial remainders $a_i$."]], "galois.divisor_sigma": [[195, 3, 2, "p-k", "k", "The degree of the positive divisors. The default is 1 which corresponds to $sigma_1(n)$ which is the sum of positive divisors."], [195, 3, 2, "p-n", "n", "An integer."]], "galois.divisors": [[196, 3, 2, "p-n", "n", "An integer."]], "galois.egcd": [[197, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [197, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.euler_phi": [[198, 3, 2, "p-n", "n", "A positive integer."]], "galois.factors": [[199, 3, 2, "p-value", "value", "A positive integer $n$ or a non-constant, monic polynomial $f(x)$."]], "galois.fermat_primality_test": [[200, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is None which selects a random $a$."], [200, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [200, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose a new $a$. The default is 1."]], "galois.gcd": [[201, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [201, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.ilog": [[203, 3, 2, "p-b", "b", "The logarithm base $b$, must be at least 2."], [203, 3, 2, "p-n", "n", "A positive integer."]], "galois.intt": [[204, 3, 2, "p-X", "X", "The input sequence of integers $X$."], [204, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(X)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [204, 3, 2, "p-scaled", "scaled", "Indicates to scale the INTT output by $N$. The default is True. If True, $x = mathrm{INTT}(mathrm{NTT}(x))$. If False, $Nx = mathrm{INTT}(mathrm{NTT}(x))$."], [204, 3, 2, "p-size", "size", "The size $N$ of the INTT transform, must be at least the length of $X$. The default is None which corresponds to len(X). If size is larger than the length of $X$, $X$ is zero-padded."]], "galois.iroot": [[205, 3, 2, "p-k", "k", "The positive root $k$."], [205, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.irreducible_poly": [[206, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [206, 3, 2, "p-method", "method", "The search method for finding the irreducible polynomial."], [206, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [206, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.irreducible_polys": [[207, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [207, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [207, 3, 2, "p-reverse", "reverse", "Indicates to return the irreducible polynomials from lexicographically last to first. The default is False."], [207, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.is_composite": [[208, 3, 2, "p-n", "n", "An integer."]], "galois.is_cyclic": [[209, 3, 2, "p-n", "n", "A positive integer."]], "galois.is_perfect_power": [[210, 3, 2, "p-n", "n", "An integer."]], "galois.is_powersmooth": [[211, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [211, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime": [[212, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime_power": [[213, 3, 2, "p-n", "n", "An integer."]], "galois.is_primitive_element": [[214, 3, 2, "p-element", "element", "An element $g$ of $mathrm{GF}(q^m)$ is a polynomial over $mathrm{GF}(q)$ with degree less than $m$."], [214, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.is_primitive_root": [[215, 3, 2, "p-g", "g", "A positive integer."], [215, 3, 2, "p-n", "n", "positive integer."]], "galois.is_smooth": [[216, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [216, 3, 2, "p-n", "n", "An integer."]], "galois.is_square_free": [[217, 3, 2, "p-value", "value", "An integer $n$ or polynomial $f(x)$."]], "galois.isqrt": [[218, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.jacobi_symbol": [[219, 3, 2, "p-a", "a", "An integer."], [219, 3, 2, "p-n", "n", "An odd integer $n ge 3$."]], "galois.kronecker_symbol": [[220, 3, 2, "p-a", "a", "An integer."], [220, 3, 2, "p-n", "n", "An integer."]], "galois.kth_prime": [[221, 3, 2, "p-k", "k", "The prime index (1-indexed)."]], "galois.lagrange_poly": [[222, 3, 2, "p-x", "x", "An array of $x_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must have no duplicate entries."], [222, 3, 2, "p-y", "y", "An array of $y_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must be the same size as $x$."]], "galois.lcm": [[223, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.legendre_symbol": [[224, 3, 2, "p-a", "a", "An integer."], [224, 3, 2, "p-p", "p", "An odd prime $p ge 3$."]], "galois.matlab_primitive_poly": [[225, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [225, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."]], "galois.mersenne_exponents": [[226, 3, 2, "p-n", "n", "The max exponent of 2. The default is None which returns all known Mersenne exponents."]], "galois.mersenne_primes": [[227, 3, 2, "p-n", "n", "The max power of 2. The default is None which returns all known Mersenne exponents."]], "galois.miller_rabin_primality_test": [[228, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is 2."], [228, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [228, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose consecutive primes for $a$. The default is 1."]], "galois.next_prime": [[229, 3, 2, "p-n", "n", "An integer."]], "galois.ntt": [[230, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(x)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [230, 3, 2, "p-size", "size", "The size $N$ of the NTT transform, must be at least the length of $x$. The default is None which corresponds to len(x). If size is larger than the length of $x$, $x$ is zero-padded."], [230, 3, 2, "p-x", "x", "The input sequence of integers $x$."]], "galois.perfect_power": [[231, 3, 2, "p-n", "n", "An integer."]], "galois.pollard_p1": [[232, 3, 2, "p-B", "B", "The smoothness bound $B > 2$."], [232, 3, 2, "p-B2", "B2", "The smoothness bound $B_2$ for the optional second step of the algorithm. The default is None which will not perform the second step."], [232, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.pollard_rho": [[233, 3, 2, "p-c", "c", "The constant offset in the function $f(x) = x^2 + ctextrm{mod}n$. The default is 1. A requirement of the algorithm is that $c notin {0, -2}$."], [233, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.prev_prime": [[234, 3, 2, "p-n", "n", "An integer $n ge 2$."]], "galois.primes": [[235, 3, 2, "p-n", "n", "An integer."]], "galois.primitive_element": [[236, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."], [236, 3, 2, "p-method", "method", "The search method for finding the primitive element."]], "galois.primitive_elements": [[237, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.primitive_poly": [[238, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [238, 3, 2, "p-method", "method", "The search method for finding the primitive polynomial."], [238, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [238, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_polys": [[239, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [239, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [239, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive polynomials from lexicographically last to first. The default is False."], [239, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_root": [[240, 3, 2, "p-method", "method", "The search method for finding the primitive root."], [240, 3, 2, "p-n", "n", "A positive integer."], [240, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root."], [240, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.primitive_roots": [[241, 3, 2, "p-n", "n", "A positive integer."], [241, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive roots from largest to smallest. The default is False."], [241, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root. The default is 1."], [241, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.prod": [[243, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.random_prime": [[244, 3, 2, "p-bits", "bits", "The number of bits in the prime $p$."], [244, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed."]], "galois.set_printoptions": [[245, 3, 2, "p-coeffs", "coeffs", "The order in which to print the coefficients, either in descending degrees (default) or ascending degrees."]], "galois.totatives": [[246, 3, 2, "p-n", "n", "A positive integer."]], "galois.trial_division": [[247, 3, 2, "p-B", "B", "The max divisor in the trial division. The default is None which corresponds to $B = sqrt{n}$. If $B > sqrt{n}$, the algorithm will only search up to $sqrt{n}$, since a prime factor of $n$ cannot be larger than $sqrt{n}$."], [247, 3, 2, "p-n", "n", "A positive integer."]], "galois.typing": [[248, 6, 1, "", "ArrayLike", "A Union representing objects that can be coerced into a Galois field array."], [249, 6, 1, "", "DTypeLike", "A Union representing objects that can be coerced into a NumPy data type."], [250, 6, 1, "", "ElementLike", "A Union representing objects that can be coerced into a Galois field element."], [251, 6, 1, "", "IterableLike", "A Union representing iterable objects that can be coerced into a Galois field array."], [252, 6, 1, "", "PolyLike", "A Union representing objects that can be coerced into a polynomial."], [253, 6, 1, "", "ShapeLike", "A Union representing objects that can be coerced into a NumPy shape tuple."]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:parameter", "4": "py:property", "5": "py:function", "6": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "parameter", "Python parameter"], "4": ["py", "property", "Python property"], "5": ["py", "function", "Python function"], "6": ["py", "data", "Python data"]}, "titleterms": {"arrai": [0, 254, 255, 256, 266], "galoi": [0, 260, 277], "field": [0, 255, 269, 270, 276, 277], "primit": [0, 276, 277], "element": [0, 61, 116, 258, 259, 260, 266, 276, 277], "polynomi": [0, 22, 45, 117, 168, 256, 258, 259, 260, 276], "see": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "also": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "irreduc": [0, 260, 276], "interpol": 0, "forward": 0, "error": 0, "correct": 0, "linear": [0, 61, 116, 254, 269, 270], "sequenc": 0, "transform": 0, "number": 0, "theori": 0, "divis": [0, 254, 260, 276, 277], "congruenc": 0, "root": [0, 254, 277], "integ": [0, 258], "arithmet": [0, 61, 116, 254, 260, 266, 276, 277], "factor": [0, 132, 260], "prime": [0, 270, 277], "composit": [0, 260], "specif": 0, "algorithm": 0, "gener": [0, 264], "primal": 0, "test": [0, 264], "configur": [0, 263, 264], "abstract": [1, 61], "constructor": [1, 22, 45, 61, 116, 117, 132, 168, 255, 259], "method": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 254, 255, 259], "properti": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 255, 256, 259], "slower": [18, 91, 106, 157, 158, 193, 258], "perform": [18, 91, 106, 157, 158, 193, 206, 258, 266, 269, 270], "shorten": [22, 31, 32, 33, 168, 177, 178, 179], "code": [22, 31, 32, 33, 168, 177, 178, 179, 263, 264], "string": [22, 45, 61, 116, 117, 132, 168], "represent": [22, 45, 61, 116, 117, 132, 168, 258, 259, 266], "attribut": [22, 61, 116, 132, 168], "matric": [22, 168], "import": [25, 171, 269], "note": 31, "state": [45, 117], "convers": [61, 116], "compil": [61, 116, 257], "algebra": [61, 116, 254, 269, 270], "info": [116, 218, 276, 277], "special": [132, 259, 260], "coeffici": [132, 256, 259], "tip": [146, 147, 258], "why": [157, 158, 159, 161, 162], "i": [157, 158, 159, 161, 162, 256], "thi": [157, 158, 159, 161, 162], "faster": 206, "warn": 225, "standard": [254, 260], "addit": [254, 260, 276, 277], "x": [254, 260], "y": 254, "np": 254, "add": 254, "invers": [254, 260, 276, 277], "neg": 254, "subtract": [254, 260, 276, 277], "multipl": [254, 260, 276, 277], "multipli": 254, "scalar": [254, 256, 260], "4": [254, 274], "1": [254, 272, 274], "reciproc": 254, "divid": 254, "remaind": [254, 260], "divmod": [254, 260], "exponenti": [254, 260], "3": [254, 260, 274], "power": [254, 258], "squar": [254, 260], "sqrt": 254, "logarithm": 254, "log": 254, "ufunc": [254, 257], "reduc": 254, "accumul": 254, "reduceat": 254, "outer": 254, "advanc": 254, "convolut": 254, "convolv": 254, "fft": 254, "ifft": 254, "dot": 254, "product": 254, "b": 254, "vector": [254, 258, 264], "vdot": 254, "inner": 254, "matrix": [254, 260], "A": [254, 276, 277], "matmul": 254, "linalg": 254, "matrix_pow": 254, "determin": 254, "det": 254, "rank": 254, "matrix_rank": 254, "trace": 254, "solv": 254, "system": 254, "equat": 254, "inv": 254, "class": [255, 256], "subclass": [255, 266], "fieldarrai": [255, 266], "speed": 255, "up": 255, "creation": [255, 256], "larg": 255, "finit": 255, "singleton": 255, "instanc": [255, 266], "creat": [256, 259, 266, 268], "new": 256, "like": 256, "object": 256, "numpi": [256, 258], "view": 256, "an": 256, "exist": 256, "classmethod": 256, "constant": 256, "There": 256, "empti": 256, "equival": 256, "order": [256, 259], "random": 256, "data": 256, "type": 256, "valid": 256, "default": 256, "chang": [256, 266, 271, 272, 273, 274], "function": 256, "mode": 257, "lookup": [257, 269, 270], "tabl": [257, 269, 270], "explicit": [257, 269, 270], "calcul": [257, 269, 270], "python": 257, "recompil": 257, "set": 258, "print": 258, "option": 258, "comparison": 258, "us": 259, "set_printopt": 259, "displai": 259, "degre": 259, "ascend": 259, "altern": 259, "f": 260, "g": 260, "modular": 260, "pow": 260, "123456789": 260, "evalu": 260, "wise": 260, "elementwis": 260, "fals": 260, "greatest": 260, "common": 260, "denomin": 260, "gcd": 260, "extend": 260, "egcd": 260, "document": [261, 271], "instal": [261, 262, 263, 264, 266, 268], "build": 261, "doc": 261, "serv": 261, "from": [262, 263, 264], "pypi": 262, "github": 262, "edit": 262, "local": 262, "folder": 262, "dev": 262, "depend": [262, 268], "linter": 263, "run": [263, 264], "command": [263, 264], "line": [263, 264], "v": [263, 264], "unit": 264, "sage": 264, "sympi": 264, "index": 265, "get": 266, "start": 266, "packag": 266, "two": 266, "disclaim": 267, "featur": 267, "roadmap": 267, "acknowledg": 267, "citat": 267, "benchmark": 268, "compar": 268, "previou": 268, "binari": 269, "extens": [269, 276], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274], "0": [271, 272, 273, 274], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274], "15": 271, "16": 271, "17": 271, "18": 271, "19": 271, "20": 271, "21": 271, "22": 271, "23": 271, "24": 271, "25": 271, "26": 271, "27": 271, "28": 271, "29": 271, "30": 271, "31": 271, "32": 271, "33": 271, "2": [272, 273, 274], "5": 274, "version": 275, "alpha": 275, "releas": 275, "beta": 275, "intro": [276, 277], "other": [276, 277], "non": [276, 277], "\u00e9varist": 277, "mod": 277, "p": 277}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx_last_updated_by_git": 1, "sphinx": 57}, "alltitles": {"Arrays": [[0, "arrays"]], "Galois fields": [[0, "galois-fields"]], "Primitive elements": [[0, "primitive-elements"], [276, "primitive-elements"], [277, "primitive-elements"]], "Polynomials": [[0, "polynomials"], [22, "polynomials"], [45, "polynomials"], [117, "polynomials"], [168, "polynomials"], [259, "polynomials"]], "See also": [[0, null], [25, null], [45, null], [47, null], [89, null], [96, null], [110, null], [117, null], [119, null], [157, null], [158, null], [159, null], [161, null], [171, null], [190, null], [192, null], [193, null], [195, null], [196, null], [197, null], [198, null], [200, null], [201, null], [202, null], [203, null], [204, null], [205, null], [206, null], [207, null], [208, null], [209, null], [210, null], [211, null], [212, null], [213, null], [214, null], [215, null], [216, null], [217, null], [218, null], [219, null], [220, null], [221, null], [223, null], [224, null], [225, null], [226, null], [227, null], [228, null], [229, null], [230, null], [231, null], [232, null], [233, null], [234, null], [235, null], [236, null], [237, null], [238, null], [239, null], [240, null], [241, null], [242, null], [243, null], [244, null], [245, null], [246, null], [247, null]], "Irreducible polynomials": [[0, "irreducible-polynomials"]], "Primitive polynomials": [[0, "primitive-polynomials"]], "Interpolating polynomials": [[0, "interpolating-polynomials"]], "Forward error correction": [[0, "forward-error-correction"]], "Linear sequences": [[0, "linear-sequences"]], "Transforms": [[0, "transforms"]], "Number theory": [[0, "number-theory"]], "Divisibility": [[0, "divisibility"]], "Congruences": [[0, "congruences"]], "Primitive roots": [[0, "primitive-roots"]], "Integer arithmetic": [[0, "integer-arithmetic"]], "Factorization": [[0, "factorization"]], "Prime factorization": [[0, "prime-factorization"]], "Composite factorization": [[0, "composite-factorization"]], "Specific factorization algorithms": [[0, "specific-factorization-algorithms"]], "Primes": [[0, "primes"]], "Prime number generation": [[0, "prime-number-generation"]], "Primality tests": [[0, "primality-tests"]], "Specific primality tests": [[0, "specific-primality-tests"]], "Configuration": [[0, "configuration"], [263, "configuration"], [264, "configuration"]], "Abstract": [[1, null], [61, null]], "Constructors": [[1, "constructors"], [22, "constructors"], [45, "constructors"], [61, "constructors"], [116, "constructors"], [117, "constructors"], [132, "constructors"], [168, "constructors"], [255, "constructors"]], "Methods": [[1, "methods"], [22, "methods"], [45, "methods"], [61, "methods"], [116, "methods"], [117, "methods"], [132, "methods"], [168, "methods"], [255, "methods"], [259, "methods"]], "Properties": [[1, "properties"], [22, "properties"], [45, "properties"], [61, "properties"], [116, "properties"], [117, "properties"], [132, "properties"], [168, "properties"], [259, "properties"]], "Slower performance": [[18, null], [91, null], [106, null], [157, null], [158, null], [193, null], [258, null]], "Shortened codes": [[22, null], [31, null], [32, null], [33, null], [168, null], [177, null], [178, null], [179, null]], "String representation": [[22, "string-representation"], [45, "string-representation"], [61, "string-representation"], [116, "string-representation"], [117, "string-representation"], [132, "string-representation"], [168, "string-representation"]], "Attributes": [[22, "attributes"], [61, "attributes"], [116, "attributes"], [132, "attributes"], [168, "attributes"]], "Matrices": [[22, "matrices"], [168, "matrices"]], "Important": [[25, null], [171, null], [269, null]], "Note": [[31, null]], "State": [[45, "state"], [117, "state"]], "Conversions": [[61, "conversions"], [116, "conversions"]], "Elements": [[61, "elements"], [116, "elements"], [276, "elements"], [277, "elements"]], "Element representation": [[61, "element-representation"], [116, "element-representation"], [259, "element-representation"]], "Arithmetic compilation": [[61, "arithmetic-compilation"], [116, "arithmetic-compilation"]], "Linear algebra": [[61, "linear-algebra"], [116, "linear-algebra"], [254, "linear-algebra"]], "Info": [[116, null], [218, null], [276, null], [277, null]], "Special methods": [[132, "special-methods"]], "Factorization methods": [[132, "factorization-methods"]], "Coefficients": [[132, "coefficients"]], "Tip": [[146, null], [147, null], [258, null]], "Why is this a method and not a property?": [[157, null], [158, null], [159, null], [161, null], [162, null]], "Faster performance": [[206, null]], "Warning": [[225, null]], "Array Arithmetic": [[254, "array-arithmetic"]], "Standard arithmetic": [[254, "standard-arithmetic"], [260, "standard-arithmetic"]], "Addition: x + y == np.add(x, y)": [[254, null]], "Additive inverse: -x == np.negative(x)": [[254, null]], "Subtraction: x - y == np.subtract(x, y)": [[254, null]], "Multiplication: x * y == np.multiply(x, y)": [[254, null]], "Scalar multiplication: x * 4 == np.multiply(x, 4)": [[254, null]], "Multiplicative inverse: y ** -1 == np.reciprocal(y)": [[254, null]], "Division: x / y == x // y == np.divide(x, y)": [[254, null]], "Remainder: x % y == np.remainder(x, y)": [[254, null]], "Divmod: divmod(x, y) == np.divmod(x, y)": [[254, null]], "Exponentiation: x ** 3 == np.power(x, 3)": [[254, null]], "Square root: np.sqrt(x)": [[254, null]], "Logarithm: np.log(x) or x.log()": [[254, null]], "Ufunc methods": [[254, "ufunc-methods"]], "reduce()": [[254, null]], "accumulate()": [[254, null]], "reduceat()": [[254, null]], "outer()": [[254, null]], "at()": [[254, null]], "Advanced arithmetic": [[254, "advanced-arithmetic"]], "Convolution: np.convolve(x, y)": [[254, null]], "FFT: np.fft.fft(x)": [[254, null]], "Inverse FFT: np.fft.ifft(X)": [[254, null]], "Dot product: np.dot(a, b)": [[254, null]], "Vector dot product: np.vdot(a, b)": [[254, null]], "Inner product: np.inner(a, b)": [[254, null]], "Outer product: np.outer(a, b)": [[254, null]], "Matrix multiplication: A @ B == np.matmul(A, B)": [[254, null]], "Matrix exponentiation: np.linalg.matrix_power(A, 3)": [[254, null]], "Matrix determinant: np.linalg.det(A)": [[254, null]], "Matrix rank: np.linalg.matrix_rank(A)": [[254, null]], "Matrix trace: np.trace(A)": [[254, null]], "Solve a system of equations: np.linalg.solve(A, b)": [[254, null]], "Matrix inverse: np.linalg.inv(A)": [[254, null]], "Array Classes": [[255, "array-classes"]], "Array subclasses": [[255, "array-subclasses"]], "FieldArray subclasses": [[255, "fieldarray-subclasses"]], "Speed up creation of large finite field classes": [[255, null]], "Class singletons": [[255, "class-singletons"]], "Methods and properties": [[255, "methods-and-properties"]], "FieldArray instances": [[255, "fieldarray-instances"]], "Array Creation": [[256, "array-creation"]], "Create a scalar": [[256, "create-a-scalar"]], "Create a new array": [[256, "create-a-new-array"]], "Array-like objects": [[256, "array-like-objects"]], "Polynomial coefficients": [[256, "polynomial-coefficients"]], "NumPy array": [[256, "numpy-array"]], "View an existing array": [[256, "view-an-existing-array"]], "Classmethods": [[256, "classmethods"]], "Constant arrays": [[256, "constant-arrays"]], "There is no numpy.empty() equivalent.": [[256, null]], "Ordered arrays": [[256, "ordered-arrays"]], "Random arrays": [[256, "random-arrays"]], "Class properties": [[256, "class-properties"]], "Data types": [[256, "data-types"]], "Valid data types": [[256, "valid-data-types"]], "Default data type": [[256, "default-data-type"]], "Changing data types": [[256, "changing-data-types"]], "NumPy functions": [[256, "numpy-functions"]], "Compilation Modes": [[257, "compilation-modes"]], "Lookup tables": [[257, "lookup-tables"]], "Explicit calculation": [[257, "explicit-calculation"]], "Python explicit calculation": [[257, "python-explicit-calculation"]], "Recompile the ufuncs": [[257, "recompile-the-ufuncs"]], "Element Representation": [[258, "element-representation"]], "Set the element representation": [[258, "set-the-element-representation"]], "Integer representation": [[258, "integer-representation"]], "Polynomial representation": [[258, "polynomial-representation"]], "Power representation": [[258, "power-representation"]], "Vector representation": [[258, "vector-representation"]], "NumPy print options": [[258, "numpy-print-options"]], "Representation comparisons": [[258, "representation-comparisons"]], "Create a polynomial": [[259, "create-a-polynomial"]], "Use set_printoptions() to display the polynomial coefficients in degree-ascending order.": [[259, null]], "Alternate constructors": [[259, "alternate-constructors"]], "Special polynomials": [[259, "special-polynomials"]], "Polynomial Arithmetic": [[260, "polynomial-arithmetic"]], "Addition: f + g": [[260, null]], "Additive inverse: -f": [[260, null]], "Subtraction: f - g": [[260, null]], "Multiplication: f * g": [[260, null]], "Scalar multiplication: f * 3": [[260, null]], "Division: f // g": [[260, null]], "Remainder: f % g": [[260, null]], "Divmod: divmod(f, g)": [[260, null]], "Exponentiation: f ** 3": [[260, null]], "Modular exponentiation: pow(f, 123456789, g)": [[260, null]], "Evaluation": [[260, "evaluation"]], "Evaluation (element-wise): f(x) or f(X)": [[260, null]], "Evaluation (square matrix): f(X, elementwise=False)": [[260, null]], "Composition: f(g)": [[260, null]], "Special arithmetic": [[260, "special-arithmetic"]], "Greatest common denominator: galois.gcd(f, g)": [[260, null]], "Extended greatest common denominator: galois.egcd(f, g)": [[260, null]], "Factor into irreducible polynomials: galois.factors(f) == f.factors()": [[260, null]], "Documentation": [[261, "documentation"], [271, "documentation"]], "Install": [[261, "install"], [263, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Installation": [[262, "installation"]], "Install from PyPI": [[262, "install-from-pypi"]], "Install from GitHub": [[262, "install-from-github"]], "Editable install from local folder": [[262, "editable-install-from-local-folder"]], "Install the dev dependencies": [[262, "install-the-dev-dependencies"]], "Linter": [[263, "linter"]], "Run from the command line": [[263, "run-from-the-command-line"], [264, "run-from-the-command-line"]], "Run from VS Code": [[263, "run-from-vs-code"], [264, "run-from-vs-code"]], "Unit Tests": [[264, "unit-tests"]], "Test vectors": [[264, "test-vectors"]], "Install Sage": [[264, "install-sage"]], "Install SymPy": [[264, "install-sympy"]], "Generate test vectors": [[264, "generate-test-vectors"]], "Index": [[265, "index"]], "Getting Started": [[266, "getting-started"]], "Install the package": [[266, "install-the-package"]], "Create a FieldArray subclass": [[266, "create-a-fieldarray-subclass"]], "Create two FieldArray instances": [[266, "create-two-fieldarray-instances"]], "Change the element representation": [[266, "change-the-element-representation"]], "Perform array arithmetic": [[266, "perform-array-arithmetic"]], "Disclaimer": [[267, null]], "Features": [[267, "features"]], "Roadmap": [[267, "roadmap"]], "Acknowledgements": [[267, "acknowledgements"]], "Citation": [[267, "citation"]], "Benchmarks": [[268, "benchmarks"]], "Install dependencies": [[268, "install-dependencies"]], "Create a benchmark": [[268, "create-a-benchmark"]], "Compare with a previous benchmark": [[268, "compare-with-a-previous-benchmark"]], "Binary Extension Fields": [[269, "binary-extension-fields"]], "Lookup table performance": [[269, "lookup-table-performance"], [270, "lookup-table-performance"]], "Explicit calculation performance": [[269, "explicit-calculation-performance"], [270, "explicit-calculation-performance"]], "Linear algebra performance": [[269, "linear-algebra-performance"], [270, "linear-algebra-performance"]], "Prime Fields": [[270, "prime-fields"]], "Runtime floor": [[270, "runtime-floor"]], "v0.0": [[271, "v0-0"]], "v0.0.14": [[271, "v0-0-14"]], "Breaking changes": [[271, "breaking-changes"], [271, "id1"], [271, "id6"], [271, "id9"], [271, "id12"], [271, "id15"], [271, "id20"], [271, "id25"], [271, "id28"], [271, "id31"], [271, "id34"], [271, "id39"], [271, "id44"], [271, "id47"], [271, "id50"], [273, "breaking-changes"], [274, "breaking-changes"]], "Changes": [[271, "changes"], [271, "id2"], [271, "id4"], [271, "id7"], [271, "id10"], [271, "id13"], [271, "id16"], [271, "id18"], [271, "id21"], [271, "id23"], [271, "id26"], [271, "id29"], [271, "id32"], [271, "id35"], [271, "id37"], [271, "id40"], [271, "id42"], [271, "id45"], [271, "id48"], [271, "id51"], [272, "changes"], [272, "id1"], [272, "id3"], [273, "changes"], [274, "changes"], [274, "id1"], [274, "id3"], [274, "id5"], [274, "id7"], [274, "id9"]], "Contributors": [[271, "contributors"], [271, "id3"], [271, "id5"], [271, "id8"], [271, "id11"], [271, "id14"], [271, "id17"], [271, "id19"], [271, "id22"], [271, "id24"], [271, "id27"], [271, "id30"], [271, "id33"], [271, "id36"], [271, "id38"], [271, "id41"], [271, "id43"], [271, "id46"], [271, "id49"], [271, "id52"], [272, "contributors"], [272, "id2"], [272, "id4"], [273, "contributors"], [274, "contributors"], [274, "id2"], [274, "id4"], [274, "id6"], [274, "id8"], [274, "id10"]], "v0.0.15": [[271, "v0-0-15"]], "v0.0.16": [[271, "v0-0-16"]], "v0.0.17": [[271, "v0-0-17"]], "v0.0.18": [[271, "v0-0-18"]], "v0.0.19": [[271, "v0-0-19"]], "v0.0.20": [[271, "v0-0-20"]], "v0.0.21": [[271, "v0-0-21"]], "v0.0.22": [[271, "v0-0-22"]], "v0.0.23": [[271, "v0-0-23"]], "v0.0.24": [[271, "v0-0-24"]], "v0.0.25": [[271, "v0-0-25"]], "v0.0.26": [[271, "v0-0-26"]], "v0.0.27": [[271, "v0-0-27"]], "v0.0.28": [[271, "v0-0-28"]], "v0.0.29": [[271, "v0-0-29"]], "v0.0.30": [[271, "v0-0-30"]], "v0.0.31": [[271, "v0-0-31"]], "v0.0.32": [[271, "v0-0-32"]], "v0.0.33": [[271, "v0-0-33"]], "v0.1": [[272, "v0-1"]], "v0.1.0": [[272, "v0-1-0"]], "v0.1.1": [[272, "v0-1-1"]], "v0.1.2": [[272, "v0-1-2"]], "v0.2": [[273, "v0-2"]], "v0.2.0": [[273, "v0-2-0"]], "v0.3": [[274, "v0-3"]], "v0.3.0": [[274, "v0-3-0"]], "v0.3.1": [[274, "v0-3-1"]], "v0.3.2": [[274, "v0-3-2"]], "v0.3.3": [[274, "v0-3-3"]], "v0.3.4": [[274, "v0-3-4"]], "v0.3.5": [[274, "v0-3-5"]], "Versioning": [[275, "versioning"]], "Alpha releases": [[275, "alpha-releases"]], "Beta releases": [[275, "beta-releases"]], "Intro to Extension Fields": [[276, "intro-to-extension-fields"]], "Extension field": [[276, "extension-field"]], "Irreducible polynomial": [[276, "irreducible-polynomial"]], "Arithmetic": [[276, "arithmetic"], [277, "arithmetic"]], "Addition": [[276, "addition"], [277, "addition"]], "Subtraction": [[276, "subtraction"], [277, "subtraction"]], "Multiplication": [[276, "multiplication"], [277, "multiplication"]], "Multiplicative inverse": [[276, "multiplicative-inverse"], [277, "multiplicative-inverse"]], "Division": [[276, "division"], [277, "division"]], "A primitive element": [[276, "a-primitive-element"], [277, "a-primitive-element"]], "Other primitive elements": [[276, "other-primitive-elements"], [277, "other-primitive-elements"]], "Non-primitive elements": [[276, "non-primitive-elements"], [277, "non-primitive-elements"]], "Intro to Prime Fields": [[277, "intro-to-prime-fields"]], "\u00c9variste Galois": [[277, null]], "Prime field": [[277, "prime-field"]], "Primitive roots mod p": [[277, "primitive-roots-mod-p"]]}, "indexentries": {"galois": [[0, "module-galois"]], "module": [[0, "module-galois"]]}, "docurls": ["api/", "api/galois.Array/", "api/galois.Array.Identity/", "api/galois.Array.Ones/", "api/galois.Array.Random/", "api/galois.Array.Range/", "api/galois.Array.Zeros/", "api/galois.Array.characteristic/", "api/galois.Array.compile/", "api/galois.Array.default_ufunc_mode/", "api/galois.Array.degree/", "api/galois.Array.dtypes/", "api/galois.Array.element_repr/", "api/galois.Array.elements/", "api/galois.Array.irreducible_poly/", "api/galois.Array.name/", "api/galois.Array.order/", "api/galois.Array.primitive_element/", "api/galois.Array.repr/", "api/galois.Array.ufunc_mode/", "api/galois.Array.ufunc_modes/", "api/galois.Array.units/", "api/galois.BCH/", "api/galois.BCH.G/", "api/galois.BCH.H/", "api/galois.BCH.__init__/", "api/galois.BCH.__repr__/", "api/galois.BCH.__str__/", "api/galois.BCH.alpha/", "api/galois.BCH.c/", "api/galois.BCH.d/", "api/galois.BCH.decode/", "api/galois.BCH.detect/", "api/galois.BCH.encode/", "api/galois.BCH.extension_field/", "api/galois.BCH.field/", "api/galois.BCH.generator_poly/", "api/galois.BCH.is_narrow_sense/", "api/galois.BCH.is_primitive/", "api/galois.BCH.is_systematic/", "api/galois.BCH.k/", "api/galois.BCH.n/", "api/galois.BCH.parity_check_poly/", "api/galois.BCH.roots/", "api/galois.BCH.t/", "api/galois.FLFSR/", "api/galois.FLFSR.Taps/", "api/galois.FLFSR.__init__/", "api/galois.FLFSR.__repr__/", "api/galois.FLFSR.__str__/", "api/galois.FLFSR.characteristic_poly/", "api/galois.FLFSR.feedback_poly/", "api/galois.FLFSR.field/", "api/galois.FLFSR.initial_state/", "api/galois.FLFSR.order/", "api/galois.FLFSR.reset/", "api/galois.FLFSR.state/", "api/galois.FLFSR.step/", "api/galois.FLFSR.taps/", "api/galois.FLFSR.to_galois_lfsr/", "api/galois.Field/", "api/galois.FieldArray/", "api/galois.FieldArray.Identity/", "api/galois.FieldArray.Ones/", "api/galois.FieldArray.Random/", "api/galois.FieldArray.Range/", "api/galois.FieldArray.Vandermonde/", "api/galois.FieldArray.Vector/", "api/galois.FieldArray.Zeros/", "api/galois.FieldArray.__init__/", "api/galois.FieldArray.__repr__/", "api/galois.FieldArray.__str__/", "api/galois.FieldArray.additive_order/", "api/galois.FieldArray.arithmetic_table/", "api/galois.FieldArray.characteristic/", "api/galois.FieldArray.characteristic_poly/", "api/galois.FieldArray.column_space/", "api/galois.FieldArray.compile/", "api/galois.FieldArray.default_ufunc_mode/", "api/galois.FieldArray.degree/", "api/galois.FieldArray.dtypes/", "api/galois.FieldArray.element_repr/", "api/galois.FieldArray.elements/", "api/galois.FieldArray.field_norm/", "api/galois.FieldArray.field_trace/", "api/galois.FieldArray.irreducible_poly/", "api/galois.FieldArray.is_extension_field/", "api/galois.FieldArray.is_prime_field/", "api/galois.FieldArray.is_primitive_poly/", "api/galois.FieldArray.is_square/", "api/galois.FieldArray.left_null_space/", "api/galois.FieldArray.log/", "api/galois.FieldArray.lu_decompose/", "api/galois.FieldArray.minimal_poly/", "api/galois.FieldArray.multiplicative_order/", "api/galois.FieldArray.name/", "api/galois.FieldArray.non_squares/", "api/galois.FieldArray.null_space/", "api/galois.FieldArray.order/", "api/galois.FieldArray.plu_decompose/", "api/galois.FieldArray.prime_subfield/", "api/galois.FieldArray.primitive_element/", "api/galois.FieldArray.primitive_elements/", "api/galois.FieldArray.primitive_root_of_unity/", "api/galois.FieldArray.primitive_roots_of_unity/", "api/galois.FieldArray.properties/", "api/galois.FieldArray.repr/", "api/galois.FieldArray.repr_table/", "api/galois.FieldArray.row_reduce/", "api/galois.FieldArray.row_space/", "api/galois.FieldArray.squares/", "api/galois.FieldArray.ufunc_mode/", "api/galois.FieldArray.ufunc_modes/", "api/galois.FieldArray.units/", "api/galois.FieldArray.vector/", "api/galois.GF/", "api/galois.GF2/", "api/galois.GLFSR/", "api/galois.GLFSR.Taps/", "api/galois.GLFSR.__init__/", "api/galois.GLFSR.__repr__/", "api/galois.GLFSR.__str__/", "api/galois.GLFSR.characteristic_poly/", "api/galois.GLFSR.feedback_poly/", "api/galois.GLFSR.field/", "api/galois.GLFSR.initial_state/", "api/galois.GLFSR.order/", "api/galois.GLFSR.reset/", "api/galois.GLFSR.state/", "api/galois.GLFSR.step/", "api/galois.GLFSR.taps/", "api/galois.GLFSR.to_fibonacci_lfsr/", "api/galois.Poly/", "api/galois.Poly.Degrees/", "api/galois.Poly.Identity/", "api/galois.Poly.Int/", "api/galois.Poly.One/", "api/galois.Poly.Random/", "api/galois.Poly.Roots/", "api/galois.Poly.Str/", "api/galois.Poly.Zero/", "api/galois.Poly.__call__/", "api/galois.Poly.__eq__/", "api/galois.Poly.__init__/", "api/galois.Poly.__int__/", "api/galois.Poly.__len__/", "api/galois.Poly.__repr__/", "api/galois.Poly.__str__/", "api/galois.Poly.coefficients/", "api/galois.Poly.coeffs/", "api/galois.Poly.degree/", "api/galois.Poly.degrees/", "api/galois.Poly.derivative/", "api/galois.Poly.distinct_degree_factors/", "api/galois.Poly.equal_degree_factors/", "api/galois.Poly.factors/", "api/galois.Poly.field/", "api/galois.Poly.is_conway/", "api/galois.Poly.is_conway_consistent/", "api/galois.Poly.is_irreducible/", "api/galois.Poly.is_monic/", "api/galois.Poly.is_primitive/", "api/galois.Poly.is_square_free/", "api/galois.Poly.nonzero_coeffs/", "api/galois.Poly.nonzero_degrees/", "api/galois.Poly.reverse/", "api/galois.Poly.roots/", "api/galois.Poly.square_free_factors/", "api/galois.ReedSolomon/", "api/galois.ReedSolomon.G/", "api/galois.ReedSolomon.H/", "api/galois.ReedSolomon.__init__/", "api/galois.ReedSolomon.__repr__/", "api/galois.ReedSolomon.__str__/", "api/galois.ReedSolomon.alpha/", "api/galois.ReedSolomon.c/", "api/galois.ReedSolomon.d/", "api/galois.ReedSolomon.decode/", "api/galois.ReedSolomon.detect/", "api/galois.ReedSolomon.encode/", "api/galois.ReedSolomon.field/", "api/galois.ReedSolomon.generator_poly/", "api/galois.ReedSolomon.is_narrow_sense/", "api/galois.ReedSolomon.is_primitive/", "api/galois.ReedSolomon.is_systematic/", "api/galois.ReedSolomon.k/", "api/galois.ReedSolomon.n/", "api/galois.ReedSolomon.parity_check_poly/", "api/galois.ReedSolomon.roots/", "api/galois.ReedSolomon.t/", "api/galois.are_coprime/", "api/galois.berlekamp_massey/", "api/galois.carmichael_lambda/", "api/galois.conway_poly/", "api/galois.crt/", "api/galois.divisor_sigma/", "api/galois.divisors/", "api/galois.egcd/", "api/galois.euler_phi/", "api/galois.factors/", "api/galois.fermat_primality_test/", "api/galois.gcd/", "api/galois.get_printoptions/", "api/galois.ilog/", "api/galois.intt/", "api/galois.iroot/", "api/galois.irreducible_poly/", "api/galois.irreducible_polys/", "api/galois.is_composite/", "api/galois.is_cyclic/", "api/galois.is_perfect_power/", "api/galois.is_powersmooth/", "api/galois.is_prime/", "api/galois.is_prime_power/", "api/galois.is_primitive_element/", "api/galois.is_primitive_root/", "api/galois.is_smooth/", "api/galois.is_square_free/", "api/galois.isqrt/", "api/galois.jacobi_symbol/", "api/galois.kronecker_symbol/", "api/galois.kth_prime/", "api/galois.lagrange_poly/", "api/galois.lcm/", "api/galois.legendre_symbol/", "api/galois.matlab_primitive_poly/", "api/galois.mersenne_exponents/", "api/galois.mersenne_primes/", "api/galois.miller_rabin_primality_test/", "api/galois.next_prime/", "api/galois.ntt/", "api/galois.perfect_power/", "api/galois.pollard_p1/", "api/galois.pollard_rho/", "api/galois.prev_prime/", "api/galois.primes/", "api/galois.primitive_element/", "api/galois.primitive_elements/", "api/galois.primitive_poly/", "api/galois.primitive_polys/", "api/galois.primitive_root/", "api/galois.primitive_roots/", "api/galois.printoptions/", "api/galois.prod/", "api/galois.random_prime/", "api/galois.set_printoptions/", "api/galois.totatives/", "api/galois.trial_division/", "api/galois.typing.ArrayLike/", "api/galois.typing.DTypeLike/", "api/galois.typing.ElementLike/", "api/galois.typing.IterableLike/", "api/galois.typing.PolyLike/", "api/galois.typing.ShapeLike/", "basic-usage/array-arithmetic/", "basic-usage/array-classes/", "basic-usage/array-creation/", "basic-usage/compilation-modes/", "basic-usage/element-representation/", "basic-usage/poly/", "basic-usage/poly-arithmetic/", "development/documentation/", "development/installation/", "development/linter/", "development/unit-tests/", "genindex/", "getting-started/", "", "performance/benchmarks/", "performance/binary-extension-fields/", "performance/prime-fields/", "release-notes/v0.0/", "release-notes/v0.1/", "release-notes/v0.2/", "release-notes/v0.3/", "release-notes/versioning/", "tutorials/intro-to-extension-fields/", "tutorials/intro-to-prime-fields/"]}) \ No newline at end of file +Search.setIndex({"titles": ["Arrays", "galois.Array", "galois.Array.Identity", "galois.Array.Ones", "galois.Array.Random", "galois.Array.Range", "galois.Array.Zeros", "galois.Array.characteristic", "galois.Array.compile", "galois.Array.default_ufunc_mode", "galois.Array.degree", "galois.Array.dtypes", "galois.Array.element_repr", "galois.Array.elements", "galois.Array.irreducible_poly", "galois.Array.name", "galois.Array.order", "galois.Array.primitive_element", "galois.Array.repr", "galois.Array.ufunc_mode", "galois.Array.ufunc_modes", "galois.Array.units", "galois.BCH", "galois.BCH.G", "galois.BCH.H", "galois.BCH.__init__", "galois.BCH.__repr__", "galois.BCH.__str__", "galois.BCH.alpha", "galois.BCH.c", "galois.BCH.d", "galois.BCH.decode", "galois.BCH.detect", "galois.BCH.encode", "galois.BCH.extension_field", "galois.BCH.field", "galois.BCH.generator_poly", "galois.BCH.is_narrow_sense", "galois.BCH.is_primitive", "galois.BCH.is_systematic", "galois.BCH.k", "galois.BCH.n", "galois.BCH.parity_check_poly", "galois.BCH.roots", "galois.BCH.t", "galois.FLFSR", "galois.FLFSR.Taps", "galois.FLFSR.__init__", "galois.FLFSR.__repr__", "galois.FLFSR.__str__", "galois.FLFSR.characteristic_poly", "galois.FLFSR.feedback_poly", "galois.FLFSR.field", "galois.FLFSR.initial_state", "galois.FLFSR.order", "galois.FLFSR.reset", "galois.FLFSR.state", "galois.FLFSR.step", "galois.FLFSR.taps", "galois.FLFSR.to_galois_lfsr", "galois.Field", "galois.FieldArray", "galois.FieldArray.Identity", "galois.FieldArray.Ones", "galois.FieldArray.Random", "galois.FieldArray.Range", "galois.FieldArray.Vandermonde", "galois.FieldArray.Vector", "galois.FieldArray.Zeros", "galois.FieldArray.__init__", "galois.FieldArray.__repr__", "galois.FieldArray.__str__", "galois.FieldArray.additive_order", "galois.FieldArray.arithmetic_table", "galois.FieldArray.characteristic", "galois.FieldArray.characteristic_poly", "galois.FieldArray.column_space", "galois.FieldArray.compile", "galois.FieldArray.default_ufunc_mode", "galois.FieldArray.degree", "galois.FieldArray.dtypes", "galois.FieldArray.element_repr", "galois.FieldArray.elements", "galois.FieldArray.field_norm", "galois.FieldArray.field_trace", "galois.FieldArray.irreducible_poly", "galois.FieldArray.is_extension_field", "galois.FieldArray.is_prime_field", "galois.FieldArray.is_primitive_poly", "galois.FieldArray.is_square", "galois.FieldArray.left_null_space", "galois.FieldArray.log", "galois.FieldArray.lu_decompose", "galois.FieldArray.minimal_poly", "galois.FieldArray.multiplicative_order", "galois.FieldArray.name", "galois.FieldArray.non_squares", "galois.FieldArray.null_space", "galois.FieldArray.order", "galois.FieldArray.plu_decompose", "galois.FieldArray.prime_subfield", "galois.FieldArray.primitive_element", "galois.FieldArray.primitive_elements", "galois.FieldArray.primitive_root_of_unity", "galois.FieldArray.primitive_roots_of_unity", "galois.FieldArray.properties", "galois.FieldArray.repr", "galois.FieldArray.repr_table", "galois.FieldArray.row_reduce", "galois.FieldArray.row_space", "galois.FieldArray.squares", "galois.FieldArray.ufunc_mode", "galois.FieldArray.ufunc_modes", "galois.FieldArray.units", "galois.FieldArray.vector", "galois.GF", "galois.GF2", "galois.GLFSR", "galois.GLFSR.Taps", "galois.GLFSR.__init__", "galois.GLFSR.__repr__", "galois.GLFSR.__str__", "galois.GLFSR.characteristic_poly", "galois.GLFSR.feedback_poly", "galois.GLFSR.field", "galois.GLFSR.initial_state", "galois.GLFSR.order", "galois.GLFSR.reset", "galois.GLFSR.state", "galois.GLFSR.step", "galois.GLFSR.taps", "galois.GLFSR.to_fibonacci_lfsr", "galois.Poly", "galois.Poly.Degrees", "galois.Poly.Identity", "galois.Poly.Int", "galois.Poly.One", "galois.Poly.Random", "galois.Poly.Roots", "galois.Poly.Str", "galois.Poly.Zero", "galois.Poly.__call__", "galois.Poly.__eq__", "galois.Poly.__init__", "galois.Poly.__int__", "galois.Poly.__len__", "galois.Poly.__repr__", "galois.Poly.__str__", "galois.Poly.coefficients", "galois.Poly.coeffs", "galois.Poly.degree", "galois.Poly.degrees", "galois.Poly.derivative", "galois.Poly.distinct_degree_factors", "galois.Poly.equal_degree_factors", "galois.Poly.factors", "galois.Poly.field", "galois.Poly.is_conway", "galois.Poly.is_conway_consistent", "galois.Poly.is_irreducible", "galois.Poly.is_monic", "galois.Poly.is_primitive", "galois.Poly.is_square_free", "galois.Poly.nonzero_coeffs", "galois.Poly.nonzero_degrees", "galois.Poly.reverse", "galois.Poly.roots", "galois.Poly.square_free_factors", "galois.ReedSolomon", "galois.ReedSolomon.G", "galois.ReedSolomon.H", "galois.ReedSolomon.__init__", "galois.ReedSolomon.__repr__", "galois.ReedSolomon.__str__", "galois.ReedSolomon.alpha", "galois.ReedSolomon.c", "galois.ReedSolomon.d", "galois.ReedSolomon.decode", "galois.ReedSolomon.detect", "galois.ReedSolomon.encode", "galois.ReedSolomon.field", "galois.ReedSolomon.generator_poly", "galois.ReedSolomon.is_narrow_sense", "galois.ReedSolomon.is_primitive", "galois.ReedSolomon.is_systematic", "galois.ReedSolomon.k", "galois.ReedSolomon.n", "galois.ReedSolomon.parity_check_poly", "galois.ReedSolomon.roots", "galois.ReedSolomon.t", "galois.are_coprime", "galois.berlekamp_massey", "galois.carmichael_lambda", "galois.conway_poly", "galois.crt", "galois.divisor_sigma", "galois.divisors", "galois.egcd", "galois.euler_phi", "galois.factors", "galois.fermat_primality_test", "galois.gcd", "galois.get_printoptions", "galois.ilog", "galois.intt", "galois.iroot", "galois.irreducible_poly", "galois.irreducible_polys", "galois.is_composite", "galois.is_cyclic", "galois.is_perfect_power", "galois.is_powersmooth", "galois.is_prime", "galois.is_prime_power", "galois.is_primitive_element", "galois.is_primitive_root", "galois.is_smooth", "galois.is_square_free", "galois.isqrt", "galois.jacobi_symbol", "galois.kronecker_symbol", "galois.kth_prime", "galois.lagrange_poly", "galois.lcm", "galois.legendre_symbol", "galois.matlab_primitive_poly", "galois.mersenne_exponents", "galois.mersenne_primes", "galois.miller_rabin_primality_test", "galois.next_prime", "galois.ntt", "galois.perfect_power", "galois.pollard_p1", "galois.pollard_rho", "galois.prev_prime", "galois.primes", "galois.primitive_element", "galois.primitive_elements", "galois.primitive_poly", "galois.primitive_polys", "galois.primitive_root", "galois.primitive_roots", "galois.printoptions", "galois.prod", "galois.random_prime", "galois.set_printoptions", "galois.totatives", "galois.trial_division", "galois.typing.ArrayLike", "galois.typing.DTypeLike", "galois.typing.ElementLike", "galois.typing.IterableLike", "galois.typing.PolyLike", "galois.typing.ShapeLike", "Array Arithmetic", "Array Classes", "Array Creation", "Compilation Modes", "Element Representation", "Polynomials", "Polynomial Arithmetic", "Documentation", "Installation", "Linter", "Unit Tests", "Index", "Getting Started", "Features", "Benchmarks", "Binary Extension Fields", "Prime Fields", "v0.0", "v0.1", "v0.2", "v0.3", "Versioning", "Intro to Extension Fields", "Intro to Prime Fields"], "terms": {"class": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 34, 35, 45, 52, 61, 70, 71, 74, 78, 79, 80, 81, 82, 85, 86, 87, 88, 95, 96, 98, 100, 101, 102, 105, 110, 111, 112, 113, 115, 116, 117, 124, 132, 156, 168, 180, 258, 259, 266, 271, 273, 274, 276, 277], "numpi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 22, 31, 32, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 77, 78, 80, 89, 91, 94, 111, 112, 114, 115, 116, 132, 137, 166, 168, 177, 178, 202, 204, 230, 242, 245, 248, 249, 253, 254, 257, 266, 267, 269, 270, 271, 272, 273, 274], "ndarrai": [0, 1, 22, 31, 32, 61, 72, 89, 91, 94, 116, 132, 133, 138, 151, 164, 166, 168, 177, 178, 204, 230, 248, 252, 255, 256, 266, 267, 269, 270, 271], "an": [0, 1, 2, 3, 4, 6, 22, 31, 55, 57, 59, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 76, 80, 86, 89, 90, 91, 92, 93, 94, 96, 97, 104, 107, 108, 109, 110, 113, 114, 115, 116, 127, 129, 131, 132, 133, 138, 143, 148, 151, 152, 164, 166, 168, 177, 190, 195, 196, 200, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 219, 220, 222, 223, 224, 226, 228, 229, 231, 232, 233, 234, 235, 236, 237, 239, 241, 243, 251, 252, 253, 255, 257, 258, 260, 262, 263, 266, 267, 271, 272, 274, 276, 277], "abstract": [0, 255, 271], "subclass": [0, 1, 2, 3, 4, 5, 6, 18, 45, 52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 78, 106, 107, 111, 112, 114, 115, 116, 117, 124, 132, 133, 138, 143, 156, 254, 256, 257, 258, 267, 271, 276, 277], "over": [0, 1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 67, 69, 75, 76, 83, 84, 85, 90, 93, 97, 101, 102, 108, 109, 114, 115, 116, 117, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 213, 214, 217, 223, 225, 230, 236, 237, 238, 239, 241, 243, 254, 255, 256, 258, 259, 260, 267, 271, 273, 276], "ring": [0, 1, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 255, 267, 276, 277], "type": [0, 2, 3, 4, 5, 6, 22, 25, 34, 35, 45, 52, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 100, 104, 114, 115, 116, 117, 124, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 156, 168, 171, 180, 191, 206, 248, 249, 250, 251, 252, 253, 255, 257, 271, 272, 273, 274], "arraylik": [0, 22, 31, 32, 33, 45, 46, 47, 55, 61, 67, 69, 91, 116, 117, 118, 119, 127, 132, 133, 138, 141, 143, 168, 177, 178, 179, 204, 230, 248, 252, 256, 266, 271], "A": [0, 1, 2, 3, 4, 5, 6, 17, 18, 22, 25, 26, 27, 28, 31, 32, 45, 46, 47, 48, 49, 61, 62, 63, 64, 65, 66, 68, 69, 73, 75, 76, 89, 90, 91, 92, 97, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 113, 115, 116, 117, 118, 119, 120, 121, 132, 137, 141, 146, 153, 154, 157, 158, 159, 160, 161, 162, 167, 168, 171, 172, 173, 174, 177, 178, 190, 191, 192, 193, 198, 199, 202, 203, 204, 205, 209, 215, 217, 218, 224, 226, 230, 232, 233, 236, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 267, 269, 270, 271, 272, 274], "union": [0, 248, 249, 250, 251, 252, 253, 272], "repres": [0, 2, 3, 4, 5, 6, 8, 36, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 108, 114, 115, 141, 152, 159, 166, 181, 193, 209, 240, 248, 249, 250, 251, 252, 253, 258, 266, 271, 276, 277], "object": [0, 115, 142, 191, 207, 239, 241, 248, 249, 250, 251, 252, 253, 259, 260, 266, 271, 276], "can": [0, 4, 18, 31, 36, 44, 64, 73, 81, 103, 104, 106, 112, 115, 137, 139, 159, 166, 181, 189, 204, 209, 210, 215, 230, 231, 232, 240, 241, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 260, 262, 266, 267, 270, 271, 275, 276, 277], "coerc": [0, 248, 249, 250, 251, 252, 253], "dtypelik": [0, 2, 3, 4, 5, 6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 114, 116, 249], "data": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 157, 158, 193, 249, 257, 264, 271], "elementlik": [0, 1, 4, 5, 25, 61, 64, 65, 66, 69, 91, 107, 116, 132, 141, 171, 250, 251, 256, 271], "iterablelik": [0, 248, 251, 252], "iter": [0, 57, 129, 200, 207, 228, 239, 241, 248, 251, 253, 271], "shapelik": [0, 1, 3, 4, 6, 61, 63, 64, 68, 116, 253], "shape": [0, 1, 2, 3, 4, 6, 22, 23, 24, 61, 62, 63, 64, 67, 68, 76, 90, 91, 97, 109, 114, 116, 141, 168, 169, 170, 253, 255, 256, 260, 268], "tupl": [0, 3, 4, 6, 22, 31, 61, 63, 64, 68, 92, 99, 116, 132, 153, 155, 166, 167, 168, 177, 197, 199, 207, 231, 239, 241, 247, 253], "fieldarrai": [0, 1, 18, 22, 23, 24, 25, 28, 31, 33, 34, 35, 43, 45, 46, 52, 53, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 124, 125, 128, 129, 130, 168, 169, 170, 171, 174, 177, 179, 180, 188, 191, 204, 214, 230, 236, 237, 254, 256, 257, 258, 259, 267, 271, 272, 273, 274, 276, 277], "mathrm": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 61, 66, 67, 69, 72, 74, 75, 76, 79, 80, 82, 83, 84, 85, 88, 89, 90, 93, 94, 96, 97, 98, 100, 101, 102, 103, 104, 107, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 243, 254, 255, 256, 257, 258, 260, 266, 267, 269, 270, 271, 274, 276, 277], "gf": [0, 1, 7, 10, 16, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 197, 199, 201, 204, 206, 207, 209, 214, 217, 222, 223, 225, 230, 236, 237, 238, 239, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "p": [0, 1, 7, 10, 16, 33, 45, 61, 67, 69, 70, 71, 72, 73, 74, 75, 79, 82, 83, 84, 85, 89, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 149, 150, 151, 152, 157, 158, 159, 160, 163, 164, 166, 179, 191, 193, 197, 198, 199, 200, 204, 209, 213, 221, 224, 225, 226, 227, 228, 229, 230, 232, 233, 234, 235, 240, 244, 254, 255, 256, 258, 260, 267, 270, 271, 274, 276], "m": [0, 1, 7, 10, 16, 22, 25, 28, 31, 32, 33, 34, 36, 38, 43, 45, 61, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 109, 110, 113, 114, 115, 116, 117, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 157, 158, 159, 161, 166, 167, 168, 171, 177, 178, 179, 191, 192, 193, 194, 199, 204, 206, 207, 214, 222, 225, 230, 233, 236, 237, 238, 239, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 274, 276, 277], "gf2": [0, 116, 133, 134, 135, 136, 137, 138, 139, 140, 143], "2": [0, 2, 8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 262, 264, 266, 267, 268, 269, 270, 271, 276, 277], "order": [0, 1, 4, 8, 16, 22, 23, 24, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 141, 143, 144, 145, 146, 147, 148, 149, 151, 154, 155, 157, 158, 159, 163, 164, 166, 168, 169, 170, 174, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 191, 193, 199, 204, 206, 207, 209, 214, 215, 222, 230, 236, 237, 238, 239, 240, 241, 245, 248, 250, 251, 252, 253, 254, 255, 257, 258, 260, 266, 269, 270, 271, 272, 273, 274, 276, 277], "int": [0, 1, 2, 4, 5, 7, 8, 10, 12, 16, 18, 22, 25, 29, 30, 31, 40, 41, 44, 45, 54, 57, 60, 61, 62, 64, 65, 66, 69, 72, 74, 77, 79, 80, 81, 91, 94, 98, 103, 104, 106, 107, 108, 115, 116, 117, 126, 129, 132, 133, 135, 137, 138, 144, 145, 148, 150, 152, 153, 154, 155, 167, 168, 171, 175, 176, 177, 185, 186, 189, 190, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 256, 258, 259, 266, 269, 270, 271, 273], "characterist": [0, 1, 7, 34, 35, 45, 47, 50, 51, 60, 61, 69, 72, 74, 75, 88, 89, 93, 96, 105, 107, 110, 115, 116, 117, 119, 122, 123, 152, 180, 191, 193, 225, 236, 237, 254, 255, 256, 260, 266, 271, 274, 276, 277], "degre": [0, 1, 10, 31, 33, 34, 35, 36, 45, 54, 60, 61, 67, 69, 75, 79, 85, 88, 105, 107, 114, 115, 116, 117, 126, 132, 133, 137, 138, 139, 143, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 177, 179, 180, 181, 191, 193, 195, 199, 206, 207, 214, 222, 225, 236, 237, 238, 239, 242, 245, 250, 252, 255, 256, 258, 260, 266, 271, 274, 276, 277], "alia": [0, 60, 248, 249, 250, 251, 252, 253, 271], "creat": [0, 1, 2, 3, 4, 5, 6, 22, 45, 55, 59, 61, 62, 63, 64, 65, 66, 68, 69, 80, 107, 115, 116, 117, 127, 131, 132, 141, 143, 168, 222, 248, 250, 252, 254, 255, 257, 258, 260, 267, 271, 273, 276, 277], "primitive_el": [0, 1, 17, 34, 35, 60, 61, 66, 69, 88, 91, 94, 101, 102, 103, 104, 105, 107, 115, 116, 180, 209, 214, 236, 237, 254, 255, 256, 258, 266, 271, 274, 276, 277], "irreducible_poli": [0, 1, 14, 34, 35, 47, 60, 61, 69, 85, 88, 105, 107, 115, 116, 119, 155, 159, 162, 180, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 239, 255, 256, 259, 266, 269, 271, 274, 276, 277], "poli": [0, 1, 12, 14, 18, 22, 23, 24, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 85, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 175, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 256, 258, 259, 260, 264, 266, 267, 271, 273, 274, 276], "find": [0, 31, 61, 103, 104, 116, 166, 177, 191, 192, 196, 197, 198, 199, 201, 204, 206, 207, 209, 222, 230, 232, 233, 235, 236, 237, 238, 239, 240, 241, 246, 247, 259, 271, 273, 274, 276, 277], "g": [0, 22, 23, 25, 28, 29, 31, 33, 36, 39, 43, 132, 141, 157, 158, 159, 168, 169, 171, 174, 175, 177, 179, 181, 184, 188, 193, 206, 209, 214, 215, 236, 237, 238, 240, 241, 259, 268, 271, 273, 276, 277], "q": [0, 22, 25, 28, 31, 33, 34, 35, 36, 38, 43, 61, 66, 76, 90, 97, 109, 116, 132, 159, 161, 162, 168, 171, 174, 177, 179, 180, 181, 183, 188, 206, 207, 214, 219, 224, 232, 236, 237, 238, 239, 254, 271, 273], "f": [0, 45, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 69, 85, 101, 102, 103, 104, 116, 117, 119, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 152, 153, 154, 155, 157, 158, 159, 161, 162, 165, 166, 167, 193, 199, 203, 205, 206, 207, 209, 214, 217, 218, 219, 224, 225, 232, 233, 236, 237, 238, 239, 240, 241, 242, 245, 259, 271, 274, 276], "x": [0, 22, 23, 24, 25, 27, 28, 29, 31, 33, 34, 35, 36, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 69, 70, 71, 72, 73, 75, 76, 81, 83, 84, 85, 88, 89, 90, 91, 93, 94, 96, 97, 101, 102, 105, 106, 107, 109, 110, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 179, 180, 181, 182, 184, 187, 188, 190, 191, 193, 194, 197, 198, 199, 201, 203, 204, 205, 206, 207, 214, 217, 218, 219, 222, 223, 224, 225, 230, 233, 236, 237, 238, 239, 243, 246, 248, 249, 250, 251, 253, 255, 256, 257, 258, 259, 266, 267, 271, 272, 273, 274, 275, 276, 277], "list": [0, 1, 11, 20, 61, 80, 112, 116, 132, 138, 153, 154, 155, 167, 196, 199, 200, 204, 207, 209, 215, 226, 227, 230, 235, 237, 239, 241, 242, 246, 247, 253, 256, 257, 259, 263, 271, 277], "_poli": [0, 132, 153, 154, 155, 167, 197, 199, 237], "all": [0, 1, 3, 6, 13, 18, 20, 21, 46, 47, 61, 63, 65, 68, 76, 80, 82, 91, 96, 102, 103, 104, 106, 109, 110, 112, 113, 116, 118, 119, 132, 133, 138, 153, 157, 158, 161, 167, 193, 196, 199, 200, 204, 207, 213, 219, 220, 225, 226, 227, 228, 230, 235, 237, 239, 241, 247, 254, 255, 256, 257, 258, 259, 264, 266, 267, 271, 276, 277], "is_primitive_el": [0, 214, 236, 237], "polylik": [0, 60, 115, 132, 142, 214, 252, 271], "bool": [0, 22, 25, 32, 37, 38, 39, 60, 61, 69, 86, 87, 88, 89, 115, 116, 132, 141, 142, 157, 158, 159, 160, 161, 162, 168, 171, 178, 182, 183, 184, 190, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 228, 239, 241, 273], "determin": [0, 61, 89, 116, 132, 142, 158, 159, 161, 162, 190, 191, 200, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 224, 228, 244, 271], "i": [0, 1, 2, 3, 4, 5, 6, 8, 18, 22, 25, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 50, 51, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 150, 152, 153, 154, 155, 160, 165, 166, 167, 168, 171, 175, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 198, 199, 200, 201, 202, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 250, 252, 254, 255, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 273, 274, 275, 276, 277], "univari": [0, 132, 259, 267], "The": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 19, 22, 23, 24, 25, 29, 30, 31, 32, 33, 34, 35, 36, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 81, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 175, 176, 177, 178, 179, 180, 181, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 200, 201, 203, 204, 205, 206, 207, 209, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "section": [0, 89, 153, 154, 155, 159, 167, 194, 197, 198, 199, 200, 228, 232, 233, 246, 254, 260, 269, 270, 271, 276, 277], "contain": [0, 268, 271], "mani": [0, 31, 177, 212, 250, 254, 257, 260, 263, 277], "function": [0, 8, 18, 70, 71, 77, 106, 153, 154, 155, 159, 167, 191, 192, 194, 195, 196, 197, 198, 199, 201, 202, 204, 206, 209, 212, 213, 218, 225, 230, 233, 235, 237, 240, 242, 244, 245, 254, 255, 257, 259, 263, 267, 271], "oper": [0, 31, 33, 61, 73, 108, 116, 135, 139, 144, 147, 177, 179, 254, 256, 257, 259, 260, 266, 267, 268, 270, 271, 277], "return": [0, 2, 3, 4, 5, 6, 18, 22, 31, 32, 33, 46, 57, 59, 62, 63, 64, 65, 66, 67, 68, 72, 73, 75, 76, 83, 84, 89, 90, 91, 92, 93, 94, 97, 99, 103, 104, 106, 107, 108, 109, 114, 115, 116, 118, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 255, 256, 260, 271, 273, 274, 276, 277], "monic": [0, 132, 138, 153, 154, 155, 157, 160, 167, 193, 199, 206, 207, 238, 239, 271], "through": [0, 207, 239, 241, 254, 271], "conway_poli": [0, 115, 157, 158, 159, 161, 193, 206, 225, 238, 259, 274, 276], "conwai": [0, 115, 132, 157, 158, 159, 161, 193, 238, 259, 267, 274, 276], "c_": [0, 31, 33, 45, 46, 47, 50, 51, 58, 115, 117, 118, 119, 122, 123, 130, 132, 157, 158, 177, 179, 191, 193, 276], "matlab_primitive_poli": [0, 25, 161, 171, 225, 238, 271], "matlab": [0, 225, 271], "": [0, 22, 31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 72, 82, 94, 95, 98, 113, 116, 117, 118, 119, 125, 127, 128, 132, 141, 144, 146, 147, 152, 157, 158, 159, 166, 168, 177, 178, 179, 193, 197, 199, 200, 209, 212, 225, 228, 232, 233, 254, 255, 256, 257, 258, 260, 263, 264, 266, 267, 271, 272, 274, 276, 277], "default": [0, 1, 2, 3, 4, 5, 6, 9, 18, 25, 31, 33, 46, 47, 55, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 78, 81, 88, 91, 106, 107, 108, 111, 114, 115, 116, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 152, 157, 158, 166, 171, 177, 179, 191, 193, 195, 200, 204, 206, 207, 225, 226, 227, 228, 230, 232, 233, 238, 239, 240, 241, 242, 244, 245, 247, 249, 255, 257, 258, 259, 266, 268, 269, 270, 271, 276, 277], "primitive_poli": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 161, 193, 206, 207, 225, 238, 239, 259, 271, 274], "lagrange_poli": [0, 222, 271, 272], "y": [0, 45, 73, 83, 84, 89, 96, 110, 117, 191, 192, 222, 257, 266, 267, 271, 272, 276, 277], "comput": [0, 8, 18, 31, 33, 61, 72, 75, 76, 77, 83, 84, 90, 91, 93, 94, 97, 106, 109, 115, 116, 132, 152, 155, 157, 158, 159, 177, 179, 193, 196, 197, 198, 199, 200, 201, 203, 204, 205, 218, 219, 220, 222, 223, 224, 226, 230, 233, 243, 254, 257, 258, 259, 260, 267, 268, 269, 270, 271, 276, 277], "lagrang": [0, 222, 271], "l": [0, 61, 83, 84, 92, 99, 116, 222, 240, 241], "x_i": [0, 222, 233], "y_i": [0, 222], "bch": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 267, 271, 273, 274], "textrm": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 61, 75, 76, 90, 94, 97, 107, 109, 116, 153, 159, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 192, 194, 200, 203, 204, 224, 228, 230, 233, 240, 241, 257, 270, 271, 276, 277], "n": [0, 1, 2, 22, 23, 24, 25, 27, 28, 30, 31, 32, 33, 36, 38, 40, 41, 45, 46, 47, 50, 51, 53, 55, 56, 57, 58, 61, 62, 66, 75, 76, 83, 90, 93, 97, 103, 104, 109, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 132, 157, 158, 165, 168, 169, 170, 171, 173, 174, 176, 177, 178, 179, 181, 183, 185, 186, 191, 192, 193, 195, 196, 198, 199, 200, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 240, 241, 246, 247, 254, 257, 258, 267, 270, 271, 273, 274], "k": [0, 22, 23, 24, 25, 27, 30, 31, 32, 33, 40, 41, 61, 69, 83, 84, 103, 104, 116, 132, 138, 152, 155, 159, 161, 162, 166, 168, 169, 170, 171, 173, 176, 177, 178, 179, 185, 186, 195, 198, 199, 204, 205, 209, 211, 213, 217, 221, 222, 230, 232, 240, 241, 273, 274, 277], "code": [0, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 153, 154, 155, 167, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 197, 199, 225, 262, 266, 267, 271, 273, 274], "reedsolomon": [0, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 267, 271, 273], "r": [0, 31, 76, 90, 104, 109, 132, 154, 157, 158, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 193, 228, 254, 261, 263, 266, 267, 268, 271], "flfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "fibonacci": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "feedback": [0, 45, 47, 50, 51, 117, 119, 122, 123, 191, 267, 271], "shift": [0, 45, 46, 58, 117, 118, 130, 191, 267], "regist": [0, 45, 46, 58, 117, 118, 130, 191, 267], "lfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 191, 271], "glfsr": [0, 45, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 191, 267, 271], "berlekamp_massei": [0, 45, 117, 191, 271], "output": [0, 31, 33, 45, 57, 59, 64, 67, 114, 117, 129, 131, 177, 179, 191, 204, 230, 261, 270, 271, 273], "minim": [0, 45, 54, 61, 93, 116, 117, 126, 191, 222, 271], "c": [0, 22, 25, 28, 29, 31, 32, 33, 36, 37, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 76, 97, 109, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 153, 167, 168, 171, 174, 175, 177, 178, 179, 181, 182, 188, 191, 204, 210, 230, 231, 233, 268, 271], "produc": [0, 45, 54, 57, 59, 64, 117, 126, 129, 131, 137, 191, 206, 207, 238, 239, 256, 269, 276, 277], "recurr": [0, 45, 50, 54, 58, 117, 122, 126, 130, 191], "intt": [0, 204, 230, 271], "invers": [0, 67, 113, 114, 135, 139, 144, 147, 204, 271], "theoret": [0, 204, 230, 267, 271], "ntt": [0, 204, 230, 254, 267, 271], "size": [0, 1, 2, 22, 25, 40, 41, 57, 61, 62, 80, 94, 98, 116, 129, 132, 148, 168, 171, 185, 186, 191, 204, 222, 230, 253, 254, 256, 257, 258, 270, 271, 273, 276, 277], "none": [0, 1, 2, 3, 4, 5, 6, 18, 22, 25, 45, 46, 47, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 91, 106, 107, 108, 114, 115, 116, 117, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 168, 171, 200, 204, 206, 207, 226, 227, 230, 232, 238, 239, 240, 241, 242, 244, 247, 255, 271], "are_coprim": [0, 190, 271], "valu": [0, 1, 11, 18, 31, 61, 72, 73, 80, 89, 94, 106, 115, 116, 133, 141, 144, 148, 177, 190, 191, 199, 204, 217, 219, 220, 222, 223, 224, 230, 240, 241, 243, 254, 256, 257, 258, 260, 271], "argument": [0, 69, 91, 103, 104, 115, 190, 197, 201, 223, 230, 243, 256, 257, 258, 259, 263, 266, 268, 271, 272, 273, 274], "ar": [0, 1, 11, 22, 25, 28, 31, 32, 37, 43, 45, 57, 59, 61, 65, 67, 76, 78, 80, 89, 90, 91, 94, 96, 97, 103, 104, 108, 109, 110, 111, 114, 115, 116, 117, 131, 132, 133, 135, 138, 139, 141, 142, 143, 144, 147, 149, 151, 153, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 168, 171, 174, 177, 178, 182, 188, 190, 191, 192, 193, 198, 199, 200, 204, 206, 209, 210, 215, 216, 217, 219, 224, 225, 227, 228, 230, 231, 238, 240, 241, 242, 245, 246, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277], "pairwis": [0, 190], "coprim": [0, 190, 192, 198, 209, 215, 219, 240, 241, 246, 277], "egcd": [0, 197, 201, 223, 243, 271, 276, 277], "b": [0, 142, 153, 154, 156, 167, 197, 201, 203, 211, 216, 232, 244, 247, 261, 267, 269, 270, 271, 272, 274, 276, 277], "multiplicand": [0, 197], "t": [0, 22, 31, 44, 45, 46, 58, 76, 90, 97, 99, 109, 117, 118, 130, 133, 138, 143, 168, 177, 189, 191, 197, 206, 207, 225, 228, 238, 239, 260, 263, 269, 270, 271, 276, 277], "gcd": [0, 159, 197, 201, 210, 223, 228, 231, 233, 243, 271, 276, 277], "euler_phi": [0, 192, 198, 209, 215, 237, 240, 241, 246, 271], "count": [0, 198, 209, 240], "posit": [0, 79, 108, 115, 192, 195, 196, 198, 199, 203, 205, 209, 215, 240, 241, 246, 247, 274], "tot": [0, 192, 198, 209, 215, 240, 241, 246], "1": [0, 1, 5, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 273, 275, 276, 277], "greatest": [0, 197, 201, 271], "common": [0, 193, 197, 200, 201, 223, 228, 259, 271, 276], "divisor": [0, 103, 104, 159, 195, 196, 197, 201, 247, 271], "lcm": [0, 22, 190, 197, 201, 223, 243], "least": [0, 148, 191, 203, 204, 209, 223, 230, 240, 241, 258, 271], "multipl": [0, 33, 36, 61, 73, 94, 101, 102, 108, 113, 115, 116, 132, 137, 138, 139, 141, 152, 155, 157, 158, 162, 166, 167, 179, 181, 192, 193, 199, 209, 215, 217, 223, 240, 241, 246, 250, 255, 256, 257, 266, 269, 270, 271, 274], "prod": [0, 190, 197, 201, 223, 243], "product": [0, 61, 83, 92, 99, 116, 132, 153, 154, 155, 167, 190, 199, 210, 231, 243, 267, 269, 270], "carmichael_lambda": [0, 192, 198, 209, 240, 241, 246, 271], "smallest": [0, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 72, 94, 101, 114, 192, 204, 209, 230, 236, 240, 241, 254, 256, 260, 271], "equiv": [0, 192, 194, 200, 224, 228, 233, 276, 277], "mod": [0, 31, 177, 192, 194, 200, 224, 228, 233, 270, 271, 276], "everi": [0, 36, 72, 89, 92, 110, 181, 192, 209, 240, 256, 257, 276, 277], "crt": [0, 194, 271], "remaind": [0, 31, 177, 194, 269, 271, 276], "moduli": [0, 194, 204, 230, 271], "solv": [0, 194, 272, 277], "simultan": [0, 194], "system": [0, 194, 249, 263, 264, 268], "jacobi_symbol": [0, 219, 220, 224, 271], "jacobi": [0, 219, 220, 277], "symbol": [0, 22, 25, 31, 32, 33, 44, 45, 57, 117, 129, 157, 158, 168, 171, 177, 178, 179, 189, 191, 193, 219, 220, 224], "frac": [0, 44, 132, 152, 157, 158, 165, 189, 193, 198, 204, 205, 219, 220, 222, 224, 228], "kronecker_symbol": [0, 219, 220, 224, 271], "kroneck": [0, 220], "extend": [0, 197, 219, 220, 254, 267, 271, 276, 277], "legendre_symbol": [0, 219, 220, 224, 271], "legendr": [0, 219, 224], "is_cycl": [0, 192, 198, 209, 215, 240, 241, 246], "whether": [0, 31, 33, 61, 88, 115, 116, 132, 141, 157, 158, 159, 160, 161, 162, 177, 179, 209, 213, 256, 270], "group": [0, 64, 94, 115, 192, 209, 215, 240, 241, 246, 255, 271, 276, 277], "mathbb": [0, 192, 204, 209, 215, 230, 240, 241, 246, 266, 267, 270, 277], "z": [0, 191, 192, 209, 215, 240, 241, 246, 254, 257, 270, 277], "time": [0, 1, 2, 8, 57, 61, 62, 66, 75, 76, 77, 90, 93, 94, 97, 109, 116, 129, 192, 209, 215, 240, 241, 246, 255, 257, 258, 267, 268, 269, 270, 271, 274, 276, 277], "cyclic": [0, 22, 168, 192, 209, 215, 240, 241, 271, 276, 277], "primitive_root": [0, 115, 204, 209, 215, 230, 240, 241, 271, 277], "start": [0, 1, 5, 22, 37, 61, 65, 116, 168, 182, 209, 240, 241, 256, 261, 268, 271], "modulo": [0, 115, 209, 215, 219, 224, 233, 240, 241, 260, 269, 270, 271, 276, 277], "rang": [0, 1, 5, 25, 61, 65, 116, 192, 194, 200, 209, 219, 224, 228, 240, 241, 256, 268, 271, 273], "stop": [0, 1, 5, 61, 65, 116, 209, 240, 241, 256, 271], "is_primitive_root": [0, 215, 240, 241], "ilog": [0, 203, 205, 218], "lfloor": [0, 44, 189, 203, 205, 218], "log": [0, 8, 61, 77, 91, 115, 116, 203, 204, 230, 257, 266, 271], "_b": [0, 203], "rfloor": [0, 44, 189, 203, 205, 218], "le": [0, 25, 103, 104, 159, 166, 171, 200, 203, 205, 206, 209, 211, 215, 216, 218, 222, 225, 226, 227, 228, 232, 234, 235, 244, 247, 277], "iroot": [0, 203, 205, 218], "isqrt": [0, 203, 205, 218], "sqrt": [0, 110, 218, 247, 266, 271], "non": [0, 4, 23, 24, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 42, 43, 61, 64, 88, 94, 96, 107, 108, 116, 132, 133, 137, 150, 155, 160, 163, 164, 167, 169, 170, 171, 172, 173, 174, 177, 181, 183, 184, 187, 188, 199, 205, 206, 207, 209, 218, 219, 224, 232, 233, 238, 239, 240, 244, 249, 254, 257, 259, 260, 271, 273, 274], "constant": [0, 75, 132, 155, 167, 199, 233, 267], "divisor_sigma": [0, 195, 196, 271], "sum": [0, 76, 84, 90, 97, 109, 195, 254, 260], "th": [0, 22, 25, 28, 61, 103, 104, 116, 132, 152, 165, 168, 171, 174, 195, 204, 205, 213, 221, 230, 254, 271], "power": [0, 1, 12, 18, 22, 25, 28, 29, 37, 43, 60, 61, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 86, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 116, 141, 159, 166, 168, 171, 174, 175, 182, 188, 192, 195, 199, 206, 207, 209, 210, 213, 215, 216, 227, 230, 231, 232, 233, 238, 239, 240, 241, 248, 250, 251, 255, 256, 257, 259, 266, 271, 272, 273, 274, 276, 277], "d": [0, 1, 2, 5, 22, 25, 27, 28, 29, 30, 31, 32, 33, 37, 40, 41, 43, 44, 45, 61, 62, 65, 75, 93, 103, 104, 116, 117, 132, 137, 138, 143, 144, 152, 153, 154, 155, 159, 165, 166, 167, 168, 171, 173, 174, 175, 176, 177, 178, 179, 182, 185, 186, 188, 189, 191, 195, 196, 199, 222, 225, 232, 250, 253, 256, 258, 260, 261, 262, 266, 273, 276, 277], "perfect_pow": [0, 199, 210, 231, 271], "base": [0, 1, 61, 91, 107, 115, 116, 200, 203, 228, 231, 254, 255, 266, 271], "expon": [0, 107, 152, 199, 210, 226, 227, 231, 247, 260], "e": [0, 1, 7, 10, 16, 30, 31, 90, 97, 141, 143, 153, 177, 178, 204, 209, 210, 226, 230, 231, 240, 255, 262, 268, 271, 273, 276, 277], "If": [0, 18, 25, 31, 33, 57, 75, 88, 91, 93, 94, 103, 104, 106, 115, 129, 133, 138, 141, 143, 153, 154, 155, 157, 158, 159, 167, 171, 177, 179, 193, 199, 200, 204, 206, 207, 209, 212, 215, 228, 230, 231, 232, 233, 235, 238, 239, 240, 241, 247, 252, 267, 268, 270, 276, 277], "perfect": [0, 199, 210, 217, 231, 271], "pollard_p1": [0, 232, 233, 271], "b2": [0, 232], "attempt": [0, 200, 228, 232, 233], "trivial": [0, 199, 232, 233], "ha": [0, 8, 22, 31, 36, 43, 67, 75, 76, 77, 89, 90, 92, 93, 97, 109, 115, 141, 143, 148, 153, 154, 155, 158, 159, 162, 167, 168, 177, 204, 217, 225, 228, 232, 237, 255, 257, 270, 271, 276, 277], "smooth": [0, 211, 216, 232, 271], "pollard_rho": [0, 199, 232, 233, 271], "us": [0, 4, 8, 18, 25, 31, 32, 33, 61, 64, 73, 77, 78, 80, 88, 91, 99, 106, 107, 111, 112, 115, 116, 133, 137, 138, 139, 141, 143, 144, 146, 147, 166, 171, 177, 178, 179, 191, 199, 200, 204, 206, 207, 224, 225, 228, 230, 232, 233, 239, 241, 242, 244, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277], "cycl": [0, 233], "detect": [0, 22, 31, 32, 168, 178, 200, 228, 233, 271], "trial_divis": [0, 199, 247, 271], "p_i": [0, 159, 198, 211, 217, 232, 247, 271], "e_i": [0, 162, 198, 211, 217, 247, 271], "kth_prime": [0, 221, 229, 234, 235], "where": [0, 8, 25, 31, 32, 33, 77, 103, 104, 115, 152, 153, 157, 158, 159, 166, 171, 177, 178, 179, 193, 196, 204, 209, 210, 215, 221, 228, 230, 231, 232, 233, 237, 240, 241, 247, 257, 258, 271, 272, 277], "3": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "4": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 139, 141, 142, 144, 145, 147, 148, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 206, 207, 209, 210, 211, 214, 216, 217, 219, 221, 222, 223, 224, 225, 228, 230, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 266, 268, 269, 270, 271, 272, 273, 276, 277], "dot": [0, 22, 25, 28, 29, 31, 33, 37, 43, 45, 46, 47, 50, 51, 53, 55, 56, 58, 61, 73, 82, 101, 102, 113, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 138, 143, 144, 152, 153, 154, 155, 165, 166, 168, 171, 174, 175, 177, 179, 182, 188, 191, 198, 199, 209, 211, 215, 216, 221, 232, 233, 238, 239, 240, 241, 247, 258, 270, 271, 276, 277], "5": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 214, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 228, 230, 231, 232, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277], "7": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 110, 113, 114, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 215, 216, 217, 219, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "mersenne_expon": [0, 226, 227], "known": [0, 115, 216, 226, 227, 252], "mersenn": [0, 226, 227, 274], "mersenne_prim": [0, 226, 227], "next_prim": [0, 221, 229, 234, 235, 244, 271], "nearest": [0, 229, 234], "prev_prim": [0, 221, 229, 234, 235, 244, 271], "random_prim": [0, 244, 272], "bit": [0, 226, 227, 244], "seed": [0, 4, 64, 137, 244, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274], "random": [0, 1, 4, 22, 31, 32, 33, 61, 64, 75, 76, 90, 91, 93, 97, 109, 116, 132, 137, 152, 156, 159, 168, 177, 178, 179, 194, 200, 206, 222, 236, 238, 240, 243, 244, 249, 253, 254, 255, 258, 259, 264, 269, 270, 271, 272, 273, 274, 276, 277], "is_composit": [0, 208, 212, 271], "is_perfect_pow": [0, 208, 210, 212, 213, 217, 231, 271], "is_powersmooth": [0, 211, 216, 271], "powersmooth": [0, 211], "is_prim": [0, 199, 200, 208, 212, 213, 226, 227, 228, 244, 271], "is_prime_pow": [0, 210, 212, 213, 217, 231, 271], "ge": [0, 30, 31, 200, 211, 213, 216, 219, 224, 228, 234], "is_smooth": [0, 211, 216, 271], "is_square_fre": [0, 132, 162, 208, 210, 217, 271], "squar": [0, 61, 75, 89, 92, 93, 96, 110, 116, 132, 141, 153, 154, 155, 162, 167, 199, 217, 218, 256, 266, 271], "free": [0, 132, 153, 154, 155, 162, 167, 199, 217], "fermat_primality_test": [0, 200, 212, 228, 271], "fermat": [0, 200, 212, 271], "miller_rabin_primality_test": [0, 200, 212, 228, 271], "miller": [0, 212, 228], "rabin": [0, 159, 212, 228], "get_printopt": [0, 202, 242, 245, 271], "dict": [0, 202], "str": [0, 1, 15, 20, 22, 26, 27, 45, 48, 49, 61, 70, 71, 73, 95, 105, 107, 112, 116, 117, 120, 121, 132, 139, 146, 147, 168, 172, 173, 202, 206, 207, 209, 238, 239, 240, 248, 249, 250, 251, 252, 259, 271, 272, 274], "ani": [0, 73, 74, 107, 108, 139, 202, 209, 211, 228, 240, 250, 254, 258, 260, 262, 264, 266, 267, 271, 276, 277], "current": [0, 1, 12, 19, 45, 56, 61, 81, 111, 115, 116, 117, 128, 141, 202, 256, 258, 260, 262, 271], "print": [0, 25, 27, 34, 35, 45, 46, 49, 59, 61, 69, 71, 73, 88, 105, 106, 107, 115, 116, 117, 118, 121, 131, 147, 173, 180, 191, 192, 194, 202, 203, 205, 207, 209, 218, 219, 224, 236, 237, 239, 240, 241, 242, 245, 255, 256, 259, 266, 271, 272, 273, 274, 276, 277], "option": [0, 31, 73, 115, 166, 177, 202, 232, 242, 245, 262, 268, 271], "packag": [0, 103, 104, 202, 209, 232, 240, 242, 245, 262, 267, 271, 272, 276, 277], "thi": [0, 1, 2, 3, 4, 5, 6, 8, 11, 18, 22, 25, 29, 36, 37, 40, 41, 43, 47, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 77, 78, 80, 81, 91, 99, 103, 104, 106, 111, 112, 114, 115, 116, 119, 129, 133, 137, 138, 141, 143, 148, 153, 154, 155, 166, 167, 168, 171, 185, 186, 191, 192, 194, 195, 197, 198, 199, 201, 202, 204, 206, 212, 213, 217, 218, 225, 230, 232, 233, 235, 238, 242, 244, 245, 249, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 274, 276, 277], "equival": [0, 31, 33, 59, 91, 99, 107, 116, 131, 132, 135, 141, 145, 165, 177, 179, 191, 202, 209, 225, 240, 242, 245, 255, 258, 259, 260, 263, 270, 271, 276, 277], "printopt": [0, 202, 242, 245, 271], "kwarg": [0, 242, 271], "context": [0, 18, 106, 242, 252, 258, 271], "manag": [0, 18, 106, 242, 258, 271], "temporarili": [0, 106, 242, 256, 258], "modifi": [0, 55, 56, 81, 106, 115, 127, 128, 133, 138, 143, 242, 245, 256, 258, 259, 264, 271, 273, 274], "set_printopt": [0, 146, 147, 202, 242, 245, 258, 271], "coeff": [0, 46, 58, 75, 118, 130, 132, 133, 143, 145, 148, 149, 151, 202, 207, 239, 242, 245, 259, 271], "desc": [0, 143, 148, 202, 245], "asc": [0, 143, 148, 202, 242, 245, 259, 271], "galoi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276], "arrai": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 31, 32, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 75, 80, 83, 84, 89, 91, 92, 93, 94, 99, 103, 104, 106, 114, 116, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 145, 148, 149, 151, 156, 163, 164, 166, 177, 178, 204, 222, 230, 248, 250, 251, 252, 253, 257, 258, 259, 260, 267, 268, 270, 271, 272, 274, 276, 277], "field": [1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 49, 52, 57, 59, 60, 61, 65, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 94, 95, 96, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 113, 115, 116, 117, 118, 121, 124, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178, 179, 180, 183, 184, 185, 186, 187, 189, 191, 193, 194, 199, 204, 206, 207, 209, 214, 225, 230, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 252, 254, 256, 257, 258, 259, 260, 264, 266, 267, 271, 273, 274], "cannot": [1, 8, 31, 61, 77, 78, 80, 111, 112, 115, 177, 232, 233, 247, 257, 269, 276, 277], "instanti": [1, 61, 255, 256, 273], "directli": [1, 61, 255], "classmethod": [1, 2, 3, 4, 5, 6, 8, 18, 45, 46, 61, 62, 63, 64, 65, 66, 67, 68, 73, 77, 103, 104, 106, 107, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 255, 258, 259, 266, 271, 273, 276, 277], "ident": [1, 2, 59, 61, 62, 89, 108, 110, 116, 131, 132, 134, 141, 204, 255, 259, 260, 271, 272, 277], "self": [1, 2, 3, 4, 5, 6, 45, 46, 61, 62, 63, 64, 65, 66, 68, 76, 83, 84, 90, 92, 97, 99, 103, 104, 108, 109, 116, 117, 118, 132, 133, 134, 135, 136, 137, 138, 139, 140, 272], "matrix": [1, 2, 22, 23, 24, 31, 32, 33, 61, 62, 64, 66, 75, 76, 90, 92, 93, 97, 99, 108, 109, 116, 141, 168, 169, 170, 177, 178, 179, 255, 258, 269, 270, 271, 272, 274], "Ones": [1, 3, 61, 63, 116, 256], "ones": [1, 3, 46, 47, 61, 63, 116, 118, 119, 133, 138], "element": [1, 2, 3, 4, 5, 6, 8, 12, 13, 17, 18, 22, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, 74, 75, 77, 78, 80, 81, 82, 83, 84, 88, 89, 91, 93, 94, 96, 101, 102, 103, 104, 106, 107, 110, 111, 112, 113, 114, 115, 141, 143, 152, 166, 168, 206, 209, 214, 222, 236, 237, 238, 239, 240, 241, 248, 250, 251, 254, 255, 256, 257, 271, 273], "zero": [1, 6, 31, 61, 68, 94, 108, 116, 132, 133, 140, 148, 150, 163, 164, 177, 204, 206, 207, 230, 238, 239, 254, 256, 258, 259, 260, 271, 274, 276, 277], "compil": [1, 8, 9, 19, 20, 60, 77, 78, 111, 112, 115, 249, 267, 269, 270, 271, 272, 274], "mode": [1, 8, 9, 19, 20, 61, 77, 78, 111, 112, 115, 116, 269, 270, 271], "recompil": [1, 8, 61, 77, 78, 111, 112, 116], "just": [1, 8, 18, 61, 77, 106, 116, 255, 257, 258, 267], "ufunc": [1, 8, 61, 77, 78, 111, 112, 115, 116, 267, 269, 270, 271], "new": [1, 8, 55, 61, 77, 116, 127, 157, 158, 193, 200, 257, 258, 266, 267, 269, 271], "calcul": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 132, 141, 166, 209, 255, 258, 260, 267, 268, 271, 274, 276], "repr": [1, 18, 25, 60, 61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 115, 116, 146, 236, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 274, 276, 277], "gener": [1, 4, 8, 18, 22, 23, 25, 28, 29, 31, 33, 36, 37, 42, 43, 61, 64, 73, 77, 94, 101, 102, 106, 107, 115, 116, 137, 155, 157, 158, 162, 168, 169, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 197, 199, 201, 207, 209, 215, 217, 223, 239, 240, 241, 242, 243, 244, 255, 261, 267, 269, 271, 276, 277], "set": [1, 18, 61, 90, 97, 106, 115, 116, 148, 190, 209, 219, 240, 241, 256, 257, 259, 263, 264, 266, 268, 271, 274, 276, 277], "represent": [1, 12, 18, 26, 48, 65, 69, 73, 81, 106, 107, 115, 120, 135, 139, 144, 146, 147, 172, 193, 248, 250, 252, 256, 271, 273, 276, 277], "from": [1, 4, 18, 22, 45, 46, 47, 61, 64, 67, 69, 73, 88, 89, 91, 106, 114, 116, 117, 118, 119, 132, 133, 135, 137, 138, 139, 143, 153, 154, 155, 159, 161, 166, 167, 168, 194, 197, 198, 199, 200, 201, 204, 207, 209, 218, 219, 220, 224, 228, 230, 232, 233, 239, 240, 241, 244, 246, 252, 255, 256, 258, 259, 260, 261, 266, 268, 271, 273, 274, 277], "gr": [1, 7, 10, 16, 255], "default_ufunc_mod": [1, 9, 61, 78, 116], "jit": [1, 8, 9, 19, 60, 61, 77, 78, 91, 111, 112, 115, 116, 257, 268, 269, 270, 271, 272], "lookup": [1, 8, 9, 18, 19, 60, 61, 77, 78, 91, 106, 111, 112, 115, 116, 258, 267, 268, 271], "python": [1, 8, 9, 19, 60, 61, 77, 78, 80, 103, 104, 111, 112, 115, 116, 204, 209, 218, 230, 232, 240, 249, 254, 256, 260, 261, 263, 266, 267, 268, 271, 273, 274, 277], "dtype": [1, 2, 3, 4, 5, 6, 11, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 114, 116, 249, 256, 269, 270, 271], "valid": [1, 11, 31, 32, 61, 80, 116, 141, 177, 178, 258, 271], "integ": [1, 4, 11, 18, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 79, 80, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 132, 135, 137, 144, 152, 190, 192, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 223, 224, 228, 229, 230, 231, 232, 233, 234, 235, 240, 241, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259, 260, 266, 267, 269, 271, 274, 276, 277], "compat": [1, 11, 61, 80, 116, 157, 158, 193, 275], "element_repr": [1, 12, 18, 61, 81, 106, 116, 258, 273], "irreduc": [1, 14, 25, 61, 85, 88, 115, 116, 132, 153, 154, 155, 159, 161, 162, 167, 171, 190, 197, 199, 201, 206, 207, 214, 217, 223, 236, 237, 238, 255, 259, 267, 269, 271, 274], "polynomi": [1, 14, 18, 25, 28, 29, 31, 33, 36, 37, 42, 43, 47, 50, 51, 54, 61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 82, 83, 84, 85, 88, 89, 91, 93, 94, 96, 101, 102, 106, 107, 110, 113, 114, 115, 116, 119, 122, 123, 126, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 171, 174, 175, 177, 179, 181, 182, 187, 188, 190, 191, 193, 194, 197, 199, 201, 206, 207, 214, 217, 222, 223, 225, 236, 237, 238, 239, 242, 243, 245, 248, 250, 251, 252, 254, 255, 266, 267, 269, 271, 274, 277], "name": [1, 15, 34, 35, 45, 61, 69, 88, 94, 95, 103, 104, 105, 107, 115, 116, 180, 224, 228, 236, 237, 255, 256, 263, 266, 268, 271, 274, 276, 277], "em": [1, 16], "primit": [1, 17, 22, 23, 24, 25, 26, 27, 28, 38, 39, 42, 45, 61, 69, 88, 91, 94, 101, 102, 103, 104, 107, 115, 116, 117, 132, 157, 158, 159, 161, 166, 168, 169, 170, 171, 172, 173, 174, 183, 184, 187, 193, 204, 209, 214, 215, 225, 230, 236, 237, 238, 239, 240, 241, 254, 255, 256, 257, 258, 259, 267, 271, 273], "ufunc_mod": [1, 8, 19, 20, 61, 77, 91, 111, 112, 116, 257, 268, 269, 270, 271], "support": [1, 20, 61, 112, 115, 116, 225, 254, 256, 257, 259, 260, 266, 267, 271, 272, 273, 274], "unit": [1, 21, 61, 94, 113, 116, 256, 262, 271, 274], "paramet": [2, 3, 4, 5, 6, 8, 18, 25, 31, 32, 33, 46, 47, 55, 57, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 91, 103, 104, 106, 107, 108, 114, 115, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 148, 152, 154, 157, 158, 166, 171, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247], "along": [2, 62, 191], "one": [2, 31, 32, 57, 62, 103, 104, 129, 132, 136, 137, 160, 162, 177, 178, 209, 217, 225, 226, 227, 232, 240, 254, 255, 257, 259, 260, 268, 277], "dimens": [2, 22, 40, 62, 67, 76, 90, 97, 109, 114, 168, 185, 253, 254, 258], "which": [2, 3, 4, 5, 6, 8, 25, 46, 47, 55, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 91, 94, 107, 108, 114, 115, 118, 119, 127, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 148, 154, 166, 171, 195, 200, 201, 204, 209, 223, 225, 226, 227, 230, 232, 240, 241, 244, 245, 247, 256, 257, 269, 270, 271, 276, 277], "unsign": [2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 114, 256], "first": [2, 3, 4, 5, 6, 22, 25, 29, 31, 36, 37, 43, 57, 62, 63, 64, 65, 66, 67, 68, 69, 114, 143, 152, 157, 158, 168, 171, 175, 177, 181, 182, 188, 193, 197, 201, 204, 206, 207, 212, 225, 230, 232, 238, 239, 255, 256, 257, 258, 263, 264, 268, 270, 271, 272, 274, 276, 277], "compliant": [3, 4, 6, 63, 64, 68], "low": [4, 64, 91, 177, 178, 206, 256, 271], "0": [4, 22, 23, 24, 28, 29, 31, 32, 33, 36, 39, 42, 43, 45, 46, 47, 49, 50, 51, 53, 56, 57, 58, 59, 61, 62, 64, 67, 68, 69, 72, 73, 74, 75, 76, 81, 82, 83, 84, 89, 90, 91, 92, 93, 94, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 114, 116, 117, 118, 119, 121, 122, 123, 125, 127, 128, 129, 130, 131, 132, 133, 138, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 160, 161, 163, 164, 165, 166, 167, 168, 169, 174, 175, 177, 178, 179, 181, 184, 188, 191, 193, 194, 195, 196, 204, 206, 207, 209, 213, 219, 220, 222, 224, 228, 230, 233, 238, 239, 240, 241, 242, 245, 250, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 266, 268, 275, 276, 277], "high": [4, 64, 212, 256], "scalar": [4, 31, 32, 64, 69, 72, 75, 89, 93, 94, 103, 108, 141, 152, 177, 178, 250, 253, 271, 272, 273], "inclus": [4, 5, 64, 65, 240, 241], "largest": [4, 64, 209, 236, 240, 241, 271], "exclus": [4, 5, 64, 65, 240, 241], "neg": [4, 57, 64, 129, 137, 205, 210, 218, 231, 244, 260, 271], "initi": [4, 45, 46, 47, 53, 55, 57, 59, 64, 117, 118, 119, 125, 127, 129, 131, 137, 244, 256, 257, 271], "prng": [4, 64, 137, 244], "mean": [4, 22, 25, 37, 38, 39, 64, 132, 137, 160, 168, 171, 182, 183, 184, 209, 240, 244, 268, 269, 270, 271, 272, 274, 276, 277], "unpredict": [4, 64, 137, 244], "entropi": [4, 64, 137, 244], "pull": [4, 64, 137, 244], "o": [4, 64, 137, 204, 230, 244, 249, 256, 271], "also": [4, 22, 40, 41, 57, 64, 71, 73, 94, 129, 137, 168, 185, 186, 199, 254, 255, 256, 259, 260, 264, 266, 267, 268, 270, 274, 276, 277], "pass": [4, 22, 31, 32, 33, 47, 64, 119, 137, 168, 177, 178, 179, 204, 230, 256, 258, 259, 261, 262, 266, 268, 274], "step": [5, 45, 53, 55, 56, 57, 59, 65, 117, 125, 127, 128, 129, 131, 155, 191, 199, 232, 255], "increment": [5, 65], "between": [5, 65, 139, 193, 254, 271, 274, 276, 277], "properti": [7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, 52, 53, 54, 56, 58, 69, 74, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 90, 94, 95, 96, 97, 98, 100, 101, 102, 105, 107, 109, 110, 111, 112, 113, 115, 121, 122, 123, 124, 125, 126, 128, 130, 148, 149, 150, 151, 156, 160, 163, 164, 169, 170, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 204, 236, 237, 258, 263, 266, 271, 273, 274, 276, 277], "auto": [8, 60, 77, 115], "updat": [8, 18, 77, 106, 261, 272], "select": [8, 77, 115, 200, 226, 257, 276, 277], "less": [8, 77, 78, 111, 115, 161, 214, 227, 228, 236, 237, 257, 258, 269, 270, 274, 276, 277], "than": [8, 30, 57, 77, 78, 89, 91, 96, 110, 111, 115, 129, 161, 162, 204, 210, 214, 217, 225, 227, 228, 230, 231, 236, 237, 247, 256, 257, 258, 260, 267, 269, 270, 271, 274, 276, 277], "20": [8, 25, 31, 32, 33, 45, 64, 65, 69, 75, 76, 77, 78, 82, 91, 99, 101, 102, 104, 107, 109, 110, 111, 113, 115, 117, 155, 169, 170, 173, 177, 178, 179, 184, 187, 192, 198, 199, 209, 214, 235, 240, 246, 250, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 273, 276, 277], "larger": [8, 77, 115, 204, 225, 230, 247, 257], "whose": [8, 22, 28, 77, 78, 80, 111, 112, 115, 132, 153, 168, 174, 209, 214, 240, 271], "int64": [8, 77, 78, 80, 111, 112, 115, 249, 256, 257, 271, 273], "arithmet": [8, 22, 25, 34, 45, 51, 52, 73, 77, 78, 80, 111, 112, 115, 117, 123, 124, 132, 144, 204, 230, 255, 257, 267, 268, 269, 270, 271, 274], "zech": [8, 77, 115, 257], "anti": [8, 77, 115], "tabl": [8, 18, 61, 73, 77, 78, 91, 106, 107, 111, 112, 115, 116, 206, 225, 258, 267, 271, 276, 277], "effici": [8, 57, 77, 115, 129, 212, 233, 235, 240, 260, 267, 269, 270, 271, 277], "In": [8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "few": [8, 77, 115, 276, 277], "case": [8, 77, 115, 224, 232, 257, 264, 270], "explicit": [8, 18, 77, 78, 91, 106, 111, 112, 115, 250, 258, 267, 271, 276, 277], "faster": [8, 77, 115, 257, 267, 270, 271, 274], "design": [8, 25, 29, 30, 36, 37, 43, 77, 115, 171, 175, 182, 261, 267, 273], "larg": [8, 18, 77, 80, 106, 115, 212, 240, 256, 257, 258, 267, 271, 274], "should": [8, 25, 77, 94, 115, 171, 206, 212, 238], "store": [8, 77, 115, 256, 257, 261, 262, 264], "ram": [8, 77, 115], "slower": [8, 77, 115, 257, 269, 270], "pure": [8, 77, 78, 111, 112, 115, 257, 267], "reserv": [8, 77, 115], "instead": [8, 61, 77, 115, 204, 230, 250, 255, 256, 267, 269, 271, 272, 273], "object_": [8, 77, 80, 115, 256, 257, 271], "arbitrari": [8, 73, 77, 115, 241], "precis": [8, 77, 115], "To": [18, 22, 106, 168, 258, 262, 264, 268, 269, 271, 277], "displai": [18, 61, 70, 71, 73, 106, 116, 146, 147, 242, 245, 258, 268, 271, 272, 273, 276, 277], "must": [18, 25, 78, 80, 103, 104, 106, 111, 115, 139, 148, 171, 190, 203, 204, 211, 222, 223, 230, 232, 243, 252, 256, 258, 263, 268, 270, 276], "discret": [18, 61, 91, 106, 116, 204, 230, 254, 258, 271], "logarithm": [18, 61, 91, 106, 115, 116, 203, 257, 258, 266, 271], "each": [18, 31, 36, 61, 72, 89, 94, 106, 107, 115, 116, 154, 155, 166, 167, 177, 181, 190, 194, 199, 209, 223, 232, 237, 240, 241, 243, 254, 255, 258, 269, 270, 271, 272, 274], "For": [18, 31, 32, 33, 65, 75, 79, 80, 83, 84, 93, 100, 103, 104, 106, 114, 115, 139, 144, 152, 153, 165, 177, 178, 179, 191, 192, 198, 204, 206, 209, 218, 228, 230, 232, 255, 256, 257, 258, 263, 269, 270, 271, 272, 273, 276, 277], "process": [18, 106, 258], "take": [18, 106, 115, 257, 258, 277], "while": [18, 106, 115, 206, 207, 238, 239, 255, 258, 259, 268], "howev": [18, 103, 104, 106, 142, 175, 182, 192, 200, 204, 214, 219, 225, 228, 230, 238, 255, 256, 257, 258, 269, 270, 271, 276, 277], "when": [18, 22, 75, 93, 103, 104, 106, 115, 192, 233, 254, 256, 258, 260, 263, 266, 267, 269, 270, 271, 272, 274, 276, 277], "fast": [18, 106, 258, 270], "other": [18, 83, 84, 106, 107, 132, 142, 200, 204, 206, 207, 225, 228, 230, 238, 239, 255, 258, 259, 267, 271, 274, 275], "statement": [18, 106, 242, 263, 271], "perman": [18, 81, 106, 258], "disregard": [18, 106, 206, 207, 238, 239], "note": [18, 30, 33, 36, 42, 44, 45, 47, 50, 51, 67, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89, 90, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 117, 119, 122, 123, 135, 138, 139, 144, 147, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 177, 179, 181, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 211, 212, 213, 214, 215, 216, 217, 219, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 237, 238, 239, 240, 241, 244, 246, 260, 263, 276, 277], "_q": [22, 30, 31, 40, 41, 168, 176, 185, 186], "linear": [22, 45, 50, 52, 54, 58, 76, 109, 117, 122, 124, 126, 130, 168, 191, 267, 271], "block": [22, 168, 242, 271], "codeword": [22, 25, 31, 32, 33, 35, 36, 39, 41, 44, 168, 171, 177, 178, 179, 180, 181, 184, 186, 189, 273], "messag": [22, 25, 31, 32, 33, 39, 40, 168, 171, 177, 178, 179, 184, 185, 273], "minimum": [22, 30, 31, 168, 176, 206, 207, 225, 238, 239, 271, 274], "distanc": [22, 25, 29, 30, 31, 36, 37, 43, 168, 171, 175, 176, 182, 273], "taken": [22, 168, 204, 230], "alphabet": [22, 25, 35, 168, 171, 180], "construct": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 73, 115, 117, 118, 119, 132, 133, 134, 135, 136, 137, 138, 139, 140, 155, 159, 168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 199, 236, 237, 257, 271], "full": [22, 168, 242], "encod": [22, 25, 31, 32, 33, 168, 171, 177, 178, 179, 271, 273], "decod": [22, 31, 168, 177, 271, 273, 274], "onli": [22, 29, 31, 32, 33, 36, 37, 43, 80, 89, 108, 112, 141, 157, 159, 166, 168, 177, 178, 179, 193, 196, 207, 209, 210, 214, 215, 231, 239, 240, 241, 242, 247, 255, 256, 257, 264, 269, 270, 271, 274, 276, 277], "applic": [22, 31, 32, 33, 45, 117, 168, 177, 178, 179, 191, 206, 207, 238, 239, 271], "systemat": [22, 23, 25, 31, 32, 33, 39, 168, 169, 171, 177, 178, 179, 184, 271], "root": [22, 25, 28, 29, 31, 36, 37, 43, 61, 89, 101, 102, 103, 104, 110, 115, 116, 132, 138, 159, 166, 168, 171, 174, 175, 177, 181, 182, 188, 204, 205, 209, 215, 218, 230, 240, 241, 259, 266, 271], "alpha": [22, 25, 28, 29, 31, 36, 37, 43, 61, 69, 91, 101, 102, 103, 104, 116, 166, 168, 171, 174, 175, 177, 181, 182, 188, 238, 239, 254, 256, 257, 258, 266, 277], "evalu": [22, 31, 36, 43, 75, 93, 132, 138, 141, 177, 181, 188, 222, 271, 274], "uniti": [22, 25, 28, 61, 103, 104, 116, 168, 171, 174, 204, 230, 254], "m_": [22, 31, 33, 177, 179], "exampl": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 255, 256, 258, 259, 266, 269, 270, 271, 272, 273, 276, 277], "binari": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 115, 135, 206, 254, 259, 271, 274], "15": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 57, 61, 64, 65, 69, 73, 75, 82, 89, 91, 93, 94, 101, 102, 103, 104, 107, 110, 113, 115, 117, 129, 132, 155, 166, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 199, 204, 208, 209, 212, 229, 230, 231, 232, 234, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 270, 273, 276, 277], "out": [22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "corrupt": [22, 31, 168, 177], "6": [22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 53, 55, 56, 57, 58, 59, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 78, 81, 82, 83, 84, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 118, 121, 125, 127, 128, 129, 130, 131, 135, 137, 138, 141, 142, 148, 152, 153, 154, 155, 157, 158, 159, 160, 161, 166, 167, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 210, 213, 214, 217, 219, 222, 223, 224, 225, 228, 230, 231, 232, 236, 237, 238, 239, 240, 241, 242, 243, 245, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 264, 266, 267, 268, 269, 270, 271, 273, 274, 276, 277], "dec_m": [22, 168], "np": [22, 31, 64, 69, 75, 91, 92, 99, 103, 104, 108, 110, 137, 141, 168, 177, 191, 204, 222, 230, 237, 248, 249, 255, 256, 258, 260, 266, 269, 270, 271, 273, 274, 276, 277], "array_equ": [22, 31, 91, 92, 99, 110, 168, 177, 191, 222, 254, 271], "true": [22, 25, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 50, 51, 60, 61, 69, 75, 76, 86, 87, 88, 89, 90, 91, 92, 97, 99, 105, 107, 109, 110, 115, 116, 122, 123, 135, 141, 142, 144, 153, 154, 157, 158, 159, 160, 161, 162, 166, 167, 168, 171, 173, 174, 175, 177, 178, 180, 182, 183, 184, 190, 191, 192, 193, 194, 197, 198, 200, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 222, 226, 227, 228, 230, 231, 236, 237, 238, 239, 240, 241, 244, 246, 254, 255, 256, 258, 260, 266, 270, 271, 274, 276, 277], "instruct": [22, 168, 263, 264], "number": [22, 25, 31, 32, 33, 57, 66, 76, 90, 97, 108, 109, 129, 152, 168, 171, 177, 178, 179, 198, 200, 204, 206, 207, 209, 215, 216, 228, 230, 237, 238, 239, 240, 241, 244, 246, 264, 267, 271, 274, 276, 277], "correct": [22, 31, 44, 168, 177, 189, 197, 267, 269, 276, 277], "error": [22, 31, 32, 44, 168, 177, 178, 189, 197, 225, 267, 271, 274], "8": [22, 23, 25, 27, 28, 31, 32, 33, 36, 37, 39, 43, 45, 55, 57, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 148, 152, 153, 154, 155, 156, 157, 158, 161, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 204, 206, 207, 209, 210, 213, 218, 219, 222, 230, 231, 232, 236, 237, 238, 239, 240, 241, 243, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "9": [22, 23, 25, 27, 28, 31, 32, 33, 37, 39, 45, 55, 57, 61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 82, 83, 84, 89, 91, 93, 94, 96, 99, 101, 102, 103, 104, 106, 107, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 153, 154, 157, 158, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 206, 209, 210, 219, 228, 230, 231, 232, 236, 238, 240, 241, 243, 246, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277], "__repr__": [22, 26, 45, 48, 61, 70, 116, 117, 120, 132, 146, 168, 172], "ters": [22, 26, 45, 48, 117, 120, 168, 172], "__str__": [22, 27, 45, 49, 61, 71, 116, 117, 121, 132, 139, 147, 168, 173, 271, 272], "format": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 192, 209, 240, 263, 268, 274], "relev": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 271], "_field": [22, 31, 73, 103, 104, 168, 177], "_arrai": [22, 31, 73, 103, 104, 132, 166, 168, 177], "mathbf": [22, 23, 24, 31, 32, 33, 36, 61, 75, 76, 90, 92, 97, 99, 108, 109, 116, 168, 169, 170, 177, 178, 179, 181], "present": [22, 32, 168, 178, 271], "extension_field": [22, 25, 27, 34, 36, 38, 43], "defin": [22, 25, 29, 34, 35, 45, 50, 51, 52, 54, 58, 76, 83, 84, 90, 92, 94, 97, 99, 109, 115, 117, 122, 123, 124, 126, 130, 152, 157, 168, 171, 175, 180, 193, 194, 195, 204, 214, 222, 230, 233, 236, 237, 255, 257, 276, 277], "syndrom": [22, 25, 31, 34, 177], "call": [22, 40, 41, 57, 81, 94, 103, 104, 106, 115, 129, 168, 185, 186, 209, 218, 228, 232, 240, 255, 256, 257, 266, 271, 274, 277], "length": [22, 31, 32, 33, 41, 61, 67, 114, 116, 132, 145, 148, 168, 177, 178, 179, 186, 204, 230, 256, 263, 271], "capabl": [22, 44, 168, 189, 276, 277], "is_narrow_sens": [22, 27, 37, 168, 173, 182], "indic": [22, 25, 31, 32, 37, 38, 39, 61, 86, 87, 88, 89, 115, 116, 139, 141, 157, 158, 159, 161, 162, 168, 171, 177, 178, 182, 183, 184, 204, 207, 239, 241, 254, 256, 260, 271, 274], "narrow": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "sens": [22, 25, 29, 36, 37, 43, 168, 171, 172, 173, 175, 181, 182, 188, 273], "consecut": [22, 25, 28, 29, 36, 37, 43, 168, 171, 174, 175, 181, 182, 188, 228], "is_primit": [22, 27, 38, 132, 157, 158, 161, 168, 173, 183, 193, 225, 238, 239, 271, 274], "is_systemat": [22, 27, 39, 168, 173, 184, 271], "have": [22, 39, 61, 86, 87, 89, 116, 132, 142, 153, 164, 168, 184, 207, 212, 219, 222, 228, 239, 241, 256, 257, 258, 259, 266, 271, 274, 276, 277], "pariti": [22, 24, 25, 33, 39, 42, 168, 170, 171, 179, 184, 187], "append": [22, 25, 39, 70, 71, 168, 171, 184], "h": [22, 24, 42, 157, 159, 168, 170, 187, 193], "check": [22, 24, 42, 132, 157, 168, 170, 187, 212, 225, 256], "generator_poli": [22, 23, 27, 36, 37, 39, 43, 168, 169, 173, 175, 181, 182, 184, 188], "parity_check_poli": [22, 24, 42, 168, 170, 187], "13": [23, 24, 25, 26, 27, 28, 31, 32, 33, 38, 39, 42, 45, 57, 61, 65, 69, 73, 75, 82, 89, 90, 91, 93, 94, 101, 102, 107, 108, 110, 113, 115, 117, 129, 135, 139, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 195, 197, 198, 204, 208, 209, 210, 212, 226, 229, 230, 231, 232, 234, 235, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 271, 272, 273, 274, 276, 277], "fals": [23, 27, 31, 32, 37, 38, 39, 75, 86, 87, 88, 89, 115, 132, 141, 142, 157, 158, 159, 160, 161, 162, 166, 169, 173, 177, 178, 182, 183, 184, 190, 192, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 228, 231, 236, 237, 239, 240, 241, 255, 256, 268, 271, 273], "2x": [23, 24, 27, 34, 39, 42, 61, 69, 75, 93, 107, 115, 152, 154, 155, 157, 158, 159, 161, 162, 167, 170, 180, 187, 193, 194, 197, 199, 206, 207, 214, 217, 223, 236, 237, 238, 239, 243, 248, 250, 251, 252, 255, 256, 258, 259, 260, 266, 271, 276], "either": [25, 31, 32, 33, 108, 112, 139, 148, 171, 177, 178, 179, 228, 245, 257, 258, 266, 267], "provid": [25, 94, 115, 171, 193, 255, 256, 269, 271, 276, 277], "both": [25, 59, 131, 171, 254, 271], "mai": [25, 30, 47, 73, 78, 111, 112, 115, 119, 139, 171, 200, 204, 206, 207, 225, 228, 230, 232, 239, 241, 247, 255, 256, 257, 259, 260, 271, 274, 277], "long": [25, 171, 244], "thei": [25, 103, 104, 115, 133, 138, 142, 143, 157, 158, 171, 193, 200, 210, 231, 255, 256, 257, 259, 260, 268, 269, 275, 276, 277], "consist": [25, 132, 139, 157, 158, 171, 193, 238, 271, 272], "correspond": [25, 31, 32, 33, 46, 47, 55, 107, 115, 118, 119, 127, 133, 134, 135, 136, 137, 138, 139, 140, 148, 152, 153, 155, 167, 171, 177, 178, 179, 195, 199, 204, 230, 240, 241, 247], "extens": [25, 31, 61, 65, 79, 82, 83, 84, 86, 100, 101, 102, 113, 115, 116, 193, 206, 207, 214, 232, 236, 237, 238, 239, 254, 256, 258, 267, 268, 271, 274, 277], "primitive_root_of_un": [25, 61, 103, 116, 171, 254, 271], "26": [25, 26, 27, 30, 31, 32, 34, 35, 40, 41, 44, 64, 69, 75, 76, 82, 90, 91, 101, 102, 107, 110, 113, 117, 170, 173, 176, 177, 178, 180, 185, 186, 187, 189, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "17": [25, 31, 32, 33, 45, 65, 69, 73, 75, 82, 91, 92, 101, 102, 107, 108, 110, 113, 115, 117, 169, 173, 177, 178, 179, 184, 198, 204, 209, 226, 228, 229, 230, 231, 232, 235, 240, 241, 246, 247, 248, 250, 251, 253, 254, 255, 256, 258, 259, 260, 266, 268, 272, 273, 274, 276, 277], "10": [25, 31, 32, 33, 37, 45, 53, 55, 56, 57, 59, 61, 64, 65, 69, 72, 73, 75, 82, 89, 90, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 157, 158, 159, 166, 167, 168, 169, 170, 173, 177, 178, 179, 182, 184, 187, 191, 192, 193, 194, 197, 199, 200, 204, 206, 209, 210, 212, 216, 217, 225, 228, 230, 231, 232, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "11": [25, 27, 31, 32, 33, 45, 55, 57, 61, 65, 67, 69, 72, 73, 75, 76, 82, 89, 90, 91, 92, 93, 94, 96, 97, 101, 102, 103, 104, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 169, 170, 173, 177, 178, 179, 181, 182, 184, 187, 188, 190, 191, 192, 194, 197, 198, 200, 204, 209, 210, 230, 231, 232, 235, 236, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "discov": [25, 199, 225, 232, 247, 271, 274, 277], "loop": [25, 207, 239, 241, 269, 270, 271, 272, 274], "12": [25, 27, 31, 32, 33, 45, 55, 57, 61, 65, 67, 69, 72, 73, 75, 82, 89, 91, 92, 93, 94, 97, 101, 102, 106, 107, 108, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 169, 170, 173, 175, 177, 178, 179, 181, 182, 184, 187, 188, 192, 194, 196, 197, 198, 201, 204, 209, 210, 216, 225, 228, 231, 236, 238, 240, 241, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 270, 271, 272, 274, 276, 277], "14": [25, 26, 27, 30, 31, 32, 33, 34, 35, 40, 41, 44, 45, 57, 61, 65, 69, 73, 75, 82, 89, 91, 93, 94, 97, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 129, 135, 152, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 204, 209, 223, 225, 230, 231, 238, 240, 243, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 262, 266, 268, 269, 270, 276, 277], "24": [25, 31, 32, 45, 64, 69, 75, 82, 91, 97, 99, 101, 102, 107, 110, 113, 115, 117, 155, 169, 173, 177, 178, 184, 196, 199, 209, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 268, 273, 274, 276, 277], "22": [25, 31, 32, 45, 64, 69, 75, 76, 82, 90, 91, 92, 101, 102, 107, 110, 113, 115, 117, 169, 170, 173, 177, 178, 184, 187, 209, 228, 241, 250, 254, 255, 256, 258, 259, 260, 262, 268, 276, 277], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 76, 82, 90, 91, 101, 102, 104, 107, 110, 113, 115, 117, 155, 166, 169, 173, 176, 177, 178, 179, 180, 184, 185, 186, 189, 192, 199, 209, 217, 231, 240, 250, 251, 254, 255, 256, 258, 259, 260, 266, 268, 273, 274, 276, 277], "16": [25, 31, 32, 33, 34, 45, 64, 65, 67, 69, 73, 75, 78, 82, 90, 91, 92, 101, 102, 103, 104, 107, 108, 109, 110, 111, 113, 114, 115, 117, 135, 169, 170, 173, 177, 178, 179, 180, 184, 187, 192, 197, 201, 209, 225, 228, 231, 237, 240, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 272, 273, 276, 277], "string": [27, 49, 73, 95, 105, 107, 121, 135, 139, 147, 173, 248, 249, 250, 251, 252, 256, 259, 263, 271, 276], "multiplicative_ord": [28, 61, 94, 107, 116, 174, 214, 236, 237, 255, 271, 273, 276, 277], "notic": [29, 36, 37, 43, 57, 59, 107, 115, 129, 131, 141, 175, 182, 204, 219, 230, 238, 276, 277], "greater": [30, 78, 89, 96, 110, 111, 162, 210, 217, 231, 257, 269, 270, 271, 276], "d_": [30, 31, 32, 178], "min": [30, 31, 32, 76, 109, 178, 206, 207, 209, 225, 236, 238, 239, 240, 263, 268, 271, 274], "vector": [31, 32, 33, 45, 46, 47, 53, 55, 56, 61, 67, 76, 90, 97, 107, 109, 114, 116, 117, 118, 119, 125, 127, 128, 141, 177, 178, 179, 256, 267, 271, 276, 277], "specifi": [31, 33, 45, 55, 61, 64, 70, 71, 73, 91, 115, 116, 117, 127, 132, 133, 139, 147, 148, 177, 179, 204, 230, 240, 241, 254, 255, 256, 259, 273, 274, 276], "entir": [31, 177, 269, 276], "too": [31, 80, 177, 244, 263], "member": [31, 33, 177, 179], "m_1": [31, 33, 138, 166, 177, 179, 194], "m_0": [31, 33, 177, 179], "divis": [31, 73, 177, 199, 217, 247, 266, 269, 271], "c_1": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "c_0": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "receiv": [31, 177], "locat": [31, 108, 177, 261, 264], "sigma": [31, 177], "It": [31, 71, 159, 195, 204, 222, 230, 233, 254, 255, 256, 257, 258, 260, 263, 264, 267, 268, 271, 276, 277], "up": [31, 115, 199, 226, 227, 235, 247, 257, 267, 271, 274], "singl": [31, 32, 33, 64, 72, 75, 89, 91, 93, 94, 139, 177, 178, 179, 254, 256, 263, 271], "recov": [31, 177, 232, 255], "19": [31, 32, 33, 45, 65, 69, 75, 82, 91, 92, 99, 101, 102, 104, 107, 108, 110, 113, 115, 117, 155, 169, 173, 177, 178, 179, 184, 198, 199, 209, 226, 235, 240, 241, 246, 250, 252, 254, 255, 256, 258, 259, 260, 266, 268, 272, 276, 277], "three": [31, 32, 33, 177, 178, 179, 223, 225, 241, 243, 257, 276], "21": [31, 32, 45, 64, 69, 75, 82, 90, 91, 92, 101, 102, 107, 110, 113, 115, 117, 169, 171, 172, 173, 174, 177, 178, 183, 184, 209, 240, 241, 250, 254, 255, 256, 258, 259, 260, 266, 268, 270, 274, 276, 277], "23": [31, 32, 45, 69, 75, 82, 91, 101, 102, 107, 109, 110, 113, 117, 155, 173, 177, 178, 199, 209, 250, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "add": [31, 108, 177, 250, 260, 271, 275, 276], "second": [31, 177, 197, 201, 232, 266, 268], "two": [31, 32, 89, 108, 110, 132, 142, 157, 177, 178, 193, 197, 201, 230, 254, 255, 257, 258, 260, 264, 269, 270, 271, 276, 277], "third": [31, 177, 264], "25": [31, 32, 45, 69, 75, 76, 82, 90, 91, 92, 101, 102, 107, 108, 109, 110, 113, 115, 117, 155, 169, 170, 173, 177, 178, 184, 187, 199, 253, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "27": [31, 32, 34, 64, 69, 75, 76, 82, 91, 92, 97, 101, 102, 107, 108, 109, 110, 113, 115, 173, 177, 178, 180, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "28": [31, 32, 64, 75, 76, 82, 85, 91, 97, 99, 101, 102, 104, 110, 113, 115, 155, 173, 177, 178, 199, 223, 254, 255, 256, 258, 259, 260, 268, 276, 277], "29": [31, 32, 64, 75, 76, 82, 90, 91, 92, 97, 99, 101, 102, 108, 109, 110, 113, 155, 173, 177, 178, 199, 228, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "30": [31, 32, 75, 82, 90, 91, 92, 101, 102, 103, 104, 110, 113, 115, 155, 173, 177, 178, 199, 241, 254, 255, 256, 258, 259, 260, 268, 274, 276, 277], "31": [31, 32, 62, 63, 64, 65, 68, 74, 76, 79, 80, 82, 85, 86, 87, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104, 108, 109, 113, 115, 155, 173, 177, 178, 199, 209, 218, 226, 227, 241, 254, 255, 256, 258, 259, 260, 268, 270, 272, 274, 276, 277], "32": [31, 32, 78, 91, 111, 112, 155, 173, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 269, 270, 274, 276, 277], "33": [31, 32, 91, 141, 155, 171, 172, 173, 174, 177, 178, 183, 199, 254, 255, 256, 258, 259, 260, 268, 269, 276, 277], "34": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 266, 268, 271, 276, 277], "35": [31, 32, 91, 115, 177, 178, 210, 231, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "36": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "37": [31, 32, 91, 115, 141, 145, 155, 177, 178, 199, 232, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "38": [31, 32, 91, 155, 157, 158, 177, 178, 193, 199, 228, 254, 256, 258, 259, 260, 266, 268, 276, 277], "39": [31, 91, 155, 177, 178, 194, 199, 254, 256, 258, 259, 260, 268, 271, 276, 277], "40": [31, 91, 155, 177, 178, 199, 254, 256, 258, 259, 260, 266, 268, 271, 276, 277], "41": [31, 91, 115, 155, 177, 199, 232, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "42": [31, 91, 177, 253, 254, 256, 258, 259, 260, 268, 276, 277], "boolean": [32, 89, 178], "were": [32, 178, 267, 271, 274], "is_primitive_poli": [34, 35, 61, 69, 88, 105, 107, 115, 116, 180, 236, 237, 255, 256, 266, 271, 274, 276, 277], "its": [36, 43, 45, 46, 47, 55, 57, 69, 76, 80, 90, 97, 106, 109, 115, 117, 118, 119, 127, 132, 133, 135, 138, 139, 155, 160, 162, 181, 188, 199, 209, 214, 217, 226, 240, 250, 252, 254, 255, 257, 258, 259, 260, 267, 270, 276, 277], "dual": [42, 187], "These": [43, 188, 204, 230, 257, 259, 262, 267, 269, 274], "specif": [43, 138, 188, 232, 255, 262, 264, 266, 268], "bigg": [44, 189, 198, 224], "reciproc": [45, 47, 50, 51, 117, 119, 122, 123, 271, 276, 277], "sequenc": [45, 50, 54, 57, 59, 117, 122, 126, 129, 131, 132, 133, 138, 191, 194, 204, 230, 233, 248, 251, 252, 253], "y_t": [45, 117, 191], "y_": [45, 117, 191], "configur": [45, 91, 117, 267], "c_n": [45, 117], "tap": [45, 46, 49, 58, 59, 117, 118, 121, 130, 131, 191], "left": [45, 61, 90, 108, 109, 116, 117], "right": [45, 108, 117, 272], "t_0": [45, 117], "t_1": [45, 117], "t_": [45, 117], "s_0": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_1": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "s_": [45, 46, 47, 53, 55, 56, 117, 118, 119, 125, 127, 128], "addition": [45, 259], "equal": [45, 98, 132, 141, 142, 154, 155, 190, 192, 199, 260, 269, 270], "next": [45, 57, 117, 129, 166, 207, 209, 239, 240, 241, 262, 266, 268], "revers": [45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 59, 117, 120, 121, 122, 123, 124, 125, 127, 128, 129, 131, 132, 165, 204, 207, 230, 239, 241, 267, 271], "refer": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 269, 271], "gardner": [45, 117, 191], "2019": [45, 117, 191], "model": [45, 117, 191], "cryptographi": [45, 117, 191], "figshar": [45, 117], "http": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 261, 262, 267, 271, 272], "hdl": [45, 117, 191], "handl": [45, 117, 191, 271], "net": [45, 117, 191], "2134": [45, 117, 191], "21932": [45, 117, 191], "feedback_poli": [45, 46, 47, 49, 50, 51, 59, 117, 118, 119, 121, 122, 123, 131, 191], "characteristic_poli": [45, 46, 49, 50, 51, 59, 61, 75, 93, 116, 117, 118, 121, 122, 123, 131, 191, 271], "initial_st": [45, 46, 49, 53, 59, 117, 118, 121, 125, 131, 191], "3x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 142, 144, 146, 147, 148, 149, 150, 151, 152, 154, 160, 163, 164, 165, 167, 170, 175, 181, 182, 187, 188, 191, 194, 197, 206, 238, 242, 243, 245, 255, 259, 260, 271, 274], "5x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 141, 144, 146, 147, 148, 149, 150, 151, 152, 163, 164, 165, 170, 187, 191, 194, 197, 206, 222, 238, 242, 243, 245, 259, 260, 269, 270, 271], "10x": [45, 117, 170, 175, 181, 182, 187, 188], "reset": [45, 55, 117, 127, 266], "to_galois_lfsr": [45, 59], "convert": [45, 59, 61, 67, 114, 116, 117, 131, 133, 138, 143, 204, 230, 236, 237, 256, 257, 258, 259, 266, 270, 271], "same": [45, 57, 59, 115, 117, 129, 131, 132, 141, 142, 153, 155, 175, 182, 199, 204, 222, 225, 230, 238, 255, 270, 271], "finit": [45, 52, 61, 65, 69, 70, 71, 72, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 89, 91, 93, 94, 95, 103, 104, 107, 110, 113, 115, 116, 117, 124, 132, 141, 142, 144, 146, 147, 152, 156, 157, 158, 159, 193, 204, 230, 240, 241, 248, 250, 254, 256, 257, 258, 259, 260, 266, 267, 269, 270, 271, 273, 274, 276, 277], "relat": [45, 58, 117, 130, 255], "state": [46, 47, 49, 53, 55, 56, 57, 59, 118, 119, 121, 125, 127, 128, 129, 131, 191, 271], "becaus": [47, 80, 115, 119, 210, 231, 232, 233, 256, 257, 258, 269, 270, 276, 277], "unaffect": [53, 125], "view": [55, 127, 204, 230, 263, 266, 269, 270, 271, 276, 277], "direct": [57, 129, 209, 240], "backward": [57, 129, 275], "ab": [57, 129, 276], "end": [57, 129, 224], "more": [57, 129, 132, 148, 254, 258, 259, 260, 266, 271, 276, 277], "origin": [57, 129], "given": [59, 76, 90, 97, 109, 131, 137, 157, 193, 215, 232, 237, 240, 241, 255, 257, 259, 274, 276, 277], "fibonacci_lfsr": [59, 131], "differ": [59, 91, 107, 131, 142, 144, 175, 182, 204, 209, 230, 240, 250, 254, 255, 260, 264, 270, 276, 277], "galois_lfsr": [59, 131], "see": [59, 81, 103, 104, 115, 131, 132, 153, 154, 155, 199, 252, 254, 258, 259, 260, 266, 271, 276, 277], "verifi": [60, 115, 244, 255, 271, 274], "factori": [61, 115, 116, 255, 258, 266, 271, 276, 277], "issubclass": [61, 116, 255, 266, 271], "243": [61, 69, 115, 205, 254, 255, 256, 266, 268, 271], "instanc": [61, 116, 204, 230, 254, 256, 257, 259, 263, 267, 271], "44": [61, 91, 115, 155, 177, 199, 254, 255, 256, 258, 259, 260, 268, 270, 271, 276, 277], "236": [61, 91, 254, 266, 271], "206": [61, 91, 254, 268, 271], "138": [61, 91, 254, 256, 268], "isinst": [61, 116, 255, 266, 271], "\u03b1": [61, 65, 66, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 89, 91, 93, 94, 96, 101, 102, 106, 110, 113, 114, 237, 242, 245, 248, 250, 251, 254, 255, 256, 258, 259, 266, 271, 272, 273, 276, 277], "2\u03b1": [61, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 91, 93, 94, 101, 102, 106, 113, 114, 237, 248, 250, 251, 254, 255, 256, 258, 266, 271, 273, 276], "143": [61, 91, 254, 259, 268], "204": [61, 91, 254, 266], "55": [61, 91, 115, 141, 254, 255, 256, 259, 260, 268, 271, 274, 276, 277], "113": [61, 91, 247, 254], "vandermond": [61, 66, 116], "row": [61, 66, 76, 90, 97, 107, 108, 109, 116], "prime": [61, 65, 67, 74, 75, 79, 82, 83, 84, 86, 87, 93, 100, 101, 102, 113, 114, 115, 116, 159, 192, 193, 196, 198, 199, 200, 204, 206, 207, 209, 210, 211, 212, 213, 216, 217, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, 244, 247, 258, 267, 269, 271, 274, 276], "subfield": [61, 67, 83, 84, 100, 114, 116, 193, 258], "non_squar": [61, 89, 96, 116, 254, 271], "primitive_roots_of_un": [61, 104, 116, 271], "without": [61, 71, 116, 132, 147, 250, 259, 266, 267], "arithmetic_t": [61, 73, 116, 271, 276, 277], "repr_tabl": [61, 107, 116, 258, 271, 276, 277], "compar": [61, 107, 116, 142, 258, 269, 270, 271], "additive_ord": [61, 72, 116, 271], "addit": [61, 72, 73, 116, 152, 200, 206, 207, 228, 238, 239, 257, 259, 266, 271, 274], "field_norm": [61, 83, 116, 271], "norm": [61, 83, 116, 271], "_": [61, 83, 84, 116, 241, 257, 276, 277], "field_trac": [61, 84, 116, 271], "trace": [61, 75, 84, 116, 271], "tr": [61, 75, 84, 116], "beta": [61, 91, 116, 254, 271, 272], "minimal_poli": [61, 93, 116, 271], "ord": [61, 94, 107, 116, 276, 277], "column_spac": [61, 76, 97, 116, 271], "column": [61, 66, 76, 97, 99, 108, 116, 268], "space": [61, 76, 90, 97, 109, 116, 139, 250, 258, 271], "left_null_spac": [61, 90, 109, 116, 271], "null": [61, 76, 90, 97, 109, 116], "lu_decompos": [61, 92, 116, 271], "decompos": [61, 92, 99, 116], "input": [61, 72, 75, 89, 92, 93, 94, 99, 108, 116, 204, 230, 254, 257, 258, 270, 271, 274], "lower": [61, 92, 99, 116, 159, 228], "upper": [61, 92, 99, 116], "triangular": [61, 92, 99, 116], "matric": [61, 92, 99, 116, 141, 254, 260, 269, 270], "null_spac": [61, 76, 97, 116, 271], "plu_decompos": [61, 99, 116, 271, 274], "partial": [61, 99, 116], "pivot": [61, 99, 116], "row_reduc": [61, 108, 116, 254, 272], "ncol": [61, 108, 116], "perform": [61, 108, 116, 141, 204, 230, 232, 254, 257, 259, 260, 267, 268, 271, 276, 277], "gaussian": [61, 108, 116], "elimin": [61, 108, 116, 255, 257, 274], "achiev": [61, 108, 116, 171, 204, 230, 271], "reduc": [61, 108, 116, 159, 200, 228, 255, 257, 260, 269, 270, 271, 276, 277], "echelon": [61, 108, 116], "form": [61, 108, 116, 209, 240, 246, 276, 277], "rref": [61, 108, 116], "row_spac": [61, 90, 109, 116, 271], "prime_subfield": [61, 100, 116], "is_extension_field": [61, 86, 116, 271], "is_prime_field": [61, 87, 116, 271], "is_squar": [61, 89, 96, 110, 116, 254, 271], "repeat": [64, 137, 141, 152, 254, 260], "123456789": [64, 137, 271], "global": [64, 137, 263, 271], "rng": [64, 137, 271], "default_rng": [64, 137, 271], "simpli": [65, 75, 93, 256, 258, 270], "sinc": [65, 83, 84, 89, 107, 159, 200, 209, 213, 228, 238, 239, 240, 247, 260, 261, 266, 271, 276, 277], "col": 66, "v": [66, 117, 240, 241, 261], "last": [67, 103, 104, 114, 206, 207, 209, 232, 238, 239, 240, 261], "n1": [67, 114], "n2": [67, 114], "By": [67, 114, 148, 242, 245, 255, 259], "convent": [67, 114, 250, 255, 259, 271], "method": [67, 76, 90, 91, 97, 107, 109, 114, 115, 206, 209, 236, 237, 238, 240, 256, 257, 258, 271, 273, 274], "copi": [69, 74, 254, 256, 266, 271], "ndmin": 69, "keyword": [69, 230, 256, 257, 258, 259, 266, 271, 272, 273, 274], "222": [69, 91, 248, 250, 251, 254, 256, 258, 268], "148": [69, 91, 248, 251, 254, 256, 269], "205": [69, 91, 248, 251, 254, 256], "69": [69, 91, 228, 248, 251, 254, 256, 258, 259, 260, 268, 271, 276], "54": [69, 91, 248, 251, 254, 256, 260, 268, 271, 276, 277], "prepend": [70, 71], "doe": [71, 96, 115, 219, 256, 257, 269, 271], "omit": [71, 139], "comma": [71, 272], "separ": [71, 271, 272, 274], "With": [72, 91, 204, 212, 230, 257, 258, 271, 274], "except": [72, 80, 158, 192, 209, 225, 232, 240, 267], "subtract": [73, 257, 266], "ad": [74, 148, 254, 258, 260, 263, 271, 272, 273, 274], "alwai": [74, 93, 152, 159, 238, 260, 271, 276, 277], "result": [74, 94, 137, 141, 152, 212, 225, 254, 257, 260, 269, 271, 276, 277], "c_a": 75, "rais": [75, 80, 93, 94, 103, 104, 148, 153, 154, 155, 157, 158, 167, 193, 206, 209, 232, 233, 238, 240, 271], "valueerror": [75, 93, 103, 104, 148, 153, 154, 155, 167, 271], "annihil": [75, 90, 93, 97], "det": 75, "coeffici": [75, 133, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 156, 160, 163, 164, 165, 245, 252, 258, 271, 276], "en": [75, 83, 84, 93, 152, 159, 222, 244, 271], "wikipedia": [75, 83, 84, 93, 152, 159, 222, 244], "org": [75, 83, 84, 93, 152, 159, 192, 198, 204, 222, 226, 227, 230, 235, 240, 241, 244, 246], "wiki": [75, 83, 84, 93, 152, 159, 222, 244], "characteristic_polynomi": 75, "168": [75, 91, 254, 268, 271], "173": [75, 91, 254, 266], "203": [75, 91, 254], "98": [75, 91, 253, 254, 256, 268], "105": [75, 91, 254, 256], "106": [75, 91, 253, 254, 256], "214": [75, 91, 133, 254, 256, 271], "151x": 75, "135x": 75, "128": [75, 91, 254, 268], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "217": [75, 91, 254, 271], "170": [75, 91, 254], "225": [75, 91, 138, 254, 271], "189": [75, 91, 254], "185": [75, 91, 133, 141, 253, 254, 255, 256, 272], "73": [75, 91, 133, 254, 256, 260, 268, 276], "215": [75, 91, 254, 268, 271], "180": [75, 91, 254], "77": [75, 91, 161, 254, 256, 268, 271, 272, 276], "53": [75, 91, 228, 254, 256, 260, 268, 271, 276, 277], "basi": [76, 90, 97, 109], "span": [76, 90, 97, 109, 209, 240, 241], "combin": [76, 109, 139, 190, 250], "most": [76, 103, 104, 109, 192, 209, 232, 240, 256, 258, 264, 266, 276], "mathcal": [76, 90, 97, 109], "dim": [76, 90, 97, 109], "speed": [78, 111, 257, 267, 271, 274], "65537": [78, 111, 112, 274], "memori": [78, 111, 256, 257, 267], "save": [78, 111, 267, 268], "still": [78, 111, 142], "fit": [78, 111, 112], "within": [78, 111, 112], "2147483647": [78, 111, 227], "36893488147419103183": [78, 80, 111, 112, 115], "100": [78, 80, 91, 111, 112, 115, 210, 231, 232, 247, 249, 254, 255, 256, 257, 263, 266, 268, 269, 270, 271, 272, 274], "unsupport": 80, "typeerror": [80, 104, 271], "small": [80, 233, 256, 270, 271, 274, 276, 277], "accept": [80, 139, 250, 271], "uint64": 80, "done": [80, 261], "uint8": [80, 256], "uint16": [80, 249, 256], "uint32": [80, 256], "int8": [80, 256], "int16": [80, 256], "int32": [80, 249, 256], "some": [80, 153, 159, 167, 200, 204, 209, 213, 224, 228, 230, 256, 257, 259, 263, 267, 270, 271, 276, 277], "certain": [80, 254, 256, 259, 271, 274], "unlimit": [80, 256, 257], "chang": [81, 257, 258, 259, 262, 275], "further": [81, 115], "discuss": [81, 115, 256, 266, 276], "increas": [82, 102, 113, 166, 250, 258, 264, 271, 274], "lexicograph": [82, 102, 104, 107, 113, 154, 155, 157, 158, 193, 199, 206, 207, 225, 238, 239, 274], "3\u03b1": [82, 101, 102, 113, 254], "4\u03b1": [82, 101, 102, 113, 254], "word": [83, 84], "rightarrow": [83, 84], "conjug": [83, 84], "prod_": [83, 153, 162, 167, 198, 217, 222], "sum_": [84, 138, 157, 166, 193, 195, 204, 222, 230, 271], "256": [88, 98, 115, 254, 274], "ae": [88, 115, 161], "exist": [89, 96, 103, 104, 110, 115, 157, 159, 193, 204, 206, 209, 225, 230, 238, 240, 254, 266, 271, 276, 277], "exactli": [89, 96, 110, 276], "half": [89, 96, 110], "nonzero": [89, 96, 110], "uniqu": [89, 104, 110, 166, 209, 240, 254, 255], "cacr": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "uwaterloo": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "ca": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "hac": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246], "about": [89, 159, 161, 194, 197, 198, 200, 201, 219, 220, 224, 228, 232, 233, 246, 263, 264, 269], "chap3": [89, 232, 233], "pdf": [89, 153, 154, 155, 159, 161, 167, 191, 194, 197, 198, 199, 200, 201, 219, 220, 224, 228, 232, 233, 240, 241, 246], "so": [89, 115, 171, 199, 204, 212, 230, 255, 260, 271, 274, 276, 277], "ln": [90, 97, 109], "invok": [91, 257, 260, 263, 264, 266, 268, 269, 270, 271], "obei": 91, "broadcast": [91, 254, 266, 272], "rule": [91, 139, 266], "89": [91, 226, 254, 256, 268, 276], "114": [91, 254, 255, 256, 271], "142": [91, 254], "213": [91, 254, 256, 268], "177": [91, 254, 268], "182": [91, 254, 268], "167": [91, 254, 256, 268], "166": [91, 254, 268, 271], "231": [91, 254, 255, 256, 268, 272], "183": [91, 253, 254, 256], "78": [91, 254, 255, 256, 268, 270, 276], "70": [91, 254, 256, 260, 271, 273, 276], "241": [91, 253, 254, 255, 266, 268, 271], "52": [91, 115, 254, 255, 256, 259, 260, 268, 271, 276, 277], "220": [91, 254, 268, 269], "238": [91, 254], "132": [91, 254, 255, 268], "104": [91, 201, 254, 256], "83": [91, 242, 245, 254, 256, 268, 271, 276], "76": [91, 156, 254, 256, 268, 271, 276], "233": [91, 254, 268], "137": [91, 254, 259, 268, 271], "119": [91, 137, 138, 253, 254], "151": [91, 254, 272], "91": [91, 195, 228, 254, 256, 268, 276], "186": [91, 254, 268], "anoth": [91, 108, 260, 277], "242": [91, 254, 255, 256, 271], "160": [91, 254], "153": [91, 166, 253, 254, 256, 268, 269], "67": [91, 254, 256, 260, 266, 268, 271, 272, 276], "155": [91, 253, 254], "95": [91, 253, 254, 256, 266, 268, 271], "147": [91, 254, 268], "226": [91, 254, 268, 271], "211": [91, 254], "135": [91, 254, 266], "50": [91, 254, 256, 260, 268, 271, 272, 276, 277], "144": [91, 254], "158": [91, 254], "82": [91, 228, 254, 256, 266, 268, 271, 276], "48": [91, 115, 240, 241, 254, 255, 256, 260, 268, 270, 271, 276, 277], "90": [91, 228, 254, 256, 268, 271, 276], "146": [91, 141, 254, 266, 268], "164": [91, 254, 268], "62": [91, 228, 253, 254, 256, 260, 268, 270, 276, 277], "178": [91, 253, 254, 268, 271], "94": [91, 254, 256, 268, 276], "84": [91, 141, 254, 256, 268, 276], "116": [91, 254], "64": [91, 210, 231, 254, 256, 260, 268, 269, 276, 277], "174": [91, 254, 268], "108": [91, 254, 256, 266, 271], "152": [91, 254, 268], "92": [91, 254, 256, 268, 269, 271, 276], "80": [91, 214, 254, 256, 268, 271, 276], "210": [91, 253, 254, 271], "130": [91, 254], "184": [91, 254, 268], "188": [91, 254], "118": [91, 253, 254], "68": [91, 253, 254, 256, 260, 268, 274, 276], "60": [91, 152, 216, 254, 255, 256, 260, 268, 272, 276, 277], "224": [91, 254, 266], "240": [91, 254, 271], "232": [91, 254, 268, 271], "190": [91, 254, 272], "172": [91, 253, 254, 271], "120": [91, 199, 254, 263], "156": [91, 141, 254, 268], "46": [91, 115, 155, 199, 254, 255, 256, 260, 268, 273, 276, 277], "136": [91, 254, 271], "124": [91, 132, 254, 255, 256], "202": [91, 254, 268], "218": [91, 141, 201, 254, 268, 271], "234": [91, 254], "140": [91, 254], "216": [91, 254, 255, 256, 268], "102": [91, 254, 256, 268, 269, 271], "200": [91, 254, 258, 268, 271], "96": [91, 141, 254, 256, 268, 271, 274], "208": [91, 253, 254], "72": [91, 254, 256, 260, 268, 271, 276], "126": [91, 254], "58": [91, 240, 241, 254, 256, 259, 260, 268, 271, 276, 277], "122": [91, 254, 268], "112": [91, 243, 254, 266], "194": [91, 253, 254], "134": [91, 93, 253, 254, 268, 271], "230": [91, 254, 255, 266], "56": [91, 115, 254, 255, 256, 260, 268, 271, 276, 277], "86": [91, 254, 256, 268, 276], "212": [91, 253, 254, 268], "196": [91, 152, 254], "228": [91, 254, 268], "74": [91, 228, 254, 256, 260, 271, 276], "150": [91, 210, 231, 254, 268, 271], "162": [91, 254, 271], "192": [91, 141, 254, 266, 268], "187": [91, 254, 271], "209": [91, 254, 256], "99": [91, 254, 256, 268, 271], "165": [91, 254, 268], "43": [91, 115, 137, 177, 254, 255, 256, 258, 259, 260, 268, 276, 277], "57": [91, 115, 254, 255, 256, 260, 268, 271, 274, 276, 277], "169": [91, 254], "93": [91, 254, 256, 271, 276], "229": [91, 253, 254, 268], "61": [91, 226, 254, 256, 260, 271, 276, 277], "149": [91, 219, 220, 224, 254, 268], "75": [91, 228, 254, 256, 258, 268, 276], "79": [91, 228, 253, 254, 256, 268, 274, 276], "223": [91, 132, 171, 172, 173, 174, 183, 254], "179": [91, 254, 255, 259, 266, 268], "157": [91, 254], "207": [91, 253, 254, 268, 271], "227": [91, 166, 254], "71": [91, 254, 256, 260, 268, 271, 276], "139": [91, 254], "49": [91, 254, 255, 256, 260, 268, 272, 276, 277], "131": [91, 254, 268, 271], "191": [91, 254, 268, 271], "159": [91, 254, 271], "47": [91, 115, 254, 255, 256, 260, 266, 268, 274, 276, 277], "97": [91, 254, 256, 268], "127": [91, 226, 227, 254, 266, 271], "181": [91, 197, 254, 269, 271], "103": [91, 141, 254, 256], "63": [91, 254, 256, 260, 268, 276, 277], "141": [91, 254, 268], "115": [91, 253, 254, 268, 271], "201": [91, 141, 145, 254, 271], "125": [91, 254], "109": [91, 242, 245, 254, 256, 266, 271], "161": [91, 254, 268, 272], "123": [91, 141, 145, 254, 256, 271], "199": [91, 254, 268], "101": [91, 254, 256], "87": [91, 254, 256, 266, 268, 274, 276], "193": [91, 254, 255, 256, 268, 271, 272], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 276, 277], "107": [91, 197, 226, 254, 256], "195": [91, 253, 254, 256, 271], "145": [91, 254, 268], "163": [91, 141, 254, 255, 271], "221": [91, 197, 254, 271], "81": [91, 228, 237, 254, 255, 256, 268, 272, 274, 276], "239": [91, 254], "51": [91, 254, 256, 259, 260, 266, 268, 272, 274, 276, 277], "85": [91, 171, 172, 173, 174, 183, 254, 256, 268, 272, 276], "235": [91, 254, 268, 271], "117": [91, 135, 139, 254, 259], "59": [91, 173, 253, 254, 256, 260, 268, 271, 276, 277], "111": [91, 152, 253, 254, 256], "133": [91, 254], "197": [91, 240, 241, 254, 268], "65": [91, 171, 172, 173, 174, 183, 254, 256, 260, 268, 270, 271, 276, 277], "171": [91, 254, 271, 272], "129": [91, 254, 268, 271], "219": [91, 254, 268], "175": [91, 254], "237": [91, 254, 271], "lu": 92, "decomposit": [92, 99], "u": [92, 99, 267, 268], "Not": 92, "m_a": 93, "notimplementederror": 93, "divid": [93, 103, 104, 157, 158, 193, 204, 230, 260, 272], "minimal_polynomial_": 93, "field_theori": 93, "linear_algebra": 93, "divmod": [93, 271], "arithmeticerror": 94, "There": [94, 103, 104, 213, 225, 241, 257, 259, 275, 276, 277], "ever": 94, "said": [94, 144, 159, 200, 215, 240, 241], "confus": 94, "former": 94, "latter": 94, "16807": [98, 105, 236], "permut": 99, "plu": 99, "itself": [100, 271, 276], "happen": [103, 104, 233], "omega_n": [103, 104, 204, 230], "ne": [103, 104, 107, 192, 222], "lt": [103, 104], "Then": [103, 104, 166], "do": [103, 104, 277], "traceback": [103, 104, 209, 232, 240], "recent": [103, 104, 209, 232, 240, 271], "cell": [103, 104, 209, 232, 240], "line": [103, 104, 209, 232, 240, 244, 258], "file": [103, 104, 209, 232, 240, 263, 264, 268, 274], "opt": [103, 104, 209, 232, 240], "hostedtoolcach": [103, 104, 209, 232, 240], "x64": [103, 104, 209, 232, 240], "lib": [103, 104, 209, 232, 240], "python3": [103, 104, 209, 232, 240, 261, 262, 263, 264, 266, 268], "site": [103, 104, 209, 232, 240, 261], "py": [103, 104, 209, 232, 240, 263, 264, 268, 274], "890": 103, "cl": [103, 104], "888": [103, 268], "889": 103, "892": 103, "omega_5": [103, 104], "arang": [103, 104, 256], "sort": [104, 107, 155, 196, 199, 268], "952": 104, "950": [104, 271], "951": 104, "954": 104, "955": 104, "outer": 104, "outsid": [106, 258], "revert": [106, 271], "previou": [106, 166, 258, 271], "ascend": [107, 146, 147, 148, 245, 250, 258], "ey": [108, 271, 272], "elementari": 108, "swap": 108, "multipli": [108, 152, 199, 260], "get": [108, 259, 261, 271], "matrix_rank": 108, "side": [108, 267, 272], "Or": [108, 141, 207, 239, 250, 255, 259, 260, 262, 264, 268], "y1": 110, "y2": 110, "constructor": [114, 256, 266, 267, 271], "vec": 114, "build": [115, 263], "exponenti": [115, 141, 256, 257, 271], "user": [115, 254, 266, 267, 268, 271, 274], "fact": [115, 116, 228], "alreadi": [115, 255, 257, 276, 277], "never": [115, 200, 206, 207, 228, 238, 239, 241, 274, 276], "respect": [115, 276], "after": [115, 153, 154, 207, 239, 241, 254, 257, 260, 276], "newli": 115, "singleton": [115, 171], "arbitrarili": [115, 267, 271], "36893488147419103180": 115, "1267650600228229401496703205376": [115, 255], "sped": 115, "explicitli": [115, 133, 138, 143, 204, 230, 255, 256, 257, 259, 268, 269, 276], "avoid": [115, 267, 271], "need": [115, 207, 239, 241, 255, 257, 263, 264, 267, 271, 274], "factor": [115, 153, 154, 155, 162, 166, 167, 195, 196, 198, 199, 210, 211, 216, 217, 228, 231, 232, 233, 247, 255, 267, 271, 274, 276], "109987": [115, 255, 271], "146340800268433348561": [115, 255], "100525x": [115, 255], "pre": [116, 273], "includ": [116, 139, 157, 158, 193, 218, 235, 250, 254, 259, 262, 263, 264, 269, 271, 276, 277], "api": [116, 271, 273, 275], "conveni": [116, 142, 230, 256, 259, 266], "c_2": 117, "to_fibonacci_lfsr": [117, 131], "124x": [132, 271], "223x": 132, "One": [132, 136, 259], "__call__": [132, 141, 260, 271], "x_0": [132, 141, 233], "composit": [132, 141, 155, 162, 192, 199, 200, 208, 212, 216, 217, 228, 231, 232, 233, 247, 271], "__eq__": [132, 142], "__int__": [132, 135, 144, 259, 271], "__len__": [132, 145], "deriv": [132, 152, 259], "formal": [132, 152, 276], "dx": [132, 152], "_domain": [132, 166], "distinct_degree_factor": [132, 153, 154, 155, 199, 271], "equal_degree_factor": [132, 154, 155, 199, 271], "rd": [132, 154], "square_free_factor": [132, 153, 155, 167, 199, 271], "descend": [132, 148, 149, 151, 163, 164, 242, 245, 252, 259], "nonzero_coeff": [132, 163, 164, 259], "nonzero_degre": [132, 163, 164, 259], "highest": [132, 143, 150, 160, 258], "is_conwai": [132, 157, 158, 193, 274], "search": [132, 157, 158, 166, 193, 206, 207, 232, 236, 238, 239, 240, 241, 247, 271, 274], "is_conway_consist": [132, 157, 158, 193, 274], "smaller": [132, 157, 158, 193, 238, 272], "is_irreduc": [132, 153, 154, 159, 161, 167, 206, 207, 271, 274, 276], "is_mon": [132, 160, 271], "won": [133, 138, 143], "assum": [133, 138, 143], "214x": 133, "73x": 133, "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, 156, 259], "162x": [135, 259], "hex": [135, 259, 271], "_gener": 137, "56x": 137, "228x": 137, "157x": 137, "218x": [137, 156], "148x": 137, "194x": 137, "195x": 137, "200x": 137, "141x": [137, 166], "164x": [137, 173], "desir": [138, 206, 207, 225, 238, 239, 255, 256, 274], "r_1": [138, 166], "r_2": [138, 166], "r_k": [138, 166], "m_2": [138, 166, 194], "m_k": [138, 166], "a_d": [138, 143, 144, 152, 165], "a_": [138, 143, 144, 152, 165, 166, 276], "a_1": [138, 143, 144, 152, 165, 166, 194], "a_0": [138, 143, 144, 152, 165, 166, 276], "m_i": [138, 159, 166, 194], "121": [138, 254, 259, 271], "198": [138, 254], "215x": 138, "90x": 138, "183x": [138, 271], "pars": 139, "indetermin": [139, 141, 250, 260], "requir": [139, 191, 233, 261, 268, 270, 271, 276], "charact": [139, 258], "13y": 139, "term": [139, 148, 206, 207, 225, 238, 239, 270, 271, 274], "abov": [139, 209, 240, 250], "wise": [141, 266, 276], "37x": [141, 145, 271], "123x": [141, 145, 271], "x0": 141, "matrix_pow": [141, 260], "55x": [141, 259, 271], "77x": [141, 271], "104x": [141, 173, 271], "against": [142, 268], "distinct": [142, 153, 154, 155, 199], "comparison": [142, 211, 263, 269, 271], "allow": [142, 230, 232, 253, 254, 257, 258, 262, 264, 271, 276, 277], "interpret": [143, 271], "lowest": 143, "consid": [144, 276, 277], "digit": [144, 258], "radix": [144, 204, 230, 258, 271], "decim": 144, "1066": 144, "len": [145, 194, 198, 204, 209, 228, 230, 237, 240, 246, 271], "fix": [148, 249, 256, 271, 272, 274, 275], "higher": 148, "accessor": 148, "similar": [148, 256, 257, 263, 269, 271], "entri": [149, 151, 163, 164, 222], "pair": [149, 151, 163, 164, 222, 254], "etc": [152, 250], "cdot": [152, 206, 207, 238, 239, 257, 277], "brought": 152, "down": 152, "formal_deriv": 152, "4x": [152, 154, 159, 160, 165, 167, 194, 197, 206, 238, 243, 259, 260], "6x": [152, 157, 158, 193, 194, 206, 222, 236, 238, 243, 260, 270, 271], "80x": 152, "191x": [152, 173], "168x": 152, "204x": [152, 166], "217x": 152, "222x": 152, "196x": 152, "84x": 152, "111x": 152, "f_i": 153, "algorithm": [153, 154, 155, 157, 158, 159, 161, 167, 191, 193, 197, 199, 201, 204, 212, 219, 220, 224, 230, 232, 233, 240, 247, 267, 271, 274, 276, 277], "suppos": [153, 167], "f_1": [153, 197, 201, 223], "f_2": [153, 197, 201, 223], "f_3": [153, 197, 201, 223], "those": [153, 167, 256, 271, 274], "often": [153, 154, 192, 213, 228, 232, 276], "appli": [153, 154, 155, 199, 249, 254, 266, 271, 274], "complet": [153, 154, 167, 267, 271, 276, 277], "implement": [153, 154, 159, 166, 167, 191, 192, 194, 195, 197, 198, 201, 204, 230, 235, 267, 269, 270, 271, 276, 277], "hachenberg": [153, 155, 167, 199], "jungnickel": [153, 155, 167, 199], "topic": [153, 155, 167, 199], "peopl": [153, 154, 155, 167, 199, 277], "csail": [153, 154, 155, 167, 199], "mit": [153, 154, 155, 167, 199], "edu": [153, 154, 155, 159, 167, 191, 199, 228], "dmoshkov": [153, 154, 155, 167, 199], "cours": [153, 154, 155, 167, 199, 240, 241], "g_1": [154, 155, 199], "g_r": 154, "cantor": 154, "zassenhau": 154, "probabilist": [154, 159], "www": [154, 157, 158, 159, 191, 193, 204, 230, 240, 241], "csa": 154, "iisc": 154, "ac": 154, "chandan": 154, "cnt": 154, "lec8": 154, "g_2": [155, 199], "g_k": [155, 199], "e_1": [155, 198, 199, 211, 216, 232, 247], "e_2": [155, 199], "e_k": [155, 198, 199, 211, 216, 232, 247], "g1": [155, 199], "g2": [155, 199], "g3": [155, 199], "e1": [155, 199], "e2": [155, 199], "e3": [155, 199], "60x": 156, "50x": [156, 166, 173], "163x": [156, 173], "computation": [157, 158, 159, 161, 162, 193, 271], "expens": [157, 158, 159, 161, 162, 193, 255, 271, 274], "task": [157, 158, 159, 161, 162], "manual": [157, 158, 193, 207, 239, 263, 264, 274], "frank": [157, 158, 193, 267, 274], "luebeck": [157, 158, 193, 267, 274], "databas": [157, 158, 193, 199, 206, 274], "veri": [157, 158, 193, 206, 212, 240, 255, 270, 274], "lookuperror": [157, 158, 193], "found": [157, 158, 193, 199, 204, 207, 209, 230, 232, 233, 239, 241, 274], "accord": [157, 158, 193], "special": [157, 158, 193, 204, 230], "follow": [157, 166, 193, 209, 240, 267, 269, 276, 277], "g_i": [157, 162, 193, 217], "h_i": [157, 193], "g_j": [157, 193], "h_j": [157, 167, 193], "j": [157, 166, 167, 191, 193, 204, 222, 228, 230], "math": [157, 158, 159, 193, 218, 228, 261], "rwth": [157, 158, 193], "aachen": [157, 158, 193], "de": [157, 158, 193], "conwaypol": [157, 158, 193], "cp7": [157, 158, 193], "html": [157, 158, 193, 240, 241, 261, 271], "lenwood": [157, 158, 193], "heath": [157, 158, 193], "nichola": [157, 158, 193], "loehr": [157, 158, 193], "journal": [157, 158, 159, 193, 240, 241], "volum": [157, 158, 193], "issu": [157, 158, 193, 225, 271], "2004": [157, 158, 193], "page": [157, 158, 193, 204, 230, 256, 261, 269, 270, 271, 272], "1003": [157, 158, 193], "1024": [157, 158, 193, 205, 218, 244, 271], "sciencedirect": [157, 158, 193], "com": [157, 158, 191, 193, 262, 267], "scienc": [157, 158, 193], "articl": [157, 158, 193], "pii": [157, 158, 193], "s0747717104000331": [157, 158, 193], "among": [157, 158, 193], "candid": [157, 158, 193], "accordingli": [157, 158, 193, 277], "necessarili": [158, 211], "strictli": [159, 271], "algebra": [159, 267, 271], "close": [159, 276, 277], "test": [159, 199, 200, 209, 212, 217, 225, 228, 240, 244, 256, 262, 267, 268, 269, 270, 271, 274], "sai": [159, 200], "siam": 159, "1980": 159, "273": [159, 254, 256], "280": [159, 254, 268], "app": 159, "dtic": 159, "mil": 159, "sti": 159, "ada078416": 159, "gao": 159, "panarino": 159, "clemson": 159, "sgao": 159, "paper": 159, "gp97a": 159, "chap4": [159, 161, 200, 228], "factorization_of_polynomials_over_finite_field": 159, "necessari": [159, 248, 250, 252, 261, 269, 270, 271, 276], "suffici": 159, "condit": [159, 206, 207, 239, 241], "being": [159, 209, 212, 214, 271], "12x": [159, 175, 181, 182, 188], "11x": [159, 169, 170, 184, 187], "therefor": [162, 217, 256, 258, 276], "canon": [162, 217, 271], "f1": [162, 190, 197, 201, 217, 223, 243], "f2": [162, 190, 197, 201, 217, 223, 243], "rev": 165, "_d": 165, "chien": 166, "a_1x": [166, 276], "r_i": 166, "a_j": 166, "remain": 166, "equat": 166, "overset": 166, "delta": 166, "lambda_": [166, 192], "easili": [166, 255, 258, 259, 260, 261, 263, 264, 266, 268, 269, 276, 277], "118x": 166, "172x": 166, "202x": 166, "153x": 166, "107x": [166, 173], "187x": 166, "66x": 166, "221x": 166, "114x": [166, 271], "121x": 166, "226x": [166, 259], "reed": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "solomon": [168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 271, 274], "9x": [169, 175, 181, 182, 184, 188, 269], "8x": [169, 175, 181, 182, 184, 188, 222, 270], "7x": [170, 175, 181, 182, 187, 188, 222], "15x": [170, 173, 175, 181, 182, 187, 188], "18x": [170, 173, 187, 259], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "22x": [170, 187], "25x": [170, 187, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "232x": 173, "29x": 173, "189x": 173, "142x": 173, "246x": 173, "43x": 173, "82x": 173, "238x": 173, "158x": 173, "119x": 173, "224x": 173, "134x": 173, "227x": 173, "210x": 173, "40x": 173, "27x": 173, "253x": 173, "239x": 173, "216x": [173, 271], "126x": 173, "190x": 173, "96x": [173, 271], "116x": 173, "137x": 173, "26x": 173, "203x": [173, 271], "23x": 173, "208x": 173, "130x": 173, "53x": 173, "188x": 173, "94x": 173, "146x": 173, "182x": 173, "f3": [190, 197, 201, 223, 243], "berlekamp": [191, 271], "massei": [191, 271], "depend": [191, 206, 261, 263, 264, 267, 271], "2n": 191, "sach": 191, "uniniti": 191, "part": 191, "vi": 191, "sing": 191, "embeddedrel": 191, "showarticl": 191, "1099": 191, "php": 191, "crypto": 191, "stanford": 191, "mironov": 191, "cs359": 191, "below": [191, 209, 225, 240, 254, 257, 258, 259, 260, 269, 270], "reproduc": [191, 264, 271], "carmichael": [192, 209, 240, 271], "lambda": [192, 209, 240], "oei": [192, 198, 226, 227, 235, 246], "a002322": 192, "euler": [192, 198, 209, 237, 240], "phi": [192, 198, 209, 215, 237, 240, 241, 246], "notabl": [192, 225, 256], "And": [192, 200, 225], "pow": [192, 209, 219, 224, 240, 241, 271], "standard": [193, 218, 266, 267, 268, 271, 273], "split": 193, "henc": 193, "wai": [193, 254, 256, 259, 262, 270, 276, 277], "congruenc": [194, 200], "a_i": 194, "solut": 194, "chines": 194, "theorem": [194, 200, 271, 277], "a_2": 194, "ldot": 194, "a_n": 194, "m_n": 194, "chap14": 194, "show": [194, 222, 237, 241], "satisfi": [194, 200, 204, 219, 222, 224, 230, 232], "ai": 194, "x_truth": 194, "m3": 194, "m4": 194, "m5": 194, "sigma_1": 195, "sigma_k": 195, "mid": 195, "euclidean": [197, 201, 276, 277], "chap2": [197, 198, 201, 219, 220, 224, 246], "moon": 197, "domain": 197, "totient": [198, 209, 237, 240], "big": 198, "1big": 198, "p_1": [198, 199, 211, 216, 232, 247], "p_k": [198, 199, 211, 216, 232, 247], "a000010": [198, 246], "p_2": 199, "cunningham": [199, 267, 274], "book": [199, 267, 274], "pm": [199, 267, 274], "trial": [199, 247], "residu": [199, 219, 224, 247, 271], "pollard": [199, 232, 233, 271, 274], "rho": [199, 233, 271, 274], "continu": [199, 276], "until": [199, 271], "avail": [199, 217, 242, 257, 271], "round": [200, 212, 228], "primal": [200, 212, 228, 244, 267], "odd": [200, 209, 210, 219, 224, 228, 231, 232, 233], "choos": [200, 228, 257, 266], "shown": [200, 228, 277], "probabl": [200, 212, 228], "hold": 200, "wit": [200, 228], "liar": [200, 228], "possibl": [200, 206, 207, 228, 238, 239, 267, 269, 270, 271], "mark": [200, 228, 271], "257": [200, 228, 254, 268, 274], "24841": [200, 228], "65497": [200, 228], "here": [200, 232, 255, 256, 257, 260, 267, 269, 273, 276, 277], "pseudoprim": [200, 212, 228], "a001567": 200, "2047": 200, "29341": 200, "65281": 200, "But": 200, "a005935": 200, "2465": 200, "7381": 200, "16531": 200, "dictionari": 202, "1000": [203, 205, 218, 221, 259], "625": [203, 271], "3125": 203, "modulu": [204, 230], "scale": [204, 206, 238], "transform": [204, 230, 254, 267, 271], "pad": [204, 230], "max": [204, 206, 209, 226, 227, 230, 236, 237, 238, 240, 247, 257, 263, 268, 271], "mn": [204, 230], "criteria": [204, 230], "nx": 204, "normal": [204, 230, 254, 257, 266, 267], "tolist": [204, 230], "fourier": [204, 230, 254], "dft": [204, 230, 254, 271], "pi": [204, 230], "neq": [204, 230], "omega_": [204, 230], "point": [204, 230, 269], "x_j": [204, 222, 230], "x_k": [204, 230], "kj": 204, "coolei": [204, 230, 271], "tukei": [204, 230, 271], "fft": [204, 230, 267, 271], "cgyurgyik": [204, 230], "github": [204, 225, 230, 267, 272], "io": [204, 230, 271, 272], "post": [204, 230], "2021": [204, 230, 271], "04": [204, 230, 268], "brief": [204, 230], "introduct": [204, 230, 271], "nayuki": [204, 230], "geeksforgeek": [204, 230], "import": [204, 230, 262, 266, 270, 271, 272, 273, 274, 277], "forward": [204, 230, 267, 271], "ifft": [204, 271], "exact": [206, 207, 238, 239], "request": [206, 262, 268], "precomput": 206, "under": [206, 268, 276, 277], "quickli": [206, 212], "10000": 206, "hp": 206, "weight": 206, "runtimeerror": [206, 209, 232, 233, 238, 240, 271], "backslash": [206, 207, 238, 239], "four": [206, 207, 238, 258, 271, 274], "now": [206, 238, 271, 274, 276, 277], "you": [207, 225, 239, 241, 255, 256, 262, 263, 264, 266, 267, 268, 276, 277], "them": [207, 239, 241, 257, 268, 275], "cost": [207, 239, 241], "would": [207, 239, 241, 256, 257, 267, 268], "been": [207, 225, 239, 241, 257], "break": [207, 239, 241], "incur": [207, 239, 241, 255, 274], "earli": [207, 239, 241], "exit": [207, 239, 241], "0x7f06d4c4ee90": 207, "2p": [209, 240], "znx": [209, 240, 241], "observ": [209, 240], "although": [209, 240, 276], "2d": [209, 240], "maximum": [209, 240], "stopiter": [209, 240], "_modular": [209, 240], "559": [209, 240, 268], "558": [209, 240], "560": [209, 240], "elif": [209, 240], "wa": [209, 240, 267, 271, 276], "caus": [209, 240, 271, 274], "566": [209, 240, 256], "564": [209, 240], "565": [209, 240], "No": [209, 240, 248, 250, 252], "750": [210, 231], "even": [210, 231, 257, 267, 269, 270], "run": [212, 261, 268, 269, 270, 271, 272, 274], "could": [212, 232, 267, 271], "1000000000000000035000061": [212, 240], "controversi": 213, "regard": 213, "altern": [215, 240, 241, 255], "regular": [216, 263], "humbl": 216, "highli": 216, "As": [217, 255, 259, 267, 276, 277], "consequ": 217, "version": [218, 257, 262, 266, 271, 273, 274], "befor": [218, 270, 275, 276, 277], "later": [218, 271, 277], "librari": [218, 244, 255, 257, 259, 262, 263, 264, 266, 267, 268, 269, 271, 275, 276, 277], "961": 218, "unlik": [219, 269], "impli": 219, "quadrat": [219, 224, 271], "q_n": 219, "q_9": 219, "overlin": [219, 224], "_9": 219, "index": [221, 261, 274], "7919": 221, "interpol": [222, 271], "coordin": 222, "duplic": [222, 271], "y_j": 222, "ell_j": 222, "substack": 222, "x_m": [222, 233], "lagrange_polynomi": 222, "q_p": 224, "begin": 224, "_p": 224, "q_7": 224, "_7": 224, "gfprimdf": 225, "doesn": [225, 263], "spot": 225, "pleas": [225, 267], "submit": 225, "lin": 225, "costello": 225, "control": 225, "a000043": 226, "2000": [226, 227], "521": 226, "607": 226, "1279": 226, "merseen": 226, "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087": [226, 227], "a000668": 227, "8191": 227, "131071": 227, "524287": 227, "2305843009213693951": 227, "618970019642690137449562111": 227, "162259276829213363391578010288127": 227, "170141183460469231731687303715884105727": 227, "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151": 227, "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127": 227, "strong": 228, "declar": 228, "much": [228, 271], "dartmouth": 228, "carlp": 228, "paper25": 228, "strong_liar": 228, "assert": 228, "6852976918500265458318414454675831645298": 229, "6852976918500265458318414454675831645343": 229, "jk": 230, "potenti": 231, "b_2": 232, "p_": 232, "chosen": [232, 276], "gg": 232, "pq": 232, "1039": 232, "1458757": 232, "1326001": 232, "_prime": 232, "1177": 232, "1174": 232, "1175": [232, 268], "1178": 232, "1179": 232, "secondari": 232, "1180": 232, "1934313240757": 232, "2133861346249": 232, "5471": 232, "257107": 232, "1517": 232, "offset": 233, "seek": 233, "x_1": 233, "x_": 233, "unknown": 233, "2m": 233, "accomplish": 233, "look": 233, "especi": [233, 258, 271], "good": 233, "503": 233, "10007": 233, "1000003": 233, "rel": 233, "1182640843": 233, "1716279751": 233, "6298891201241929548477199440981228280038": 234, "6298891201241929548477199440981228279991": 234, "empti": [235, 253], "siev": 235, "eratosthen": 235, "a000040": 235, "gi": 237, "sometim": [238, 277], "five": 239, "0x7f06d4c4f350": 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, "372575130228424947788782": 240, "0x7f06d4c4f5b0": 241, "insid": [242, 258, 271], "randomli": 244, "prime_number_theorem": 244, "327845897586213436751081882871255331286648902836386839087617368608439574698192016043769533823474001379935585889197488144338014865193967937011638431094821943416361149113909692569658970713864593781874423564706915495970135894084612689487074397782022398597547611189482697523681694691585678818112329605903872356773": 244, "openssl": 244, "pylint": [244, 262, 263], "disabl": [244, 263, 271], "1d2de38de88c67e1eafdeeae77c40b8709ed9c275522c6d5578976b1abcbe7e0f8c6de1271eec6eb3827649164189788f9f3a622aea5f4039761ec708b5841de88566d9b5baf49ba92dce5a300297a9e0e890e4103ed2ad4b5e0553ce56e8c34758cd45900125dba1553ae73aa0cbd6018a2a8713d46e475bf058d1aaa52ef1a5": 244, "n_r": 247, "15013": 247, "500": [247, 274], "1696469": 247, "recurs": [248, 251], "mix": [248, 251], "match": [248, 251], "previous": [248, 250, 252, 271], "coercion": [248, 250, 252], "width": [249, 258, 271], "variabl": 250, "decreas": 250, "nearli": [254, 260, 266], "univers": 254, "unari": 254, "variou": [254, 256, 263, 267, 271, 273, 274], "enabl": [254, 271, 273], "expand": [254, 260], "detail": [254, 258, 259, 260, 266, 271, 276, 277], "88": [254, 256, 268, 269, 271, 276], "176": [254, 271], "essenti": [254, 260], "how": [254, 260, 263, 264, 273], "66": [254, 256, 260, 268, 276], "110": [254, 256], "154": 254, "across": [254, 274], "target": [254, 271], "axi": 254, "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, 256], "287": 254, "288": 254, "289": [254, 271], "290": [254, 268], "291": 254, "292": 254, "293": 254, "294": 254, "295": [254, 268, 271], "296": [254, 271], "297": 254, "nativ": [254, 256, 267, 269, 270, 271], "298": 254, "299": [254, 271], "300": [254, 271, 274], "301": 254, "302": 254, "303": 254, "304": 254, "305": [254, 268], "306": [254, 271], "307": [254, 268], "308": 254, "309": [254, 268, 271], "310": [254, 271], "311": [254, 268], "312": [254, 271], "313": [254, 268, 271], "314": 254, "315": 254, "316": 254, "317": [254, 271], "318": 254, "319": 254, "320": [254, 271], "321": [254, 268], "322": [254, 268, 271], "323": 254, "324": 254, "325": [254, 271], "326": [254, 268], "327": [254, 268], "328": [254, 268, 271], "329": [254, 268], "330": 254, "331": [254, 268], "332": 254, "333": [254, 271], "334": [254, 268], "335": [254, 271], "336": [254, 271], "337": [254, 271], "338": 254, "339": [254, 271], "340": [254, 268], "341": 254, "a_inv": 254, "342": 254, "futur": [255, 271], "main": 255, "ringarrai": [255, 271], "runtim": 255, "furthermor": 255, "know": 255, "skip": 255, "verif": [255, 270, 271], "twice": 255, "onc": [255, 257, 266, 269, 270, 271, 274], "subsequ": [255, 271], "extrem": 255, "inexpens": 255, "isomorph": 255, "document": [255, 272, 273, 274], "access": [255, 258, 261, 263, 274], "sever": [255, 256, 259, 260], "pascalcas": [255, 259], "snake_cas": [255, 259], "act": 255, "we": [256, 257, 266, 271, 276, 277], "work": [256, 260, 263, 266, 267, 271], "rather": [256, 257, 269, 270, 271], "opposit": 256, "x_np": 256, "finish": [256, 266], "back": [256, 266, 271], "assist": [256, 266], "whatev": 256, "fail": [256, 271], "dure": [256, 257, 258], "abl": 256, "medium": 256, "unless": 256, "otherwis": [256, 271], "472": 256, "347": 256, "645227892947816375756107097864": 256, "889687374296644455173138754008": 256, "1010627866593864881984551226991": 256, "469893071539974484466935920922": 256, "388": 256, "400": [256, 271, 274], "astyp": [256, 270], "expect": 256, "reshap": 256, "subok": [256, 271], "Be": 256, "mind": 256, "custom": [257, 272], "numba": [257, 267, 271, 274], "written": [257, 267], "intercept": 257, "cach": [257, 271], "primari": [257, 264], "util": [257, 271], "built": [257, 261, 271, 274], "creation": [257, 258, 266, 267, 271, 274, 276, 277], "map": 257, "simplifi": [257, 271], "becom": [257, 258, 277], "limit": 257, "usual": 257, "concern": 257, "intermedi": 257, "frompyfunc": 257, "lack": 257, "come": [257, 268], "penalti": 257, "intention": 257, "immedi": [257, 262], "demand": 257, "invoc": [257, 271], "Their": 258, "proper": 258, "compact": [258, 271], "old": 258, "signific": [258, 271], "natur": [258, 266, 277], "clutter": 258, "clearli": 258, "problemat": 258, "occupi": 258, "lot": [258, 271], "quit": 258, "difficult": [258, 277], "read": 258, "readabl": [258, 276, 277], "improv": [258, 271, 272, 273, 274], "linewidth": 258, "179x": [259, 271], "180x": 259, "19x": 259, "simpl": [259, 270, 277], "178x": 259, "76x": 259, "0xf7": 259, "0x00": 259, "0xa2": 259, "0x75": 259, "treat": 260, "vice": 260, "versa": 260, "floor": [260, 271], "fraction": 260, "keep": [260, 270], "quotient": [260, 276], "overload": [260, 271], "sphinx": [261, 271], "immateri": [261, 271], "theme": 261, "txt": [261, 268], "myst": 261, "parser": 261, "git": [261, 262, 268], "dollar": 261, "ipykernel": 261, "switch": [261, 276, 277], "pip": [261, 262, 263, 264, 266, 268], "command": 261, "dirhtml": 261, "home": 261, "directori": [261, 262, 271], "webpag": 261, "local": [261, 263, 264], "webserv": 261, "modul": 261, "server": 261, "8080": 261, "web": 261, "browser": 261, "localhost": 261, "latest": [262, 266, 272], "releas": [262, 271, 272, 273, 274], "master": [262, 268], "mhostett": [262, 267, 271, 272, 273, 274], "branch": [262, 263, 268], "activ": 262, "develop": [262, 263, 264, 267, 268], "benefici": 262, "fashion": 262, "seen": [262, 271], "upon": 262, "clone": 262, "repo": [262, 268], "wherev": [262, 271], "like": [262, 266, 267, 268, 271, 276], "flag": 262, "lint": 262, "pyproject": [262, 263, 264, 271], "toml": [262, 263, 264, 271], "project": 262, "black": [262, 263, 274], "pytest": [262, 264, 268], "cov": [262, 268], "xdist": 262, "benchmark": [262, 271], "pdfminer": 262, "six": 262, "extra": [262, 268], "static": 263, "analysi": 263, "your": [263, 264, 267, 268], "dev": [263, 264, 268, 269, 270, 271, 272, 274], "nuisanc": 263, "warn": [263, 268], "ignor": [263, 277], "tool": [263, 264], "path": 263, "src": [263, 271], "_version": 263, "callabl": 263, "understand": 263, "metaclass": [263, 271], "fixm": 263, "invalid": 263, "miss": 263, "docstr": [263, 271], "protect": 263, "ancestor": 263, "attribut": 263, "unneed": 263, "exclud": 263, "quot": 263, "express": [263, 271], "reason": 263, "isort": [263, 274], "profil": 263, "vscode": [263, 264], "json": [263, 264, 268], "edit": 263, "ini_opt": 264, "minvers": 264, "addopt": 264, "showloc": 264, "testpath": 264, "execut": 264, "test_math": 264, "test_gcd": 264, "integr": [264, 267], "infrastructur": 264, "debug": 264, "parti": 264, "pkl": 264, "folder": [264, 268, 271], "script": [264, 271], "generate_int_test_vector": 264, "generate_field_test_vector": 264, "sudo": 264, "apt": 264, "sagemath": 264, "re": [264, 271], "easi": 264, "individu": 264, "guid": 266, "intend": [266, 267], "basic": 266, "usag": [266, 271, 273], "pypi": [266, 271, 272], "__version__": 266, "dev16": 266, "g3ab62683": 266, "elsewher": 266, "whichev": 266, "tradit": 266, "preform": 266, "complic": 266, "array_lik": 267, "mimic": [267, 271], "signatur": [267, 274], "intern": [267, 270], "replac": [267, 271, 273], "vulner": [267, 271], "channel": 267, "attack": 267, "secur": 267, "research": 267, "engin": 267, "cryptanalysi": 267, "experiment": 267, "educ": 267, "seamless": 267, "accompani": 267, "ellipt": 267, "curv": 267, "gpu": [267, 271], "heavili": 267, "reli": 267, "llvm": 267, "optim": [267, 269, 272, 274], "wolfram": [267, 271], "sage": 267, "sympi": 267, "octav": 267, "mention": [267, 276, 277], "thank": 267, "cite": 267, "recommend": 267, "bibtex": 267, "softwar": [267, 271], "hostetter_galois_2020": 267, "titl": 267, "author": 267, "hostett": [267, 271, 272, 273, 274], "matt": [267, 271, 272, 273, 274], "month": 267, "year": 267, "2020": 267, "url": [267, 271], "apa": 267, "test_field_arithmet": 268, "advis": 268, "stddev": 268, "median": 268, "session": 268, "platform": 268, "linux": 268, "pluggi": 268, "timer": 268, "perf_count": 268, "disable_gc": 268, "min_round": 268, "min_tim": 268, "000005": 268, "max_tim": 268, "calibration_precis": 268, "warmup": 268, "warmup_iter": 268, "100000": 268, "rootdir": 268, "mnt": 268, "matth": 268, "inifil": 268, "setup": 268, "cfg": 268, "plugin": 268, "mock": 268, "typeguard": 268, "anyio": 268, "collect": 268, "item": 268, "100_000": [268, 274], "test_add": 268, "3810": 268, "3280": 268, "9455": 268, "4959": 268, "07": [268, 270], "3620": 268, "test_additive_invers": 268, "5850": 268, "5360": 268, "1445": 268, "9249": 268, "2670": 268, "test_divid": 268, "0870": 268, "0680": 268, "6357": 268, "9537": 268, "4920": 268, "test_multiplicative_invers": 268, "4410": 268, "0050": 268, "6590": 268, "8467": 268, "4670": 268, "test_multipli": 268, "0400": 268, "4400": 268, "3296": 268, "1267": 268, "9010": 268, "test_pow": 268, "2410": 268, "06": [268, 274], "2870": 268, "8103": 268, "4850": 268, "2860": 268, "test_scalar_multipli": 268, "543": 268, "3970": 268, "00": 268, "714": 268, "562": 268, "2968": 268, "4125": 268, "1370": 268, "test_subtract": 268, "3110": 268, "8710": 268, "2938": 268, "4038": 268, "2520": 268, "2620": 268, "9984": 268, "1680": 268, "7530": 268, "0860": 268, "9070": 268, "7403": 268, "0927": 268, "0520": 268, "351": 268, "6220": 268, "09": 268, "5920": 268, "4510": 268, "3240": 268, "1620": 268, "9590": 268, "350": [268, 271], "8016": 268, "05": [268, 274], "3332": 268, "1050": 268, "1090": 268, "5620": 268, "1805": 268, "9767": 268, "6600": 268, "7210": 268, "520": 268, "5480": 268, "349": 268, "02": 268, "3962": 268, "6105": 268, "544": 268, "0880": 268, "1140": 268, "575": 268, "6227": 268, "0059": 268, "4830": 268, "6160": 268, "1760": 268, "3242": 268, "6562": 268, "8905": 268, "0580": 268, "393": [268, 271], "6670": 268, "7954": 268, "6945": 268, "4630": 268, "9080": 268, "6380": 268, "0218": 268, "7213": 268, "6330": 268, "7890": 268, "8050": 268, "1431": 268, "6688": 268, "0210": 268, "8140": 268, "348": 268, "4620": 268, "6663": 268, "8113": 268, "5820": 268, "475": 268, "2490": 268, "4317": 268, "6557": 268, "2370": 268, "6030": 268, "389": [268, 271], "2180": 268, "9333": 268, "9217": 268, "1145": 268, "539": 268, "7710": 268, "973": 268, "1410": 268, "573": 268, "4538": 268, "0047": 268, "557": 268, "7030": 268, "3500": 268, "0450": 268, "6062": 268, "3127": 268, "1270": 268, "6110": 268, "1990": 268, "4288": 268, "8745": 268, "6750": 268, "7150": 268, "0465": 268, "2959": 268, "3070": 268, "4310": 268, "971": 268, "367": [268, 271], "6440": 268, "0968": 268, "831": 268, "5738": 268, "354": [268, 271], "6500": 268, "933": 268, "842": 268, "1600": 268, "865": 268, "404": [268, 271], "4870": 268, "1417": 268, "755": 268, "529": 268, "9702": 268, "015": 268, "3740": 268, "839": 268, "079": 268, "0300": 268, "0780": 268, "098": 268, "1473": 268, "6741": 268, "092": 268, "5140": 268, "832": 268, "8340": 268, "938": 268, "7640": 268, "942": 268, "1951": 268, "806": 268, "9381": 268, "928": 268, "9640": 268, "903": 268, "883": 268, "2930": 268, "1310": 268, "3991": 268, "9582": 268, "912": 268, "6210": 268, "7780": 268, "7528": 268, "2536": 268, "4330": 268, "0900": 268, "5990": 268, "8739": 268, "6347": 268, "1720": 268, "3340": 268, "1649": 268, "1860": 268, "8860": 268, "6730": 268, "6490": 268, "7595": 268, "0094": 268, "9500": 268, "3150": 268, "4480": 268, "0589": 268, "9483": 268, "4220": 268, "3430": 268, "2580": 268, "8079": 268, "1740": 268, "7910": 268, "401": 268, "3410": 268, "8168": 268, "4759": 268, "8730": 268, "850": 268, "2810": 268, "3010": 268, "884": 268, "6499": 268, "6705": 268, "876": 268, "5800": 268, "5460": 268, "2685": 268, "4904": 268, "8610": 268, "4770": 268, "358": 268, "2300": 268, "4561": 268, "1327": 268, "4100": 268, "6980": 268, "6550": 268, "9128": 268, "6890": 268, "3460": 268, "7130": 268, "5486": 268, "5184": 268, "1795": 268, "4600": 268, "08": 268, "2010": 268, "5927": 268, "5185": 268, "2130": 268, "1690": 268, "3098": 268, "7315": 268, "361": [268, 271], "5260": 268, "447": 268, "0060": 268, "385": [268, 271], "7585": 268, "6975": 268, "375": 268, "4475": 268, "756": 268, "014": 268, "792": 268, "1778": 268, "3465": 268, "786": 268, "1765": 268, "383": [268, 271], "7790": 268, "461": 268, "3640": 268, "411": 268, "7450": 268, "7056": 268, "403": 268, "7260": 268, "10_000": [268, 271, 272], "9310": 268, "635": 268, "8940": 268, "936": 268, "2487": 268, "1260": 268, "915": 268, "945": 268, "0700": 268, "632": 268, "3527": 268, "9239": 268, "01": 268, "578": 268, "4425": 268, "022": 268, "8560": 268, "7516": 268, "808": 268, "8230": 268, "481": [268, 274], "3870": 268, "011": 268, "817": 268, "897": 268, "2702": 268, "471": [268, 274], "2330": 268, "992": 268, "5040": 268, "847": 268, "6130": 268, "894": 268, "3920": 268, "872": 268, "3102": 268, "8231": 268, "2980": 268, "3730": 268, "040": 268, "5270": 268, "650": 268, "6814": 268, "5041": 268, "693": 268, "8380": 268, "049": 268, "1360": 268, "4565": 268, "6458": 268, "1895": 268, "4720": 268, "075": 268, "8030": 268, "944": 268, "4420": 268, "1406": 268, "5830": 268, "legend": 268, "outlier": 268, "deviat": 268, "iqr": 268, "interquartil": 268, "1st": 268, "quartil": 268, "3rd": 268, "op": 268, "per": [268, 269, 270, 271, 272, 274], "impact": 268, "0001_master": 268, "checkout": 268, "0001_branch": 268, "modular": [269, 271, 277], "involv": 269, "convolut": 269, "make": [269, 271, 275], "fair": 269, "fight": 269, "million": [269, 270], "10_000_000": [269, 270], "timeit": [269, 270, 271, 272, 274], "std": [269, 270, 271, 272, 274], "incorrect": 269, "aa": [269, 270], "bb": [269, 270], "pp": 269, "747": 269, "\u00b5": [269, 270, 271, 272, 274], "1174047800": 269, "3249326965": 269, "3196014003": 269, "3195457330": 269, "100242821": 269, "338589759": 269, "386": 269, "isn": 269, "718": 269, "definit": 269, "bla": [269, 270], "lapack": [269, 270], "parallel": [269, 274], "hardwar": 269, "acceler": 269, "4203877556": 269, "3977035749": 269, "2623937858": 269, "3721257849": 269, "4250999056": 269, "4026271867": 269, "3120760606": 269, "1017695431": 269, "1111117124": 269, "1638387264": 269, "2988805996": 269, "1734614583": 269, "2508826906": 269, "2800993411": 269, "1720697782": 269, "3858180318": 269, "2521070820": 269, "3906771227": 269, "624580545": 269, "984724090": 269, "3969931498": 269, "1692192269": 269, "473079794": 269, "1029376699": 269, "1232183301": 269, "209395954": 269, "2659712274": 269, "2967695343": 269, "2747874320": 269, "1249453570": 269, "3938433735": 269, "828783569": 269, "3286222384": 269, "3669775257": 269, "33626526": 269, "4278384359": 269, "703": 269, "000": [269, 270, 271, 274], "xy": 270, "2097169": 270, "1879104": 270, "1566761": 270, "967164": 270, "744769": 270, "975853": 270, "1142138": 270, "due": [270, 271], "don": 270, "1403108": 270, "100593": 270, "595358": 270, "852783": 270, "1035698": 270, "1207498": 270, "989189": 270, "390": 270, "absolut": 270, "overflow": [270, 271], "prevent": 270, "whenev": 270, "1147163": 270, "59466": 270, "1841183": 270, "667877": 270, "2084618": 270, "799166": 270, "306714": 270, "1380503": 270, "810935": 270, "1932687": 270, "1690697": 270, "329837": 270, "325274": 270, "575543": 270, "1327001": 270, "167724": 270, "422518": 270, "696986": 270, "862992": 270, "1143160": 270, "588384": 270, "668891": 270, "1285421": 270, "1196448": 270, "1026856": 270, "1413416": 270, "1844802": 270, "38844": 270, "1643604": 270, "10409": 270, "401717": 270, "329673": 270, "860449": 270, "1551173": 270, "1766877": 270, "986430": 270, "708": 270, "slightli": 270, "overhead": 270, "682": [270, 271], "renam": [271, 273], "gfarrai": 271, "chinese_remainder_theorem": 271, "bug": [271, 274, 275], "baalateja": 271, "kataru": 271, "bk": 271, "poly_exp_mod": 271, "poly_pow": 271, "is_prime_fermat": 271, "is_prime_miller_rabin": 271, "massiv": 271, "enhanc": 271, "convolv": 271, "oaklei": 271, "rfc": 271, "2409": 271, "restructur": 271, "is_group": 271, "is_field": 271, "poly_factor": 271, "vdot": 271, "poly_gcd": 271, "june": 271, "fieldmeta": 271, "fieldclass": 271, "remov": [271, 272, 273], "better": 271, "consolid": 271, "verify_irreduc": 271, "verify_primit": 271, "abil": [271, 272, 274, 276, 277], "ipython": 271, "tab": [271, 276, 277], "cleanup": 271, "tutori": [271, 276, 277], "convers": 271, "minor": [271, 275], "dominik": 271, "wernberg": 271, "werni2a": 271, "juli": 271, "prime_factor": 271, "poly_egcd": 271, "euler_toti": 271, "clean": 271, "dir": 271, "public": 271, "shorten": 271, "structur": 271, "hierarchi": 271, "august": [271, 272], "unnecessari": [271, 276], "log_naiv": 271, "might": 271, "overrid": 271, "coverag": 271, "though": 271, "bch_valid_cod": [271, 273], "repetit": 271, "weren": 271, "move": 271, "parit": 271, "pin": 271, "septemb": [271, 272], "render": 271, "correctli": 271, "id": 271, "decemb": [271, 274], "style": 271, "randint": 271, "offici": 271, "major": [271, 272, 275], "syntax": 271, "bump": 271, "iy\u00e1n": [271, 274], "m\u00e9ndez": [271, 274], "veiga": [271, 274], "iyanmv": [271, 274], "januari": 271, "2022": [271, 272, 273, 274], "hint": 271, "februari": [271, 274], "refactor": [271, 273], "lup_decompos": 271, "is_quadratic_residu": 271, "aren": 271, "quadratic_residu": 271, "quadratic_non_residu": 271, "co": 271, "march": 271, "redefin": 271, "differenti": 271, "wasn": 271, "memoiz": [271, 274], "routin": [271, 272], "cpu": [271, 274], "675": 271, "sy": [271, 274], "total": [271, 274], "wall": [271, 274], "741": 271, "0o13": 271, "0xb": 271, "made": 271, "longer": [271, 274], "needlessli": 271, "overhaul": 271, "websit": 271, "immut": 271, "actual": 271, "obtain": 271, "answer": [271, 276, 277], "binarypoli": 271, "densepoli": 271, "sparsepoli": 271, "redund": 271, "03": 271, "nest": 271, "436": [271, 273], "910": 271, "900": 271, "242x": 271, "32x": 271, "230x": 271, "159x": 271, "83x": 271, "101x": 271, "68x": 271, "442": [271, 274], "439": 271, "april": 271, "sunset": 271, "__future__": 271, "annot": [271, 272], "That": 271, "alias": 271, "subpackag": 271, "inabl": 271, "monkei": 271, "patch": [271, 275], "343": 271, "anywher": 271, "coercibl": 271, "throughout": 271, "simpler": 271, "clear": 271, "695": 271, "clariti": 271, "broken": [271, 277], "boost": 271, "722": 271, "574": 271, "527": 271, "690": 271, "concis": 271, "descript": 271, "362": 271, "wide": 271, "363": 271, "polymorph": 271, "believ": 271, "introduc": [271, 275], "occasion": [271, 274], "erron": 271, "360": 271, "upgrad": 271, "cve": 271, "34141": 271, "41496": 271, "41495": 271, "366": 271, "373": 271, "376": 271, "377": 271, "rework": 271, "apigen": 271, "370": 271, "readthedoc": 271, "languag": 271, "seem": 271, "connot": 271, "hopefulli": 271, "392": 271, "complex": 271, "brute": 271, "forc": 271, "1650": 271, "pohlig": 271, "hellman": 271, "lg": 271, "387": 271, "491954233": 271, "14011": 271, "itoh": 271, "tsujii": 271, "littl": [271, 277], "646": 271, "834": 271, "479": 271, "pickl": 271, "fec": [271, 273], "397": 271, "sourc": 271, "metadata": 272, "414": 272, "409": [272, 274], "2218840874040723579228056294021": 272, "deploi": 272, "408": 272, "novemb": [272, 273], "ineffici": 272, "429": 272, "13546990": 272, "14653018": 272, "21619804": 272, "15507037": 272, "24669161": 272, "19116362": 272, "23979074": 272, "432": 272, "13693": 272, "426": 272, "modern": 272, "abbrevi": 272, "notat": 272, "418": 272, "appropri": 272, "420": 272, "424": 272, "430": 272, "413": 273, "435": 273, "ari": 273, "parity_onli": 273, "generator_to_parity_check_matrix": 273, "parity_check_to_generator_matrix": 273, "poly_to_generator_matrix": 273, "roots_to_parity_check_matrix": 273, "display_mod": 273, "bool_": 273, "437": 273, "publish": 273, "doc": 273, "441": 274, "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512": 274, "core": 274, "440": 274, "664": 274, "776": 274, "bitwise_xor": 274, "infinit": 274, "450": 274, "2400610585866217": 274, "446": 274, "449": 274, "pivi": 274, "452": 274, "took": 274, "forev": 274, "641": 274, "274177": 274, "6700417": 274, "67280421310721": 274, "59649589127497217": 274, "5704689200685129054721": 274, "454": 274, "2013": 274, "2018": 274, "2023": 274, "463": 274, "462": 274, "1001": 274, "745": 274, "470": 274, "469": 274, "415": 274, "477": 274, "mypi": 274, "checker": 274, "concurr": 274, "484": 274, "semant": 275, "featur": 275, "guarante": 275, "thought": 275, "prove": [276, 277], "mostli": 276, "gf9": 276, "suggest": [276, 277], "compactli": 276, "retriev": [276, 277], "inform": 276, "analogu": 276, "mathemat": [276, 277], "speak": [276, 277], "gf3": 276, "a_poli": 276, "b_poli": 276, "nonetheless": [276, 277], "convinc": [276, 277], "yourself": [276, 277], "reduct": 276, "reformul": [276, 277], "onto": 276, "let": [276, 277], "earlier": [276, 277], "learn": [276, 277], "b_inv_poli": 276, "examin": [276, 277], "honor": 277, "father": 277, "theori": 277, "ask": 277, "gauss": 277, "publicli": 277, "give": 277, "opinion": 277, "truth": 277, "hope": 277, "who": 277, "advantag": 277, "deciph": 277, "mess": 277, "1832": 277, "dai": 277, "hi": 277, "death": 277, "categori": 277, "focu": 277, "gf7": 277, "a_int": 277, "b_int": 277, "similarli": 277, "euclid": 277, "b\u00e9zout": 277, "yt": 277, "b_inv_int": 277}, "objects": {"": [[0, 0, 0, 1, "galois", ""]], "galois": [[1, 1, 1, "", "Array", "An abstract ndarray subclass over a Galois field or Galois ring."], [22, 1, 1, "", "BCH", "A general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [45, 1, 1, "", "FLFSR", "A Fibonacci linear-feedback shift register (LFSR)."], [60, 5, 1, "", "Field", "Alias of GF()."], [61, 1, 1, "", "FieldArray", "An abstract ndarray subclass over $mathrm{GF}(p^m)$."], [115, 5, 1, "", "GF", "Creates a FieldArray subclass for $mathrm{GF}(p^m)$."], [116, 1, 1, "", "GF2", "A FieldArray subclass over $mathrm{GF}(2)$."], [117, 1, 1, "", "GLFSR", "A Galois linear-feedback shift register (LFSR)."], [132, 1, 1, "", "Poly", "A univariate polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [168, 1, 1, "", "ReedSolomon", "A general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [190, 5, 1, "", "are_coprime", "Determines if the arguments are pairwise coprime."], [191, 5, 1, "", "berlekamp_massey", "Finds the minimal polynomial $c(x)$ that produces the linear recurrent sequence $y$."], [192, 5, 1, "", "carmichael_lambda", "Finds the smallest positive integer $m$ such that $a^m equiv 1(textrm{mod}n)$ for every integer $a$ in $[1, n)$ that is coprime to $n$."], [193, 5, 1, "", "conway_poly", "Returns the Conway polynomial $C_{p,m}(x)$ over $mathrm{GF}(p)$ with degree $m$."], [194, 5, 1, "", "crt", "Solves the simultaneous system of congruences for $x$."], [195, 5, 1, "", "divisor_sigma", "Returns the sum of $k$-th powers of the positive divisors of $n$."], [196, 5, 1, "", "divisors", "Computes all positive integer divisors $d$ of the integer $n$ such that $d|n$."], [197, 5, 1, "", "egcd", "Finds the multiplicands of $a$ and $b$ such that $a s + b t = mathrm{gcd}(a, b)$."], [198, 5, 1, "", "euler_phi", "Counts the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [199, 5, 1, "", "factors", "Computes the prime factors of a positive integer or the irreducible factors of a non-constant, monic polynomial."], [200, 5, 1, "", "fermat_primality_test", "Determines if $n$ is composite using Fermat's primality test."], [201, 5, 1, "", "gcd", "Finds the greatest common divisor of $a$ and $b$."], [202, 5, 1, "", "get_printoptions", "Returns the current print options for the package. This function is the galois equivalent of numpy.get_printoptions()."], [203, 5, 1, "", "ilog", "Computes $x = lfloortextrm{log}_b(n)rfloor$ such that $b^x le n < b^{x + 1}$."], [204, 5, 1, "", "intt", "Computes the Inverse Number-Theoretic Transform (INTT) of $X$."], [205, 5, 1, "", "iroot", "Computes $x = lfloor n^{frac{1}{k}} rfloor$ such that $x^k le n < (x + 1)^k$."], [206, 5, 1, "", "irreducible_poly", "Returns a monic irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [207, 5, 1, "", "irreducible_polys", "Iterates through all monic irreducible polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [208, 5, 1, "", "is_composite", "Determines if $n$ is composite."], [209, 5, 1, "", "is_cyclic", "Determines whether the multiplicative group $(mathbb{Z}/nmathbb{Z}){^times}$ is cyclic."], [210, 5, 1, "", "is_perfect_power", "Determines if $n$ is a perfect power $n = c^e$ with $e > 1$."], [211, 5, 1, "", "is_powersmooth", "Determines if the integer $n$ is $B$-powersmooth."], [212, 5, 1, "", "is_prime", "Determines if $n$ is prime."], [213, 5, 1, "", "is_prime_power", "Determines if $n$ is a prime power $n = p^k$ for prime $p$ and $k ge 1$."], [214, 5, 1, "", "is_primitive_element", "Determines if $g$ is a primitive element of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [215, 5, 1, "", "is_primitive_root", "Determines if $g$ is a primitive root modulo $n$."], [216, 5, 1, "", "is_smooth", "Determines if the integer $n$ is $B$-smooth."], [217, 5, 1, "", "is_square_free", "Determines if an integer or polynomial is square-free."], [218, 5, 1, "", "isqrt", "Computes $x = lfloorsqrt{n}rfloor$ such that $x^2 le n < (x + 1)^2$."], [219, 5, 1, "", "jacobi_symbol", "Computes the Jacobi symbol $(frac{a}{n})$."], [220, 5, 1, "", "kronecker_symbol", "Computes the Kronecker symbol $(frac{a}{n})$. The Kronecker symbol extends the Jacobi symbol for all $n$."], [221, 5, 1, "", "kth_prime", "Returns the $k$-th prime, where $k = {1,2,3,4,dots}$ for primes $p = {2,3,5,7,dots}$."], [222, 5, 1, "", "lagrange_poly", "Computes the Lagrange interpolating polynomial $L(x)$ such that $L(x_i) = y_i$."], [223, 5, 1, "", "lcm", "Computes the least common multiple of the arguments."], [224, 5, 1, "", "legendre_symbol", "Computes the Legendre symbol $(frac{a}{p})$."], [225, 5, 1, "", "matlab_primitive_poly", "Returns Matlab's default primitive polynomial $f(x)$ over $mathrm{GF}(p)$ with degree $m$."], [226, 5, 1, "", "mersenne_exponents", "Returns all known Mersenne exponents $e$ for $e le n$."], [227, 5, 1, "", "mersenne_primes", "Returns all known Mersenne primes $p$ for $p le 2^n - 1$."], [228, 5, 1, "", "miller_rabin_primality_test", "Determines if $n$ is composite using the Miller-Rabin primality test."], [229, 5, 1, "", "next_prime", "Returns the nearest prime $p$, such that $p > n$."], [230, 5, 1, "", "ntt", "Computes the Number-Theoretic Transform (NTT) of $x$."], [231, 5, 1, "", "perfect_power", "Returns the integer base $c$ and exponent $e$ of $n = c^e$. If $n$ is not a perfect power, then $c = n$ and $e = 1$."], [232, 5, 1, "", "pollard_p1", "Attempts to find a non-trivial factor of $n$ if it has a prime factor $p$ such that $p-1$ is $B$-smooth."], [233, 5, 1, "", "pollard_rho", "Attempts to find a non-trivial factor of $n$ using cycle detection."], [234, 5, 1, "", "prev_prime", "Returns the nearest prime $p$, such that $p le n$."], [235, 5, 1, "", "primes", "Returns all primes $p$ for $p le n$."], [236, 5, 1, "", "primitive_element", "Finds a primitive element $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [237, 5, 1, "", "primitive_elements", "Finds all primitive elements $g$ of the Galois field $mathrm{GF}(q^m)$ with degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$."], [238, 5, 1, "", "primitive_poly", "Returns a monic primitive polynomial $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [239, 5, 1, "", "primitive_polys", "Iterates through all monic primitive polynomials $f(x)$ over $mathrm{GF}(q)$ with degree $m$."], [240, 5, 1, "", "primitive_root", "Finds a primitive root modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [241, 5, 1, "", "primitive_roots", "Iterates through all primitive roots modulo $n$ in the range $[textrm{start}, textrm{stop})$."], [242, 5, 1, "", "printoptions", "A context manager to temporarily modify the print options for the package. This function is the galois equivalent of numpy.printoptions()."], [243, 5, 1, "", "prod", "Computes the product of the arguments."], [244, 5, 1, "", "random_prime", "Returns a random prime $p$ with $b$ bits, such that $2^b le p < 2^{b+1}$."], [245, 5, 1, "", "set_printoptions", "Modifies the print options for the package. This function is the galois equivalent of numpy.set_printoptions()."], [246, 5, 1, "", "totatives", "Returns the positive integers (totatives) in $[1, n)$ that are coprime to $n$."], [247, 5, 1, "", "trial_division", "Finds all the prime factors $p_i^{e_i}$ of $n$ for $p_i le B$."]], "galois.Array": [[2, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [3, 2, 1, "", "Ones", "Creates an array of all ones."], [4, 2, 1, "", "Random", "Creates an array with random elements."], [5, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [6, 2, 1, "", "Zeros", "Creates an array of all zeros."], [7, 4, 1, "", "characteristic", "The characteristic $p$ of the Galois field $mathrm{GF}(p^m)$ or $p^e$ of the Galois ring $mathrm{GR}(p^e, m)$."], [8, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [9, 4, 1, "", "default_ufunc_mode", "The default compilation mode of the Galois field or Galois ring."], [10, 4, 1, "", "degree", "The degree $m$ of the Galois field $mathrm{GF}(p^m)$ or Galois ring $mathrm{GR}(p^e, m)$."], [11, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this Galois field or Galois ring."], [12, 4, 1, "", "element_repr", "The current element representation of the Galois field or Galois ring."], [13, 4, 1, "", "elements", "All elements of the Galois field or Galois ring."], [14, 4, 1, "", "irreducible_poly", "The irreducible polynomial of the Galois field or Galois ring."], [15, 4, 1, "", "name", "The name of the Galois field or Galois ring."], [16, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$ or $p^{em}$ of the Galois ring $mathrm{GR}(p^e, m)$."], [17, 4, 1, "", "primitive_element", "A primitive element of the Galois field or Galois ring."], [18, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [19, 4, 1, "", "ufunc_mode", "The current compilation mode of the Galois field or Galois ring."], [20, 4, 1, "", "ufunc_modes", "All supported compilation modes of the Galois field or Galois ring."], [21, 4, 1, "", "units", "All units of the Galois field or Galois ring."]], "galois.Array.Identity": [[2, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [2, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.Array.Ones": [[3, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [3, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.Random": [[4, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [4, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [4, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [4, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [4, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.Array.Range": [[5, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [5, 3, 2, "p-start", "start", "The starting element (inclusive)."], [5, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [5, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.Array.Zeros": [[6, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this Array subclass (the first element in dtypes)."], [6, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.Array.compile": [[8, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.Array.repr": [[18, 3, 2, "p-element_repr", "element_repr", "The field element representation."]], "galois.BCH": [[23, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [24, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [25, 2, 1, "", "__init__", "Constructs a general $textrm{BCH}(n, k)$ code over $mathrm{GF}(q)$."], [26, 2, 1, "", "__repr__", "A terse representation of the BCH code."], [27, 2, 1, "", "__str__", "A formatted string with relevant properties of the BCH code."], [28, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$ in $mathrm{GF}(q^m)$."], [29, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [30, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [31, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [32, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [33, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [34, 4, 1, "", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the BCH syndrome arithmetic."], [35, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [36, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [37, 4, 1, "", "is_narrow_sense", "Indicates if the BCH code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [38, 4, 1, "", "is_primitive", "Indicates if the BCH code is primitive, meaning $n = q^m - 1$."], [39, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [40, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [41, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [42, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [43, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [44, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.BCH.__init__": [[25, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q^m)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [25, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the BCH code is narrow-sense."], [25, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q^m)$."], [25, 3, 2, "p-extension_field", "extension_field", "The Galois field $mathrm{GF}(q^m)$ that defines the syndrome arithmetic. The default is None which corresponds to $mathrm{GF}(q^m)$ where $q^{m - 1} le n < q^m$. The default extension field will use matlab_primitive_poly(q, m) for the irreducible polynomial."], [25, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2)$."], [25, 3, 2, "p-k", "k", "The message size $k$."], [25, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q^m - 1$, the BCH code is primitive."], [25, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.BCH.decode": [[31, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [31, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [31, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.BCH.detect": [[32, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.BCH.encode": [[33, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [33, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.FLFSR": [[46, 2, 1, "", "Taps", "Constructs a Fibonacci LFSR from its taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."], [47, 2, 1, "", "__init__", "Constructs a Fibonacci LFSR from its feedback polynomial $f(x)$."], [48, 2, 1, "", "__repr__", "A terse representation of the Fibonacci LFSR."], [49, 2, 1, "", "__str__", "A formatted string of relevant properties of the Fibonacci LFSR."], [50, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [51, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [52, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [53, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [54, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [55, 2, 1, "", "reset", "Resets the Fibonacci LFSR state to the specified state."], [56, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [57, 2, 1, "", "step", "Produces the next steps output symbols."], [58, 4, 1, "", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$. The taps of the shift register define the linear recurrence relation."], [59, 2, 1, "", "to_galois_lfsr", "Converts the Fibonacci LFSR to a Galois LFSR that produces the same output."]], "galois.FLFSR.Taps": [[46, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [46, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_{n-1}, c_{n-2}, dots, c_1, c_0]$."]], "galois.FLFSR.__init__": [[47, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [47, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.FLFSR.reset": [[55, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.FLFSR.step": [[57, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Fibonacci LFSR will step backwards."]], "galois.FieldArray": [[62, 2, 1, "", "Identity", "Creates an $n times n$ identity matrix."], [63, 2, 1, "", "Ones", "Creates an array of all ones."], [64, 2, 1, "", "Random", "Creates an array with random elements."], [65, 2, 1, "", "Range", "Creates a 1-D array with a range of elements."], [66, 2, 1, "", "Vandermonde", "Creates an $m times n$ Vandermonde matrix of $a in mathrm{GF}(q)$."], [67, 2, 1, "", "Vector", "Converts length-$m$ vectors over the prime subfield $mathrm{GF}(p)$ to an array over $mathrm{GF}(p^m)$."], [68, 2, 1, "", "Zeros", "Creates an array of all zeros."], [69, 2, 1, "", "__init__", "Creates an array over $mathrm{GF}(p^m)$."], [70, 2, 1, "", "__repr__", "Displays the array specifying the class and finite field order."], [71, 2, 1, "", "__str__", "Displays the array without specifying the class or finite field order."], [72, 2, 1, "", "additive_order", "Computes the additive order of each element in $x$."], [73, 2, 1, "", "arithmetic_table", "Generates the specified arithmetic table for the finite field."], [74, 4, 1, "", "characteristic", "The prime characteristic $p$ of the Galois field $mathrm{GF}(p^m)$."], [75, 2, 1, "", "characteristic_poly", "Computes the characteristic polynomial of a finite field element $a$ or a square matrix $mathbf{A}$."], [76, 2, 1, "", "column_space", "Computes the column space of the matrix $mathbf{A}$."], [77, 2, 1, "", "compile", "Recompile the just-in-time compiled ufuncs for a new calculation mode."], [78, 4, 1, "", "default_ufunc_mode", "The default ufunc compilation mode for this FieldArray subclass."], [79, 4, 1, "", "degree", "The extension degree $m$ of the Galois field $mathrm{GF}(p^m)$."], [80, 4, 1, "", "dtypes", "List of valid integer numpy.dtype values that are compatible with this finite field."], [81, 4, 1, "", "element_repr", "The current finite field element representation."], [82, 4, 1, "", "elements", "All of the finite field's elements ${0, dots, p^m-1}$."], [83, 2, 1, "", "field_norm", "Computes the field norm $mathrm{N}_{L / K}(x)$ of the elements of $x$."], [84, 2, 1, "", "field_trace", "Computes the field trace $mathrm{Tr}_{L / K}(x)$ of the elements of $x$."], [85, 4, 1, "", "irreducible_poly", "The irreducible polynomial $f(x)$ of the Galois field $mathrm{GF}(p^m)$."], [86, 4, 1, "", "is_extension_field", "Indicates if the finite field is an extension field, having prime power order."], [87, 4, 1, "", "is_prime_field", "Indicates if the finite field is a prime field, having prime order."], [88, 4, 1, "", "is_primitive_poly", "Indicates whether the irreducible_poly is a primitive polynomial."], [89, 2, 1, "", "is_square", "Determines if the elements of $x$ are squares in the finite field."], [90, 2, 1, "", "left_null_space", "Computes the left null space of the matrix $mathbf{A}$."], [91, 2, 1, "", "log", "Computes the discrete logarithm of the array $x$ base $beta$."], [92, 2, 1, "", "lu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices."], [93, 2, 1, "", "minimal_poly", "Computes the minimal polynomial of a finite field element $a$."], [94, 2, 1, "", "multiplicative_order", "Computes the multiplicative order $textrm{ord}(x)$ of each element in $x$."], [95, 4, 1, "", "name", "The finite field's name as a string GF(p) or GF(p^m)."], [96, 4, 1, "", "non_squares", "All non-squares in the Galois field."], [97, 2, 1, "", "null_space", "Computes the null space of the matrix $mathbf{A}$."], [98, 4, 1, "", "order", "The order $p^m$ of the Galois field $mathrm{GF}(p^m)$."], [99, 2, 1, "", "plu_decompose", "Decomposes the input array into the product of lower and upper triangular matrices using partial pivoting."], [100, 4, 1, "", "prime_subfield", "The prime subfield $mathrm{GF}(p)$ of the extension field $mathrm{GF}(p^m)$."], [101, 4, 1, "", "primitive_element", "A primitive element $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [102, 4, 1, "", "primitive_elements", "All primitive elements $alpha$ of the Galois field $mathrm{GF}(p^m)$."], [103, 2, 1, "", "primitive_root_of_unity", "Finds a primitive $n$-th root of unity in the finite field."], [104, 2, 1, "", "primitive_roots_of_unity", "Finds all primitive $n$-th roots of unity in the finite field."], [105, 4, 1, "", "properties", "A formatted string of relevant properties of the Galois field."], [106, 2, 1, "", "repr", "Sets the element representation for all arrays from this FieldArray subclass."], [107, 2, 1, "", "repr_table", "Generates a finite field element representation table comparing the power, polynomial, vector, and integer representations."], [108, 2, 1, "", "row_reduce", "Performs Gaussian elimination on the matrix to achieve reduced row echelon form (RREF)."], [109, 2, 1, "", "row_space", "Computes the row space of the matrix $mathbf{A}$."], [110, 4, 1, "", "squares", "All squares in the finite field."], [111, 4, 1, "", "ufunc_mode", "The current ufunc compilation mode for this FieldArray subclass."], [112, 4, 1, "", "ufunc_modes", "All supported ufunc compilation modes for this FieldArray subclass."], [113, 4, 1, "", "units", "All of the finite field's units ${1, dots, p^m-1}$."], [114, 2, 1, "", "vector", "Converts an array over $mathrm{GF}(p^m)$ to length-$m$ vectors over the prime subfield $mathrm{GF}(p)$."]], "galois.FieldArray.Identity": [[62, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [62, 3, 2, "p-size", "size", "The size $n$ along one dimension of the identity matrix."]], "galois.FieldArray.Ones": [[63, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [63, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.Random": [[64, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [64, 3, 2, "p-high", "high", "The largest element (exclusive). The default is None which represents order."], [64, 3, 2, "p-low", "low", "The smallest element (inclusive). The default is 0."], [64, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."], [64, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple. The default is () which represents a scalar."]], "galois.FieldArray.Range": [[65, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [65, 3, 2, "p-start", "start", "The starting element (inclusive)."], [65, 3, 2, "p-step", "step", "The increment between elements. The default is 1."], [65, 3, 2, "p-stop", "stop", "The stopping element (exclusive)."]], "galois.FieldArray.Vandermonde": [[66, 3, 2, "p-cols", "cols", "The number of columns $n$ in the Vandermonde matrix."], [66, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [66, 3, 2, "p-element", "element", "An element $a$ of $mathrm{GF}(q)$."], [66, 3, 2, "p-rows", "rows", "The number of rows $m$ in the Vandermonde matrix."]], "galois.FieldArray.Vector": [[67, 3, 2, "p-array", "array", "An array over $mathrm{GF}(p)$ with last dimension $m$. An array with shape (n1, n2, m) has output shape (n1, n2). By convention, the vectors are ordered from degree $m-1$ to degree 0."], [67, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.FieldArray.Zeros": [[68, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [68, 3, 2, "p-shape", "shape", "A NumPy-compliant shape tuple."]], "galois.FieldArray.__init__": [[69, 3, 2, "p-copy", "copy", "The copy keyword argument from numpy.array(). The default is True."], [69, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."], [69, 3, 2, "p-ndmin", "ndmin", "The ndmin keyword argument from numpy.array(). The default is 0."], [69, 3, 2, "p-order", "order", "The order keyword argument from numpy.array(). The default is \"K\"."], [69, 3, 2, "p-x", "x", "A finite field scalar or array."]], "galois.FieldArray.arithmetic_table": [[73, 3, 2, "p-operation", "operation", "The arithmetic operation."], [73, 3, 2, "p-x", "x", "Optionally specify the $x$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$."], [73, 3, 2, "p-y", "y", "Optionally specify the $y$ values for the arithmetic table. The default is None which represents ${0, dots, p^m - 1}$ for addition, subtraction, and multiplication and ${1, dots, p^m - 1}$ for division."]], "galois.FieldArray.compile": [[77, 3, 2, "p-mode", "mode", "The ufunc calculation mode."]], "galois.FieldArray.log": [[91, 3, 2, "p-base", "base", "A primitive element or elements $beta$ of the finite field that is the base of the logarithm. The default is None which uses primitive_element."]], "galois.FieldArray.primitive_root_of_unity": [[103, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.primitive_roots_of_unity": [[104, 3, 2, "p-n", "n", "The root of unity."]], "galois.FieldArray.repr": [[106, 3, 2, "p-element_repr", "element_repr", "The field element representation to be set."]], "galois.FieldArray.repr_table": [[107, 3, 2, "p-element", "element", "An element to use as the exponent base in the power representation. The default is None which corresponds to primitive_element."], [107, 3, 2, "p-sort", "sort", "The sorting method for the table. The default is \"power\". Sorting by \"power\" will order the rows of the table by ascending powers of element. Sorting by any of the others will order the rows in lexicographical polynomial/vector order, which is equivalent to ascending order of the integer representation."]], "galois.FieldArray.row_reduce": [[108, 3, 2, "p-eye", "eye", "The location of the identity matrix $mathbf{I}$, either on the left or the right."], [108, 3, 2, "p-ncols", "ncols", "The number of columns to perform Gaussian elimination over. The default is None which represents the number of columns of the matrix."]], "galois.FieldArray.vector": [[114, 3, 2, "p-dtype", "dtype", "The numpy.dtype of the array elements. The default is None which represents the smallest unsigned data type for this FieldArray subclass (the first element in dtypes)."]], "galois.GF": [[115, 3, 2, "p-characteristic", "characteristic", "The characteristic $p$ of the field $mathrm{GF}(p^m)$. The characteristic must be prime."], [115, 3, 2, "p-compile", "compile", "The ufunc calculation mode. This can be modified after class construction with the compile() method. See /basic-usage/compilation-modes for a further discussion."], [115, 3, 2, "p-degree", "degree", "The degree $m$ of the field $mathrm{GF}(p^m)$. The degree must be a positive integer."], [115, 3, 2, "p-irreducible_poly", "irreducible_poly", "Optionally specify an irreducible polynomial of degree $m$ over $mathrm{GF}(p)$ that defines the finite field arithmetic. The default is None which uses the Conway polynomial $C_{p,m}$, see conway_poly()."], [115, 3, 2, "p-order", "order", "The order $p^m$ of the field $mathrm{GF}(p^m)$. The order must be a prime power."], [115, 3, 2, "p-primitive_element", "primitive_element", "Optionally specify a primitive element of the field. This value is used when building the exponential and logarithm lookup tables and as the base of numpy.log. A primitive element is a generator of the multiplicative group of the field."], [115, 3, 2, "p-repr", "repr", "The field element representation. This can be modified after class construction with the repr() method. See /basic-usage/element-representation for a further discussion."], [115, 3, 2, "p-verify", "verify", "Indicates whether to verify that the user-provided irreducible polynomial is in fact irreducible and that the user-provided primitive element is in fact a generator of the multiplicative group. The default is True."]], "galois.GLFSR": [[118, 2, 1, "", "Taps", "Constructs a Galois LFSR from its taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."], [119, 2, 1, "", "__init__", "Constructs a Galois LFSR from its feedback polynomial $f(x)$."], [120, 2, 1, "", "__repr__", "A terse representation of the Galois LFSR."], [121, 2, 1, "", "__str__", "A formatted string of relevant properties of the Galois LFSR."], [122, 4, 1, "", "characteristic_poly", "The characteristic polynomial $c(x) = x^{n} - c_{n-1}x^{n-1} - c_{n-2}x^{n-2} - dots - c_{1}x - c_{0}$ that defines the linear recurrent sequence."], [123, 4, 1, "", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$ that defines the feedback arithmetic."], [124, 4, 1, "", "field", "The FieldArray subclass for the finite field that defines the linear arithmetic."], [125, 4, 1, "", "initial_state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [126, 4, 1, "", "order", "The order of the linear recurrence/linear recurrent sequence. The order of a sequence is defined by the degree of the minimal polynomial that produces it."], [127, 2, 1, "", "reset", "Resets the Galois LFSR state to the specified state."], [128, 4, 1, "", "state", "The current state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$."], [129, 2, 1, "", "step", "Produces the next steps output symbols."], [130, 4, 1, "", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$. The taps of the shift register define the linear recurrence relation."], [131, 2, 1, "", "to_fibonacci_lfsr", "Converts the Galois LFSR to a Fibonacci LFSR that produces the same output."]], "galois.GLFSR.Taps": [[118, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."], [118, 3, 2, "p-taps", "taps", "The shift register taps $T = [c_0, c_1, dots, c_{n-2}, c_{n-1}]$."]], "galois.GLFSR.__init__": [[119, 3, 2, "p-feedback_poly", "feedback_poly", "The feedback polynomial $f(x) = -c_{0}x^{n} - c_{1}x^{n-1} - dots - c_{n-2}x^{2} - c_{n-1}x + 1$."], [119, 3, 2, "p-state", "state", "The initial state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to all ones."]], "galois.GLFSR.reset": [[127, 3, 2, "p-state", "state", "The state vector $S = [S_0, S_1, dots, S_{n-2}, S_{n-1}]$. The default is None which corresponds to the initial state."]], "galois.GLFSR.step": [[129, 3, 2, "p-steps", "steps", "The direction and number of output symbols to produce. The default is 1. If negative, the Galois LFSR will step backwards."]], "galois.Poly": [[133, 2, 1, "", "Degrees", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its non-zero degrees."], [134, 2, 1, "", "Identity", "Constructs the polynomial $f(x) = x$ over $mathrm{GF}(p^m)$."], [135, 2, 1, "", "Int", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its integer representation."], [136, 2, 1, "", "One", "Constructs the polynomial $f(x) = 1$ over $mathrm{GF}(p^m)$."], [137, 2, 1, "", "Random", "Constructs a random polynomial over $mathrm{GF}(p^m)$ with degree $d$."], [138, 2, 1, "", "Roots", "Constructs a monic polynomial over $mathrm{GF}(p^m)$ from its roots."], [139, 2, 1, "", "Str", "Constructs a polynomial over $mathrm{GF}(p^m)$ from its string representation."], [140, 2, 1, "", "Zero", "Constructs the polynomial $f(x) = 0$ over $mathrm{GF}(p^m)$."], [141, 2, 1, "", "__call__", "Evaluates the polynomial $f(x)$ at $x_0$ or the polynomial composition $f(g(x))$."], [142, 2, 1, "", "__eq__", "Determines if two polynomials are equal."], [143, 2, 1, "", "__init__", "Creates a polynomial $f(x)$ over $mathrm{GF}(p^m)$."], [144, 2, 1, "", "__int__", "The integer representation of the polynomial."], [145, 2, 1, "", "__len__", "Returns the length of the coefficient array, which is equivalent to Poly.degree + 1."], [146, 2, 1, "", "__repr__", "A representation of the polynomial and the finite field it's over."], [147, 2, 1, "", "__str__", "The string representation of the polynomial, without specifying the finite field it's over."], [148, 2, 1, "", "coefficients", "Returns the polynomial coefficients in the order and size specified."], [149, 4, 1, "", "coeffs", "The coefficients of the polynomial in degree-descending order."], [150, 4, 1, "", "degree", "The degree of the polynomial. The degree of a polynomial is the highest degree with a non-zero coefficient."], [151, 4, 1, "", "degrees", "An array of the polynomial degrees in descending order."], [152, 2, 1, "", "derivative", "Computes the $k$-th formal derivative $frac{d^k}{dx^k} f(x)$ of the polynomial $f(x)$."], [153, 2, 1, "", "distinct_degree_factors", "Factors the monic, square-free polynomial $f(x)$ into a product of polynomials whose irreducible factors all have the same degree."], [154, 2, 1, "", "equal_degree_factors", "Factors the monic, square-free polynomial $f(x)$ of degree $rd$ into a product of $r$ irreducible factors with degree $d$."], [155, 2, 1, "", "factors", "Computes the irreducible factors of the non-constant, monic polynomial $f(x)$."], [156, 4, 1, "", "field", "The Array subclass for the finite field the coefficients are over."], [157, 2, 1, "", "is_conway", "Checks whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is the Conway polynomial $C_{p,m}(x)$."], [158, 2, 1, "", "is_conway_consistent", "Determines whether the degree-$m$ polynomial $f(x)$ over $mathrm{GF}(p)$ is consistent with smaller Conway polynomials $C_{p,n}(x)$ for all $n|m$."], [159, 2, 1, "", "is_irreducible", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(p^m)$ is irreducible."], [160, 4, 1, "", "is_monic", "Returns whether the polynomial is monic, meaning its highest-degree coefficient is one."], [161, 2, 1, "", "is_primitive", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is primitive."], [162, 2, 1, "", "is_square_free", "Determines whether the polynomial $f(x)$ over $mathrm{GF}(q)$ is square-free."], [163, 4, 1, "", "nonzero_coeffs", "The non-zero coefficients of the polynomial in degree-descending order."], [164, 4, 1, "", "nonzero_degrees", "An array of the polynomial degrees that have non-zero coefficients in descending order."], [165, 2, 1, "", "reverse", "Returns the $d$-th reversal $x^d f(frac{1}{x})$ of the polynomial $f(x)$ with degree $d$."], [166, 2, 1, "", "roots", "Calculates the roots $r$ of the polynomial $f(x)$, such that $f(r) = 0$."], [167, 2, 1, "", "square_free_factors", "Factors the monic polynomial $f(x)$ into a product of square-free polynomials."]], "galois.Poly.Degrees": [[133, 3, 2, "p-coeffs", "coeffs", "The corresponding non-zero polynomial coefficients. The default is None which corresponds to all ones."], [133, 3, 2, "p-degrees", "degrees", "The polynomial degrees with non-zero coefficients."], [133, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."]], "galois.Poly.Identity": [[134, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Int": [[135, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [135, 3, 2, "p-integer", "integer", "The integer representation of the polynomial $f(x)$."]], "galois.Poly.One": [[136, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.Random": [[137, 3, 2, "p-degree", "degree", "The degree of the polynomial."], [137, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [137, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed. A numpy.random.Generator can also be passed."]], "galois.Poly.Roots": [[138, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [138, 3, 2, "p-multiplicities", "multiplicities", "The corresponding root multiplicities. The default is None which corresponds to all ones."], [138, 3, 2, "p-roots", "roots", "The roots of the desired polynomial."]], "galois.Poly.Str": [[139, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."], [139, 3, 2, "p-string", "string", "The string representation of the polynomial $f(x)$."]], "galois.Poly.Zero": [[140, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over. The default is None which corresponds to GF2."]], "galois.Poly.__call__": [[141, 3, 2, "p-at", "at", "A finite field scalar or array $x_0$ to evaluate the polynomial at or the polynomial $g(x)$ to evaluate the polynomial composition $f(g(x))$."], [141, 3, 2, "p-elementwise", "elementwise", "Indicates whether to evaluate $x_0$ element-wise. The default is True. If False (only valid for square matrices), the polynomial indeterminate $x$ is exponentiated using matrix powers (repeated matrix multiplication)."], [141, 3, 2, "p-field", "field", "The Galois field to evaluate the polynomial over. The default is None which represents the polynomial's current field, i.e. field."]], "galois.Poly.__eq__": [[142, 3, 2, "p-other", "other", "The polynomial to compare against."]], "galois.Poly.__init__": [[143, 3, 2, "p-coeffs", "coeffs", "The polynomial coefficients ${a_d, a_{d-1}, dots, a_1, a_0}$."], [143, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(p^m)$ the polynomial is over."], [143, 3, 2, "p-order", "order", "The interpretation of the coefficient degrees."]], "galois.Poly.coefficients": [[148, 3, 2, "p-order", "order", "The order of the coefficient degrees, either descending (default) or ascending."], [148, 3, 2, "p-size", "size", "The fixed size of the coefficient array. Zeros will be added for higher-order terms. This value must be at least degree + 1 or a ValueError will be raised. The default is None which corresponds to degree + 1."]], "galois.Poly.derivative": [[152, 3, 2, "p-k", "k", "The number of derivatives to compute. 1 corresponds to $p'(x)$, 2 corresponds to $p''(x)$, etc. The default is 1."]], "galois.Poly.equal_degree_factors": [[154, 3, 2, "p-degree", "degree", "The degree $d$ of each irreducible factor of $f(x)$."]], "galois.Poly.is_conway": [[157, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.is_conway_consistent": [[158, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.Poly.roots": [[166, 3, 2, "p-multiplicity", "multiplicity", "Optionally return the multiplicity of each root. The default is False which only returns the unique roots."]], "galois.ReedSolomon": [[169, 4, 1, "", "G", "The generator matrix $mathbf{G}$ with shape $(k, n)$."], [170, 4, 1, "", "H", "The parity-check matrix $mathbf{H}$ with shape $(n - k, n)$."], [171, 2, 1, "", "__init__", "Constructs a general $textrm{RS}(n, k)$ code over $mathrm{GF}(q)$."], [172, 2, 1, "", "__repr__", "A terse representation of the Reed-Solomon code."], [173, 2, 1, "", "__str__", "A formatted string with relevant properties of the Reed-Solomon code."], [174, 4, 1, "", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ whose consecutive powers $alpha^c, dots, alpha^{c+d-2}$ are roots of the generator polynomial $g(x)$."], [175, 4, 1, "", "c", "The first consecutive power $c$ of $alpha$ that defines the roots $alpha^c, dots, alpha^{c+d-2}$ of the generator polynomial $g(x)$."], [176, 4, 1, "", "d", "The minimum distance $d$ of the $[n, k, d]_q$ code."], [177, 2, 1, "", "decode", "Decodes the codeword $mathbf{c}$ into the message $mathbf{m}$."], [178, 2, 1, "", "detect", "Detects if errors are present in the codeword $mathbf{c}$."], [179, 2, 1, "", "encode", "Encodes the message $mathbf{m}$ into the codeword $mathbf{c}$."], [180, 4, 1, "", "field", "The Galois field $mathrm{GF}(q)$ that defines the codeword alphabet."], [181, 4, 1, "", "generator_poly", "The generator polynomial $g(x)$ over $mathrm{GF}(q)$."], [182, 4, 1, "", "is_narrow_sense", "Indicates if the Reed-Solomon code is narrow-sense, meaning the roots of the generator polynomial are consecutive powers of $alpha$ starting at 1, that is $alpha, dots, alpha^{d-1}$."], [183, 4, 1, "", "is_primitive", "Indicates if the Reed-Solomon code is primitive, meaning $n = q - 1$."], [184, 4, 1, "", "is_systematic", "Indicates if the code is systematic, meaning the codewords have parity appended to the message."], [185, 4, 1, "", "k", "The message size $k$ of the $[n, k, d]_q$ code. This is also called the code dimension."], [186, 4, 1, "", "n", "The codeword size $n$ of the $[n, k, d]_q$ code. This is also called the code length."], [187, 4, 1, "", "parity_check_poly", "The parity-check polynomial $h(x)$."], [188, 4, 1, "", "roots", "The $d - 1$ roots of the generator polynomial $g(x)$."], [189, 4, 1, "", "t", "The error-correcting capability $t$ of the code."]], "galois.ReedSolomon.__init__": [[171, 3, 2, "p-alpha", "alpha", "A primitive $n$-th root of unity $alpha$ in $mathrm{GF}(q)$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$."], [171, 3, 2, "p-c", "c", "The first consecutive power $c$ of $alpha$ that defines the $alpha^c, dots, alpha^{c+d-2}$ roots of the generator polynomial $g(x)$. The default is 1. If $c = 1$, the Reed-Solomon code is narrow-sense."], [171, 3, 2, "p-d", "d", "The design distance $d$. This defines the number of roots $d - 1$ in the generator polynomial $g(x)$ over $mathrm{GF}(q)$. Reed-Solomon codes achieve the Singleton bound, so $d = n - k + 1$."], [171, 3, 2, "p-field", "field", "The Galois field $mathrm{GF}(q)$ that defines the alphabet of the codeword symbols. The default is None which corresponds to $mathrm{GF}(2^m)$ where $2^{m - 1} le n < 2^m$. The default field will use matlab_primitive_poly(2, m) for the irreducible polynomial."], [171, 3, 2, "p-k", "k", "The message size $k$."], [171, 3, 2, "p-n", "n", "The codeword size $n$. If $n = q - 1$, the Reed-Solomon code is primitive."], [171, 3, 2, "p-systematic", "systematic", "Indicates if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True."]], "galois.ReedSolomon.decode": [[177, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."], [177, 3, 2, "p-errors", "errors", "Optionally specify whether to return the number of corrected errors. The default is False."], [177, 3, 2, "p-output", "output", "Specify whether to return the error-corrected message or entire codeword. The default is \"message\"."]], "galois.ReedSolomon.detect": [[178, 3, 2, "p-codeword", "codeword", "The codeword as either a $n$-length vector or $(N, n)$ matrix, where $N$ is the number of codewords."]], "galois.ReedSolomon.encode": [[179, 3, 2, "p-message", "message", "The message as either a $k$-length vector or $(N, k)$ matrix, where $N$ is the number of messages."], [179, 3, 2, "p-output", "output", "Specify whether to return the codeword or parity symbols only. The default is \"codeword\"."]], "galois.are_coprime": [[190, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.berlekamp_massey": [[191, 3, 2, "p-output", "output", "The output object type."], [191, 3, 2, "p-sequence", "sequence", "A linear recurrent sequence $y$ in $mathrm{GF}(p^m)$."]], "galois.carmichael_lambda": [[192, 3, 2, "p-n", "n", "A positive integer."]], "galois.conway_poly": [[193, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [193, 3, 2, "p-degree", "degree", "The degree $m$ of the Conway polynomial."], [193, 3, 2, "p-search", "search", "Manually search for Conway polynomials if they are not included in Frank Luebeck's database. The default is False."]], "galois.crt": [[194, 3, 2, "p-moduli", "moduli", "The integer or polynomial moduli $m_i$."], [194, 3, 2, "p-remainders", "remainders", "The integer or polynomial remainders $a_i$."]], "galois.divisor_sigma": [[195, 3, 2, "p-k", "k", "The degree of the positive divisors. The default is 1 which corresponds to $sigma_1(n)$ which is the sum of positive divisors."], [195, 3, 2, "p-n", "n", "An integer."]], "galois.divisors": [[196, 3, 2, "p-n", "n", "An integer."]], "galois.egcd": [[197, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [197, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.euler_phi": [[198, 3, 2, "p-n", "n", "A positive integer."]], "galois.factors": [[199, 3, 2, "p-value", "value", "A positive integer $n$ or a non-constant, monic polynomial $f(x)$."]], "galois.fermat_primality_test": [[200, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is None which selects a random $a$."], [200, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [200, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose a new $a$. The default is 1."]], "galois.gcd": [[201, 3, 2, "p-a", "a", "The first integer or polynomial argument."], [201, 3, 2, "p-b", "b", "The second integer or polynomial argument."]], "galois.ilog": [[203, 3, 2, "p-b", "b", "The logarithm base $b$, must be at least 2."], [203, 3, 2, "p-n", "n", "A positive integer."]], "galois.intt": [[204, 3, 2, "p-X", "X", "The input sequence of integers $X$."], [204, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(X)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [204, 3, 2, "p-scaled", "scaled", "Indicates to scale the INTT output by $N$. The default is True. If True, $x = mathrm{INTT}(mathrm{NTT}(x))$. If False, $Nx = mathrm{INTT}(mathrm{NTT}(x))$."], [204, 3, 2, "p-size", "size", "The size $N$ of the INTT transform, must be at least the length of $X$. The default is None which corresponds to len(X). If size is larger than the length of $X$, $X$ is zero-padded."]], "galois.iroot": [[205, 3, 2, "p-k", "k", "The positive root $k$."], [205, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.irreducible_poly": [[206, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [206, 3, 2, "p-method", "method", "The search method for finding the irreducible polynomial."], [206, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [206, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.irreducible_polys": [[207, 3, 2, "p-degree", "degree", "The degree $m$ of the desired irreducible polynomial."], [207, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [207, 3, 2, "p-reverse", "reverse", "Indicates to return the irreducible polynomials from lexicographically last to first. The default is False."], [207, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.is_composite": [[208, 3, 2, "p-n", "n", "An integer."]], "galois.is_cyclic": [[209, 3, 2, "p-n", "n", "A positive integer."]], "galois.is_perfect_power": [[210, 3, 2, "p-n", "n", "An integer."]], "galois.is_powersmooth": [[211, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [211, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime": [[212, 3, 2, "p-n", "n", "An integer."]], "galois.is_prime_power": [[213, 3, 2, "p-n", "n", "An integer."]], "galois.is_primitive_element": [[214, 3, 2, "p-element", "element", "An element $g$ of $mathrm{GF}(q^m)$ is a polynomial over $mathrm{GF}(q)$ with degree less than $m$."], [214, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.is_primitive_root": [[215, 3, 2, "p-g", "g", "A positive integer."], [215, 3, 2, "p-n", "n", "positive integer."]], "galois.is_smooth": [[216, 3, 2, "p-B", "B", "The smoothness bound $B ge 2$."], [216, 3, 2, "p-n", "n", "An integer."]], "galois.is_square_free": [[217, 3, 2, "p-value", "value", "An integer $n$ or polynomial $f(x)$."]], "galois.isqrt": [[218, 3, 2, "p-n", "n", "A non-negative integer."]], "galois.jacobi_symbol": [[219, 3, 2, "p-a", "a", "An integer."], [219, 3, 2, "p-n", "n", "An odd integer $n ge 3$."]], "galois.kronecker_symbol": [[220, 3, 2, "p-a", "a", "An integer."], [220, 3, 2, "p-n", "n", "An integer."]], "galois.kth_prime": [[221, 3, 2, "p-k", "k", "The prime index (1-indexed)."]], "galois.lagrange_poly": [[222, 3, 2, "p-x", "x", "An array of $x_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must have no duplicate entries."], [222, 3, 2, "p-y", "y", "An array of $y_i$ values for the coordinates $(x_i, y_i)$. Must be 1-D. Must be the same size as $x$."]], "galois.lcm": [[223, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.legendre_symbol": [[224, 3, 2, "p-a", "a", "An integer."], [224, 3, 2, "p-p", "p", "An odd prime $p ge 3$."]], "galois.matlab_primitive_poly": [[225, 3, 2, "p-characteristic", "characteristic", "The prime characteristic $p$ of the field $mathrm{GF}(p)$ that the polynomial is over."], [225, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."]], "galois.mersenne_exponents": [[226, 3, 2, "p-n", "n", "The max exponent of 2. The default is None which returns all known Mersenne exponents."]], "galois.mersenne_primes": [[227, 3, 2, "p-n", "n", "The max power of 2. The default is None which returns all known Mersenne exponents."]], "galois.miller_rabin_primality_test": [[228, 3, 2, "p-a", "a", "An integer in $2 le a le n - 2$. The default is 2."], [228, 3, 2, "p-n", "n", "An odd integer $n ge 3$."], [228, 3, 2, "p-rounds", "rounds", "The number of iterations attempting to detect $n$ as composite. Additional rounds will choose consecutive primes for $a$. The default is 1."]], "galois.next_prime": [[229, 3, 2, "p-n", "n", "An integer."]], "galois.ntt": [[230, 3, 2, "p-modulus", "modulus", "The prime modulus $p$ that defines the field $mathrm{GF}(p)$. The prime modulus must satisfy $p > textrm{max}(x)$ and $p = mN + 1$ (i.e., the size of the transform $N$ must divide $p - 1$). The default is None which corresponds to the smallest $p$ that satisfies the criteria. However, if $x$ is a $mathrm{GF}(p)$ array, then None corresponds to $p$ from the specified field."], [230, 3, 2, "p-size", "size", "The size $N$ of the NTT transform, must be at least the length of $x$. The default is None which corresponds to len(x). If size is larger than the length of $x$, $x$ is zero-padded."], [230, 3, 2, "p-x", "x", "The input sequence of integers $x$."]], "galois.perfect_power": [[231, 3, 2, "p-n", "n", "An integer."]], "galois.pollard_p1": [[232, 3, 2, "p-B", "B", "The smoothness bound $B > 2$."], [232, 3, 2, "p-B2", "B2", "The smoothness bound $B_2$ for the optional second step of the algorithm. The default is None which will not perform the second step."], [232, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.pollard_rho": [[233, 3, 2, "p-c", "c", "The constant offset in the function $f(x) = x^2 + ctextrm{mod}n$. The default is 1. A requirement of the algorithm is that $c notin {0, -2}$."], [233, 3, 2, "p-n", "n", "An odd composite integer $n > 2$ that is not a prime power."]], "galois.prev_prime": [[234, 3, 2, "p-n", "n", "An integer $n ge 2$."]], "galois.primes": [[235, 3, 2, "p-n", "n", "An integer."]], "galois.primitive_element": [[236, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."], [236, 3, 2, "p-method", "method", "The search method for finding the primitive element."]], "galois.primitive_elements": [[237, 3, 2, "p-irreducible_poly", "irreducible_poly", "The degree-$m$ irreducible polynomial $f(x)$ over $mathrm{GF}(q)$ that defines the extension field $mathrm{GF}(q^m)$."]], "galois.primitive_poly": [[238, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [238, 3, 2, "p-method", "method", "The search method for finding the primitive polynomial."], [238, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [238, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_polys": [[239, 3, 2, "p-degree", "degree", "The degree $m$ of the desired primitive polynomial."], [239, 3, 2, "p-order", "order", "The prime power order $q$ of the field $mathrm{GF}(q)$ that the polynomial is over."], [239, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive polynomials from lexicographically last to first. The default is False."], [239, 3, 2, "p-terms", "terms", "The desired number of non-zero terms $t$ in the polynomial."]], "galois.primitive_root": [[240, 3, 2, "p-method", "method", "The search method for finding the primitive root."], [240, 3, 2, "p-n", "n", "A positive integer."], [240, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root."], [240, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.primitive_roots": [[241, 3, 2, "p-n", "n", "A positive integer."], [241, 3, 2, "p-reverse", "reverse", "Indicates to return the primitive roots from largest to smallest. The default is False."], [241, 3, 2, "p-start", "start", "Starting value (inclusive) in the search for a primitive root. The default is 1."], [241, 3, 2, "p-stop", "stop", "Stopping value (exclusive) in the search for a primitive root. The default is None which corresponds to $n$."]], "galois.prod": [[243, 3, 2, "p-values", "values", "Each argument must be an integer or polynomial."]], "galois.random_prime": [[244, 3, 2, "p-bits", "bits", "The number of bits in the prime $p$."], [244, 3, 2, "p-seed", "seed", "Non-negative integer used to initialize the PRNG. The default is None which means that unpredictable entropy will be pulled from the OS to be used as the seed."]], "galois.set_printoptions": [[245, 3, 2, "p-coeffs", "coeffs", "The order in which to print the coefficients, either in descending degrees (default) or ascending degrees."]], "galois.totatives": [[246, 3, 2, "p-n", "n", "A positive integer."]], "galois.trial_division": [[247, 3, 2, "p-B", "B", "The max divisor in the trial division. The default is None which corresponds to $B = sqrt{n}$. If $B > sqrt{n}$, the algorithm will only search up to $sqrt{n}$, since a prime factor of $n$ cannot be larger than $sqrt{n}$."], [247, 3, 2, "p-n", "n", "A positive integer."]], "galois.typing": [[248, 6, 1, "", "ArrayLike", "A Union representing objects that can be coerced into a Galois field array."], [249, 6, 1, "", "DTypeLike", "A Union representing objects that can be coerced into a NumPy data type."], [250, 6, 1, "", "ElementLike", "A Union representing objects that can be coerced into a Galois field element."], [251, 6, 1, "", "IterableLike", "A Union representing iterable objects that can be coerced into a Galois field array."], [252, 6, 1, "", "PolyLike", "A Union representing objects that can be coerced into a polynomial."], [253, 6, 1, "", "ShapeLike", "A Union representing objects that can be coerced into a NumPy shape tuple."]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:parameter", "4": "py:property", "5": "py:function", "6": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "parameter", "Python parameter"], "4": ["py", "property", "Python property"], "5": ["py", "function", "Python function"], "6": ["py", "data", "Python data"]}, "titleterms": {"arrai": [0, 254, 255, 256, 266], "galoi": [0, 260, 277], "field": [0, 255, 269, 270, 276, 277], "primit": [0, 276, 277], "element": [0, 61, 116, 258, 259, 260, 266, 276, 277], "polynomi": [0, 22, 45, 117, 168, 256, 258, 259, 260, 276], "see": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "also": [0, 25, 45, 47, 89, 96, 110, 117, 119, 157, 158, 159, 161, 171, 190, 192, 193, 195, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247], "irreduc": [0, 260, 276], "interpol": 0, "forward": 0, "error": 0, "correct": 0, "linear": [0, 61, 116, 254, 269, 270], "sequenc": 0, "transform": 0, "number": 0, "theori": 0, "divis": [0, 254, 260, 276, 277], "congruenc": 0, "root": [0, 254, 277], "integ": [0, 258], "arithmet": [0, 61, 116, 254, 260, 266, 276, 277], "factor": [0, 132, 260], "prime": [0, 270, 277], "composit": [0, 260], "specif": 0, "algorithm": 0, "gener": [0, 264], "primal": 0, "test": [0, 264], "configur": [0, 263, 264], "abstract": [1, 61], "constructor": [1, 22, 45, 61, 116, 117, 132, 168, 255, 259], "method": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 254, 255, 259], "properti": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 255, 256, 259], "slower": [18, 91, 106, 157, 158, 193, 258], "perform": [18, 91, 106, 157, 158, 193, 206, 258, 266, 269, 270], "shorten": [22, 31, 32, 33, 168, 177, 178, 179], "code": [22, 31, 32, 33, 168, 177, 178, 179, 263, 264], "string": [22, 45, 61, 116, 117, 132, 168], "represent": [22, 45, 61, 116, 117, 132, 168, 258, 259, 266], "attribut": [22, 61, 116, 132, 168], "matric": [22, 168], "import": [25, 171, 269], "note": 31, "state": [45, 117], "convers": [61, 116], "compil": [61, 116, 257], "algebra": [61, 116, 254, 269, 270], "info": [116, 218, 276, 277], "special": [132, 259, 260], "coeffici": [132, 256, 259], "tip": [146, 147, 258], "why": [157, 158, 159, 161, 162], "i": [157, 158, 159, 161, 162, 256], "thi": [157, 158, 159, 161, 162], "faster": 206, "warn": 225, "standard": [254, 260], "addit": [254, 260, 276, 277], "x": [254, 260], "y": 254, "np": 254, "add": 254, "invers": [254, 260, 276, 277], "neg": 254, "subtract": [254, 260, 276, 277], "multipl": [254, 260, 276, 277], "multipli": 254, "scalar": [254, 256, 260], "4": [254, 274], "1": [254, 272, 274], "reciproc": 254, "divid": 254, "remaind": [254, 260], "divmod": [254, 260], "exponenti": [254, 260], "3": [254, 260, 274], "power": [254, 258], "squar": [254, 260], "sqrt": 254, "logarithm": 254, "log": 254, "ufunc": [254, 257], "reduc": 254, "accumul": 254, "reduceat": 254, "outer": 254, "advanc": 254, "convolut": 254, "convolv": 254, "fft": 254, "ifft": 254, "dot": 254, "product": 254, "b": 254, "vector": [254, 258, 264], "vdot": 254, "inner": 254, "matrix": [254, 260], "A": [254, 276, 277], "matmul": 254, "linalg": 254, "matrix_pow": 254, "determin": 254, "det": 254, "rank": 254, "matrix_rank": 254, "trace": 254, "solv": 254, "system": 254, "equat": 254, "inv": 254, "class": [255, 256], "subclass": [255, 266], "fieldarrai": [255, 266], "speed": 255, "up": 255, "creation": [255, 256], "larg": 255, "finit": 255, "singleton": 255, "instanc": [255, 266], "creat": [256, 259, 266, 268], "new": 256, "like": 256, "object": 256, "numpi": [256, 258], "view": 256, "an": 256, "exist": 256, "classmethod": 256, "constant": 256, "There": 256, "empti": 256, "equival": 256, "order": [256, 259], "random": 256, "data": 256, "type": 256, "valid": 256, "default": 256, "chang": [256, 266, 271, 272, 273, 274], "function": 256, "mode": 257, "lookup": [257, 269, 270], "tabl": [257, 269, 270], "explicit": [257, 269, 270], "calcul": [257, 269, 270], "python": 257, "recompil": 257, "set": 258, "print": 258, "option": 258, "comparison": 258, "us": 259, "set_printopt": 259, "displai": 259, "degre": 259, "ascend": 259, "altern": 259, "f": 260, "g": 260, "modular": 260, "pow": 260, "123456789": 260, "evalu": 260, "wise": 260, "elementwis": 260, "fals": 260, "greatest": 260, "common": 260, "denomin": 260, "gcd": 260, "extend": 260, "egcd": 260, "document": [261, 271], "instal": [261, 262, 263, 264, 266, 268], "build": 261, "doc": 261, "serv": 261, "from": [262, 263, 264], "pypi": 262, "github": 262, "edit": 262, "local": 262, "folder": 262, "dev": 262, "depend": [262, 268], "linter": 263, "run": [263, 264], "command": [263, 264], "line": [263, 264], "v": [263, 264], "unit": 264, "sage": 264, "sympi": 264, "index": 265, "get": 266, "start": 266, "packag": 266, "two": 266, "disclaim": 267, "featur": 267, "roadmap": 267, "acknowledg": 267, "citat": 267, "benchmark": 268, "compar": 268, "previou": 268, "binari": 269, "extens": [269, 276], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274], "0": [271, 272, 273, 274], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274], "15": 271, "16": 271, "17": 271, "18": 271, "19": 271, "20": 271, "21": 271, "22": 271, "23": 271, "24": 271, "25": 271, "26": 271, "27": 271, "28": 271, "29": 271, "30": 271, "31": 271, "32": 271, "33": 271, "2": [272, 273, 274], "5": 274, "version": 275, "alpha": 275, "releas": 275, "beta": 275, "intro": [276, 277], "other": [276, 277], "non": [276, 277], "\u00e9varist": 277, "mod": 277, "p": 277}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx_last_updated_by_git": 1, "sphinx": 57}, "alltitles": {"Arrays": [[0, "arrays"]], "Galois fields": [[0, "galois-fields"]], "Primitive elements": [[0, "primitive-elements"], [276, "primitive-elements"], [277, "primitive-elements"]], "Polynomials": [[0, "polynomials"], [22, "polynomials"], [45, "polynomials"], [117, "polynomials"], [168, "polynomials"], [259, "polynomials"]], "See also": [[0, null], [25, null], [45, null], [47, null], [89, null], [96, null], [110, null], [117, null], [119, null], [157, null], [158, null], [159, null], [161, null], [171, null], [190, null], [192, null], [193, null], [195, null], [196, null], [197, null], [198, null], [200, null], [201, null], [202, null], [203, null], [204, null], [205, null], [206, null], [207, null], [208, null], [209, null], [210, null], [211, null], [212, null], [213, null], [214, null], [215, null], [216, null], [217, null], [218, null], [219, null], [220, null], [221, null], [223, null], [224, null], [225, null], [226, null], [227, null], [228, null], [229, null], [230, null], [231, null], [232, null], [233, null], [234, null], [235, null], [236, null], [237, null], [238, null], [239, null], [240, null], [241, null], [242, null], [243, null], [244, null], [245, null], [246, null], [247, null]], "Irreducible polynomials": [[0, "irreducible-polynomials"]], "Primitive polynomials": [[0, "primitive-polynomials"]], "Interpolating polynomials": [[0, "interpolating-polynomials"]], "Forward error correction": [[0, "forward-error-correction"]], "Linear sequences": [[0, "linear-sequences"]], "Transforms": [[0, "transforms"]], "Number theory": [[0, "number-theory"]], "Divisibility": [[0, "divisibility"]], "Congruences": [[0, "congruences"]], "Primitive roots": [[0, "primitive-roots"]], "Integer arithmetic": [[0, "integer-arithmetic"]], "Factorization": [[0, "factorization"]], "Prime factorization": [[0, "prime-factorization"]], "Composite factorization": [[0, "composite-factorization"]], "Specific factorization algorithms": [[0, "specific-factorization-algorithms"]], "Primes": [[0, "primes"]], "Prime number generation": [[0, "prime-number-generation"]], "Primality tests": [[0, "primality-tests"]], "Specific primality tests": [[0, "specific-primality-tests"]], "Configuration": [[0, "configuration"], [263, "configuration"], [264, "configuration"]], "Abstract": [[1, null], [61, null]], "Constructors": [[1, "constructors"], [22, "constructors"], [45, "constructors"], [61, "constructors"], [116, "constructors"], [117, "constructors"], [132, "constructors"], [168, "constructors"], [255, "constructors"]], "Methods": [[1, "methods"], [22, "methods"], [45, "methods"], [61, "methods"], [116, "methods"], [117, "methods"], [132, "methods"], [168, "methods"], [255, "methods"], [259, "methods"]], "Properties": [[1, "properties"], [22, "properties"], [45, "properties"], [61, "properties"], [116, "properties"], [117, "properties"], [132, "properties"], [168, "properties"], [259, "properties"]], "Slower performance": [[18, null], [91, null], [106, null], [157, null], [158, null], [193, null], [258, null]], "Shortened codes": [[22, null], [31, null], [32, null], [33, null], [168, null], [177, null], [178, null], [179, null]], "String representation": [[22, "string-representation"], [45, "string-representation"], [61, "string-representation"], [116, "string-representation"], [117, "string-representation"], [132, "string-representation"], [168, "string-representation"]], "Attributes": [[22, "attributes"], [61, "attributes"], [116, "attributes"], [132, "attributes"], [168, "attributes"]], "Matrices": [[22, "matrices"], [168, "matrices"]], "Important": [[25, null], [171, null], [269, null]], "Note": [[31, null]], "State": [[45, "state"], [117, "state"]], "Conversions": [[61, "conversions"], [116, "conversions"]], "Elements": [[61, "elements"], [116, "elements"], [276, "elements"], [277, "elements"]], "Element representation": [[61, "element-representation"], [116, "element-representation"], [259, "element-representation"]], "Arithmetic compilation": [[61, "arithmetic-compilation"], [116, "arithmetic-compilation"]], "Linear algebra": [[61, "linear-algebra"], [116, "linear-algebra"], [254, "linear-algebra"]], "Info": [[116, null], [218, null], [276, null], [277, null]], "Special methods": [[132, "special-methods"]], "Factorization methods": [[132, "factorization-methods"]], "Coefficients": [[132, "coefficients"]], "Tip": [[146, null], [147, null], [258, null]], "Why is this a method and not a property?": [[157, null], [158, null], [159, null], [161, null], [162, null]], "Faster performance": [[206, null]], "Warning": [[225, null]], "Array Arithmetic": [[254, "array-arithmetic"]], "Standard arithmetic": [[254, "standard-arithmetic"], [260, "standard-arithmetic"]], "Addition: x + y == np.add(x, y)": [[254, null]], "Additive inverse: -x == np.negative(x)": [[254, null]], "Subtraction: x - y == np.subtract(x, y)": [[254, null]], "Multiplication: x * y == np.multiply(x, y)": [[254, null]], "Scalar multiplication: x * 4 == np.multiply(x, 4)": [[254, null]], "Multiplicative inverse: y ** -1 == np.reciprocal(y)": [[254, null]], "Division: x / y == x // y == np.divide(x, y)": [[254, null]], "Remainder: x % y == np.remainder(x, y)": [[254, null]], "Divmod: divmod(x, y) == np.divmod(x, y)": [[254, null]], "Exponentiation: x ** 3 == np.power(x, 3)": [[254, null]], "Square root: np.sqrt(x)": [[254, null]], "Logarithm: np.log(x) or x.log()": [[254, null]], "Ufunc methods": [[254, "ufunc-methods"]], "reduce()": [[254, null]], "accumulate()": [[254, null]], "reduceat()": [[254, null]], "outer()": [[254, null]], "at()": [[254, null]], "Advanced arithmetic": [[254, "advanced-arithmetic"]], "Convolution: np.convolve(x, y)": [[254, null]], "FFT: np.fft.fft(x)": [[254, null]], "Inverse FFT: np.fft.ifft(X)": [[254, null]], "Dot product: np.dot(a, b)": [[254, null]], "Vector dot product: np.vdot(a, b)": [[254, null]], "Inner product: np.inner(a, b)": [[254, null]], "Outer product: np.outer(a, b)": [[254, null]], "Matrix multiplication: A @ B == np.matmul(A, B)": [[254, null]], "Matrix exponentiation: np.linalg.matrix_power(A, 3)": [[254, null]], "Matrix determinant: np.linalg.det(A)": [[254, null]], "Matrix rank: np.linalg.matrix_rank(A)": [[254, null]], "Matrix trace: np.trace(A)": [[254, null]], "Solve a system of equations: np.linalg.solve(A, b)": [[254, null]], "Matrix inverse: np.linalg.inv(A)": [[254, null]], "Array Classes": [[255, "array-classes"]], "Array subclasses": [[255, "array-subclasses"]], "FieldArray subclasses": [[255, "fieldarray-subclasses"]], "Speed up creation of large finite field classes": [[255, null]], "Class singletons": [[255, "class-singletons"]], "Methods and properties": [[255, "methods-and-properties"]], "FieldArray instances": [[255, "fieldarray-instances"]], "Array Creation": [[256, "array-creation"]], "Create a scalar": [[256, "create-a-scalar"]], "Create a new array": [[256, "create-a-new-array"]], "Array-like objects": [[256, "array-like-objects"]], "Polynomial coefficients": [[256, "polynomial-coefficients"]], "NumPy array": [[256, "numpy-array"]], "View an existing array": [[256, "view-an-existing-array"]], "Classmethods": [[256, "classmethods"]], "Constant arrays": [[256, "constant-arrays"]], "There is no numpy.empty() equivalent.": [[256, null]], "Ordered arrays": [[256, "ordered-arrays"]], "Random arrays": [[256, "random-arrays"]], "Class properties": [[256, "class-properties"]], "Data types": [[256, "data-types"]], "Valid data types": [[256, "valid-data-types"]], "Default data type": [[256, "default-data-type"]], "Changing data types": [[256, "changing-data-types"]], "NumPy functions": [[256, "numpy-functions"]], "Compilation Modes": [[257, "compilation-modes"]], "Lookup tables": [[257, "lookup-tables"]], "Explicit calculation": [[257, "explicit-calculation"]], "Python explicit calculation": [[257, "python-explicit-calculation"]], "Recompile the ufuncs": [[257, "recompile-the-ufuncs"]], "Element Representation": [[258, "element-representation"]], "Set the element representation": [[258, "set-the-element-representation"]], "Integer representation": [[258, "integer-representation"]], "Polynomial representation": [[258, "polynomial-representation"]], "Power representation": [[258, "power-representation"]], "Vector representation": [[258, "vector-representation"]], "NumPy print options": [[258, "numpy-print-options"]], "Representation comparisons": [[258, "representation-comparisons"]], "Create a polynomial": [[259, "create-a-polynomial"]], "Use set_printoptions() to display the polynomial coefficients in degree-ascending order.": [[259, null]], "Alternate constructors": [[259, "alternate-constructors"]], "Special polynomials": [[259, "special-polynomials"]], "Polynomial Arithmetic": [[260, "polynomial-arithmetic"]], "Addition: f + g": [[260, null]], "Additive inverse: -f": [[260, null]], "Subtraction: f - g": [[260, null]], "Multiplication: f * g": [[260, null]], "Scalar multiplication: f * 3": [[260, null]], "Division: f // g": [[260, null]], "Remainder: f % g": [[260, null]], "Divmod: divmod(f, g)": [[260, null]], "Exponentiation: f ** 3": [[260, null]], "Modular exponentiation: pow(f, 123456789, g)": [[260, null]], "Evaluation": [[260, "evaluation"]], "Evaluation (element-wise): f(x) or f(X)": [[260, null]], "Evaluation (square matrix): f(X, elementwise=False)": [[260, null]], "Composition: f(g)": [[260, null]], "Special arithmetic": [[260, "special-arithmetic"]], "Greatest common denominator: galois.gcd(f, g)": [[260, null]], "Extended greatest common denominator: galois.egcd(f, g)": [[260, null]], "Factor into irreducible polynomials: galois.factors(f) == f.factors()": [[260, null]], "Documentation": [[261, "documentation"], [271, "documentation"]], "Install": [[261, "install"], [263, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Installation": [[262, "installation"]], "Install from PyPI": [[262, "install-from-pypi"]], "Install from GitHub": [[262, "install-from-github"]], "Editable install from local folder": [[262, "editable-install-from-local-folder"]], "Install the dev dependencies": [[262, "install-the-dev-dependencies"]], "Linter": [[263, "linter"]], "Run from the command line": [[263, "run-from-the-command-line"], [264, "run-from-the-command-line"]], "Run from VS Code": [[263, "run-from-vs-code"], [264, "run-from-vs-code"]], "Unit Tests": [[264, "unit-tests"]], "Test vectors": [[264, "test-vectors"]], "Install Sage": [[264, "install-sage"]], "Install SymPy": [[264, "install-sympy"]], "Generate test vectors": [[264, "generate-test-vectors"]], "Index": [[265, "index"]], "Getting Started": [[266, "getting-started"]], "Install the package": [[266, "install-the-package"]], "Create a FieldArray subclass": [[266, "create-a-fieldarray-subclass"]], "Create two FieldArray instances": [[266, "create-two-fieldarray-instances"]], "Change the element representation": [[266, "change-the-element-representation"]], "Perform array arithmetic": [[266, "perform-array-arithmetic"]], "Disclaimer": [[267, null]], "Features": [[267, "features"]], "Roadmap": [[267, "roadmap"]], "Acknowledgements": [[267, "acknowledgements"]], "Citation": [[267, "citation"]], "Benchmarks": [[268, "benchmarks"]], "Install dependencies": [[268, "install-dependencies"]], "Create a benchmark": [[268, "create-a-benchmark"]], "Compare with a previous benchmark": [[268, "compare-with-a-previous-benchmark"]], "Binary Extension Fields": [[269, "binary-extension-fields"]], "Lookup table performance": [[269, "lookup-table-performance"], [270, "lookup-table-performance"]], "Explicit calculation performance": [[269, "explicit-calculation-performance"], [270, "explicit-calculation-performance"]], "Linear algebra performance": [[269, "linear-algebra-performance"], [270, "linear-algebra-performance"]], "Prime Fields": [[270, "prime-fields"]], "Runtime floor": [[270, "runtime-floor"]], "v0.0": [[271, "v0-0"]], "v0.0.14": [[271, "v0-0-14"]], "Breaking changes": [[271, "breaking-changes"], [271, "id1"], [271, "id6"], [271, "id9"], [271, "id12"], [271, "id15"], [271, "id20"], [271, "id25"], [271, "id28"], [271, "id31"], [271, "id34"], [271, "id39"], [271, "id44"], [271, "id47"], [271, "id50"], [273, "breaking-changes"], [274, "breaking-changes"]], "Changes": [[271, "changes"], [271, "id2"], [271, "id4"], [271, "id7"], [271, "id10"], [271, "id13"], [271, "id16"], [271, "id18"], [271, "id21"], [271, "id23"], [271, "id26"], [271, "id29"], [271, "id32"], [271, "id35"], [271, "id37"], [271, "id40"], [271, "id42"], [271, "id45"], [271, "id48"], [271, "id51"], [272, "changes"], [272, "id1"], [272, "id3"], [273, "changes"], [274, "changes"], [274, "id1"], [274, "id3"], [274, "id5"], [274, "id7"], [274, "id9"]], "Contributors": [[271, "contributors"], [271, "id3"], [271, "id5"], [271, "id8"], [271, "id11"], [271, "id14"], [271, "id17"], [271, "id19"], [271, "id22"], [271, "id24"], [271, "id27"], [271, "id30"], [271, "id33"], [271, "id36"], [271, "id38"], [271, "id41"], [271, "id43"], [271, "id46"], [271, "id49"], [271, "id52"], [272, "contributors"], [272, "id2"], [272, "id4"], [273, "contributors"], [274, "contributors"], [274, "id2"], [274, "id4"], [274, "id6"], [274, "id8"], [274, "id10"]], "v0.0.15": [[271, "v0-0-15"]], "v0.0.16": [[271, "v0-0-16"]], "v0.0.17": [[271, "v0-0-17"]], "v0.0.18": [[271, "v0-0-18"]], "v0.0.19": [[271, "v0-0-19"]], "v0.0.20": [[271, "v0-0-20"]], "v0.0.21": [[271, "v0-0-21"]], "v0.0.22": [[271, "v0-0-22"]], "v0.0.23": [[271, "v0-0-23"]], "v0.0.24": [[271, "v0-0-24"]], "v0.0.25": [[271, "v0-0-25"]], "v0.0.26": [[271, "v0-0-26"]], "v0.0.27": [[271, "v0-0-27"]], "v0.0.28": [[271, "v0-0-28"]], "v0.0.29": [[271, "v0-0-29"]], "v0.0.30": [[271, "v0-0-30"]], "v0.0.31": [[271, "v0-0-31"]], "v0.0.32": [[271, "v0-0-32"]], "v0.0.33": [[271, "v0-0-33"]], "v0.1": [[272, "v0-1"]], "v0.1.0": [[272, "v0-1-0"]], "v0.1.1": [[272, "v0-1-1"]], "v0.1.2": [[272, "v0-1-2"]], "v0.2": [[273, "v0-2"]], "v0.2.0": [[273, "v0-2-0"]], "v0.3": [[274, "v0-3"]], "v0.3.0": [[274, "v0-3-0"]], "v0.3.1": [[274, "v0-3-1"]], "v0.3.2": [[274, "v0-3-2"]], "v0.3.3": [[274, "v0-3-3"]], "v0.3.4": [[274, "v0-3-4"]], "v0.3.5": [[274, "v0-3-5"]], "Versioning": [[275, "versioning"]], "Alpha releases": [[275, "alpha-releases"]], "Beta releases": [[275, "beta-releases"]], "Intro to Extension Fields": [[276, "intro-to-extension-fields"]], "Extension field": [[276, "extension-field"]], "Irreducible polynomial": [[276, "irreducible-polynomial"]], "Arithmetic": [[276, "arithmetic"], [277, "arithmetic"]], "Addition": [[276, "addition"], [277, "addition"]], "Subtraction": [[276, "subtraction"], [277, "subtraction"]], "Multiplication": [[276, "multiplication"], [277, "multiplication"]], "Multiplicative inverse": [[276, "multiplicative-inverse"], [277, "multiplicative-inverse"]], "Division": [[276, "division"], [277, "division"]], "A primitive element": [[276, "a-primitive-element"], [277, "a-primitive-element"]], "Other primitive elements": [[276, "other-primitive-elements"], [277, "other-primitive-elements"]], "Non-primitive elements": [[276, "non-primitive-elements"], [277, "non-primitive-elements"]], "Intro to Prime Fields": [[277, "intro-to-prime-fields"]], "\u00c9variste Galois": [[277, null]], "Prime field": [[277, "prime-field"]], "Primitive roots mod p": [[277, "primitive-roots-mod-p"]]}, "indexentries": {"galois": [[0, "module-galois"]], "module": [[0, "module-galois"]]}, "docurls": ["api/", "api/galois.Array/", "api/galois.Array.Identity/", "api/galois.Array.Ones/", "api/galois.Array.Random/", "api/galois.Array.Range/", "api/galois.Array.Zeros/", "api/galois.Array.characteristic/", "api/galois.Array.compile/", "api/galois.Array.default_ufunc_mode/", "api/galois.Array.degree/", "api/galois.Array.dtypes/", "api/galois.Array.element_repr/", "api/galois.Array.elements/", "api/galois.Array.irreducible_poly/", "api/galois.Array.name/", "api/galois.Array.order/", "api/galois.Array.primitive_element/", "api/galois.Array.repr/", "api/galois.Array.ufunc_mode/", "api/galois.Array.ufunc_modes/", "api/galois.Array.units/", "api/galois.BCH/", "api/galois.BCH.G/", "api/galois.BCH.H/", "api/galois.BCH.__init__/", "api/galois.BCH.__repr__/", "api/galois.BCH.__str__/", "api/galois.BCH.alpha/", "api/galois.BCH.c/", "api/galois.BCH.d/", "api/galois.BCH.decode/", "api/galois.BCH.detect/", "api/galois.BCH.encode/", "api/galois.BCH.extension_field/", "api/galois.BCH.field/", "api/galois.BCH.generator_poly/", "api/galois.BCH.is_narrow_sense/", "api/galois.BCH.is_primitive/", "api/galois.BCH.is_systematic/", "api/galois.BCH.k/", "api/galois.BCH.n/", "api/galois.BCH.parity_check_poly/", "api/galois.BCH.roots/", "api/galois.BCH.t/", "api/galois.FLFSR/", "api/galois.FLFSR.Taps/", "api/galois.FLFSR.__init__/", "api/galois.FLFSR.__repr__/", "api/galois.FLFSR.__str__/", "api/galois.FLFSR.characteristic_poly/", "api/galois.FLFSR.feedback_poly/", "api/galois.FLFSR.field/", "api/galois.FLFSR.initial_state/", "api/galois.FLFSR.order/", "api/galois.FLFSR.reset/", "api/galois.FLFSR.state/", "api/galois.FLFSR.step/", "api/galois.FLFSR.taps/", "api/galois.FLFSR.to_galois_lfsr/", "api/galois.Field/", "api/galois.FieldArray/", "api/galois.FieldArray.Identity/", "api/galois.FieldArray.Ones/", "api/galois.FieldArray.Random/", "api/galois.FieldArray.Range/", "api/galois.FieldArray.Vandermonde/", "api/galois.FieldArray.Vector/", "api/galois.FieldArray.Zeros/", "api/galois.FieldArray.__init__/", "api/galois.FieldArray.__repr__/", "api/galois.FieldArray.__str__/", "api/galois.FieldArray.additive_order/", "api/galois.FieldArray.arithmetic_table/", "api/galois.FieldArray.characteristic/", "api/galois.FieldArray.characteristic_poly/", "api/galois.FieldArray.column_space/", "api/galois.FieldArray.compile/", "api/galois.FieldArray.default_ufunc_mode/", "api/galois.FieldArray.degree/", "api/galois.FieldArray.dtypes/", "api/galois.FieldArray.element_repr/", "api/galois.FieldArray.elements/", "api/galois.FieldArray.field_norm/", "api/galois.FieldArray.field_trace/", "api/galois.FieldArray.irreducible_poly/", "api/galois.FieldArray.is_extension_field/", "api/galois.FieldArray.is_prime_field/", "api/galois.FieldArray.is_primitive_poly/", "api/galois.FieldArray.is_square/", "api/galois.FieldArray.left_null_space/", "api/galois.FieldArray.log/", "api/galois.FieldArray.lu_decompose/", "api/galois.FieldArray.minimal_poly/", "api/galois.FieldArray.multiplicative_order/", "api/galois.FieldArray.name/", "api/galois.FieldArray.non_squares/", "api/galois.FieldArray.null_space/", "api/galois.FieldArray.order/", "api/galois.FieldArray.plu_decompose/", "api/galois.FieldArray.prime_subfield/", "api/galois.FieldArray.primitive_element/", "api/galois.FieldArray.primitive_elements/", "api/galois.FieldArray.primitive_root_of_unity/", "api/galois.FieldArray.primitive_roots_of_unity/", "api/galois.FieldArray.properties/", "api/galois.FieldArray.repr/", "api/galois.FieldArray.repr_table/", "api/galois.FieldArray.row_reduce/", "api/galois.FieldArray.row_space/", "api/galois.FieldArray.squares/", "api/galois.FieldArray.ufunc_mode/", "api/galois.FieldArray.ufunc_modes/", "api/galois.FieldArray.units/", "api/galois.FieldArray.vector/", "api/galois.GF/", "api/galois.GF2/", "api/galois.GLFSR/", "api/galois.GLFSR.Taps/", "api/galois.GLFSR.__init__/", "api/galois.GLFSR.__repr__/", "api/galois.GLFSR.__str__/", "api/galois.GLFSR.characteristic_poly/", "api/galois.GLFSR.feedback_poly/", "api/galois.GLFSR.field/", "api/galois.GLFSR.initial_state/", "api/galois.GLFSR.order/", "api/galois.GLFSR.reset/", "api/galois.GLFSR.state/", "api/galois.GLFSR.step/", "api/galois.GLFSR.taps/", "api/galois.GLFSR.to_fibonacci_lfsr/", "api/galois.Poly/", "api/galois.Poly.Degrees/", "api/galois.Poly.Identity/", "api/galois.Poly.Int/", "api/galois.Poly.One/", "api/galois.Poly.Random/", "api/galois.Poly.Roots/", "api/galois.Poly.Str/", "api/galois.Poly.Zero/", "api/galois.Poly.__call__/", "api/galois.Poly.__eq__/", "api/galois.Poly.__init__/", "api/galois.Poly.__int__/", "api/galois.Poly.__len__/", "api/galois.Poly.__repr__/", "api/galois.Poly.__str__/", "api/galois.Poly.coefficients/", "api/galois.Poly.coeffs/", "api/galois.Poly.degree/", "api/galois.Poly.degrees/", "api/galois.Poly.derivative/", "api/galois.Poly.distinct_degree_factors/", "api/galois.Poly.equal_degree_factors/", "api/galois.Poly.factors/", "api/galois.Poly.field/", "api/galois.Poly.is_conway/", "api/galois.Poly.is_conway_consistent/", "api/galois.Poly.is_irreducible/", "api/galois.Poly.is_monic/", "api/galois.Poly.is_primitive/", "api/galois.Poly.is_square_free/", "api/galois.Poly.nonzero_coeffs/", "api/galois.Poly.nonzero_degrees/", "api/galois.Poly.reverse/", "api/galois.Poly.roots/", "api/galois.Poly.square_free_factors/", "api/galois.ReedSolomon/", "api/galois.ReedSolomon.G/", "api/galois.ReedSolomon.H/", "api/galois.ReedSolomon.__init__/", "api/galois.ReedSolomon.__repr__/", "api/galois.ReedSolomon.__str__/", "api/galois.ReedSolomon.alpha/", "api/galois.ReedSolomon.c/", "api/galois.ReedSolomon.d/", "api/galois.ReedSolomon.decode/", "api/galois.ReedSolomon.detect/", "api/galois.ReedSolomon.encode/", "api/galois.ReedSolomon.field/", "api/galois.ReedSolomon.generator_poly/", "api/galois.ReedSolomon.is_narrow_sense/", "api/galois.ReedSolomon.is_primitive/", "api/galois.ReedSolomon.is_systematic/", "api/galois.ReedSolomon.k/", "api/galois.ReedSolomon.n/", "api/galois.ReedSolomon.parity_check_poly/", "api/galois.ReedSolomon.roots/", "api/galois.ReedSolomon.t/", "api/galois.are_coprime/", "api/galois.berlekamp_massey/", "api/galois.carmichael_lambda/", "api/galois.conway_poly/", "api/galois.crt/", "api/galois.divisor_sigma/", "api/galois.divisors/", "api/galois.egcd/", "api/galois.euler_phi/", "api/galois.factors/", "api/galois.fermat_primality_test/", "api/galois.gcd/", "api/galois.get_printoptions/", "api/galois.ilog/", "api/galois.intt/", "api/galois.iroot/", "api/galois.irreducible_poly/", "api/galois.irreducible_polys/", "api/galois.is_composite/", "api/galois.is_cyclic/", "api/galois.is_perfect_power/", "api/galois.is_powersmooth/", "api/galois.is_prime/", "api/galois.is_prime_power/", "api/galois.is_primitive_element/", "api/galois.is_primitive_root/", "api/galois.is_smooth/", "api/galois.is_square_free/", "api/galois.isqrt/", "api/galois.jacobi_symbol/", "api/galois.kronecker_symbol/", "api/galois.kth_prime/", "api/galois.lagrange_poly/", "api/galois.lcm/", "api/galois.legendre_symbol/", "api/galois.matlab_primitive_poly/", "api/galois.mersenne_exponents/", "api/galois.mersenne_primes/", "api/galois.miller_rabin_primality_test/", "api/galois.next_prime/", "api/galois.ntt/", "api/galois.perfect_power/", "api/galois.pollard_p1/", "api/galois.pollard_rho/", "api/galois.prev_prime/", "api/galois.primes/", "api/galois.primitive_element/", "api/galois.primitive_elements/", "api/galois.primitive_poly/", "api/galois.primitive_polys/", "api/galois.primitive_root/", "api/galois.primitive_roots/", "api/galois.printoptions/", "api/galois.prod/", "api/galois.random_prime/", "api/galois.set_printoptions/", "api/galois.totatives/", "api/galois.trial_division/", "api/galois.typing.ArrayLike/", "api/galois.typing.DTypeLike/", "api/galois.typing.ElementLike/", "api/galois.typing.IterableLike/", "api/galois.typing.PolyLike/", "api/galois.typing.ShapeLike/", "basic-usage/array-arithmetic/", "basic-usage/array-classes/", "basic-usage/array-creation/", "basic-usage/compilation-modes/", "basic-usage/element-representation/", "basic-usage/poly/", "basic-usage/poly-arithmetic/", "development/documentation/", "development/installation/", "development/linter/", "development/unit-tests/", "genindex/", "getting-started/", "", "performance/benchmarks/", "performance/binary-extension-fields/", "performance/prime-fields/", "release-notes/v0.0/", "release-notes/v0.1/", "release-notes/v0.2/", "release-notes/v0.3/", "release-notes/versioning/", "tutorials/intro-to-extension-fields/", "tutorials/intro-to-prime-fields/"]}) \ No newline at end of file