diff --git a/v0.3.x/.doctrees/api.doctree b/v0.3.x/.doctrees/api.doctree index 3b409c066..6f87f5311 100644 Binary files a/v0.3.x/.doctrees/api.doctree and b/v0.3.x/.doctrees/api.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.__init__.doctree b/v0.3.x/.doctrees/api/galois.BCH.__init__.doctree index 8360536f8..7157beade 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.__init__.doctree and b/v0.3.x/.doctrees/api/galois.BCH.__init__.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.decode.doctree b/v0.3.x/.doctrees/api/galois.BCH.decode.doctree index e66dafbe5..d9528594e 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 78212dd8c..771a59863 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 21968f700..40adc6b08 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 ebc231614..008c3a381 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.BCH.extension_field.doctree b/v0.3.x/.doctrees/api/galois.BCH.extension_field.doctree index 3f1f9865b..52345e599 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.extension_field.doctree and b/v0.3.x/.doctrees/api/galois.BCH.extension_field.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.BCH.field.doctree b/v0.3.x/.doctrees/api/galois.BCH.field.doctree index 6d766c949..067790ab3 100644 Binary files a/v0.3.x/.doctrees/api/galois.BCH.field.doctree and b/v0.3.x/.doctrees/api/galois.BCH.field.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FLFSR.doctree b/v0.3.x/.doctrees/api/galois.FLFSR.doctree index 68b073cf1..dc3011ca9 100644 Binary files a/v0.3.x/.doctrees/api/galois.FLFSR.doctree and b/v0.3.x/.doctrees/api/galois.FLFSR.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.FLFSR.field.doctree b/v0.3.x/.doctrees/api/galois.FLFSR.field.doctree index 17ea88f94..31d93f65e 100644 Binary files a/v0.3.x/.doctrees/api/galois.FLFSR.field.doctree and b/v0.3.x/.doctrees/api/galois.FLFSR.field.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Field.doctree b/v0.3.x/.doctrees/api/galois.Field.doctree index 3dd804d75..0394ba097 100644 Binary files a/v0.3.x/.doctrees/api/galois.Field.doctree and b/v0.3.x/.doctrees/api/galois.Field.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 f7454dee2..7c7e0ba87 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 95620d951..ccfd30d4f 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 3870e556f..8146efbbb 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 e42989b2c..a20b982ca 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 30a6e8ba0..5b277dfaa 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 f3cce440a..93a4b6c8a 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 33e2a75a2..0988c667e 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 4cb7298ed..6fcd5389d 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.GF.doctree b/v0.3.x/.doctrees/api/galois.GF.doctree index 36408fdcc..f00cad01d 100644 Binary files a/v0.3.x/.doctrees/api/galois.GF.doctree and b/v0.3.x/.doctrees/api/galois.GF.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.GLFSR.doctree b/v0.3.x/.doctrees/api/galois.GLFSR.doctree index 1f435f562..b553fea0c 100644 Binary files a/v0.3.x/.doctrees/api/galois.GLFSR.doctree and b/v0.3.x/.doctrees/api/galois.GLFSR.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.GLFSR.field.doctree b/v0.3.x/.doctrees/api/galois.GLFSR.field.doctree index 1fee85743..99f7ffe48 100644 Binary files a/v0.3.x/.doctrees/api/galois.GLFSR.field.doctree and b/v0.3.x/.doctrees/api/galois.GLFSR.field.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.Degrees.doctree b/v0.3.x/.doctrees/api/galois.Poly.Degrees.doctree index 529fb5851..a9c6deb1a 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Degrees.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Degrees.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.Identity.doctree b/v0.3.x/.doctrees/api/galois.Poly.Identity.doctree index e01e51899..1f33480d5 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Identity.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Identity.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.Int.doctree b/v0.3.x/.doctrees/api/galois.Poly.Int.doctree index 79cc43f16..4b7eb02c7 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Int.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Int.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.One.doctree b/v0.3.x/.doctrees/api/galois.Poly.One.doctree index 76e86e7d9..0cd282eb5 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.One.doctree and b/v0.3.x/.doctrees/api/galois.Poly.One.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 cd133af0c..6afe49b0c 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.Roots.doctree b/v0.3.x/.doctrees/api/galois.Poly.Roots.doctree index df03c1ce3..e4594214d 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Roots.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Roots.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.Str.doctree b/v0.3.x/.doctrees/api/galois.Poly.Str.doctree index 005b51724..afb45b0db 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Str.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Str.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.Zero.doctree b/v0.3.x/.doctrees/api/galois.Poly.Zero.doctree index 2a189089d..8030e8ee6 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.Zero.doctree and b/v0.3.x/.doctrees/api/galois.Poly.Zero.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.__call__.doctree b/v0.3.x/.doctrees/api/galois.Poly.__call__.doctree index fc21016e3..7f74c0df7 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.__call__.doctree and b/v0.3.x/.doctrees/api/galois.Poly.__call__.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.Poly.__init__.doctree b/v0.3.x/.doctrees/api/galois.Poly.__init__.doctree index 2c384922a..c660bdb9b 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.__init__.doctree and b/v0.3.x/.doctrees/api/galois.Poly.__init__.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 513783bd0..6b391cca2 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.doctree b/v0.3.x/.doctrees/api/galois.Poly.doctree index 77e9a2d8b..a329186e8 100644 Binary files a/v0.3.x/.doctrees/api/galois.Poly.doctree and b/v0.3.x/.doctrees/api/galois.Poly.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 6e052dc52..2413e08f8 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 065e27ab6..dfaa4d90c 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.__init__.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.__init__.doctree index ee8049ab4..87425df7a 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.__init__.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.__init__.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 ebc09a24b..4a7a2aa8d 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 68e063da2..096fb5041 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 2a79fc9d9..64e26f826 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 db78c7983..10c5cb578 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.ReedSolomon.field.doctree b/v0.3.x/.doctrees/api/galois.ReedSolomon.field.doctree index c60234674..69a850565 100644 Binary files a/v0.3.x/.doctrees/api/galois.ReedSolomon.field.doctree and b/v0.3.x/.doctrees/api/galois.ReedSolomon.field.doctree differ diff --git a/v0.3.x/.doctrees/api/galois.crt.doctree b/v0.3.x/.doctrees/api/galois.crt.doctree index 3fe21a77c..8509c7540 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 09912eaa7..21b4ebe99 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 4ac546151..36ec05f4e 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 add2bdc96..dc6f95cde 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 1075bf86c..cb46ce05c 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 e3c4d7cef..9d0fd000a 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 136368b50..6e90756ec 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 cd2d2bcae..ae02ea979 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 daf812f44..6352c37d1 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 69e6c60ba..36d5c94e7 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 d99ec0453..cd05acc52 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 576a1578b..de03e7ba8 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 99a7d5ad9..06b52c625 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 a551a8f7a..af651a819 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 d13bf2908..2b22faac9 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/development/formatting.doctree b/v0.3.x/.doctrees/development/formatting.doctree index 3b89370d4..aeac8114c 100644 Binary files a/v0.3.x/.doctrees/development/formatting.doctree and b/v0.3.x/.doctrees/development/formatting.doctree differ diff --git a/v0.3.x/.doctrees/development/installation.doctree b/v0.3.x/.doctrees/development/installation.doctree index 3eec9af46..7e8a74826 100644 Binary files a/v0.3.x/.doctrees/development/installation.doctree and b/v0.3.x/.doctrees/development/installation.doctree differ diff --git a/v0.3.x/.doctrees/environment.pickle b/v0.3.x/.doctrees/environment.pickle index b7ae97a94..338b3bf84 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 cb8a621ae..b7bc1447d 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/_static/sphinx_immaterial_theme.7c9b8a3bed64916d7.min.css b/v0.3.x/_static/sphinx_immaterial_theme.53477616079545490.min.css similarity index 98% rename from v0.3.x/_static/sphinx_immaterial_theme.7c9b8a3bed64916d7.min.css rename to v0.3.x/_static/sphinx_immaterial_theme.53477616079545490.min.css index 91ffe85b3..e3185ce3e 100644 --- a/v0.3.x/_static/sphinx_immaterial_theme.7c9b8a3bed64916d7.min.css +++ b/v0.3.x/_static/sphinx_immaterial_theme.53477616079545490.min.css @@ -1,4 +1,4 @@ @charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:content-box;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:separate;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:transparent;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root,[data-md-color-scheme=default]{--md-default-fg-color:rgba(0,0,0,.87);--md-default-fg-color--light:rgba(0,0,0,.54);--md-default-fg-color--lighter:rgba(0,0,0,.32);--md-default-fg-color--lightest:rgba(0,0,0,.07);--md-default-bg-color:#fff;--md-default-bg-color--light:hsla(0,0%,100%,.7);--md-default-bg-color--lighter:hsla(0,0%,100%,.3);--md-default-bg-color--lightest:hsla(0,0%,100%,.12);--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7);--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:rgba(255,255,0,.5);--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(255,255,0,.5);--md-typeset-del-color:rgba(245,80,61,.15);--md-typeset-ins-color:rgba(11,213,112,.15);--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:rgba(0,0,0,.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:hsla(0,0%,100%,.7);--md-footer-fg-color--lighter:hsla(0,0%,100%,.3);--md-footer-bg-color:rgba(0,0,0,.87);--md-footer-bg-color--dark:rgba(0,0,0,.32);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.05),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.1),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.35)}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}.si-icon-inline:before{background-color:var(--md-default-fg-color);content:"";display:inline-flex;height:1.125em;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;vertical-align:text-top;width:1.125em}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}body,input{font-feature-settings:"kern","liga";font-family:var(--md-text-font-family)}body,code,input,kbd,pre{color:var(--md-typeset-color)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset .code-block-caption+.notranslate .highlighttable,.md-typeset .code-block-caption+.notranslate pre{margin-top:0}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr{position:relative}.md-typeset abbr[title]:-webkit-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}.md-typeset abbr[title]:-moz-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}[dir=ltr] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:is(:focus,:hover):after{left:0}[dir=rtl] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:is(:focus,:hover):after{right:0}.md-typeset abbr[title]:is(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li :-webkit-any(ul,ol),.md-typeset ul li :-webkit-any(ul,ol){margin-bottom:.5em;margin-top:.5em}.md-typeset ol li :-moz-any(ul,ol),.md-typeset ul li :-moz-any(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset ol li :-webkit-any(ul,ol),[dir=ltr] .md-typeset ul li :-webkit-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :-moz-any(ul,ol),[dir=ltr] .md-typeset ul li :-moz-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :is(ul,ol),[dir=ltr] .md-typeset ul li :is(ul,ol){margin-left:.625em}[dir=rtl] .md-typeset ol li :-webkit-any(ul,ol),[dir=rtl] .md-typeset ul li :-webkit-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :-moz-any(ul,ol),[dir=rtl] .md-typeset ul li :-moz-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :is(ul,ol),[dir=rtl] .md-typeset ul li :is(ul,ol){margin-right:.625em}.md-typeset ol li :is(ul,ol),.md-typeset ul li :is(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table.data:not(.plain){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto;width:-moz-max-content;width:max-content}@media print{.md-typeset table.data:not(.plain){display:table}}.md-typeset table.data:not(.plain)+*{margin-top:1.5em}.md-typeset table.data:not(.plain) :-webkit-any(th,td)>:first-child{margin-top:0}.md-typeset table.data:not(.plain) :-moz-any(th,td)>:first-child{margin-top:0}.md-typeset table.data:not(.plain) :is(th,td)>:first-child{margin-top:0}.md-typeset table.data:not(.plain) :-webkit-any(th,td)>:last-child{margin-bottom:0}.md-typeset table.data:not(.plain) :-moz-any(th,td)>:last-child{margin-bottom:0}.md-typeset table.data:not(.plain) :is(th,td)>:last-child{margin-bottom:0}.md-typeset table.data:not(.plain) :-webkit-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:left}.md-typeset table.data:not(.plain) :-moz-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:left}.md-typeset table.data:not(.plain) :is(th,td):not([align],.align-center,.align-left,.align-right){text-align:left}[dir=rtl] .md-typeset table.data:not(.plain) :-webkit-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:right}[dir=rtl] .md-typeset table.data:not(.plain) :-moz-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:right}[dir=rtl] .md-typeset table.data:not(.plain) :is(th,td):not([align],.align-center,.align-left,.align-right){text-align:right}.md-typeset table.data:not(.plain) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table.data:not(.plain) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table.data:not(.plain) tbody tr{transition:background-color 125ms}.md-typeset table.data:not(.plain) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table.data:not(.plain) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:-webkit-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:-moz-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:is(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:rgba(0,0,0,.54);height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:-webkit-any(:focus,:hover){opacity:.7}.md-footer__link:-moz-any(:focus,:hover){opacity:.7}.md-footer__link:is(:focus,:hover){opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:-webkit-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:-moz-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:is(:focus,:hover){color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:is(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:-webkit-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:-moz-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:is(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem transparent,0 .2rem .4rem transparent;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-hero{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-size:1rem;overflow:hidden;transition:background .25s}.md-hero__inner{margin-top:1rem;padding:.8rem .8rem .4rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s;transition-delay:.1s}@media screen and (max-width:76.1875em){.md-hero__inner{margin-bottom:1.2rem;margin-top:2.4rem}}[data-md-state=hidden] .md-hero__inner{opacity:0;pointer-events:none;transform:translateY(.625rem);transition:transform 0ms .4s,opacity .1s 0ms}.md-hero--expand .md-hero__inner{margin-bottom:1.2rem}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{align-items:center;display:flex;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;-o-object-fit:contain;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link.md-nav__sticky{box-shadow:0 -.625em var(--md-default-bg-color),0 .625em var(--md-default-bg-color)}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__link--in-viewport{position:relative}.md-nav__link--in-viewport:before{background-color:var(--md-primary-fg-color);bottom:0;content:"";height:100%;position:absolute;right:calc(100% + .3rem);top:0;width:.05rem}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__sticky{background-color:var(--md-default-bg-color);position:sticky;top:var(--md-nav__header-height,0);z-index:var(--md-nav__sticky-zindex)}.md-nav .md-ellipsis{display:block;flex-grow:1;white-space:normal}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__sticky{background-color:transparent;box-shadow:none;position:static;z-index:auto}.md-nav--primary :-webkit-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :-moz-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :is(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;line-height:2.4rem;min-height:5.6rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:transparent;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:transparent}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-nav .md-nav__title .md-ellipsis{white-space:nowrap}.md-nav .md-nav__title .md-ellipsis wbr{display:none}}@media screen and (max-width:59.9375em){.md-nav__current-nested{display:none}.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav__current-toc{display:none}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:-webkit-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:-moz-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:is(:checked,:indeterminate)~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);font-weight:700;margin-top:0;padding:0 .6rem;position:sticky;top:0;z-index:var(--md-nav__sticky-zindex,1)}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__link--index){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:rgba(0,0,0,.54);cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem transparent;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:rgba(0,0,0,.26);border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:hsla(0,0%,100%,.12)}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem rgba(0,0,0,.07);color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:transparent;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::-moz-placeholder{-moz-transition:color .25s;transition:color .25s}.md-search__input::placeholder{transition:color .25s}.md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::-moz-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>*{margin-left:.2rem}[dir=rtl] .md-search__options>*{margin-right:.2rem}.md-search__options>*{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>*{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more summary{color:var(--md-typeset-a-color);cursor:pointer;display:block;font-size:.64rem;outline:none;padding:.75em .8rem;scroll-snap-align:start;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more summary{padding-left:2.2rem}[dir=rtl] .md-search-result__more summary{padding-right:2.2rem}}.md-search-result__more summary:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary::marker{display:none}.md-search-result__more summary::-webkit-details-marker{display:none}.md-search-result__more summary~*>*{opacity:.65}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}.md-search-result__article--document .md-search-result__title{font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result__title{font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result__teaser{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--md-default-fg-color--light);display:-webkit-box;font-size:.64rem;line-height:1.6;margin:.5em 0;max-height:2rem;overflow:hidden;text-overflow:ellipsis}@media screen and (max-width:44.9375em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}.md-search-result__teaser mark{background-color:transparent;text-decoration:underline}.md-search-result__terms{font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:transparent;color:var(--md-accent-fg-color)}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:-webkit-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-webkit-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:-moz-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-moz-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:is(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid transparent;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid transparent;border-right:.2rem solid transparent;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.1875em){.md-overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;padding:0;white-space:nowrap}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:-webkit-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:-moz-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:is(:focus,:hover){color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags{margin-bottom:.75em;margin-top:-.125em}[dir=ltr] .md-typeset .md-tag{margin-right:.5em}[dir=rtl] .md-typeset .md-tag{margin-left:.5em}.md-typeset .md-tag{background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-block;font-size:.64rem;font-weight:700;letter-spacing:normal;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em;vertical-align:middle}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;margin-right:.4em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon:-webkit-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:-moz-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:is(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}:-webkit-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:-moz-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:is(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation__index{cursor:pointer;font-family:var(--md-code-font-family);font-size:.85em;margin:0 1ch;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.md-annotation .md-annotation__index{color:#fff;transition:z-index .25s}.md-annotation .md-annotation__index:-webkit-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:-moz-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:is(:focus,:hover){color:#fff}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.125em;margin:0 -.4ch;padding:0 .4ch;position:absolute;top:0;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{animation:pulse 2s infinite}}.md-tooltip--active+.md-annotation__index:after{animation:none;transition:color .25s,background-color .25s}code .md-annotation__index{font-family:var(--md-code-font-family);font-size:inherit}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}.md-tooltip--active+.md-annotation__index{animation:none;transition:none;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:is(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:-webkit-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-webkit-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:-moz-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-moz-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:is(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.05rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition :-webkit-any(.admonition,details),.md-typeset details :-webkit-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :-moz-any(.admonition,details),.md-typeset details :-moz-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :is(.admonition,details),.md-typeset details :is(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.note){border-color:#448aff}.md-typeset :-moz-any(.admonition,details):-moz-any(.note){border-color:#448aff}.md-typeset :is(.admonition,details):is(.note){border-color:#448aff}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :is(.note)>:is(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):before{background-color:#448aff;mask-image:var(--md-admonition-icon--note)}.md-typeset :is(.note)>:is(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):after{color:#448aff}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):after{color:#448aff}.md-typeset :is(.note)>:is(.admonition-title,summary):after{color:#448aff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-moz-any(.admonition,details):-moz-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :is(.admonition,details):is(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--abstract)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.info,.todo){border-color:#00b8d4}.md-typeset :-moz-any(.admonition,details):-moz-any(.info,.todo){border-color:#00b8d4}.md-typeset :is(.admonition,details):is(.info,.todo){border-color:#00b8d4}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--info)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-moz-any(.admonition,details):-moz-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :is(.admonition,details):is(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--tip)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.success,.check,.done){border-color:#00c853}.md-typeset :-moz-any(.admonition,details):-moz-any(.success,.check,.done){border-color:#00c853}.md-typeset :is(.admonition,details):is(.success,.check,.done){border-color:#00c853}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):before{background-color:#00c853;mask-image:var(--md-admonition-icon--success)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):after{color:#00c853}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):after{color:#00c853}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):after{color:#00c853}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :-moz-any(.admonition,details):-moz-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :is(.admonition,details):is(.question,.help,.faq){border-color:#64dd17}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):before{background-color:#64dd17;mask-image:var(--md-admonition-icon--question)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):after{color:#64dd17}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-moz-any(.admonition,details):-moz-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :is(.admonition,details):is(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):before{background-color:#ff9100;mask-image:var(--md-admonition-icon--warning)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):after{color:#ff9100}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-moz-any(.admonition,details):-moz-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :is(.admonition,details):is(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):before{background-color:#ff5252;mask-image:var(--md-admonition-icon--failure)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):after{color:#ff5252}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.danger,.error){border-color:#ff1744}.md-typeset :-moz-any(.admonition,details):-moz-any(.danger,.error){border-color:#ff1744}.md-typeset :is(.admonition,details):is(.danger,.error){border-color:#ff1744}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):before{background-color:#ff1744;mask-image:var(--md-admonition-icon--danger)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):after{color:#ff1744}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.bug){border-color:#f50057}.md-typeset :-moz-any(.admonition,details):-moz-any(.bug){border-color:#f50057}.md-typeset :is(.admonition,details):is(.bug){border-color:#f50057}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :is(.bug)>:is(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):before{background-color:#f50057;mask-image:var(--md-admonition-icon--bug)}.md-typeset :is(.bug)>:is(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):after{color:#f50057}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):after{color:#f50057}.md-typeset :is(.bug)>:is(.admonition-title,summary):after{color:#f50057}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.example){border-color:#7c4dff}.md-typeset :-moz-any(.admonition,details):-moz-any(.example){border-color:#7c4dff}.md-typeset :is(.admonition,details):is(.example){border-color:#7c4dff}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :is(.example)>:is(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--example)}.md-typeset :is(.example)>:is(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :is(.example)>:is(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :-moz-any(.admonition,details):-moz-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :is(.admonition,details):is(.quote,.cite){border-color:#9e9e9e}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--quote)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:-webkit-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:-moz-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:is(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :-webkit-any(:hover,:target)>.headerlink{opacity:1;-webkit-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :-moz-any(:hover,:target)>.headerlink{opacity:1;-moz-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :is(:hover,:target)>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:-webkit-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:-moz-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:is(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset :-webkit-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :-moz-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :is(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset :-webkit-any(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset :-moz-any(del,ins,.comment).critic{box-decoration-break:clone}.md-typeset :is(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :is(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :is(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight :-webkit-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :-moz-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :is(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight :-webkit-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-moz-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :is(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-webkit-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-moz-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :is(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-webkit-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-moz-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-webkit-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :is(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.n){color:var(--md-code-hl-name-color)}.highlight :-moz-any(.n){color:var(--md-code-hl-name-color)}.highlight :is(.n){color:var(--md-code-hl-name-color)}.highlight :-webkit-any(.kc,.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-moz-any(.kc,.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :is(.kc,.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-webkit-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-moz-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :is(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-webkit-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :is(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-moz-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :is(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-webkit-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-moz-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :is(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-webkit-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-moz-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :is(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-webkit-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :-moz-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :is(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable :-webkit-any(tbody,td){display:block;padding:0}.highlighttable :-moz-any(tbody,td){display:block;padding:0}.highlighttable :is(tbody,td){display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset :-webkit-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset :-moz-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset :is(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset :-webkit-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result:after{clear:both;content:"";display:block}.md-typeset :-moz-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result:after{clear:both;content:"";display:block}.md-typeset :is(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result:after{clear:both;content:"";display:block}.md-typeset .results .results-prefix+.result{margin-top:0}.md-typeset .results .results-prefix{background-color:var(--md-code-bg-color);font-size:.85em;font-weight:700;margin-top:-1em;padding:.6617647059em 1.1764705882em}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:-webkit-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:-moz-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:is(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid transparent;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,transparent);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,transparent);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}.rst-versions{font-family:var(--md-text-font-family)}.rst-versions.rst-badge{bottom:inherit!important;font-size:.85rem;height:auto;top:50px}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}:root>*{--md-graphviz-edge-color:var(--md-default-fg-color);--md-graphviz-node-bg-color:var(--md-accent-fg-color--transparent);--md-graphviz-node-fg-color:var(--md-accent-fg-color);--md-graphviz-label-bg-color:var(--md-default-bg-color);--md-graphviz-label-fg-color:var(--md-code-fg-color);--md-graphviz-a-hover-color:var(--md-primary-fg-color)}.graphviz{margin:1em 0}.graphviz a:hover>text{fill:var(--md-graphviz-hover-color)!important}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}}.md-typeset .align-left{text-align:left}.md-typeset .align-right{text-align:right}.md-typeset .align-center{clear:both;text-align:center}.md-typeset .align-top{vertical-align:top}.md-typeset .align-middle{vertical-align:middle}.md-typeset .align-bottom{vertical-align:bottom}.md-typeset .figure.align-left,.md-typeset figure.align-left,.md-typeset img.align-left,.md-typeset object.align-left,.md-typeset table.align-left{margin-right:auto}.md-typeset .figure.align-center,.md-typeset figure.align-center,.md-typeset img.align-center,.md-typeset object.align-center,.md-typeset table.align-center{margin-left:auto;margin-right:auto}.md-typeset .figure.align-right,.md-typeset figure.align-right,.md-typeset img.align-right,.md-typeset object.align-right,.md-typeset table.align-right{margin-left:auto}.md-typeset .figure.align-center,.md-typeset .figure.align-right,.md-typeset figure.align-center,.md-typeset figure.align-right,.md-typeset img.align-center,.md-typeset img.align-right,.md-typeset object.align-center,.md-typeset object.align-right{display:block}.md-typeset .figure.align-left,.md-typeset .figure.align-right,.md-typeset figure.align-left,.md-typeset figure.align-right,.md-typeset table.align-center,.md-typeset table.align-left,.md-typeset table.align-right{text-align:inherit}.md-typeset .rubric{font-weight:700}.md-typeset .viewcode-block .viewcode-back{float:right}.md-typeset .versionmodified{font-style:italic}.md-typeset div.line-block{display:block}.md-typeset div.line-block div.line-block{margin-left:1.5em}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family)}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family)}.md-typeset :is(dl.objdesc,dl.api-field)>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family)}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt code{border-radius:0;padding:0}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt code{border-radius:0;padding:0}.md-typeset :is(dl.objdesc,dl.api-field)>dt code{border-radius:0;padding:0}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-name:not(.sig-name-nonprimary){color:var(--md-code-hl-name-color);font-weight:700;padding:0}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-name:not(.sig-name-nonprimary){color:var(--md-code-hl-name-color);font-weight:700;padding:0}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-name:not(.sig-name-nonprimary){color:var(--md-code-hl-name-color);font-weight:700;padding:0}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-param{font-style:normal}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-param{font-style:normal}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-param{font-style:normal}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-param .n:not(.desctype){color:var(--md-default-fg-color--light)}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-param .n:not(.desctype){color:var(--md-default-fg-color--light)}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-param .n:not(.desctype){color:var(--md-default-fg-color--light)}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-param a.reference .n:not(.desctype):hover{color:var(--md-accent-fg-color)}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-param a.reference .n:not(.desctype):hover{color:var(--md-accent-fg-color)}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-param a.reference .n:not(.desctype):hover{color:var(--md-accent-fg-color)}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-param-decl:before{content:"\a ";white-space:pre}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-param-decl:before{content:"\a ";white-space:pre}.md-typeset :is(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-param-decl:before{content:"\a ";white-space:pre}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-paren~.sig-paren:before{content:"\a";white-space:pre}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-paren~.sig-paren:before{content:"\a";white-space:pre}.md-typeset :is(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-paren~.sig-paren:before{content:"\a";white-space:pre}.md-typeset dl.objdesc>dd>dl.field-list>dt>.colon{display:none}.md-typeset .sig-inline a.reference.sig-name,.md-typeset .sig-inline a.reference:not(.desctype)>.n,.md-typeset .sig-inline a.reference>.sig-name,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name{color:var(--md-typeset-a-color)}.md-typeset .sig-inline a.reference.sig-name,.md-typeset .sig-inline a.reference:not(.desctype)>.n,.md-typeset .sig-inline a.reference>.sig-name,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name{color:var(--md-typeset-a-color)}.md-typeset .sig-inline a.reference.sig-name,.md-typeset .sig-inline a.reference:not(.desctype)>.n,.md-typeset .sig-inline a.reference>.sig-name,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference.sig-name,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference>.sig-name{color:var(--md-typeset-a-color)}.md-typeset .sig-inline a.reference.sig-name:hover,.md-typeset .sig-inline a.reference:not(.desctype)>.n:hover,.md-typeset .sig-inline a.reference>.sig-name:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline a.reference.sig-name:hover,.md-typeset .sig-inline a.reference:not(.desctype)>.n:hover,.md-typeset .sig-inline a.reference>.sig-name:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline a.reference.sig-name:hover,.md-typeset .sig-inline a.reference:not(.desctype)>.n:hover,.md-typeset .sig-inline a.reference>.sig-name:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference.sig-name:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference>.sig-name:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline .desctype,.md-typeset .sig-inline .desctype>a.reference,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference{color:var(--md-code-hl-special-color)}.md-typeset .sig-inline .desctype,.md-typeset .sig-inline .desctype>a.reference,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference{color:var(--md-code-hl-special-color)}.md-typeset .sig-inline .desctype,.md-typeset .sig-inline .desctype>a.reference,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype>a.reference{color:var(--md-code-hl-special-color)}.md-typeset .sig-inline .desctype .n,.md-typeset .sig-inline .desctype>a.reference .n,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype .n,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference .n{color:inherit}.md-typeset .sig-inline .desctype .n,.md-typeset .sig-inline .desctype>a.reference .n,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype .n,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference .n{color:inherit}.md-typeset .sig-inline .desctype .n,.md-typeset .sig-inline .desctype>a.reference .n,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype .n,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype>a.reference .n{color:inherit}.md-typeset .sig-inline .desctype:-webkit-any(a.reference):hover,.md-typeset .sig-inline .desctype>a.reference:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype:-webkit-any(a.reference):hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline .desctype:-moz-any(a.reference):hover,.md-typeset .sig-inline .desctype>a.reference:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype:-moz-any(a.reference):hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline .desctype:is(a.reference):hover,.md-typeset .sig-inline .desctype>a.reference:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype:is(a.reference):hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype>a.reference:hover{color:var(--md-accent-fg-color)}.md-typeset dl.objdesc>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family);padding-left:.5em;padding-right:.5em;padding-top:.5em}.md-typeset dl.objdesc>dt,.md-typeset dl.objdesc>dt code{font-size:.75rem}.md-typeset dl.objdesc>dt .property{color:var(--md-code-hl-keyword-color);font-style:normal;font-weight:700}.md-typeset dl.objdesc>dt .sig-prename{color:var(--md-code-hl-name-color);padding:0}.md-typeset dl.objdesc>dt .viewcode-back,.md-typeset dl.objdesc>dt .viewcode-link{float:right;text-align:right}.md-typeset dl.objdesc>dt.api-include-path,.md-typeset dl.objdesc>dt.api-include-path code{font-size:.65rem}.md-typeset dl.objdesc>dt:first-child{padding-top:.5em}.md-typeset dl.objdesc>dt:last-of-type{padding-bottom:.5em}.md-typeset dl.objdesc>dd dl.field-list>dt{font-size:1em;font-weight:700;margin-bottom:1em}.md-typeset dl.objdesc>dd dd.noindent{margin-left:0}.md-typeset dl.api-field>dt{display:table}.md-typeset dl.api-field>dt a.headerlink{left:.5em;margin-left:0;position:relative;width:0}.md-typeset dl.api-field>dt,.md-typeset dl.api-field>dt code{font-size:.65rem}.md-typeset dl.api-field>dt.api-parameter-kind{float:right;font-family:var(--md-text-font-family)}.md-typeset dl.api-field>dt.api-parameter-kind:before{content:"["}.md-typeset dl.api-field>dt.api-parameter-kind:after{content:"]"}.md-typeset dl.objdesc.summary>dd,.md-typeset dl.objdesc.summary>dd>p:first-child{margin-top:0}.md-typeset .sig-inline:-webkit-any(.c-texpr,.cpp-texpr){background-color:unset;font-family:unset}.md-typeset .sig-inline:-moz-any(.c-texpr,.cpp-texpr){background-color:unset;font-family:unset}.md-typeset .sig-inline:is(.c-texpr,.cpp-texpr){background-color:unset;font-family:unset}.md-nav__link{white-space:nowrap}:root>*{--objinfo-icon-fg-alias:#e65100;--objinfo-icon-fg-default:#424242;--objinfo-icon-fg-data:#1565c0;--objinfo-icon-fg-procedure:#6a1b9a;--objinfo-icon-fg-sub-data:#2e7d32;--objinfo-icon-bg-default:var(--md-default-bg-color)}@media screen{[data-md-color-scheme=slate]{--objinfo-icon-fg-alias:#ffb74d;--objinfo-icon-fg-default:#e0e0e0;--objinfo-icon-fg-data:#64b5f6;--objinfo-icon-fg-procedure:#ce93d8;--objinfo-icon-fg-sub-data:#81c784}}.objinfo-icon{background-color:var(--objinfo-icon-bg-default);border:1px solid var(--objinfo-icon-fg-default);border-radius:2px;color:var(--objinfo-icon-fg-default);display:inline-table;flex-shrink:0;font-family:var(--md-text-font-family);font-weight:500;height:16px;line-height:16px;margin-right:8px;text-align:center;vertical-align:middle;width:16px}.objinfo-icon__alias{background-color:var(--objinfo-icon-fg-alias);border:1px solid var(--objinfo-icon-fg-alias);color:var(--objinfo-icon-bg-default)}.objinfo-icon__procedure{background-color:var(--objinfo-icon-fg-procedure);border:1px solid var(--objinfo-icon-fg-procedure);color:var(--objinfo-icon-bg-default)}.objinfo-icon__data{background-color:var(--objinfo-icon-fg-data);border:1px solid var(--objinfo-icon-fg-data);color:var(--objinfo-icon-bg-default)}.objinfo-icon__sub-data{background-color:var(--objinfo-icon-fg-sub-data);border:1px solid var(--objinfo-icon-fg-sub-data);color:var(--objinfo-icon-bg-default)}.search-result-objlabel{border:1px solid var(--md-default-fg-color--light);border-radius:2px;float:right;padding:2px}table.longtable.docutils.data.align-default tbody>tr>td>p>a.reference.internal>code.xref.py.py-obj.docutils.literal.notranslate>span.pre{word-break:normal} @media screen{[data-md-color-scheme=slate]{--md-hue:232;--md-default-fg-color:hsla(var(--md-hue),75%,95%,1);--md-default-fg-color--light:hsla(var(--md-hue),75%,90%,0.62);--md-default-fg-color--lighter:hsla(var(--md-hue),75%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),75%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,21%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,21%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,21%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,21%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,1);--md-code-bg-color:hsla(var(--md-hue),15%,15%,1);--md-code-hl-color:rgba(66,135,255,.15);--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(66,135,255,.3);--md-typeset-kbd-color:hsla(var(--md-hue),15%,94%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,94%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-table-color:hsla(var(--md-hue),75%,95%,0.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,12%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,10%,1);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.3),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.4),0 0 0.05rem rgba(0,0,0,.35)}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=slate] img[src$="#only-dark"]{display:initial}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#bd78c9}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a682e3}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#6c91d5}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff9575}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c7846b}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#6c91d5}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:rgba(255,25,71,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:rgba(245,0,86,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:rgba(223,65,251,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:rgba(124,77,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:rgba(66,135,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:rgba(0,145,235,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:rgba(0,186,214,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:rgba(0,189,164,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:rgba(0,199,83,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:rgba(99,222,23,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:rgba(176,235,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:rgba(255,213,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:rgba(255,170,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:rgba(255,145,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:rgba(255,110,66,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:#fff;--md-primary-fg-color--light:hsla(0,0%,100%,.7);--md-primary-fg-color--dark:rgba(0,0,0,.07);--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54);--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-hero--expand{border-bottom:.05rem solid rgba(0,0,0,.07)}@media screen and (max-width:76.1875em){[data-md-color-primary=white] .md-hero{border-bottom:.05rem solid rgba(0,0,0,.07)}}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:rgba(0,0,0,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:rgba(0,0,0,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:rgba(0,0,0,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid rgba(0,0,0,.07)}}[data-md-color-primary=black]{--md-primary-fg-color:#000;--md-primary-fg-color--light:rgba(0,0,0,.54);--md-primary-fg-color--dark:#000;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-header,[data-md-color-primary=black] .md-hero{background-color:#000}@media screen and (max-width:59.9375em){[data-md-color-primary=black] .md-nav__source{background-color:rgba(0,0,0,.87)}}@media screen and (min-width:60em){[data-md-color-primary=black] .md-search__form{background-color:hsla(0,0%,100%,.12)}[data-md-color-primary=black] .md-search__form:hover{background-color:hsla(0,0%,100%,.3)}}@media screen and (max-width:76.1875em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:#000}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:#000}} @font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/638764dc2513deb09c55fc025f6dd36c.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/8007dfe835cfb201b8caaa9651098588.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/8c3798e37724f71bc0c63c44a5307413.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/ca7eea0cf248d6e8442c01074765bd33.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/0f303f31706d39866cced9dcc17b61fb.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/6de03a64aa8100032abc6e836b3ed803.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/0ec3cc19652785204ea2e322330f0f1b.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/b57a5ada789f195d5d42f4073a6cf313.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/daf12b5f1889502004bba85ad71f9fa4.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/64a6b4e954cf84685cbf8de77eb47344.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/435e4b7f9f250d9d9243d4754799fc96.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/20dc200cc43ab904876fb0c1697ebe39.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/51f3f41805329fb8341beb56ded833ea.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/f75911313e1c7802c23345ab57e754d8.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/28e6b81b1bc1964707edd4179e4268f5.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/e704ef18719c08839bc99a32437ef0f8.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/76945c7494c20515bb45d1dedab8f706.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/21953b998bab09c1f60c599caee56378.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/e33716333704ab19fdf9989e072ad49a.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/bb8007225d94a099cddbade7ea904667.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/3254c528e2ab56454a9f22191035c5fe.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/495d38d4b9741e8aa4204002414069e2.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/daf51ab540602b2d0b87646621637bac.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/77b24796a3d4ab521f66765651875338.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/f6734f8177112c0839b961f96d813fcb.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/a6933e678530b263486fa7b185a449ca.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/144860ed1e48e186f08997e6388a9c3f.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/2ea7a97b7c976b121112a088eb398561.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/0b68e8634c96265eb32a0c769416b5b0.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/9582ced8a675bf267cc7ac392a86413e.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/db0424fb67fb52e7e538490240cc7fb9.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/2096d27efc16cbdd79183bf295c8ebde.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/713780d8b30bda5583052ea847cdcb4f.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/b019538234514166ec7665359d097403.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/38f3ee1f96b758f95672c632d8759594.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/4c815fdc869f885520f7c8eae6730edf.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/6deb20301c65a96db17c433ad0cf8158.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/63111d307c01b52ffccf7b0319cb7917.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/e56cc9fb5272752b78f144b4be43175d.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/2e10480d4154762bc7c8fbb40877e104.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/7af61b2367eba2b1852e837c46a75696.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/661d4b208656c006e7aab58acf778485.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/ac848474638236e67a64bc654fb18de0.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/3c505383d37d2078648e37868bbd1fad.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/5b6377da4c959db6d4b22738a27f1bee.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/4ec57f2a80b91090971b83970230ca09.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/fc66f942651a9fe1a598770d3d896529.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/8aa562790559d61dd5178a88a296d70f.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/ccdebed88064e470c15f37c432922e57.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/acaac043ca238f0e56e61864456777fa.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/6be97ca17228a69c406231d89c003194.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/84e959dd07f302392f0ffd86f87db888.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/9fdb12ceee3a402d3a54afe354552459.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/76da333ab59c6d625cabfb0768f82b4a.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/3a38c967413f7bce36d3baefc321aade.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/7e262106f82cc52663e403f5b73795bb.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/2f5c32f094829c0278bce28fe2bbe074.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/da6cd48e6dad1888fccc91735e7522f7.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/50aacf068f685be0dd903a91d5bab7d8.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/1383417807f7965daaf94e7c497dcddb.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/3f1918538864f9681d47a4538d48289c.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/bfd1a0c9c783e84595589f33e1828a57.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/c6dc61b627bbc5af9130518297bd4f17.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/78a9265759e7b861a1639a36f4c01d04.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/2f7c3c315334a99574ee4ceb21af654d.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/870e5928dd14fcfe0ce9386107666774.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/cce2217cc8323fe49789adefb3596291.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/4f93c2808e3b69e525c118074e5de31f.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/99be4d68845d66c27c7f7d3a48687b66.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/029e176ad602329b4434892101db9cf3.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/9095d663e4d450059bcc2260bb75cd62.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/1181a8e619707033241139715eca64c6.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/22aadc77cafa07b2db9ed560d0320616.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/63f4b74ebf127dbeb033126ea988f54e.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/0053ba6958e79f26751eabb555bd73d0.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/90ebb29b5cffa197b184773983ba7e91.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/aa28d99c7db60ad23f96a5c317615c42.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/52f28cb4d065b4adfa78df4f9559c639.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/122802d03aed4bf8cd6a03997a97aca4.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/4039566f251699c4b421ed1a38a59b24.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/32c8a74ac0816253d69a7cc68a60986d.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/1512b579343c6b61c7523cdd838d8328.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/25c52b9af13f0d1b10719f5289e8c803.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/b4e42731e8d667ae87c3450c345754ae.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/aab05142e0e2dadf7df633e061e612ad.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/77ff81100e5a1db3d925f713660700ad.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/101522bafe9c61c68698ecc784607772.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/c28a41f656599f6694528b5463c6a445.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/770518db51bed1e082feecc532cfcbf8.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/cd3d1f17e048e2116f438bd7157baccf.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/302b0425bf5ea66f37a822a61d723adc.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/c22066c14662d6c80415ae04c5dd9d51.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/de018865c95896bb57265fc97c48ebd7.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/3177dacffeac1eb4102852811ae4a2c7.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/5989ef3a21d7f252337ab3326f78bde7.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/dd719f1662079ce6a61260f9af972379.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/07ff82964967feebb9c96288e0e0df05.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/765bd4a97597a4d7781193793477a6cd.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/ab03beb9091fa15ce4e783199e076bc6.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/a70ff2592da5e3453943f727633aff54.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/d07f561ba87d93460742b060727d9e0d.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/43358c04243de546caddd0898dbf0757.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/71e06579279fba7436d58a1c49288909.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/fb1aaa90783b8cb9375265abeb91b153.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/2325b97b584755067ea4f7f56ee05430.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/f534242dea2255c25b9d05c2371986e3.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/99cf36e763be9cce7b4c59b91841af58.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/255cf41e0317d95e3992683a76ef28a8.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/f154d62b4879af7a22895af7a4ef03f0.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/bc67bba106323289ea3eda0826de1912.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/392ff374142585f7b886ee1fe66e686e.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/1f1481679a64a39f3427547aa1b13f0f.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/cadfb311297a9362b07fab73934b432a.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/e99627cd27de169d23ece4573006af2a.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/437939342255944b82a49f916404c5fc.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/83614c36460a4a9734968789cb535de7.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/b4d3c40a77fd9e35a881a79077957055.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/d422317033deb87342a5e56c7be67458.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/2c0f74be498d2da814c0a84dd6833f70.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/60eb682678bbea5e8ad71f66f2f65536.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/5ce47d5195e59af38114d0b70217baf2.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;} -:root{--si-icon--fontawesome_regular_eye:url('data:image/svg+xml;charset=utf-8,');--si-icon--octicons_star-16:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_speedometer:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_speedometer-slow:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_alert-circle:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_delete:url('data:image/svg+xml;charset=utf-8,');}.md-typeset .si-icon-inline.fontawesome_regular_eye::before{-webkit-mask-image:var(--si-icon--fontawesome_regular_eye);mask-image:var(--si-icon--fontawesome_regular_eye);}.md-typeset .si-icon-inline.octicons_star-16::before{-webkit-mask-image:var(--si-icon--octicons_star-16);mask-image:var(--si-icon--octicons_star-16);}.md-typeset .si-icon-inline.material_speedometer::before{-webkit-mask-image:var(--si-icon--material_speedometer);mask-image:var(--si-icon--material_speedometer);}.md-typeset .si-icon-inline.material_speedometer-slow::before{-webkit-mask-image:var(--si-icon--material_speedometer-slow);mask-image:var(--si-icon--material_speedometer-slow);}.md-typeset .si-icon-inline.material_alert-circle::before{-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .si-icon-inline.material_delete::before{-webkit-mask-image:var(--si-icon--material_delete);mask-image:var(--si-icon--material_delete);}.md-typeset .seealso>.admonition-title::before{-webkit-mask-image:var(--si-icon--fontawesome_regular_eye);mask-image:var(--si-icon--fontawesome_regular_eye);}.md-typeset .admonition.star{border-color:rgb(255,233,3);}.md-typeset .star>.admonition-title{background-color:rgba(255,233,3,0.1);border-color:rgb(255,233,3);}.md-typeset .star>.admonition-title::before{background-color:rgb(255,233,3);-webkit-mask-image:var(--si-icon--octicons_star-16);mask-image:var(--si-icon--octicons_star-16);}.md-typeset .admonition.fast-performance{border-color:rgb(47,177,112);}.md-typeset .fast-performance>.admonition-title{background-color:rgba(47,177,112,0.1);border-color:rgb(47,177,112);}.md-typeset .fast-performance>.admonition-title::before{background-color:rgb(47,177,112);-webkit-mask-image:var(--si-icon--material_speedometer);mask-image:var(--si-icon--material_speedometer);}.md-typeset .admonition.slow-performance{border-color:rgb(230,105,91);}.md-typeset .slow-performance>.admonition-title{background-color:rgba(230,105,91,0.1);border-color:rgb(230,105,91);}.md-typeset .slow-performance>.admonition-title::before{background-color:rgb(230,105,91);-webkit-mask-image:var(--si-icon--material_speedometer-slow);mask-image:var(--si-icon--material_speedometer-slow);}.md-typeset .admonition.versionadded{border-color:rgb(72,138,87);}.md-typeset .versionadded>.admonition-title{background-color:rgba(72,138,87,0.1);border-color:rgb(72,138,87);}.md-typeset .versionadded>.admonition-title::before{background-color:rgb(72,138,87);-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .admonition.versionchanged{border-color:rgb(238,144,64);}.md-typeset .versionchanged>.admonition-title{background-color:rgba(238,144,64,0.1);border-color:rgb(238,144,64);}.md-typeset .versionchanged>.admonition-title::before{background-color:rgb(238,144,64);-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .admonition.deprecated{border-color:rgb(203,70,83);}.md-typeset .deprecated>.admonition-title{background-color:rgba(203,70,83,0.1);border-color:rgb(203,70,83);}.md-typeset .deprecated>.admonition-title::before{background-color:rgb(203,70,83);-webkit-mask-image:var(--si-icon--material_delete);mask-image:var(--si-icon--material_delete);} +:root{--si-icon--fontawesome_regular_eye:url('data:image/svg+xml;charset=utf-8,');--si-icon--octicons_star-16:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_speedometer:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_speedometer-slow:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_alert-circle:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_delete:url('data:image/svg+xml;charset=utf-8,');}.md-typeset .si-icon-inline.fontawesome_regular_eye::before{-webkit-mask-image:var(--si-icon--fontawesome_regular_eye);mask-image:var(--si-icon--fontawesome_regular_eye);}.md-typeset .si-icon-inline.octicons_star-16::before{-webkit-mask-image:var(--si-icon--octicons_star-16);mask-image:var(--si-icon--octicons_star-16);}.md-typeset .si-icon-inline.material_speedometer::before{-webkit-mask-image:var(--si-icon--material_speedometer);mask-image:var(--si-icon--material_speedometer);}.md-typeset .si-icon-inline.material_speedometer-slow::before{-webkit-mask-image:var(--si-icon--material_speedometer-slow);mask-image:var(--si-icon--material_speedometer-slow);}.md-typeset .si-icon-inline.material_alert-circle::before{-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .si-icon-inline.material_delete::before{-webkit-mask-image:var(--si-icon--material_delete);mask-image:var(--si-icon--material_delete);}.md-typeset .admonition.seealso{border-color:rgb(108,117,125);}.md-typeset .seealso>.admonition-title{background-color:rgba(108,117,125,0.1);border-color:rgb(108,117,125);}.md-typeset .seealso>.admonition-title::before{background-color:rgb(108,117,125);-webkit-mask-image:var(--si-icon--fontawesome_regular_eye);mask-image:var(--si-icon--fontawesome_regular_eye);}.md-typeset .admonition.star{border-color:rgb(255,233,3);}.md-typeset .star>.admonition-title{background-color:rgba(255,233,3,0.1);border-color:rgb(255,233,3);}.md-typeset .star>.admonition-title::before{background-color:rgb(255,233,3);-webkit-mask-image:var(--si-icon--octicons_star-16);mask-image:var(--si-icon--octicons_star-16);}.md-typeset .admonition.fast-performance{border-color:rgb(47,177,112);}.md-typeset .fast-performance>.admonition-title{background-color:rgba(47,177,112,0.1);border-color:rgb(47,177,112);}.md-typeset .fast-performance>.admonition-title::before{background-color:rgb(47,177,112);-webkit-mask-image:var(--si-icon--material_speedometer);mask-image:var(--si-icon--material_speedometer);}.md-typeset .admonition.slow-performance{border-color:rgb(230,105,91);}.md-typeset .slow-performance>.admonition-title{background-color:rgba(230,105,91,0.1);border-color:rgb(230,105,91);}.md-typeset .slow-performance>.admonition-title::before{background-color:rgb(230,105,91);-webkit-mask-image:var(--si-icon--material_speedometer-slow);mask-image:var(--si-icon--material_speedometer-slow);}.md-typeset .admonition.versionadded{border-color:rgb(72,138,87);}.md-typeset .versionadded>.admonition-title{background-color:rgba(72,138,87,0.1);border-color:rgb(72,138,87);}.md-typeset .versionadded>.admonition-title::before{background-color:rgb(72,138,87);-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .admonition.versionchanged{border-color:rgb(238,144,64);}.md-typeset .versionchanged>.admonition-title{background-color:rgba(238,144,64,0.1);border-color:rgb(238,144,64);}.md-typeset .versionchanged>.admonition-title::before{background-color:rgb(238,144,64);-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .admonition.deprecated{border-color:rgb(203,70,83);}.md-typeset .deprecated>.admonition-title{background-color:rgba(203,70,83,0.1);border-color:rgb(203,70,83);}.md-typeset .deprecated>.admonition-title::before{background-color:rgb(203,70,83);-webkit-mask-image:var(--si-icon--material_delete);mask-image:var(--si-icon--material_delete);} diff --git a/v0.3.x/api/galois.Array.Identity/index.html b/v0.3.x/api/galois.Array.Identity/index.html index 6ab6bce9e..18963ff39 100644 --- a/v0.3.x/api/galois.Array.Identity/index.html +++ b/v0.3.x/api/galois.Array.Identity/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.Ones/index.html b/v0.3.x/api/galois.Array.Ones/index.html index c71a683fd..a8625f8b3 100644 --- a/v0.3.x/api/galois.Array.Ones/index.html +++ b/v0.3.x/api/galois.Array.Ones/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.Random/index.html b/v0.3.x/api/galois.Array.Random/index.html index 2416eed6d..bf8ad56ac 100644 --- a/v0.3.x/api/galois.Array.Random/index.html +++ b/v0.3.x/api/galois.Array.Random/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.Range/index.html b/v0.3.x/api/galois.Array.Range/index.html index 2d73ab5ad..669f7deb5 100644 --- a/v0.3.x/api/galois.Array.Range/index.html +++ b/v0.3.x/api/galois.Array.Range/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.Zeros/index.html b/v0.3.x/api/galois.Array.Zeros/index.html index 921dde2a8..d906f5259 100644 --- a/v0.3.x/api/galois.Array.Zeros/index.html +++ b/v0.3.x/api/galois.Array.Zeros/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.characteristic/index.html b/v0.3.x/api/galois.Array.characteristic/index.html index aa963dcd5..6fbab9f72 100644 --- a/v0.3.x/api/galois.Array.characteristic/index.html +++ b/v0.3.x/api/galois.Array.characteristic/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.compile/index.html b/v0.3.x/api/galois.Array.compile/index.html index 9bddd301d..d239c748d 100644 --- a/v0.3.x/api/galois.Array.compile/index.html +++ b/v0.3.x/api/galois.Array.compile/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.default_ufunc_mode/index.html b/v0.3.x/api/galois.Array.default_ufunc_mode/index.html index 2a93fd4d9..41b597736 100644 --- a/v0.3.x/api/galois.Array.default_ufunc_mode/index.html +++ b/v0.3.x/api/galois.Array.default_ufunc_mode/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.degree/index.html b/v0.3.x/api/galois.Array.degree/index.html index 6c3211e13..1319ed411 100644 --- a/v0.3.x/api/galois.Array.degree/index.html +++ b/v0.3.x/api/galois.Array.degree/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.dtypes/index.html b/v0.3.x/api/galois.Array.dtypes/index.html index 0ab0ec5b8..19aef18dd 100644 --- a/v0.3.x/api/galois.Array.dtypes/index.html +++ b/v0.3.x/api/galois.Array.dtypes/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.element_repr/index.html b/v0.3.x/api/galois.Array.element_repr/index.html index 2ee00452c..46da0c714 100644 --- a/v0.3.x/api/galois.Array.element_repr/index.html +++ b/v0.3.x/api/galois.Array.element_repr/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.elements/index.html b/v0.3.x/api/galois.Array.elements/index.html index 2cad4b160..d681ba0c7 100644 --- a/v0.3.x/api/galois.Array.elements/index.html +++ b/v0.3.x/api/galois.Array.elements/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.irreducible_poly/index.html b/v0.3.x/api/galois.Array.irreducible_poly/index.html index cf313a673..e8164dcb7 100644 --- a/v0.3.x/api/galois.Array.irreducible_poly/index.html +++ b/v0.3.x/api/galois.Array.irreducible_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.name/index.html b/v0.3.x/api/galois.Array.name/index.html index 9fddb77b0..1aef8a52a 100644 --- a/v0.3.x/api/galois.Array.name/index.html +++ b/v0.3.x/api/galois.Array.name/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.order/index.html b/v0.3.x/api/galois.Array.order/index.html index c655c1b06..8ca1884a9 100644 --- a/v0.3.x/api/galois.Array.order/index.html +++ b/v0.3.x/api/galois.Array.order/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.primitive_element/index.html b/v0.3.x/api/galois.Array.primitive_element/index.html index 959e136e3..757ea5db1 100644 --- a/v0.3.x/api/galois.Array.primitive_element/index.html +++ b/v0.3.x/api/galois.Array.primitive_element/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.repr/index.html b/v0.3.x/api/galois.Array.repr/index.html index 108a09996..2758eccb7 100644 --- a/v0.3.x/api/galois.Array.repr/index.html +++ b/v0.3.x/api/galois.Array.repr/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.ufunc_mode/index.html b/v0.3.x/api/galois.Array.ufunc_mode/index.html index 0ba79f8dd..51fa1649b 100644 --- a/v0.3.x/api/galois.Array.ufunc_mode/index.html +++ b/v0.3.x/api/galois.Array.ufunc_mode/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.ufunc_modes/index.html b/v0.3.x/api/galois.Array.ufunc_modes/index.html index 46dad6dc4..034f817c0 100644 --- a/v0.3.x/api/galois.Array.ufunc_modes/index.html +++ b/v0.3.x/api/galois.Array.ufunc_modes/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array.units/index.html b/v0.3.x/api/galois.Array.units/index.html index 8194d3391..d73a813bc 100644 --- a/v0.3.x/api/galois.Array.units/index.html +++ b/v0.3.x/api/galois.Array.units/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Array/index.html b/v0.3.x/api/galois.Array/index.html index 6144aedf2..e7f28b508 100644 --- a/v0.3.x/api/galois.Array/index.html +++ b/v0.3.x/api/galois.Array/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.G/index.html b/v0.3.x/api/galois.BCH.G/index.html index 1db7f6a6e..5245c0f97 100644 --- a/v0.3.x/api/galois.BCH.G/index.html +++ b/v0.3.x/api/galois.BCH.G/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.H/index.html b/v0.3.x/api/galois.BCH.H/index.html index c1beb7884..d7b413c5b 100644 --- a/v0.3.x/api/galois.BCH.H/index.html +++ b/v0.3.x/api/galois.BCH.H/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.__init__/index.html b/v0.3.x/api/galois.BCH.__init__/index.html index fbecca67e..699ed8c35 100644 --- a/v0.3.x/api/galois.BCH.__init__/index.html +++ b/v0.3.x/api/galois.BCH.__init__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.__repr__/index.html b/v0.3.x/api/galois.BCH.__repr__/index.html index 493e36a99..7155808df 100644 --- a/v0.3.x/api/galois.BCH.__repr__/index.html +++ b/v0.3.x/api/galois.BCH.__repr__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.__str__/index.html b/v0.3.x/api/galois.BCH.__str__/index.html index 191c779d4..22f19eef8 100644 --- a/v0.3.x/api/galois.BCH.__str__/index.html +++ b/v0.3.x/api/galois.BCH.__str__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.alpha/index.html b/v0.3.x/api/galois.BCH.alpha/index.html index d449130ef..43533dfc9 100644 --- a/v0.3.x/api/galois.BCH.alpha/index.html +++ b/v0.3.x/api/galois.BCH.alpha/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.c/index.html b/v0.3.x/api/galois.BCH.c/index.html index 8ebcd59a4..81d2688b9 100644 --- a/v0.3.x/api/galois.BCH.c/index.html +++ b/v0.3.x/api/galois.BCH.c/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.d/index.html b/v0.3.x/api/galois.BCH.d/index.html index a25f570f9..c5368921b 100644 --- a/v0.3.x/api/galois.BCH.d/index.html +++ b/v0.3.x/api/galois.BCH.d/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.decode/index.html b/v0.3.x/api/galois.BCH.decode/index.html index 518e65ae1..ee685fd63 100644 --- a/v0.3.x/api/galois.BCH.decode/index.html +++ b/v0.3.x/api/galois.BCH.decode/index.html @@ -32,7 +32,7 @@ - + @@ -7922,10 +7922,10 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([0, 0, 0, 1, 1, 1, 1], order=2) +Out[3]: GF([0, 1, 1, 1, 0, 0, 0], order=2) In [4]: c = bch.encode(m); c -Out[4]: GF([0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1], order=2) +Out[4]: GF([0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1], order=2)

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

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

Decode the codeword and recover the message.

In [17]: d = bch.decode(c); d
-Out[17]: GF([0, 0, 1, 1], order=2)
+Out[17]: GF([0, 1, 1, 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, 1, 1], order=2), 2)
+Out[19]: (GF([0, 1, 1, 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([[0, 1, 0, 0, 1, 0, 1],
-    [1, 1, 0, 1, 0, 0, 1],
-    [0, 1, 1, 1, 0, 0, 1]], order=2)
+GF([[0, 1, 0, 1, 1, 1, 0],
+    [1, 0, 0, 0, 0, 1, 0],
+    [0, 1, 1, 0, 0, 1, 0]], order=2)
 
 In [24]: c = bch.encode(m); c
 Out[24]: 
-GF([[0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1],
-    [1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0],
-    [0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0]], order=2)
+GF([[0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0],
+    [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1],
+    [0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1]], 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([[0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1], - [0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0], - [1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0]], order=2) +GF([[0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0], + [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1], + [1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1]], order=2)

Decode the codeword and recover the message.

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

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

Decode the codeword and recover the message.

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

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

In [41]: d, e = bch.decode(c, errors=True); d, e
 Out[41]: 
-(GF([[1, 0, 0, 0],
-     [1, 1, 1, 0],
-     [0, 1, 1, 0]], order=2),
+(GF([[1, 0, 0, 1],
+     [0, 1, 0, 1],
+     [0, 1, 1, 1]], 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 d2eab82f9..bce025b54 100644
--- a/v0.3.x/api/galois.BCH.detect/index.html
+++ b/v0.3.x/api/galois.BCH.detect/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7828,10 +7828,10 @@
 In [2]: GF = bch.field
 
 In [3]: m = GF.Random(bch.k); m
-Out[3]: GF([1, 1, 0, 1, 1, 1, 1], order=2)
+Out[3]: GF([0, 1, 0, 1, 1, 0, 0], order=2)
 
 In [4]: c = bch.encode(m); c
-Out[4]: GF([1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1], order=2)
+Out[4]: GF([0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1], order=2)
 

Detect no errors in the valid codeword.

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

Detect no errors in the valid codeword.

@@ -7874,7 +7874,7 @@ Out[14]: 5 In [15]: c[0:bch.d - 1] ^= 1; c -Out[15]: GF([0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1], order=2) +Out[15]: GF([0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1], order=2) In [16]: bch.detect(c) Out[16]: True @@ -7889,14 +7889,14 @@ In [19]: m = GF.Random((3, bch.k)); m Out[19]: -GF([[0, 1, 0, 1, 0, 1, 0], - [1, 0, 1, 0, 0, 1, 1], +GF([[0, 0, 0, 0, 0, 0, 1], + [1, 0, 1, 1, 0, 1, 1], [0, 0, 1, 0, 0, 0, 0]], order=2) In [20]: c = bch.encode(m); c Out[20]: -GF([[0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0], - [1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0], +GF([[0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1], + [1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1], [0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0]], order=2) @@ -7917,8 +7917,8 @@ In [26]: c Out[26]: -GF([[1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0], - [0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0], +GF([[1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1], + [0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1], [1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0]], order=2) In [27]: bch.detect(c) @@ -7934,15 +7934,15 @@ In [30]: m = GF.Random((3, bch.k - 3)); m Out[30]: -GF([[1, 1, 1, 1], - [1, 1, 0, 1], - [0, 1, 0, 0]], order=2) +GF([[0, 0, 0, 0], + [0, 1, 0, 1], + [1, 0, 1, 1]], order=2) In [31]: c = bch.encode(m); c Out[31]: -GF([[1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1], - [1, 1, 0, 1, 0, 0, 1, 0, 1, 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], + [0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1], + [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1]], order=2)

Detect no errors in the valid codewords.

@@ -7962,9 +7962,9 @@ In [37]: c Out[37]: -GF([[0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1], - [0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0], - [1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0]], order=2) +GF([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1], + [0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1]], order=2) In [38]: bch.detect(c) Out[38]: array([ True, True, True]) diff --git a/v0.3.x/api/galois.BCH.encode/index.html b/v0.3.x/api/galois.BCH.encode/index.html index cec200517..6ba708e4e 100644 --- a/v0.3.x/api/galois.BCH.encode/index.html +++ b/v0.3.x/api/galois.BCH.encode/index.html @@ -32,7 +32,7 @@ - + @@ -7885,15 +7885,15 @@ In [2]: GF = bch.field In [3]: m = GF.Random(bch.k); m -Out[3]: GF([1, 0, 0, 0, 0, 1, 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([1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 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)

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

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

Examples

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

diff --git a/v0.3.x/api/galois.BCH.field/index.html b/v0.3.x/api/galois.BCH.field/index.html index 9fe5315f2..43c8929e7 100644 --- a/v0.3.x/api/galois.BCH.field/index.html +++ b/v0.3.x/api/galois.BCH.field/index.html @@ -32,7 +32,7 @@ - + @@ -7738,7 +7738,7 @@
-property galois.BCH.field : type[galois._fields._array.FieldArray]
+property galois.BCH.field : type[FieldArray]

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

Examples

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

diff --git a/v0.3.x/api/galois.BCH.generator_poly/index.html b/v0.3.x/api/galois.BCH.generator_poly/index.html index 4018cf23f..052ea1253 100644 --- a/v0.3.x/api/galois.BCH.generator_poly/index.html +++ b/v0.3.x/api/galois.BCH.generator_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.is_narrow_sense/index.html b/v0.3.x/api/galois.BCH.is_narrow_sense/index.html index 56126d48d..34f2b8e0e 100644 --- a/v0.3.x/api/galois.BCH.is_narrow_sense/index.html +++ b/v0.3.x/api/galois.BCH.is_narrow_sense/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.is_primitive/index.html b/v0.3.x/api/galois.BCH.is_primitive/index.html index b51f3c983..e7e6b9ecb 100644 --- a/v0.3.x/api/galois.BCH.is_primitive/index.html +++ b/v0.3.x/api/galois.BCH.is_primitive/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.is_systematic/index.html b/v0.3.x/api/galois.BCH.is_systematic/index.html index effe2ca10..05c2babe9 100644 --- a/v0.3.x/api/galois.BCH.is_systematic/index.html +++ b/v0.3.x/api/galois.BCH.is_systematic/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.k/index.html b/v0.3.x/api/galois.BCH.k/index.html index fd3bc672f..954d7cbbd 100644 --- a/v0.3.x/api/galois.BCH.k/index.html +++ b/v0.3.x/api/galois.BCH.k/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.n/index.html b/v0.3.x/api/galois.BCH.n/index.html index 3497bfceb..18781d421 100644 --- a/v0.3.x/api/galois.BCH.n/index.html +++ b/v0.3.x/api/galois.BCH.n/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.parity_check_poly/index.html b/v0.3.x/api/galois.BCH.parity_check_poly/index.html index 566046288..3b3cfb60e 100644 --- a/v0.3.x/api/galois.BCH.parity_check_poly/index.html +++ b/v0.3.x/api/galois.BCH.parity_check_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.roots/index.html b/v0.3.x/api/galois.BCH.roots/index.html index 1ad910fb9..4d4111344 100644 --- a/v0.3.x/api/galois.BCH.roots/index.html +++ b/v0.3.x/api/galois.BCH.roots/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH.t/index.html b/v0.3.x/api/galois.BCH.t/index.html index 9625f97fc..fc977d56c 100644 --- a/v0.3.x/api/galois.BCH.t/index.html +++ b/v0.3.x/api/galois.BCH.t/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.BCH/index.html b/v0.3.x/api/galois.BCH/index.html index e85329016..24b8c2328 100644 --- a/v0.3.x/api/galois.BCH/index.html +++ b/v0.3.x/api/galois.BCH/index.html @@ -32,7 +32,7 @@ - + @@ -8063,19 +8063,19 @@

Encode a message.

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

Corrupt the codeword and decode the message.

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

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

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

Properties
-property extension_field : type[galois._fields._array.FieldArray]
+property extension_field : type[FieldArray]

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

-property field : type[galois._fields._array.FieldArray]
+property field : type[FieldArray]

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

diff --git a/v0.3.x/api/galois.FLFSR.Taps/index.html b/v0.3.x/api/galois.FLFSR.Taps/index.html index 86a262d47..04aab9f0d 100644 --- a/v0.3.x/api/galois.FLFSR.Taps/index.html +++ b/v0.3.x/api/galois.FLFSR.Taps/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FLFSR.__init__/index.html b/v0.3.x/api/galois.FLFSR.__init__/index.html index f87234585..377bab452 100644 --- a/v0.3.x/api/galois.FLFSR.__init__/index.html +++ b/v0.3.x/api/galois.FLFSR.__init__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FLFSR.__repr__/index.html b/v0.3.x/api/galois.FLFSR.__repr__/index.html index 85283361d..715802fc3 100644 --- a/v0.3.x/api/galois.FLFSR.__repr__/index.html +++ b/v0.3.x/api/galois.FLFSR.__repr__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FLFSR.__str__/index.html b/v0.3.x/api/galois.FLFSR.__str__/index.html index 0eb4473a9..f6bed1303 100644 --- a/v0.3.x/api/galois.FLFSR.__str__/index.html +++ b/v0.3.x/api/galois.FLFSR.__str__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FLFSR.characteristic_poly/index.html b/v0.3.x/api/galois.FLFSR.characteristic_poly/index.html index bdda92de9..0bc7cc35f 100644 --- a/v0.3.x/api/galois.FLFSR.characteristic_poly/index.html +++ b/v0.3.x/api/galois.FLFSR.characteristic_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FLFSR.feedback_poly/index.html b/v0.3.x/api/galois.FLFSR.feedback_poly/index.html index cf7cdb7e0..e97b4370e 100644 --- a/v0.3.x/api/galois.FLFSR.feedback_poly/index.html +++ b/v0.3.x/api/galois.FLFSR.feedback_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FLFSR.field/index.html b/v0.3.x/api/galois.FLFSR.field/index.html index 5f65e7fe8..bdc05a96c 100644 --- a/v0.3.x/api/galois.FLFSR.field/index.html +++ b/v0.3.x/api/galois.FLFSR.field/index.html @@ -32,7 +32,7 @@ - + @@ -7738,7 +7738,7 @@
-property galois.FLFSR.field : type[galois._fields._array.FieldArray]
+property galois.FLFSR.field : type[FieldArray]

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

Examples

In [1]: c = galois.primitive_poly(7, 4); c
diff --git a/v0.3.x/api/galois.FLFSR.initial_state/index.html b/v0.3.x/api/galois.FLFSR.initial_state/index.html
index 4d47674a4..6aca849a9 100644
--- a/v0.3.x/api/galois.FLFSR.initial_state/index.html
+++ b/v0.3.x/api/galois.FLFSR.initial_state/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FLFSR.order/index.html b/v0.3.x/api/galois.FLFSR.order/index.html
index fb2af0d17..bbebbf3a1 100644
--- a/v0.3.x/api/galois.FLFSR.order/index.html
+++ b/v0.3.x/api/galois.FLFSR.order/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FLFSR.reset/index.html b/v0.3.x/api/galois.FLFSR.reset/index.html
index 2b7070b18..ab30328dd 100644
--- a/v0.3.x/api/galois.FLFSR.reset/index.html
+++ b/v0.3.x/api/galois.FLFSR.reset/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FLFSR.state/index.html b/v0.3.x/api/galois.FLFSR.state/index.html
index 9d37364ac..127eaa069 100644
--- a/v0.3.x/api/galois.FLFSR.state/index.html
+++ b/v0.3.x/api/galois.FLFSR.state/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FLFSR.step/index.html b/v0.3.x/api/galois.FLFSR.step/index.html
index 1addb2d9f..c2bfc8499 100644
--- a/v0.3.x/api/galois.FLFSR.step/index.html
+++ b/v0.3.x/api/galois.FLFSR.step/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FLFSR.taps/index.html b/v0.3.x/api/galois.FLFSR.taps/index.html
index 44e6b6fca..1462bc26c 100644
--- a/v0.3.x/api/galois.FLFSR.taps/index.html
+++ b/v0.3.x/api/galois.FLFSR.taps/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FLFSR.to_galois_lfsr/index.html b/v0.3.x/api/galois.FLFSR.to_galois_lfsr/index.html
index 6b7630ce3..0f52422fc 100644
--- a/v0.3.x/api/galois.FLFSR.to_galois_lfsr/index.html
+++ b/v0.3.x/api/galois.FLFSR.to_galois_lfsr/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FLFSR/index.html b/v0.3.x/api/galois.FLFSR/index.html
index 67746ddcb..4006b99c3 100644
--- a/v0.3.x/api/galois.FLFSR/index.html
+++ b/v0.3.x/api/galois.FLFSR/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -8218,7 +8218,7 @@ 

MethodsProperties

-property field : type[galois._fields._array.FieldArray]
+property field : type[FieldArray]

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

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

Alias of GF().

diff --git a/v0.3.x/api/galois.FieldArray.Identity/index.html b/v0.3.x/api/galois.FieldArray.Identity/index.html index ec95be091..cd87c1463 100644 --- a/v0.3.x/api/galois.FieldArray.Identity/index.html +++ b/v0.3.x/api/galois.FieldArray.Identity/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.Ones/index.html b/v0.3.x/api/galois.FieldArray.Ones/index.html index a23e71e7a..416d9f645 100644 --- a/v0.3.x/api/galois.FieldArray.Ones/index.html +++ b/v0.3.x/api/galois.FieldArray.Ones/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.Random/index.html b/v0.3.x/api/galois.FieldArray.Random/index.html index 04b8ea06a..b33f36309 100644 --- a/v0.3.x/api/galois.FieldArray.Random/index.html +++ b/v0.3.x/api/galois.FieldArray.Random/index.html @@ -32,7 +32,7 @@ - + @@ -7879,8 +7879,8 @@ In [2]: GF.Random((2, 5)) Out[2]: -GF([[ 7, 9, 12, 6, 4], - [21, 11, 16, 14, 22]], order=31) +GF([[20, 5, 11, 24, 13], + [11, 1, 12, 23, 16]], order=31)

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

diff --git a/v0.3.x/api/galois.FieldArray.Range/index.html b/v0.3.x/api/galois.FieldArray.Range/index.html index 1399ad8de..de5858e23 100644 --- a/v0.3.x/api/galois.FieldArray.Range/index.html +++ b/v0.3.x/api/galois.FieldArray.Range/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.Vandermonde/index.html b/v0.3.x/api/galois.FieldArray.Vandermonde/index.html index f67f4b8ac..3db7ca426 100644 --- a/v0.3.x/api/galois.FieldArray.Vandermonde/index.html +++ b/v0.3.x/api/galois.FieldArray.Vandermonde/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.Vector/index.html b/v0.3.x/api/galois.FieldArray.Vector/index.html index 03c9f8800..b954a75bc 100644 --- a/v0.3.x/api/galois.FieldArray.Vector/index.html +++ b/v0.3.x/api/galois.FieldArray.Vector/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.Zeros/index.html b/v0.3.x/api/galois.FieldArray.Zeros/index.html index be3bc3018..bc2640fc4 100644 --- a/v0.3.x/api/galois.FieldArray.Zeros/index.html +++ b/v0.3.x/api/galois.FieldArray.Zeros/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.__init__/index.html b/v0.3.x/api/galois.FieldArray.__init__/index.html index 29aef60c4..bc4677a87 100644 --- a/v0.3.x/api/galois.FieldArray.__init__/index.html +++ b/v0.3.x/api/galois.FieldArray.__init__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.__repr__/index.html b/v0.3.x/api/galois.FieldArray.__repr__/index.html index b279186a7..2d44baff5 100644 --- a/v0.3.x/api/galois.FieldArray.__repr__/index.html +++ b/v0.3.x/api/galois.FieldArray.__repr__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.__str__/index.html b/v0.3.x/api/galois.FieldArray.__str__/index.html index 359cdec13..17fee8b03 100644 --- a/v0.3.x/api/galois.FieldArray.__str__/index.html +++ b/v0.3.x/api/galois.FieldArray.__str__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.additive_order/index.html b/v0.3.x/api/galois.FieldArray.additive_order/index.html index fb74ee4de..f2108f2cb 100644 --- a/v0.3.x/api/galois.FieldArray.additive_order/index.html +++ b/v0.3.x/api/galois.FieldArray.additive_order/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html b/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html index feb557e7d..06814006c 100644 --- a/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html +++ b/v0.3.x/api/galois.FieldArray.arithmetic_table/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.characteristic/index.html b/v0.3.x/api/galois.FieldArray.characteristic/index.html index 10ad7b86a..d0425c516 100644 --- a/v0.3.x/api/galois.FieldArray.characteristic/index.html +++ b/v0.3.x/api/galois.FieldArray.characteristic/index.html @@ -32,7 +32,7 @@ - + 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 73e86e260..c879126f6 100644 --- a/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html +++ b/v0.3.x/api/galois.FieldArray.characteristic_poly/index.html @@ -32,7 +32,7 @@ - + @@ -7835,10 +7835,10 @@
In [1]: GF = galois.GF(3**5)
 
 In [2]: a = GF.Random(); a
-Out[2]: GF(198, order=3^5)
+Out[2]: GF(100, order=3^5)
 
 In [3]: poly = a.characteristic_poly(); poly
-Out[3]: Poly(x^5 + x^4 + x^2 + 1, GF(3))
+Out[3]: Poly(x^5 + x^2 + x + 2, GF(3))
 
 # The characteristic polynomial annihilates a
 In [4]: poly(a, field=GF)
@@ -7850,10 +7850,10 @@
 
In [5]: GF = galois.GF(3**5, repr="poly")
 
 In [6]: a = GF.Random(); a
-Out[6]: GF(α^3 + α^2 + α, order=3^5)
+Out[6]: GF(2α^4 + α^3, order=3^5)
 
 In [7]: poly = a.characteristic_poly(); poly
-Out[7]: Poly(x^5 + 2x^3 + 2x^2 + 2x + 1, GF(3))
+Out[7]: Poly(x^5 + x^4 + 2x + 1, GF(3))
 
 # The characteristic polynomial annihilates a
 In [8]: poly(a, field=GF)
@@ -7865,10 +7865,10 @@
 
In [9]: GF = galois.GF(3**5, repr="power")
 
 In [10]: a = GF.Random(); a
-Out[10]: GF(α^152, order=3^5)
+Out[10]: GF(α^11, order=3^5)
 
 In [11]: poly = a.characteristic_poly(); poly
-Out[11]: Poly(x^5 + x^4 + x^2 + 2x + 2, GF(3))
+Out[11]: Poly(x^5 + 2x^3 + 2x^2 + 2x + 1, GF(3))
 
 # The characteristic polynomial annihilates a
 In [12]: poly(a, field=GF)
@@ -7890,12 +7890,12 @@
 
 In [14]: A = GF.Random((3,3)); A
 Out[14]: 
-GF([[115, 200, 144],
-    [142,  31,  35],
-    [ 12, 231, 236]], order=3^5)
+GF([[ 94,  27, 136],
+    [  4,  50,  39],
+    [134,  95, 178]], order=3^5)
 
 In [15]: poly = A.characteristic_poly(); poly
-Out[15]: Poly(x^3 + 65x^2 + 54x + 65, GF(3^5))
+Out[15]: Poly(x^3 + 80x^2 + 194x + 183, 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 + α^3 + α,          2α^4 + 2α^2 + 2,
-                  α^3 + α + 2],
-    [      α^3 + α^2 + 2α + 1, 2α^4 + α^3 + α^2 + α + 1,
-         α^4 + α^3 + 2α^2 + 2],
-    [          2α^4 + α^3 + α,                 2α^4 + α,
-                 α^4 + 2α + 2]], order=3^5)
+GF([[     2α^4 + α^3 + α^2 + 2α,             α^3 + α^2 + 2α,
+                   α^4 + 2α + 1],
+    [      2α^4 + α^3 + α^2 + α,              α^4 + α^2 + α,
+             α^4 + 2α^3 + α + 1],
+    [                       α^4, 2α^4 + 2α^3 + α^2 + 2α + 1,
+                   α^2 + 2α + 2]], order=3^5)
 
 In [21]: poly = A.characteristic_poly(); poly
-Out[21]: Poly(x^3 + (α^4 + α^3 + 2α^2 + 2α)x^2 + (2α^4 + α^3 + 2α^2 + 2α)x + (α^3 + α), GF(3^5))
+Out[21]: Poly(x^3 + (2α^3 + α + 1)x^2 + (α^3 + 1)x + (2α^4 + 2α^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([[ α^63,  α^31, α^205],
-    [ α^42, α^218,  α^53],
-    [α^222,  α^44,  α^52]], order=3^5)
+GF([[α^190, α^208, α^211],
+    [α^196, α^178, α^160],
+    [ α^84,  α^80,  α^43]], order=3^5)
 
 In [27]: poly = A.characteristic_poly(); poly
-Out[27]: Poly(x^3 + (α^185)x^2 + (α^56)x + 1, GF(3^5))
+Out[27]: Poly(x^3 + (α^195)x^2 + (α^73)x + α^77, 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 d087c07eb..aaaeeba79 100644
--- a/v0.3.x/api/galois.FieldArray.column_space/index.html
+++ b/v0.3.x/api/galois.FieldArray.column_space/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7790,9 +7790,9 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[15,  8, 29, 10, 10],
-    [ 9,  8, 24, 14, 10],
-    [11, 27, 11,  6, 22]], order=31)
+GF([[24, 13, 26, 30,  6],
+    [27, 26,  0, 12, 23],
+    [ 1, 14, 10,  5,  8]], 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, 21, 20, 23],
-    [ 0,  1, 29, 13, 23]], order=31)
+GF([[ 1,  0,  4, 27,  9],
+    [ 0,  1,  0, 25,  2]], order=31)
 
 In [6]: C.shape[0] + N.shape[0] == n
 Out[6]: True
diff --git a/v0.3.x/api/galois.FieldArray.compile/index.html b/v0.3.x/api/galois.FieldArray.compile/index.html
index a64d6a596..939bc91ba 100644
--- a/v0.3.x/api/galois.FieldArray.compile/index.html
+++ b/v0.3.x/api/galois.FieldArray.compile/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.default_ufunc_mode/index.html b/v0.3.x/api/galois.FieldArray.default_ufunc_mode/index.html
index 4a07873cd..6d5f5bb3b 100644
--- a/v0.3.x/api/galois.FieldArray.default_ufunc_mode/index.html
+++ b/v0.3.x/api/galois.FieldArray.default_ufunc_mode/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.degree/index.html b/v0.3.x/api/galois.FieldArray.degree/index.html
index a6bed79d2..9216d2bac 100644
--- a/v0.3.x/api/galois.FieldArray.degree/index.html
+++ b/v0.3.x/api/galois.FieldArray.degree/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.dtypes/index.html b/v0.3.x/api/galois.FieldArray.dtypes/index.html
index 195805f1c..7e49c20e5 100644
--- a/v0.3.x/api/galois.FieldArray.dtypes/index.html
+++ b/v0.3.x/api/galois.FieldArray.dtypes/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.element_repr/index.html b/v0.3.x/api/galois.FieldArray.element_repr/index.html
index cbf2e4d1b..be21c59c5 100644
--- a/v0.3.x/api/galois.FieldArray.element_repr/index.html
+++ b/v0.3.x/api/galois.FieldArray.element_repr/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.elements/index.html b/v0.3.x/api/galois.FieldArray.elements/index.html
index 114cc6cef..7780bff10 100644
--- a/v0.3.x/api/galois.FieldArray.elements/index.html
+++ b/v0.3.x/api/galois.FieldArray.elements/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.field_norm/index.html b/v0.3.x/api/galois.FieldArray.field_norm/index.html
index 90b0f205b..f35f18918 100644
--- a/v0.3.x/api/galois.FieldArray.field_norm/index.html
+++ b/v0.3.x/api/galois.FieldArray.field_norm/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.field_trace/index.html b/v0.3.x/api/galois.FieldArray.field_trace/index.html
index b35d4ea6c..1a0ddfa5f 100644
--- a/v0.3.x/api/galois.FieldArray.field_trace/index.html
+++ b/v0.3.x/api/galois.FieldArray.field_trace/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.irreducible_poly/index.html b/v0.3.x/api/galois.FieldArray.irreducible_poly/index.html
index 6627129a3..2378bf1a8 100644
--- a/v0.3.x/api/galois.FieldArray.irreducible_poly/index.html
+++ b/v0.3.x/api/galois.FieldArray.irreducible_poly/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.is_extension_field/index.html b/v0.3.x/api/galois.FieldArray.is_extension_field/index.html
index 321340e68..15bbd9152 100644
--- a/v0.3.x/api/galois.FieldArray.is_extension_field/index.html
+++ b/v0.3.x/api/galois.FieldArray.is_extension_field/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.is_prime_field/index.html b/v0.3.x/api/galois.FieldArray.is_prime_field/index.html
index 7c5a5e24f..ae58fc883 100644
--- a/v0.3.x/api/galois.FieldArray.is_prime_field/index.html
+++ b/v0.3.x/api/galois.FieldArray.is_prime_field/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html b/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html
index cb88eed32..1b121d9af 100644
--- a/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html
+++ b/v0.3.x/api/galois.FieldArray.is_primitive_poly/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.is_square/index.html b/v0.3.x/api/galois.FieldArray.is_square/index.html
index 2f055fa80..ad1dc9a14 100644
--- a/v0.3.x/api/galois.FieldArray.is_square/index.html
+++ b/v0.3.x/api/galois.FieldArray.is_square/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
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 112a2b8c7..65c643b99 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
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7789,16 +7789,16 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[ 7,  3, 22],
-    [21,  6, 19],
-    [25, 21, 23],
-    [19, 18, 22],
-    [ 5, 20, 30]], order=31)
+GF([[30,  3, 29],
+    [15, 20,  8],
+    [ 7, 25,  5],
+    [ 7, 23, 26],
+    [ 0, 23, 14]], order=31)
 
 In [4]: LN = A.left_null_space(); LN
 Out[4]: 
-GF([[ 1,  0, 11, 22, 15],
-    [ 0,  1,  8,  7, 16]], order=31)
+GF([[ 1,  0, 13, 27, 14],
+    [ 0,  1,  2, 18, 14]], 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 c5456e50e..9231900a1 100644 --- a/v0.3.x/api/galois.FieldArray.log/index.html +++ b/v0.3.x/api/galois.FieldArray.log/index.html @@ -32,7 +32,7 @@ - + @@ -7831,10 +7831,10 @@ Out[2]: GF(3, order=3^5) In [3]: x = GF.Random(10, low=1); x -Out[3]: GF([ 14, 180, 139, 185, 146, 99, 67, 83, 159, 189], order=3^5) +Out[3]: GF([ 90, 68, 119, 218, 237, 20, 227, 215, 53, 226], order=3^5) In [4]: i = x.log(); i -Out[4]: array([209, 169, 59, 38, 219, 76, 39, 120, 161, 129]) +Out[4]: array([ 48, 200, 118, 44, 96, 167, 146, 175, 160, 187]) In [5]: np.array_equal(alpha ** i, x) Out[5]: True @@ -7849,14 +7849,13 @@ In [8]: x = GF.Random(10, low=1); x Out[8]: -GF([ α^4 + 2α^3 + 2α^2, α^3 + 2α + 1, - 2α^4, α^4 + 2α^2 + α + 2, - α^4 + α^2 + α, α^4 + 2α^3 + 2α^2 + α + 2, - α^3 + 2α^2 + α, 2α^3 + α^2 + 2, - 2α + 2, α^4 + 2α^3 + α^2 + 2α + 1], order=3^5) +GF([ α^2 + α + 1, α^4 + α^3 + 2α^2 + α, α^3 + 1, + α^3 + α^2 + α + 1, 2α^4 + α^3 + 2, α^3 + 2α^2 + 2α, + 2α^3 + α^2 + α, 2α^4 + α^3 + α + 1, 2α^3 + α^2 + α, + α^3 + α^2 + α + 2], order=3^5) In [9]: i = x.log(); i -Out[9]: array([224, 198, 125, 232, 215, 145, 139, 233, 190, 174]) +Out[9]: array([ 10, 31, 207, 115, 220, 223, 102, 147, 102, 216]) In [10]: np.array_equal(alpha ** i, x) Out[10]: True @@ -7871,11 +7870,11 @@ In [13]: x = GF.Random(10, low=1); x Out[13]: -GF([α^202, α^239, α^12, α^230, α^147, α^170, α^104, α^137, α^180, α^45], +GF([α^114, α^104, α^85, α^212, α^115, α^12, α^217, α^240, α^96, α^197], order=3^5) In [14]: i = x.log(); i -Out[14]: array([202, 239, 12, 230, 147, 170, 104, 137, 180, 45]) +Out[14]: array([114, 104, 85, 212, 115, 12, 217, 240, 96, 197]) In [15]: np.array_equal(alpha ** i, x) Out[15]: True @@ -7902,7 +7901,7 @@ Out[17]: GF(242, order=3^5) In [18]: i = x.log(beta); i -Out[18]: array([196, 51, 38, 204, 163, 14, 168, 91, 86, 203]) +Out[18]: array([240, 168, 7, 26, 223, 38, 183, 34, 62, 39]) In [19]: np.array_equal(beta ** i, x) Out[19]: True @@ -7914,7 +7913,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([196, 51, 38, 204, 163, 14, 168, 91, 86, 203]) +Out[21]: array([240, 168, 7, 26, 223, 38, 183, 34, 62, 39]) In [22]: np.array_equal(beta ** i, x) Out[22]: True @@ -7926,7 +7925,7 @@ Out[23]: GF(α^185, order=3^5) In [24]: i = x.log(beta); i -Out[24]: array([196, 51, 38, 204, 163, 14, 168, 91, 86, 203]) +Out[24]: array([240, 168, 7, 26, 223, 38, 183, 34, 62, 39]) In [25]: np.array_equal(beta ** i, x) Out[25]: True @@ -7944,21 +7943,21 @@
In [26]: x = GF.Random(low=1); x
-Out[26]: GF(161, order=3^5)
+Out[26]: GF(223, order=3^5)
 
 In [27]: bases = GF.primitive_elements
 
 In [28]: i = x.log(bases); i
 Out[28]: 
-array([203,  31,  89,  41, 145, 107, 175, 129, 197,  15, 105, 229,  91,
-       191,  97, 177, 135, 219, 221,  51,  67,  29, 139,  43, 227,  53,
-       217,  23,   9,  85, 241, 215,   5,  35, 183,  19,  71, 205, 109,
-         3, 155, 151, 233, 181, 199, 213, 131, 201, 239,  87, 161,  79,
-       123, 193, 173, 163,  69, 115, 141, 147, 169, 185, 149,  63,  61,
-       195, 117,   1,  81,  39, 111, 225, 157,  83,  17, 235,   7, 137,
-        37,  75, 133,  21, 171, 101,  59, 113, 207, 103,  57, 119, 189,
-       211, 223,  95, 237, 127,  65,  73,  45, 167, 159,  93,  25, 125,
-        47,  49,  27,  13, 153, 179])
+array([134,  30, 172, 188, 234, 166, 224,  78, 136, 116,  86, 206,  10,
+       138,   8,  62,  76,  48, 128, 104,  18, 192, 236,  26, 126, 184,
+       210, 194, 118,  12, 202, 130, 200, 190,  60,  34, 178, 214,   4,
+       120, 150, 232, 124, 222, 216,  50, 158,  54, 122,  92, 148,  14,
+        80, 218, 144, 228,  98,   2,  74,  72, 226, 140, 152, 100,  20,
+        56,  82,  40,  94, 108,  84,  46, 230, 174, 196, 204,  38, 156,
+        28,  96, 238, 114,  64, 168, 182, 164,  52,   6, 102, 162,  58,
+       212, 208, 170,  42, 240, 180,  16, 106, 146,  68,  90,  32, 160,
+       186,  24, 112,  36,  70, 142])
 
 In [29]: np.all(bases ** i == x)
 Out[29]: True
@@ -7967,21 +7966,21 @@
 
In [30]: x = GF.Random(low=1); x
-Out[30]: GF(α, order=3^5)
+Out[30]: GF(2α^4 + 2α^3 + 2α + 2, order=3^5)
 
 In [31]: bases = GF.primitive_elements
 
 In [32]: i = x.log(bases); i
 Out[32]: 
-array([  1, 235,  97,  61, 139, 171, 101, 127,  57, 223, 109,  81, 159,
-       113, 103, 163,  71,  13,  75, 129, 141, 173, 195, 123,  19, 191,
-       193, 229,  37, 215, 211, 131, 155, 117, 107, 105,  23,  63, 233,
-        93, 207,  83, 205,  45, 119,  69, 189, 181, 149,  35, 151,  29,
-       183, 175,  39, 213, 203, 177,  15, 201, 157, 169,  21,  17, 197,
-       237, 239,  31,  91, 241,  53, 199,  27, 153,  43,  25, 217, 133,
-       179, 147,   9, 167, 219, 227, 135, 115, 125,  47,  73,  59,  51,
-         7, 137,  41,  87,  65,  79,  85, 185,  95,  89, 221,  49,   3,
-         5,  67, 111, 161, 145, 225])
+array([155, 125,  31,  17,   7, 127, 167,  83, 123, 201, 197, 213, 203,
+        91, 235,  97, 115,  79,   9, 151,  75, 195, 217, 189,  41,  81,
+       149, 163, 169, 171,  35, 219,  67, 227, 129,  61, 177,  85,  57,
+       137, 141,  39,  73, 199,  53,  47,  13, 225, 105, 101, 173, 139,
+        51,  21, 237, 103,   5,  89, 147, 179, 135,  59, 109, 215,  43,
+       193,  19, 207,  69,  87, 229, 111,  71, 241, 131,   3, 239,  45,
+       157,  37, 185, 233,  65,  95, 113, 159,  15,  25, 183, 191, 161,
+       117, 181,  63, 175, 153, 145, 107, 119, 205,   1, 133,  93, 223,
+        49, 221,  23,  29, 211,  27])
 
 In [33]: np.all(bases ** i == x)
 Out[33]: True
@@ -7990,21 +7989,21 @@
 
In [34]: x = GF.Random(low=1); x
-Out[34]: GF(α^123, order=3^5)
+Out[34]: GF(α^195, order=3^5)
 
 In [35]: bases = GF.primitive_elements
 
 In [36]: i = x.log(bases); i
 Out[36]: 
-array([123, 107,  73,   1, 157, 221,  81, 133, 235,  83,  97,  41, 197,
-       105,  85, 205,  21, 147,  29, 137, 161, 225,  27, 125, 159,  19,
-        23,  95, 195,  67,  59, 141, 189, 113,  93,  89, 167,   5, 103,
-        65,  51,  45,  47, 211, 117,  17,  15, 241, 177, 191, 181, 179,
-         3, 229, 199,  63,  43, 233, 151,  39, 193, 217, 163, 155,  31,
-       111, 115, 183,  61, 119, 227,  35, 175, 185, 207, 171,  71, 145,
-       237, 173, 139, 213,  75,  91, 149, 109, 129, 215,  25, 239, 223,
-       135, 153, 203,  53,   9,  37,  49,   7,  69,  57,  79, 219, 127,
-       131,  13, 101, 201, 169,  87])
+array([195,  87,  39,  37,   1, 191,  93,  81, 225, 167, 201,  65,  29,
+        13, 241,  83,  51, 115, 105, 229, 149,  97,  31,  27,  75, 219,
+       125, 127, 197,  59,   5, 135, 217,  67,  53, 147, 129, 185, 181,
+       227, 193, 213,  45,  63, 215, 145,  71, 205,  15,  49, 163,  89,
+       111,   3, 103, 153, 139, 151,  21, 233, 123,  43, 223, 169, 179,
+       235, 141, 237,  79,  47, 171,  85, 183,  69, 157,  35, 207,  41,
+        57, 109,  61, 137, 113, 221, 189, 161, 175, 211, 199, 131,  23,
+       155,  95,   9,  25,  91, 159, 119,  17, 133, 173,  19, 117, 101,
+         7, 239, 107, 177, 203,  73])
 
 In [37]: np.all(bases ** i == x)
 Out[37]: True
diff --git a/v0.3.x/api/galois.FieldArray.lu_decompose/index.html b/v0.3.x/api/galois.FieldArray.lu_decompose/index.html
index 7a65f427f..ec0ed17d2 100644
--- a/v0.3.x/api/galois.FieldArray.lu_decompose/index.html
+++ b/v0.3.x/api/galois.FieldArray.lu_decompose/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
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 7a36bbbe5..b8595715a 100644
--- a/v0.3.x/api/galois.FieldArray.minimal_poly/index.html
+++ b/v0.3.x/api/galois.FieldArray.minimal_poly/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7831,10 +7831,10 @@
 
In [1]: GF = galois.GF(3**5)
 
 In [2]: a = GF.Random(); a
-Out[2]: GF(157, order=3^5)
+Out[2]: GF(27, order=3^5)
 
 In [3]: poly = a.minimal_poly(); poly
-Out[3]: Poly(x^5 + 2x^3 + x^2 + 2x + 2, GF(3))
+Out[3]: Poly(x^5 + 2x + 1, GF(3))
 
 # The minimal polynomial annihilates a
 In [4]: poly(a, field=GF)
@@ -7850,10 +7850,10 @@
 
In [6]: GF = galois.GF(3**5, repr="poly")
 
 In [7]: a = GF.Random(); a
-Out[7]: GF(α^4 + 2α^3 + 2α^2 + α + 2, order=3^5)
+Out[7]: GF(α^4 + α^3 + α^2 + α + 2, order=3^5)
 
 In [8]: poly = a.minimal_poly(); poly
-Out[8]: Poly(x^5 + x^4 + 2x + 1, GF(3))
+Out[8]: Poly(x^5 + x^4 + x^3 + x + 1, GF(3))
 
 # The minimal polynomial annihilates a
 In [9]: poly(a, field=GF)
@@ -7869,10 +7869,10 @@
 
In [11]: GF = galois.GF(3**5, repr="power")
 
 In [12]: a = GF.Random(); a
-Out[12]: GF(α^120, order=3^5)
+Out[12]: GF(α^169, order=3^5)
 
 In [13]: poly = a.minimal_poly(); poly
-Out[13]: Poly(x^5 + x^4 + 2, GF(3))
+Out[13]: Poly(x^5 + x^4 + x^3 + 2x^2 + x + 1, GF(3))
 
 # The minimal polynomial annihilates a
 In [14]: poly(a, field=GF)
diff --git a/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html b/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html
index 5d3153b9e..747645c06 100644
--- a/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html
+++ b/v0.3.x/api/galois.FieldArray.multiplicative_order/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.name/index.html b/v0.3.x/api/galois.FieldArray.name/index.html
index 5be13201d..7b5f2034a 100644
--- a/v0.3.x/api/galois.FieldArray.name/index.html
+++ b/v0.3.x/api/galois.FieldArray.name/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.non_squares/index.html b/v0.3.x/api/galois.FieldArray.non_squares/index.html
index d94193905..ee4d8e7d7 100644
--- a/v0.3.x/api/galois.FieldArray.non_squares/index.html
+++ b/v0.3.x/api/galois.FieldArray.non_squares/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
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 f3d14b1b3..a9dd06e2e 100644
--- a/v0.3.x/api/galois.FieldArray.null_space/index.html
+++ b/v0.3.x/api/galois.FieldArray.null_space/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7789,14 +7789,14 @@
 
 In [3]: A = GF.Random((m, n)); A
 Out[3]: 
-GF([[ 1, 28, 24, 11, 14],
-    [ 4, 16, 30, 22, 20],
-    [ 5,  3, 30,  6,  0]], order=31)
+GF([[29, 30, 30,  6, 13],
+    [18, 24, 14,  6, 18],
+    [11,  6,  1, 12, 19]], order=31)
 
 In [4]: N = A.null_space(); N
 Out[4]: 
-GF([[ 1,  0,  1, 20, 29],
-    [ 0,  1, 29, 25, 15]], order=31)
+GF([[ 1,  0, 15, 16, 13],
+    [ 0,  1, 15, 18, 12]], order=31)
 

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

diff --git a/v0.3.x/api/galois.FieldArray.order/index.html b/v0.3.x/api/galois.FieldArray.order/index.html index e550104e5..9849c9c48 100644 --- a/v0.3.x/api/galois.FieldArray.order/index.html +++ b/v0.3.x/api/galois.FieldArray.order/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.plu_decompose/index.html b/v0.3.x/api/galois.FieldArray.plu_decompose/index.html index eafd69e03..bca9f8f25 100644 --- a/v0.3.x/api/galois.FieldArray.plu_decompose/index.html +++ b/v0.3.x/api/galois.FieldArray.plu_decompose/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.prime_subfield/index.html b/v0.3.x/api/galois.FieldArray.prime_subfield/index.html index d4d5b4c75..6d511701a 100644 --- a/v0.3.x/api/galois.FieldArray.prime_subfield/index.html +++ b/v0.3.x/api/galois.FieldArray.prime_subfield/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.primitive_element/index.html b/v0.3.x/api/galois.FieldArray.primitive_element/index.html index 80d6b3d4d..fe770ef37 100644 --- a/v0.3.x/api/galois.FieldArray.primitive_element/index.html +++ b/v0.3.x/api/galois.FieldArray.primitive_element/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.primitive_elements/index.html b/v0.3.x/api/galois.FieldArray.primitive_elements/index.html index 8282469b8..83bf3334b 100644 --- a/v0.3.x/api/galois.FieldArray.primitive_elements/index.html +++ b/v0.3.x/api/galois.FieldArray.primitive_elements/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html b/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html index 0b41f1461..8a843f983 100644 --- a/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html +++ b/v0.3.x/api/galois.FieldArray.primitive_root_of_unity/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html b/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html index 02da29a0c..3c930ba40 100644 --- a/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html +++ b/v0.3.x/api/galois.FieldArray.primitive_roots_of_unity/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.properties/index.html b/v0.3.x/api/galois.FieldArray.properties/index.html index 644b5887a..708334101 100644 --- a/v0.3.x/api/galois.FieldArray.properties/index.html +++ b/v0.3.x/api/galois.FieldArray.properties/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.repr/index.html b/v0.3.x/api/galois.FieldArray.repr/index.html index f5f320136..c4a5b1546 100644 --- a/v0.3.x/api/galois.FieldArray.repr/index.html +++ b/v0.3.x/api/galois.FieldArray.repr/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.repr_table/index.html b/v0.3.x/api/galois.FieldArray.repr_table/index.html index 168984324..4f18071a1 100644 --- a/v0.3.x/api/galois.FieldArray.repr_table/index.html +++ b/v0.3.x/api/galois.FieldArray.repr_table/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.FieldArray.row_reduce/index.html b/v0.3.x/api/galois.FieldArray.row_reduce/index.html index d15e776d9..5ade55e80 100644 --- a/v0.3.x/api/galois.FieldArray.row_reduce/index.html +++ b/v0.3.x/api/galois.FieldArray.row_reduce/index.html @@ -32,7 +32,7 @@ - + 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 a4f8cde46..7627adf19 100644 --- a/v0.3.x/api/galois.FieldArray.row_space/index.html +++ b/v0.3.x/api/galois.FieldArray.row_space/index.html @@ -32,7 +32,7 @@ - + @@ -7790,11 +7790,11 @@ In [3]: A = GF.Random((m, n)); A Out[3]: -GF([[21, 28, 18], - [ 8, 11, 1], - [15, 24, 14], - [10, 21, 14], - [19, 25, 28]], order=31) +GF([[22, 15, 13], + [19, 9, 19], + [ 9, 7, 23], + [19, 13, 28], + [ 5, 23, 20]], 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, 29,  0,  7],
-    [ 0,  1, 11, 26, 18]], order=31)
+GF([[ 1,  0,  2,  5,  4],
+    [ 0,  1, 28, 19, 10]], order=31)
 
 In [6]: R.shape[0] + LN.shape[0] == m
 Out[6]: True
diff --git a/v0.3.x/api/galois.FieldArray.squares/index.html b/v0.3.x/api/galois.FieldArray.squares/index.html
index b96285980..585292d53 100644
--- a/v0.3.x/api/galois.FieldArray.squares/index.html
+++ b/v0.3.x/api/galois.FieldArray.squares/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.ufunc_mode/index.html b/v0.3.x/api/galois.FieldArray.ufunc_mode/index.html
index 1e7888738..481f8e8d6 100644
--- a/v0.3.x/api/galois.FieldArray.ufunc_mode/index.html
+++ b/v0.3.x/api/galois.FieldArray.ufunc_mode/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html b/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html
index 375d985e0..f68a18c63 100644
--- a/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html
+++ b/v0.3.x/api/galois.FieldArray.ufunc_modes/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.units/index.html b/v0.3.x/api/galois.FieldArray.units/index.html
index 2bd10dca9..25538fc15 100644
--- a/v0.3.x/api/galois.FieldArray.units/index.html
+++ b/v0.3.x/api/galois.FieldArray.units/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray.vector/index.html b/v0.3.x/api/galois.FieldArray.vector/index.html
index b8c59e7ff..0b95e0131 100644
--- a/v0.3.x/api/galois.FieldArray.vector/index.html
+++ b/v0.3.x/api/galois.FieldArray.vector/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.FieldArray/index.html b/v0.3.x/api/galois.FieldArray/index.html
index 2a712c13f..7d6786ffd 100644
--- a/v0.3.x/api/galois.FieldArray/index.html
+++ b/v0.3.x/api/galois.FieldArray/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GF/index.html b/v0.3.x/api/galois.GF/index.html
index 184e95609..3b82e649d 100644
--- a/v0.3.x/api/galois.GF/index.html
+++ b/v0.3.x/api/galois.GF/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7872,9 +7872,9 @@
 
 
-galois.GF(order: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[galois._fields._array.FieldArray]
+galois.GF(order: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]
-galois.GF(characteristic: int, degree: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[galois._fields._array.FieldArray]
+galois.GF(characteristic: int, degree: int, *, irreducible_poly: PolyLike | None = None, primitive_element: int | PolyLike | None = None, verify: bool = True, compile: 'auto' | 'jit-lookup' | 'jit-calculate' | 'python-calculate' | None = None, repr: 'int' | 'poly' | 'power' | None = None) type[FieldArray]

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

Parameters:
diff --git a/v0.3.x/api/galois.GF2/index.html b/v0.3.x/api/galois.GF2/index.html index a6c89ac7a..500f70a6f 100644 --- a/v0.3.x/api/galois.GF2/index.html +++ b/v0.3.x/api/galois.GF2/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.GLFSR.Taps/index.html b/v0.3.x/api/galois.GLFSR.Taps/index.html index c487e2e7e..5d5fdf688 100644 --- a/v0.3.x/api/galois.GLFSR.Taps/index.html +++ b/v0.3.x/api/galois.GLFSR.Taps/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.GLFSR.__init__/index.html b/v0.3.x/api/galois.GLFSR.__init__/index.html index b31668953..30a8101b7 100644 --- a/v0.3.x/api/galois.GLFSR.__init__/index.html +++ b/v0.3.x/api/galois.GLFSR.__init__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.GLFSR.__repr__/index.html b/v0.3.x/api/galois.GLFSR.__repr__/index.html index 600a2960e..d30dcc185 100644 --- a/v0.3.x/api/galois.GLFSR.__repr__/index.html +++ b/v0.3.x/api/galois.GLFSR.__repr__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.GLFSR.__str__/index.html b/v0.3.x/api/galois.GLFSR.__str__/index.html index 6e3b2d619..da0e64d69 100644 --- a/v0.3.x/api/galois.GLFSR.__str__/index.html +++ b/v0.3.x/api/galois.GLFSR.__str__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.GLFSR.characteristic_poly/index.html b/v0.3.x/api/galois.GLFSR.characteristic_poly/index.html index 6c3e0cf6b..3fc942ba9 100644 --- a/v0.3.x/api/galois.GLFSR.characteristic_poly/index.html +++ b/v0.3.x/api/galois.GLFSR.characteristic_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.GLFSR.feedback_poly/index.html b/v0.3.x/api/galois.GLFSR.feedback_poly/index.html index 38239fcc8..fda79efe3 100644 --- a/v0.3.x/api/galois.GLFSR.feedback_poly/index.html +++ b/v0.3.x/api/galois.GLFSR.feedback_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.GLFSR.field/index.html b/v0.3.x/api/galois.GLFSR.field/index.html index d8ed970cf..f73284d2a 100644 --- a/v0.3.x/api/galois.GLFSR.field/index.html +++ b/v0.3.x/api/galois.GLFSR.field/index.html @@ -32,7 +32,7 @@ - + @@ -7738,7 +7738,7 @@
-property galois.GLFSR.field : type[galois._fields._array.FieldArray]
+property galois.GLFSR.field : type[FieldArray]

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

Examples

In [1]: c = galois.primitive_poly(7, 4); c
diff --git a/v0.3.x/api/galois.GLFSR.initial_state/index.html b/v0.3.x/api/galois.GLFSR.initial_state/index.html
index aaad2c4f4..b00e2e764 100644
--- a/v0.3.x/api/galois.GLFSR.initial_state/index.html
+++ b/v0.3.x/api/galois.GLFSR.initial_state/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GLFSR.order/index.html b/v0.3.x/api/galois.GLFSR.order/index.html
index 0469f2919..949890489 100644
--- a/v0.3.x/api/galois.GLFSR.order/index.html
+++ b/v0.3.x/api/galois.GLFSR.order/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GLFSR.reset/index.html b/v0.3.x/api/galois.GLFSR.reset/index.html
index 928881957..e0c446247 100644
--- a/v0.3.x/api/galois.GLFSR.reset/index.html
+++ b/v0.3.x/api/galois.GLFSR.reset/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GLFSR.state/index.html b/v0.3.x/api/galois.GLFSR.state/index.html
index 4e6dc1722..059fe3335 100644
--- a/v0.3.x/api/galois.GLFSR.state/index.html
+++ b/v0.3.x/api/galois.GLFSR.state/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GLFSR.step/index.html b/v0.3.x/api/galois.GLFSR.step/index.html
index e672e13f7..164ed3a1a 100644
--- a/v0.3.x/api/galois.GLFSR.step/index.html
+++ b/v0.3.x/api/galois.GLFSR.step/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GLFSR.taps/index.html b/v0.3.x/api/galois.GLFSR.taps/index.html
index 047566803..8218aacf9 100644
--- a/v0.3.x/api/galois.GLFSR.taps/index.html
+++ b/v0.3.x/api/galois.GLFSR.taps/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GLFSR.to_fibonacci_lfsr/index.html b/v0.3.x/api/galois.GLFSR.to_fibonacci_lfsr/index.html
index 9ccb86e9d..2fb7f04a0 100644
--- a/v0.3.x/api/galois.GLFSR.to_fibonacci_lfsr/index.html
+++ b/v0.3.x/api/galois.GLFSR.to_fibonacci_lfsr/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.GLFSR/index.html b/v0.3.x/api/galois.GLFSR/index.html
index 83af020a3..9e9a79806 100644
--- a/v0.3.x/api/galois.GLFSR/index.html
+++ b/v0.3.x/api/galois.GLFSR/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -8215,7 +8215,7 @@ 

MethodsProperties

-property field : type[galois._fields._array.FieldArray]
+property field : type[FieldArray]

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

diff --git a/v0.3.x/api/galois.Poly.Degrees/index.html b/v0.3.x/api/galois.Poly.Degrees/index.html index 7815a30dd..804377813 100644 --- a/v0.3.x/api/galois.Poly.Degrees/index.html +++ b/v0.3.x/api/galois.Poly.Degrees/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.Identity/index.html b/v0.3.x/api/galois.Poly.Identity/index.html index 2fde8673f..49814eb6a 100644 --- a/v0.3.x/api/galois.Poly.Identity/index.html +++ b/v0.3.x/api/galois.Poly.Identity/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.Int/index.html b/v0.3.x/api/galois.Poly.Int/index.html index 198195cfa..e2ccc4b9c 100644 --- a/v0.3.x/api/galois.Poly.Int/index.html +++ b/v0.3.x/api/galois.Poly.Int/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.One/index.html b/v0.3.x/api/galois.Poly.One/index.html index 253767463..509da83ab 100644 --- a/v0.3.x/api/galois.Poly.One/index.html +++ b/v0.3.x/api/galois.Poly.One/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.Random/index.html b/v0.3.x/api/galois.Poly.Random/index.html index 58b5ec94c..64277654a 100644 --- a/v0.3.x/api/galois.Poly.Random/index.html +++ b/v0.3.x/api/galois.Poly.Random/index.html @@ -32,7 +32,7 @@ - + @@ -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^4 + x^2, GF(2))
+Out[1]: Poly(x^5 + x^4 + x^3, GF(2))
 

Construct a random degree-5 polynomial over \(\mathrm{GF}(3^5)\) with a given seed. This produces diff --git a/v0.3.x/api/galois.Poly.Roots/index.html b/v0.3.x/api/galois.Poly.Roots/index.html index 642c755e9..af245a68d 100644 --- a/v0.3.x/api/galois.Poly.Roots/index.html +++ b/v0.3.x/api/galois.Poly.Roots/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.Str/index.html b/v0.3.x/api/galois.Poly.Str/index.html index 71abd9da7..747ff81ad 100644 --- a/v0.3.x/api/galois.Poly.Str/index.html +++ b/v0.3.x/api/galois.Poly.Str/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.Zero/index.html b/v0.3.x/api/galois.Poly.Zero/index.html index 16ded7112..ac3efd587 100644 --- a/v0.3.x/api/galois.Poly.Zero/index.html +++ b/v0.3.x/api/galois.Poly.Zero/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.__call__/index.html b/v0.3.x/api/galois.Poly.__call__/index.html index 0db69d3a6..870e377e5 100644 --- a/v0.3.x/api/galois.Poly.__call__/index.html +++ b/v0.3.x/api/galois.Poly.__call__/index.html @@ -32,7 +32,7 @@ - + @@ -7820,7 +7820,7 @@

-galois.Poly.__call__(at: ElementLike | ArrayLike, field: type[galois._domains._array.Array] | None = None, elementwise: bool = True) Array
+galois.Poly.__call__(at: ElementLike | ArrayLike, field: type[Array] | None = None, elementwise: bool = True) Array
galois.Poly.__call__(at: Poly) Poly

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

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

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

-
field: type[galois._domains._array.Array] | None = None

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

field: type[Array] | None = None

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

elementwise: bool = True

Indicates whether to evaluate \(x_0\) element-wise. The default is True. If False diff --git a/v0.3.x/api/galois.Poly.__eq__/index.html b/v0.3.x/api/galois.Poly.__eq__/index.html index afd79cf8e..ed3e785c7 100644 --- a/v0.3.x/api/galois.Poly.__eq__/index.html +++ b/v0.3.x/api/galois.Poly.__eq__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.__init__/index.html b/v0.3.x/api/galois.Poly.__init__/index.html index 17125473e..b82a87596 100644 --- a/v0.3.x/api/galois.Poly.__init__/index.html +++ b/v0.3.x/api/galois.Poly.__init__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.__int__/index.html b/v0.3.x/api/galois.Poly.__int__/index.html index 4844c6985..f8679ced1 100644 --- a/v0.3.x/api/galois.Poly.__int__/index.html +++ b/v0.3.x/api/galois.Poly.__int__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.__len__/index.html b/v0.3.x/api/galois.Poly.__len__/index.html index b8810ebe2..9c950002a 100644 --- a/v0.3.x/api/galois.Poly.__len__/index.html +++ b/v0.3.x/api/galois.Poly.__len__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.__repr__/index.html b/v0.3.x/api/galois.Poly.__repr__/index.html index 8c808ae7d..64efebdd4 100644 --- a/v0.3.x/api/galois.Poly.__repr__/index.html +++ b/v0.3.x/api/galois.Poly.__repr__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.__str__/index.html b/v0.3.x/api/galois.Poly.__str__/index.html index 8c44baa3a..8c452e361 100644 --- a/v0.3.x/api/galois.Poly.__str__/index.html +++ b/v0.3.x/api/galois.Poly.__str__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.coefficients/index.html b/v0.3.x/api/galois.Poly.coefficients/index.html index c3910d656..4b820da36 100644 --- a/v0.3.x/api/galois.Poly.coefficients/index.html +++ b/v0.3.x/api/galois.Poly.coefficients/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.coeffs/index.html b/v0.3.x/api/galois.Poly.coeffs/index.html index dcec084f7..7bfb6fc75 100644 --- a/v0.3.x/api/galois.Poly.coeffs/index.html +++ b/v0.3.x/api/galois.Poly.coeffs/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.degree/index.html b/v0.3.x/api/galois.Poly.degree/index.html index 787b0d63d..68714ad65 100644 --- a/v0.3.x/api/galois.Poly.degree/index.html +++ b/v0.3.x/api/galois.Poly.degree/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.degrees/index.html b/v0.3.x/api/galois.Poly.degrees/index.html index 2aeab5fe1..70e9fd0c2 100644 --- a/v0.3.x/api/galois.Poly.degrees/index.html +++ b/v0.3.x/api/galois.Poly.degrees/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.Poly.derivative/index.html b/v0.3.x/api/galois.Poly.derivative/index.html index afc9c61f9..4e365651f 100644 --- a/v0.3.x/api/galois.Poly.derivative/index.html +++ b/v0.3.x/api/galois.Poly.derivative/index.html @@ -32,7 +32,7 @@ - + @@ -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^4 + x^2 + 1, GF(2))
+Out[1]: Poly(x^7 + x^6 + x^5 + x^3 + x^2, GF(2))
 
 In [2]: f.derivative()
-Out[2]: Poly(x^6, GF(2))
+Out[2]: Poly(x^6 + x^4 + x^2, GF(2))
 
 # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
 In [3]: f.derivative(GF.characteristic)
@@ -7867,16 +7867,16 @@
 
In [4]: GF = galois.GF(7)
 
 In [5]: f = galois.Poly.Random(11, field=GF); f
-Out[5]: Poly(4x^11 + 6x^10 + 2x^9 + 2x^8 + 3x^6 + x^5 + 2x^3 + 2x^2 + 2x + 4, GF(7))
+Out[5]: Poly(4x^11 + 4x^10 + 5x^8 + x^7 + 2x^6 + 2x^5 + 5x^4 + 6x^3 + 3x + 1, GF(7))
 
 In [6]: f.derivative()
-Out[6]: Poly(2x^10 + 4x^9 + 4x^8 + 2x^7 + 4x^5 + 5x^4 + 6x^2 + 4x + 2, GF(7))
+Out[6]: Poly(2x^10 + 5x^9 + 5x^7 + 5x^5 + 3x^4 + 6x^3 + 4x^2 + 3, GF(7))
 
 In [7]: f.derivative(2)
-Out[7]: Poly(6x^9 + x^8 + 4x^7 + 6x^4 + 6x^3 + 5x + 4, GF(7))
+Out[7]: Poly(6x^9 + 3x^8 + 4x^4 + 5x^3 + 4x^2 + x, GF(7))
 
 In [8]: f.derivative(3)
-Out[8]: Poly(5x^8 + x^7 + 3x^3 + 4x^2 + 5, GF(7))
+Out[8]: Poly(5x^8 + 3x^7 + 2x^3 + x^2 + x + 1, 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(126x^7 + 35x^6 + 170x^5 + 108x^4 + 193x^3 + 141x^2 + 186x + 241, GF(3^5))
+Out[11]: Poly(118x^7 + 68x^6 + 170x^5 + 150x^4 + 120x^3 + 205x^2 + 52x + 111, GF(3^5))
 
 In [12]: f.derivative()
-Out[12]: Poly(126x^6 + 85x^4 + 108x^3 + 192x + 186, GF(3^5))
+Out[12]: Poly(118x^6 + 85x^4 + 150x^3 + 158x + 52, GF(3^5))
 
 In [13]: f.derivative(2)
-Out[13]: Poly(85x^3 + 192, GF(3^5))
+Out[13]: Poly(85x^3 + 158, GF(3^5))
 
 # p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
 In [14]: f.derivative(GF.characteristic)
diff --git a/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html b/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html
index e256141e9..ca57486be 100644
--- a/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html
+++ b/v0.3.x/api/galois.Poly.distinct_degree_factors/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.equal_degree_factors/index.html b/v0.3.x/api/galois.Poly.equal_degree_factors/index.html
index 289bd4c76..5efabc511 100644
--- a/v0.3.x/api/galois.Poly.equal_degree_factors/index.html
+++ b/v0.3.x/api/galois.Poly.equal_degree_factors/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.factors/index.html b/v0.3.x/api/galois.Poly.factors/index.html
index 1c397f75d..97ff2aeb0 100644
--- a/v0.3.x/api/galois.Poly.factors/index.html
+++ b/v0.3.x/api/galois.Poly.factors/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.field/index.html b/v0.3.x/api/galois.Poly.field/index.html
index 9bad88002..7d594a87b 100644
--- a/v0.3.x/api/galois.Poly.field/index.html
+++ b/v0.3.x/api/galois.Poly.field/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7738,11 +7738,11 @@
 
 
-property galois.Poly.field : type[galois._domains._array.Array]
+property galois.Poly.field : type[Array]

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

Examples

In [1]: a = galois.Poly.Random(5); a
-Out[1]: Poly(x^5 + x^3 + x^2, GF(2))
+Out[1]: Poly(x^5 + x^4 + 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(44x^5 + 38x^4 + 78x^3 + 113x^2 + 89x + 132, GF(2^8))
+Out[4]: Poly(125x^5 + 102x^4 + 22x^3 + 26x^2 + 178x + 254, GF(2^8))
 
 In [5]: b.field
 Out[5]: <class 'galois.GF(2^8)'>
diff --git a/v0.3.x/api/galois.Poly.is_conway/index.html b/v0.3.x/api/galois.Poly.is_conway/index.html
index f8865c38e..fc47acc8c 100644
--- a/v0.3.x/api/galois.Poly.is_conway/index.html
+++ b/v0.3.x/api/galois.Poly.is_conway/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.is_conway_consistent/index.html b/v0.3.x/api/galois.Poly.is_conway_consistent/index.html
index 209822394..3770d4e48 100644
--- a/v0.3.x/api/galois.Poly.is_conway_consistent/index.html
+++ b/v0.3.x/api/galois.Poly.is_conway_consistent/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
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 1735d4f95..8f10a1eab 100644
--- a/v0.3.x/api/galois.Poly.is_irreducible/index.html
+++ b/v0.3.x/api/galois.Poly.is_irreducible/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7826,13 +7826,13 @@
 
In [4]: g = galois.irreducible_poly(2**4, 2, method="random"); g
-Out[4]: Poly(x^2 + x + 14, GF(2^4))
+Out[4]: Poly(x^2 + 13x + 9, GF(2^4))
 
 In [5]: h = galois.irreducible_poly(2**4, 3, method="random"); h
-Out[5]: Poly(x^3 + x^2 + 11x + 13, GF(2^4))
+Out[5]: Poly(x^3 + 10x^2 + 11x + 6, GF(2^4))
 
 In [6]: f = g * h; f
-Out[6]: Poly(x^5 + 4x^3 + 8x^2 + 5x + 10, GF(2^4))
+Out[6]: Poly(x^5 + 7x^4 + 9x^3 + 5x^2 + 4x + 3, GF(2^4))
 
 In [7]: f.is_irreducible()
 Out[7]: False
diff --git a/v0.3.x/api/galois.Poly.is_monic/index.html b/v0.3.x/api/galois.Poly.is_monic/index.html
index f924089df..1b82dc1fd 100644
--- a/v0.3.x/api/galois.Poly.is_monic/index.html
+++ b/v0.3.x/api/galois.Poly.is_monic/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.is_primitive/index.html b/v0.3.x/api/galois.Poly.is_primitive/index.html
index 5b0eff9c7..9b04fd536 100644
--- a/v0.3.x/api/galois.Poly.is_primitive/index.html
+++ b/v0.3.x/api/galois.Poly.is_primitive/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.is_square_free/index.html b/v0.3.x/api/galois.Poly.is_square_free/index.html
index ddb294099..e9e1b8459 100644
--- a/v0.3.x/api/galois.Poly.is_square_free/index.html
+++ b/v0.3.x/api/galois.Poly.is_square_free/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.nonzero_coeffs/index.html b/v0.3.x/api/galois.Poly.nonzero_coeffs/index.html
index be5d42279..041f5247e 100644
--- a/v0.3.x/api/galois.Poly.nonzero_coeffs/index.html
+++ b/v0.3.x/api/galois.Poly.nonzero_coeffs/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.nonzero_degrees/index.html b/v0.3.x/api/galois.Poly.nonzero_degrees/index.html
index 7f38d3599..6cbe6c7b8 100644
--- a/v0.3.x/api/galois.Poly.nonzero_degrees/index.html
+++ b/v0.3.x/api/galois.Poly.nonzero_degrees/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.reverse/index.html b/v0.3.x/api/galois.Poly.reverse/index.html
index d93fcc6dd..54f24a2d9 100644
--- a/v0.3.x/api/galois.Poly.reverse/index.html
+++ b/v0.3.x/api/galois.Poly.reverse/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.roots/index.html b/v0.3.x/api/galois.Poly.roots/index.html
index 73fb7cb74..3757bb76e 100644
--- a/v0.3.x/api/galois.Poly.roots/index.html
+++ b/v0.3.x/api/galois.Poly.roots/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly.square_free_factors/index.html b/v0.3.x/api/galois.Poly.square_free_factors/index.html
index a4bfc3574..725151683 100644
--- a/v0.3.x/api/galois.Poly.square_free_factors/index.html
+++ b/v0.3.x/api/galois.Poly.square_free_factors/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.Poly/index.html b/v0.3.x/api/galois.Poly/index.html
index 05c66880f..df4c87e9b 100644
--- a/v0.3.x/api/galois.Poly/index.html
+++ b/v0.3.x/api/galois.Poly/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -8358,7 +8358,7 @@ 

Properties
-property field : type[galois._domains._array.Array]
+property field : type[Array]

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

diff --git a/v0.3.x/api/galois.ReedSolomon.G/index.html b/v0.3.x/api/galois.ReedSolomon.G/index.html index f84b9e517..d2263e7ac 100644 --- a/v0.3.x/api/galois.ReedSolomon.G/index.html +++ b/v0.3.x/api/galois.ReedSolomon.G/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.H/index.html b/v0.3.x/api/galois.ReedSolomon.H/index.html index 5b8db6cda..0a47fb1d6 100644 --- a/v0.3.x/api/galois.ReedSolomon.H/index.html +++ b/v0.3.x/api/galois.ReedSolomon.H/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.__init__/index.html b/v0.3.x/api/galois.ReedSolomon.__init__/index.html index 0442b0bc4..3e109073a 100644 --- a/v0.3.x/api/galois.ReedSolomon.__init__/index.html +++ b/v0.3.x/api/galois.ReedSolomon.__init__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.__repr__/index.html b/v0.3.x/api/galois.ReedSolomon.__repr__/index.html index 130d53d1d..ca1419ef4 100644 --- a/v0.3.x/api/galois.ReedSolomon.__repr__/index.html +++ b/v0.3.x/api/galois.ReedSolomon.__repr__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.__str__/index.html b/v0.3.x/api/galois.ReedSolomon.__str__/index.html index ae2fc9494..38679b1f0 100644 --- a/v0.3.x/api/galois.ReedSolomon.__str__/index.html +++ b/v0.3.x/api/galois.ReedSolomon.__str__/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.alpha/index.html b/v0.3.x/api/galois.ReedSolomon.alpha/index.html index 1d4417bff..0809329a0 100644 --- a/v0.3.x/api/galois.ReedSolomon.alpha/index.html +++ b/v0.3.x/api/galois.ReedSolomon.alpha/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.c/index.html b/v0.3.x/api/galois.ReedSolomon.c/index.html index b0c2c87e2..51bf6b0fd 100644 --- a/v0.3.x/api/galois.ReedSolomon.c/index.html +++ b/v0.3.x/api/galois.ReedSolomon.c/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.d/index.html b/v0.3.x/api/galois.ReedSolomon.d/index.html index c22265e3e..25387aeb0 100644 --- a/v0.3.x/api/galois.ReedSolomon.d/index.html +++ b/v0.3.x/api/galois.ReedSolomon.d/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.decode/index.html b/v0.3.x/api/galois.ReedSolomon.decode/index.html index b8070cc08..29d77e42c 100644 --- a/v0.3.x/api/galois.ReedSolomon.decode/index.html +++ b/v0.3.x/api/galois.ReedSolomon.decode/index.html @@ -32,7 +32,7 @@ - + @@ -7915,23 +7915,23 @@ In [2]: GF = rs.field In [3]: m = GF.Random(rs.k); m -Out[3]: GF([12, 0, 5, 0, 1, 10, 8, 4, 7], order=2^4) +Out[3]: GF([ 7, 13, 2, 2, 9, 0, 10, 11, 1], order=2^4) In [4]: c = rs.encode(m); c -Out[4]: GF([12, 0, 5, 0, 1, 10, 8, 4, 7, 11, 1, 4, 7, 8, 15], order=2^4) +Out[4]: GF([ 7, 13, 2, 2, 9, 0, 10, 11, 1, 12, 7, 6, 14, 5, 8], order=2^4)

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

Corrupt \(t\) symbols of the codeword.

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

Decode the codeword and recover the message.

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

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

In [19]: d, e = rs.decode(c, errors=True); d, e
-Out[19]: (GF([14,  5,  8,  6,  5], order=2^4), 3)
+Out[19]: (GF([ 9,  7,  6,  3, 15], 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([[11, 14, 15, 11, 10, 11,  9, 11, 14],
-    [ 1,  2, 15, 14,  1,  8, 11,  1,  1],
-    [ 5,  3, 12,  3,  3,  0,  7,  8,  8]], order=2^4)
+GF([[12, 12,  6, 10,  1,  4, 15,  8, 14],
+    [ 0,  7,  6,  3,  7,  3,  1,  8, 15],
+    [13,  6,  8,  6,  2,  6,  2,  1,  1]], order=2^4)
 
 In [24]: c = rs.encode(m); c
 Out[24]: 
-GF([[11, 14, 15, 11, 10, 11,  9, 11, 14,  8,  0,  4, 14,  3, 11],
-    [ 1,  2, 15, 14,  1,  8, 11,  1,  1,  5,  9, 12,  0,  9,  1],
-    [ 5,  3, 12,  3,  3,  0,  7,  8,  8,  9, 14, 11,  3,  7, 13]],
+GF([[12, 12,  6, 10,  1,  4, 15,  8, 14, 15,  3,  2,  6,  6, 14],
+    [ 0,  7,  6,  3,  7,  3,  1,  8, 15, 15,  2, 14, 10,  7, 10],
+    [13,  6,  8,  6,  2,  6,  2,  1,  1,  5,  4, 12, 10,  7,  5]],
    order=2^4)
 
@@ -8014,18 +8014,18 @@ In [28]: c Out[28]: -GF([[15, 14, 15, 11, 10, 11, 9, 11, 14, 8, 0, 4, 14, 3, 11], - [ 9, 14, 15, 14, 1, 8, 11, 1, 1, 5, 9, 12, 0, 9, 1], - [ 4, 6, 3, 3, 3, 0, 7, 8, 8, 9, 14, 11, 3, 7, 13]], +GF([[ 3, 12, 6, 10, 1, 4, 15, 8, 14, 15, 3, 2, 6, 6, 14], + [ 5, 3, 6, 3, 7, 3, 1, 8, 15, 15, 2, 14, 10, 7, 10], + [12, 5, 14, 6, 2, 6, 2, 1, 1, 5, 4, 12, 10, 7, 5]], order=2^4)

Decode the codeword and recover the message.

In [29]: d = rs.decode(c); d
 Out[29]: 
-GF([[11, 14, 15, 11, 10, 11,  9, 11, 14],
-    [ 1,  2, 15, 14,  1,  8, 11,  1,  1],
-    [ 5,  3, 12,  3,  3,  0,  7,  8,  8]], order=2^4)
+GF([[12, 12,  6, 10,  1,  4, 15,  8, 14],
+    [ 0,  7,  6,  3,  7,  3,  1,  8, 15],
+    [13,  6,  8,  6,  2,  6,  2,  1,  1]], 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([[11, 14, 15, 11, 10, 11,  9, 11, 14],
-     [ 1,  2, 15, 14,  1,  8, 11,  1,  1],
-     [ 5,  3, 12,  3,  3,  0,  7,  8,  8]], order=2^4),
+(GF([[12, 12,  6, 10,  1,  4, 15,  8, 14],
+     [ 0,  7,  6,  3,  7,  3,  1,  8, 15],
+     [13,  6,  8,  6,  2,  6,  2,  1,  1]], 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([[ 0, 14, 11,  8,  3],
-    [15,  9, 15,  5, 13],
-    [ 3,  5, 13,  4,  0]], order=2^4)
+GF([[12,  8,  0,  1,  0],
+    [ 7,  7,  0, 11,  4],
+    [15, 12, 12,  4, 15]], order=2^4)
 
 In [36]: c = rs.encode(m); c
 Out[36]: 
-GF([[ 0, 14, 11,  8,  3, 14, 13,  7, 12,  1, 11],
-    [15,  9, 15,  5, 13,  7,  7, 15,  9, 12, 10],
-    [ 3,  5, 13,  4,  0,  7,  8,  4, 11,  7,  3]], order=2^4)
+GF([[12,  8,  0,  1,  0,  6, 15, 12,  8,  6,  3],
+    [ 7,  7,  0, 11,  4, 13,  9,  9, 11, 13, 14],
+    [15, 12, 12,  4, 15,  2,  0,  4,  1,  3,  9]], 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([[15, 14, 11, 8, 3, 14, 13, 7, 12, 1, 11], - [ 2, 6, 15, 5, 13, 7, 7, 15, 9, 12, 10], - [10, 7, 4, 4, 0, 7, 8, 4, 11, 7, 3]], order=2^4) +GF([[ 6, 8, 0, 1, 0, 6, 15, 12, 8, 6, 3], + [ 0, 8, 0, 11, 4, 13, 9, 9, 11, 13, 14], + [ 2, 7, 0, 4, 15, 2, 0, 4, 1, 3, 9]], order=2^4)

Decode the codeword and recover the message.

In [41]: d = rs.decode(c); d
 Out[41]: 
-GF([[ 0, 14, 11,  8,  3],
-    [15,  9, 15,  5, 13],
-    [ 3,  5, 13,  4,  0]], order=2^4)
+GF([[12,  8,  0,  1,  0],
+    [ 7,  7,  0, 11,  4],
+    [15, 12, 12,  4, 15]], 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([[ 0, 14, 11,  8,  3],
-     [15,  9, 15,  5, 13],
-     [ 3,  5, 13,  4,  0]], order=2^4),
+(GF([[12,  8,  0,  1,  0],
+     [ 7,  7,  0, 11,  4],
+     [15, 12, 12,  4, 15]], 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 4153edecb..807595880 100644
--- a/v0.3.x/api/galois.ReedSolomon.detect/index.html
+++ b/v0.3.x/api/galois.ReedSolomon.detect/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7828,10 +7828,10 @@
 In [2]: GF = rs.field
 
 In [3]: m = GF.Random(rs.k); m
-Out[3]: GF([13,  3, 14, 15, 13,  6, 12,  8, 12], order=2^4)
+Out[3]: GF([ 6, 15,  4, 10,  7,  5, 11,  3,  4], order=2^4)
 
 In [4]: c = rs.encode(m); c
-Out[4]: GF([13,  3, 14, 15, 13,  6, 12,  8, 12,  2,  9,  5,  3, 10,  7], order=2^4)
+Out[4]: GF([ 6, 15,  4, 10,  7,  5, 11,  3,  4,  7,  9,  1,  9,  9,  1], 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([ 1, 4, 2, 9, 1, 12], order=2^4) +Out[7]: GF([ 8, 5, 9, 13, 5, 3], order=2^4) In [8]: c[0:rs.d - 1] += e; c -Out[8]: GF([12, 7, 12, 6, 12, 10, 12, 8, 12, 2, 9, 5, 3, 10, 7], order=2^4) +Out[8]: GF([14, 10, 13, 7, 2, 6, 11, 3, 4, 7, 9, 1, 9, 9, 1], 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([ 2, 6, 7, 5, 14], order=2^4) +Out[12]: GF([ 7, 15, 4, 6, 13], order=2^4) In [13]: c = rs.encode(m); c -Out[13]: GF([ 2, 6, 7, 5, 14, 15, 0, 1, 13, 5, 13], order=2^4) +Out[13]: GF([ 7, 15, 4, 6, 13, 6, 6, 11, 14, 3, 0], order=2^4)

Detect no errors in the valid codeword.

@@ -7877,10 +7877,10 @@ Out[15]: 7 In [16]: e = GF.Random(rs.d - 1, low=1); e -Out[16]: GF([ 3, 12, 4, 15, 14, 1], order=2^4) +Out[16]: GF([ 2, 11, 3, 10, 7, 6], order=2^4) In [17]: c[0:rs.d - 1] += e; c -Out[17]: GF([ 1, 10, 3, 10, 0, 14, 0, 1, 13, 5, 13], order=2^4) +Out[17]: GF([ 5, 4, 7, 12, 10, 0, 6, 11, 14, 3, 0], 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([[ 5, 4, 7, 7, 10, 5, 9, 13, 4], - [ 5, 13, 14, 3, 0, 13, 3, 11, 0], - [ 6, 9, 4, 1, 4, 15, 8, 9, 5]], order=2^4) +GF([[ 9, 11, 2, 0, 8, 2, 8, 15, 4], + [ 7, 15, 3, 11, 0, 4, 11, 3, 9], + [ 1, 10, 3, 0, 14, 8, 12, 4, 9]], order=2^4) In [22]: c = rs.encode(m); c Out[22]: -GF([[ 5, 4, 7, 7, 10, 5, 9, 13, 4, 6, 9, 7, 1, 10, 3], - [ 5, 13, 14, 3, 0, 13, 3, 11, 0, 7, 8, 2, 1, 6, 13], - [ 6, 9, 4, 1, 4, 15, 8, 9, 5, 1, 7, 10, 11, 7, 7]], +GF([[ 9, 11, 2, 0, 8, 2, 8, 15, 4, 4, 7, 12, 11, 14, 9], + [ 7, 15, 3, 11, 0, 4, 11, 3, 9, 3, 11, 4, 2, 0, 10], + [ 1, 10, 3, 0, 14, 8, 12, 4, 9, 15, 4, 10, 5, 4, 14]], order=2^4)
@@ -7924,9 +7924,9 @@ In [28]: c Out[28]: -GF([[ 4, 4, 7, 7, 10, 5, 9, 13, 4, 6, 9, 7, 1, 10, 3], - [ 6, 5, 14, 3, 0, 13, 3, 11, 0, 7, 8, 2, 1, 6, 13], - [14, 1, 11, 8, 3, 7, 8, 9, 5, 1, 7, 10, 11, 7, 7]], +GF([[ 5, 11, 2, 0, 8, 2, 8, 15, 4, 4, 7, 12, 11, 14, 9], + [ 8, 4, 3, 11, 0, 4, 11, 3, 9, 3, 11, 4, 2, 0, 10], + [12, 1, 10, 10, 11, 12, 12, 4, 9, 15, 4, 10, 5, 4, 14]], 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([[ 9, 6, 2, 4, 14], - [ 7, 2, 5, 7, 15], - [11, 2, 10, 12, 11]], order=2^4) +GF([[ 1, 8, 10, 4, 11], + [11, 3, 2, 9, 5], + [10, 6, 11, 1, 6]], order=2^4) In [33]: c = rs.encode(m); c Out[33]: -GF([[ 9, 6, 2, 4, 14, 4, 10, 2, 2, 10, 13], - [ 7, 2, 5, 7, 15, 9, 3, 15, 6, 2, 7], - [11, 2, 10, 12, 11, 15, 15, 15, 1, 2, 0]], order=2^4) +GF([[ 1, 8, 10, 4, 11, 7, 1, 3, 0, 3, 4], + [11, 3, 2, 9, 5, 3, 15, 2, 3, 4, 9], + [10, 6, 11, 1, 6, 11, 4, 3, 6, 6, 1]], order=2^4)

Detect no errors in the valid codewords.

@@ -7970,9 +7970,9 @@ In [39]: c Out[39]: -GF([[ 8, 6, 2, 4, 14, 4, 10, 2, 2, 10, 13], - [ 9, 8, 5, 7, 15, 9, 3, 15, 6, 2, 7], - [ 5, 7, 1, 7, 8, 0, 15, 15, 1, 2, 0]], order=2^4) +GF([[10, 8, 10, 4, 11, 7, 1, 3, 0, 3, 4], + [ 3, 1, 2, 9, 5, 3, 15, 2, 3, 4, 9], + [12, 2, 2, 9, 11, 12, 4, 3, 6, 6, 1]], 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 d0f55e38b..c326bee63 100644 --- a/v0.3.x/api/galois.ReedSolomon.encode/index.html +++ b/v0.3.x/api/galois.ReedSolomon.encode/index.html @@ -32,7 +32,7 @@ - + @@ -7885,15 +7885,15 @@ In [2]: GF = rs.field In [3]: m = GF.Random(rs.k); m -Out[3]: GF([ 6, 7, 3, 4, 5, 3, 15, 4, 15], order=2^4) +Out[3]: GF([ 1, 5, 15, 11, 14, 4, 5, 5, 2], order=2^4) In [4]: c = rs.encode(m); c -Out[4]: GF([ 6, 7, 3, 4, 5, 3, 15, 4, 15, 15, 14, 14, 10, 4, 2], order=2^4) +Out[4]: GF([ 1, 5, 15, 11, 14, 4, 5, 5, 2, 5, 7, 2, 8, 11, 9], order=2^4)

Compute the parity symbols only.

In [5]: p = rs.encode(m, output="parity"); p
-Out[5]: GF([15, 14, 14, 10,  4,  2], order=2^4)
+Out[5]: GF([ 5,  7,  2,  8, 11,  9], 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, 14, 9, 13, 4], order=2^4) +Out[8]: GF([ 4, 11, 4, 13, 11], order=2^4) In [9]: c = rs.encode(m); c -Out[9]: GF([ 7, 14, 9, 13, 4, 3, 10, 8, 15, 0, 10], order=2^4) +Out[9]: GF([ 4, 11, 4, 13, 11, 6, 14, 9, 10, 2, 9], order=2^4)

Compute the parity symbols only.

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

Compute the parity symbols only.

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

Compute the parity symbols only.

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

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

Examples

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

diff --git a/v0.3.x/api/galois.ReedSolomon.generator_poly/index.html b/v0.3.x/api/galois.ReedSolomon.generator_poly/index.html index 1ae325040..7823adf8b 100644 --- a/v0.3.x/api/galois.ReedSolomon.generator_poly/index.html +++ b/v0.3.x/api/galois.ReedSolomon.generator_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html b/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html index 8585b0422..4dce89a49 100644 --- a/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html +++ b/v0.3.x/api/galois.ReedSolomon.is_narrow_sense/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html b/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html index 7d818262c..404e362d1 100644 --- a/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html +++ b/v0.3.x/api/galois.ReedSolomon.is_primitive/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html b/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html index f80229d35..3651ffefb 100644 --- a/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html +++ b/v0.3.x/api/galois.ReedSolomon.is_systematic/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.k/index.html b/v0.3.x/api/galois.ReedSolomon.k/index.html index 1dd74cd83..de8db8214 100644 --- a/v0.3.x/api/galois.ReedSolomon.k/index.html +++ b/v0.3.x/api/galois.ReedSolomon.k/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.n/index.html b/v0.3.x/api/galois.ReedSolomon.n/index.html index 46a91fa65..de5eec082 100644 --- a/v0.3.x/api/galois.ReedSolomon.n/index.html +++ b/v0.3.x/api/galois.ReedSolomon.n/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.parity_check_poly/index.html b/v0.3.x/api/galois.ReedSolomon.parity_check_poly/index.html index 0c40bffb7..7855307b7 100644 --- a/v0.3.x/api/galois.ReedSolomon.parity_check_poly/index.html +++ b/v0.3.x/api/galois.ReedSolomon.parity_check_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.roots/index.html b/v0.3.x/api/galois.ReedSolomon.roots/index.html index dda529347..fa175ef4e 100644 --- a/v0.3.x/api/galois.ReedSolomon.roots/index.html +++ b/v0.3.x/api/galois.ReedSolomon.roots/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon.t/index.html b/v0.3.x/api/galois.ReedSolomon.t/index.html index 52094f586..b986503e8 100644 --- a/v0.3.x/api/galois.ReedSolomon.t/index.html +++ b/v0.3.x/api/galois.ReedSolomon.t/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ReedSolomon/index.html b/v0.3.x/api/galois.ReedSolomon/index.html index 1e91a1aab..d5d1ee202 100644 --- a/v0.3.x/api/galois.ReedSolomon/index.html +++ b/v0.3.x/api/galois.ReedSolomon/index.html @@ -32,7 +32,7 @@ - + @@ -8056,19 +8056,19 @@

Encode a message.

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

Corrupt the codeword and decode the message.

# Corrupt the first symbol in the codeword
 In [5]: c[0] ^= 13; c
-Out[5]: GF([14, 10,  3, 14,  3,  7,  8,  1, 11, 11,  5, 15,  1, 10, 10], order=2^4)
+Out[5]: GF([15,  5,  4,  1, 10,  0, 11, 13,  3, 14, 13,  7, 13,  4, 11], order=2^4)
 
 In [6]: dec_m = rs.decode(c); dec_m
-Out[6]: GF([ 3, 10,  3, 14,  3,  7,  8,  1, 11], order=2^4)
+Out[6]: GF([ 2,  5,  4,  1, 10,  0, 11, 13,  3], 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([ 3, 10,  3, 14,  3,  7,  8,  1, 11], order=2^4), 1)
+Out[8]: (GF([ 2,  5,  4,  1, 10,  0, 11, 13,  3], order=2^4), 1)
 
 In [9]: np.array_equal(dec_m, m)
 Out[9]: True
@@ -8145,7 +8145,7 @@ 

Properties
-property field : type[galois._fields._array.FieldArray]
+property field : type[FieldArray]

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

diff --git a/v0.3.x/api/galois.are_coprime/index.html b/v0.3.x/api/galois.are_coprime/index.html index 8ab3f5cb6..6391193dd 100644 --- a/v0.3.x/api/galois.are_coprime/index.html +++ b/v0.3.x/api/galois.are_coprime/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.berlekamp_massey/index.html b/v0.3.x/api/galois.berlekamp_massey/index.html index c02bd8855..be55e5532 100644 --- a/v0.3.x/api/galois.berlekamp_massey/index.html +++ b/v0.3.x/api/galois.berlekamp_massey/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.carmichael_lambda/index.html b/v0.3.x/api/galois.carmichael_lambda/index.html index a0f4277c1..251359e4c 100644 --- a/v0.3.x/api/galois.carmichael_lambda/index.html +++ b/v0.3.x/api/galois.carmichael_lambda/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.conway_poly/index.html b/v0.3.x/api/galois.conway_poly/index.html index 7f495800f..d44262300 100644 --- a/v0.3.x/api/galois.conway_poly/index.html +++ b/v0.3.x/api/galois.conway_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.crt/index.html b/v0.3.x/api/galois.crt/index.html index c02285afc..4715a46f7 100644 --- a/v0.3.x/api/galois.crt/index.html +++ b/v0.3.x/api/galois.crt/index.html @@ -32,7 +32,7 @@ - + @@ -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 + 3x^5 + 5x^4 + 2x^3 + 6x^2 + 5x, GF(7))
+Out[6]: Poly(x^6 + x^4 + 5x^3 + 5x^2 + 4x, 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(4x^3 + 2x^2 + 6x + 2, GF(7)),
- Poly(3x^4 + 6x^3 + 4x + 2, GF(7)),
- Poly(4x^5 + 6x^4 + 4x^3 + 5x^2 + 2x + 3, GF(7))]
+[Poly(x^3 + 2x^2 + 5x, GF(7)),
+ Poly(x^4 + 2x^2 + 4x + 3, GF(7)),
+ Poly(2x^5 + 4x^4 + 6x^2 + 2, GF(7))]
 
 In [11]: a = [x_truth % m3, x_truth % m4, x_truth % m5]; a
 Out[11]: 
-[Poly(2x^2 + 6x + 3, GF(7)),
- Poly(4x^3 + 3x^2 + 4, GF(7)),
- Poly(2x^4 + 6x^2 + 4, GF(7))]
+[Poly(3x^2 + 6x, GF(7)),
+ Poly(x^3 + 4x^2 + x + 3, GF(7)),
+ Poly(5x^4 + 2x^3 + 4x^2 + 3x + 2, GF(7))]
 

Solve the system of congruences.

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

Show that the solution satisfies each congruence.

@@ -7929,9 +7929,9 @@ ....: ai = x % m[i] ....: print(ai, ai == a[i]) ....: -2x^2 + 6x + 3 True -4x^3 + 3x^2 + 4 True -2x^4 + 6x^2 + 4 True +3x^2 + 6x True +x^3 + 4x^2 + x + 3 True +5x^4 + 2x^3 + 4x^2 + 3x + 2 True
diff --git a/v0.3.x/api/galois.divisor_sigma/index.html b/v0.3.x/api/galois.divisor_sigma/index.html index f0882a10d..92c6fa7f0 100644 --- a/v0.3.x/api/galois.divisor_sigma/index.html +++ b/v0.3.x/api/galois.divisor_sigma/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.divisors/index.html b/v0.3.x/api/galois.divisors/index.html index a6631d1c0..3325aa32d 100644 --- a/v0.3.x/api/galois.divisors/index.html +++ b/v0.3.x/api/galois.divisors/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.egcd/index.html b/v0.3.x/api/galois.egcd/index.html index 5a8b89d75..a7b5ff8c1 100644 --- a/v0.3.x/api/galois.egcd/index.html +++ b/v0.3.x/api/galois.egcd/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.euler_phi/index.html b/v0.3.x/api/galois.euler_phi/index.html index d672164e4..4b3aca269 100644 --- a/v0.3.x/api/galois.euler_phi/index.html +++ b/v0.3.x/api/galois.euler_phi/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.factors/index.html b/v0.3.x/api/galois.factors/index.html index 432d06055..0d0ed2999 100644 --- a/v0.3.x/api/galois.factors/index.html +++ b/v0.3.x/api/galois.factors/index.html @@ -32,7 +32,7 @@ - + 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 efbaf5990..563d75381 100644 --- a/v0.3.x/api/galois.fermat_primality_test/index.html +++ b/v0.3.x/api/galois.fermat_primality_test/index.html @@ -32,7 +32,7 @@ - + @@ -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, False, False] +Out[7]: [False, True, False]

And the pseudoprimes base 3 from A005935.

diff --git a/v0.3.x/api/galois.gcd/index.html b/v0.3.x/api/galois.gcd/index.html index 155e42a56..063d1a5ea 100644 --- a/v0.3.x/api/galois.gcd/index.html +++ b/v0.3.x/api/galois.gcd/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.get_printoptions/index.html b/v0.3.x/api/galois.get_printoptions/index.html index da64a0d28..b9f0e4cfd 100644 --- a/v0.3.x/api/galois.get_printoptions/index.html +++ b/v0.3.x/api/galois.get_printoptions/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ilog/index.html b/v0.3.x/api/galois.ilog/index.html index b5c16c0f3..bb4c92fb0 100644 --- a/v0.3.x/api/galois.ilog/index.html +++ b/v0.3.x/api/galois.ilog/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.intt/index.html b/v0.3.x/api/galois.intt/index.html index 0026aab41..3400d9b4e 100644 --- a/v0.3.x/api/galois.intt/index.html +++ b/v0.3.x/api/galois.intt/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.iroot/index.html b/v0.3.x/api/galois.iroot/index.html index bc427467e..c664a7839 100644 --- a/v0.3.x/api/galois.iroot/index.html +++ b/v0.3.x/api/galois.iroot/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.irreducible_poly/index.html b/v0.3.x/api/galois.irreducible_poly/index.html index af6e26359..6056bb22e 100644 --- a/v0.3.x/api/galois.irreducible_poly/index.html +++ b/v0.3.x/api/galois.irreducible_poly/index.html @@ -32,7 +32,7 @@ - + @@ -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 + 2x^2 + 6x + 1, GF(7)) +Out[3]: Poly(x^3 + 5x + 2, GF(7))

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

@@ -7941,13 +7941,13 @@
In [6]: GF = galois.GF(7)
 
 In [7]: f = galois.irreducible_poly(7, 5, method="random"); f
-Out[7]: Poly(x^5 + 3x^4 + 4x^3 + 2x^2 + 2x + 4, GF(7))
+Out[7]: Poly(x^5 + x^4 + 2x^2 + 3x + 4, GF(7))
 
 In [8]: f.is_irreducible()
 Out[8]: True
 
 In [9]: g = f * GF(3); g
-Out[9]: Poly(3x^5 + 2x^4 + 5x^3 + 6x^2 + 6x + 5, GF(7))
+Out[9]: Poly(3x^5 + 3x^4 + 6x^2 + 2x + 5, 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 1c3ecff43..f0723e9cf 100644
--- a/v0.3.x/api/galois.irreducible_polys/index.html
+++ b/v0.3.x/api/galois.irreducible_polys/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -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 0x7f015c55ed60>
+Out[5]: <generator object irreducible_polys at 0x7fe5fe210040>
 
 In [6]: next(generator)
 Out[6]: Poly(x^4 + 2x^3 + 2x^2 + x + 2, GF(3))
diff --git a/v0.3.x/api/galois.is_composite/index.html b/v0.3.x/api/galois.is_composite/index.html
index 027eafa99..a6209b9c1 100644
--- a/v0.3.x/api/galois.is_composite/index.html
+++ b/v0.3.x/api/galois.is_composite/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_cyclic/index.html b/v0.3.x/api/galois.is_cyclic/index.html
index 310a26ba6..91484c4e1 100644
--- a/v0.3.x/api/galois.is_cyclic/index.html
+++ b/v0.3.x/api/galois.is_cyclic/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_perfect_power/index.html b/v0.3.x/api/galois.is_perfect_power/index.html
index a1736c426..2f4aaa3b8 100644
--- a/v0.3.x/api/galois.is_perfect_power/index.html
+++ b/v0.3.x/api/galois.is_perfect_power/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_powersmooth/index.html b/v0.3.x/api/galois.is_powersmooth/index.html
index 6ad50b575..c22c8124d 100644
--- a/v0.3.x/api/galois.is_powersmooth/index.html
+++ b/v0.3.x/api/galois.is_powersmooth/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_prime/index.html b/v0.3.x/api/galois.is_prime/index.html
index 0f4a2a1c3..7ddaaf62c 100644
--- a/v0.3.x/api/galois.is_prime/index.html
+++ b/v0.3.x/api/galois.is_prime/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_prime_power/index.html b/v0.3.x/api/galois.is_prime_power/index.html
index 652e8b878..520607a68 100644
--- a/v0.3.x/api/galois.is_prime_power/index.html
+++ b/v0.3.x/api/galois.is_prime_power/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_primitive_element/index.html b/v0.3.x/api/galois.is_primitive_element/index.html
index e241ecc7b..8f5be4fc3 100644
--- a/v0.3.x/api/galois.is_primitive_element/index.html
+++ b/v0.3.x/api/galois.is_primitive_element/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_primitive_root/index.html b/v0.3.x/api/galois.is_primitive_root/index.html
index 27c438b1c..113f33e2b 100644
--- a/v0.3.x/api/galois.is_primitive_root/index.html
+++ b/v0.3.x/api/galois.is_primitive_root/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_smooth/index.html b/v0.3.x/api/galois.is_smooth/index.html
index bf3631bce..12305953e 100644
--- a/v0.3.x/api/galois.is_smooth/index.html
+++ b/v0.3.x/api/galois.is_smooth/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.is_square_free/index.html b/v0.3.x/api/galois.is_square_free/index.html
index 6c68e1b41..c406b7631 100644
--- a/v0.3.x/api/galois.is_square_free/index.html
+++ b/v0.3.x/api/galois.is_square_free/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.isqrt/index.html b/v0.3.x/api/galois.isqrt/index.html
index 91db9ac4f..a68cbd334 100644
--- a/v0.3.x/api/galois.isqrt/index.html
+++ b/v0.3.x/api/galois.isqrt/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.jacobi_symbol/index.html b/v0.3.x/api/galois.jacobi_symbol/index.html
index ab676b8d6..8b8600860 100644
--- a/v0.3.x/api/galois.jacobi_symbol/index.html
+++ b/v0.3.x/api/galois.jacobi_symbol/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.kronecker_symbol/index.html b/v0.3.x/api/galois.kronecker_symbol/index.html
index 944a21965..c53d26419 100644
--- a/v0.3.x/api/galois.kronecker_symbol/index.html
+++ b/v0.3.x/api/galois.kronecker_symbol/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.kth_prime/index.html b/v0.3.x/api/galois.kth_prime/index.html
index 98a2b0f66..954541286 100644
--- a/v0.3.x/api/galois.kth_prime/index.html
+++ b/v0.3.x/api/galois.kth_prime/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.lagrange_poly/index.html b/v0.3.x/api/galois.lagrange_poly/index.html
index e3a3181c6..df7fe61e9 100644
--- a/v0.3.x/api/galois.lagrange_poly/index.html
+++ b/v0.3.x/api/galois.lagrange_poly/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -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([5, 4, 3, 5, 6, 0, 4, 8, 3], order=3^2)
+Out[3]: GF([3, 0, 2, 5, 3, 2, 8, 8, 1], order=3^2)
 

Find the Lagrange polynomial that interpolates the coordinates.

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

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

diff --git a/v0.3.x/api/galois.lcm/index.html b/v0.3.x/api/galois.lcm/index.html index d88655be3..17905abad 100644 --- a/v0.3.x/api/galois.lcm/index.html +++ b/v0.3.x/api/galois.lcm/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.legendre_symbol/index.html b/v0.3.x/api/galois.legendre_symbol/index.html index 8c22ec922..30ff392aa 100644 --- a/v0.3.x/api/galois.legendre_symbol/index.html +++ b/v0.3.x/api/galois.legendre_symbol/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.matlab_primitive_poly/index.html b/v0.3.x/api/galois.matlab_primitive_poly/index.html index 7bcad1a03..224db4123 100644 --- a/v0.3.x/api/galois.matlab_primitive_poly/index.html +++ b/v0.3.x/api/galois.matlab_primitive_poly/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.mersenne_exponents/index.html b/v0.3.x/api/galois.mersenne_exponents/index.html index 6cb8ad420..878808693 100644 --- a/v0.3.x/api/galois.mersenne_exponents/index.html +++ b/v0.3.x/api/galois.mersenne_exponents/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.mersenne_primes/index.html b/v0.3.x/api/galois.mersenne_primes/index.html index 559b5e1c1..950d48eed 100644 --- a/v0.3.x/api/galois.mersenne_primes/index.html +++ b/v0.3.x/api/galois.mersenne_primes/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.miller_rabin_primality_test/index.html b/v0.3.x/api/galois.miller_rabin_primality_test/index.html index be46196ef..06f958f07 100644 --- a/v0.3.x/api/galois.miller_rabin_primality_test/index.html +++ b/v0.3.x/api/galois.miller_rabin_primality_test/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.next_prime/index.html b/v0.3.x/api/galois.next_prime/index.html index 7afc602d7..2fe1b7d37 100644 --- a/v0.3.x/api/galois.next_prime/index.html +++ b/v0.3.x/api/galois.next_prime/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.ntt/index.html b/v0.3.x/api/galois.ntt/index.html index b583277bf..68975904e 100644 --- a/v0.3.x/api/galois.ntt/index.html +++ b/v0.3.x/api/galois.ntt/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.perfect_power/index.html b/v0.3.x/api/galois.perfect_power/index.html index d2f8ea43c..8eac16d18 100644 --- a/v0.3.x/api/galois.perfect_power/index.html +++ b/v0.3.x/api/galois.perfect_power/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.pollard_p1/index.html b/v0.3.x/api/galois.pollard_p1/index.html index 80da9d668..6b2e4dcd7 100644 --- a/v0.3.x/api/galois.pollard_p1/index.html +++ b/v0.3.x/api/galois.pollard_p1/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.pollard_rho/index.html b/v0.3.x/api/galois.pollard_rho/index.html index 38f863d43..5c7913107 100644 --- a/v0.3.x/api/galois.pollard_rho/index.html +++ b/v0.3.x/api/galois.pollard_rho/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.prev_prime/index.html b/v0.3.x/api/galois.prev_prime/index.html index aee090699..96b98b1e2 100644 --- a/v0.3.x/api/galois.prev_prime/index.html +++ b/v0.3.x/api/galois.prev_prime/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.primes/index.html b/v0.3.x/api/galois.primes/index.html index 9de75d269..619ebac90 100644 --- a/v0.3.x/api/galois.primes/index.html +++ b/v0.3.x/api/galois.primes/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.primitive_element/index.html b/v0.3.x/api/galois.primitive_element/index.html index 757458267..e0942bae1 100644 --- a/v0.3.x/api/galois.primitive_element/index.html +++ b/v0.3.x/api/galois.primitive_element/index.html @@ -32,7 +32,7 @@ - + @@ -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(4x^4 + 6x^2 + 5x + 5, GF(7))
+Out[10]: Poly(3x^4 + 6x^3 + 3x^2 + 3x + 3, 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(4x^4 + 6x^2 + 5x + 5, order=7^5)
+Out[11]: GF(3x^4 + 6x^3 + 3x^2 + 3x + 3, order=7^5)
 
 In [12]: g.multiplicative_order() == GF.order - 1
 Out[12]: True
diff --git a/v0.3.x/api/galois.primitive_elements/index.html b/v0.3.x/api/galois.primitive_elements/index.html
index 012d10658..c406b6664 100644
--- a/v0.3.x/api/galois.primitive_elements/index.html
+++ b/v0.3.x/api/galois.primitive_elements/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.primitive_poly/index.html b/v0.3.x/api/galois.primitive_poly/index.html
index 3714e4da2..c17a46e39 100644
--- a/v0.3.x/api/galois.primitive_poly/index.html
+++ b/v0.3.x/api/galois.primitive_poly/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -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 + 4x^2 + 2x + 2, GF(7))
+Out[3]: Poly(x^3 + 6x^2 + 3x + 2, GF(7))
 

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

@@ -7950,13 +7950,13 @@
In [10]: GF = galois.GF(7)
 
 In [11]: f = galois.primitive_poly(7, 5, method="random"); f
-Out[11]: Poly(x^5 + 4x^4 + 6x^3 + x^2 + 4x + 4, GF(7))
+Out[11]: Poly(x^5 + 2x^4 + 6x^3 + x^2 + 6x + 4, GF(7))
 
 In [12]: f.is_primitive()
 Out[12]: True
 
 In [13]: g = f * GF(3); g
-Out[13]: Poly(3x^5 + 5x^4 + 4x^3 + 3x^2 + 5x + 5, GF(7))
+Out[13]: Poly(3x^5 + 6x^4 + 4x^3 + 3x^2 + 4x + 5, 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 1a5580301..7a92f53b8 100644
--- a/v0.3.x/api/galois.primitive_polys/index.html
+++ b/v0.3.x/api/galois.primitive_polys/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -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 0x7f014f24b480>
+Out[5]: <generator object primitive_polys at 0x7fe5fe211df0>
 
 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 27ec90435..77963de02 100644
--- a/v0.3.x/api/galois.primitive_root/index.html
+++ b/v0.3.x/api/galois.primitive_root/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -8053,7 +8053,7 @@
 Out[20]: 1000000000000000035000054
 
 In [21]: galois.primitive_root(n, method="random")
-Out[21]: 556174757507661489677583
+Out[21]: 815527560212068383170965
 
diff --git a/v0.3.x/api/galois.primitive_roots/index.html b/v0.3.x/api/galois.primitive_roots/index.html index 54162b851..bfe1e5402 100644 --- a/v0.3.x/api/galois.primitive_roots/index.html +++ b/v0.3.x/api/galois.primitive_roots/index.html @@ -32,7 +32,7 @@ - + @@ -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 0x7f014f24a8a0>
+Out[7]: <generator object primitive_roots at 0x7fe615223940>
 
 In [8]: [next(generator) for _ in range(3)]
 Out[8]: [24, 22, 21]
diff --git a/v0.3.x/api/galois.printoptions/index.html b/v0.3.x/api/galois.printoptions/index.html
index afde71dad..2f12c4c5a 100644
--- a/v0.3.x/api/galois.printoptions/index.html
+++ b/v0.3.x/api/galois.printoptions/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
diff --git a/v0.3.x/api/galois.prod/index.html b/v0.3.x/api/galois.prod/index.html
index 669a32384..88927961b 100644
--- a/v0.3.x/api/galois.prod/index.html
+++ b/v0.3.x/api/galois.prod/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -7828,21 +7828,21 @@
 
In [2]: GF = galois.GF(7)
 
 In [3]: f1 = galois.Poly.Random(2, field=GF); f1
-Out[3]: Poly(5x^2 + 1, GF(7))
+Out[3]: Poly(x^2 + x + 3, GF(7))
 
 In [4]: f2 = galois.Poly.Random(3, field=GF); f2
-Out[4]: Poly(2x^3 + 3x^2 + 5x + 5, GF(7))
+Out[4]: Poly(3x^3 + 6x^2 + 6x + 3, GF(7))
 
 In [5]: f3 = galois.Poly.Random(4, field=GF); f3
-Out[5]: Poly(4x^4 + 4x^3 + 5x^2 + 5x + 6, GF(7))
+Out[5]: Poly(x^4 + x^2 + 2x + 2, GF(7))
 

Compute the product of three polynomials.

In [6]: galois.prod(f1, f2, f3)
-Out[6]: Poly(5x^9 + 2x^8 + x^7 + 2x^6 + 3x^5 + 6x^4 + 4x^3 + x^2 + 6x + 2, GF(7))
+Out[6]: Poly(3x^9 + 2x^8 + 3x^7 + 3x^5 + 5x^4 + 5x^3 + 4x + 4, GF(7))
 
 In [7]: f1 * f2 * f3
-Out[7]: Poly(5x^9 + 2x^8 + x^7 + 2x^6 + 3x^5 + 6x^4 + 4x^3 + x^2 + 6x + 2, GF(7))
+Out[7]: Poly(3x^9 + 2x^8 + 3x^7 + 3x^5 + 5x^4 + 5x^3 + 4x + 4, GF(7))
 
diff --git a/v0.3.x/api/galois.random_prime/index.html b/v0.3.x/api/galois.random_prime/index.html index 7a7dbc514..5dff2e344 100644 --- a/v0.3.x/api/galois.random_prime/index.html +++ b/v0.3.x/api/galois.random_prime/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.set_printoptions/index.html b/v0.3.x/api/galois.set_printoptions/index.html index adb0f32be..f2c4115d0 100644 --- a/v0.3.x/api/galois.set_printoptions/index.html +++ b/v0.3.x/api/galois.set_printoptions/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.totatives/index.html b/v0.3.x/api/galois.totatives/index.html index f339ca04e..e9c539e40 100644 --- a/v0.3.x/api/galois.totatives/index.html +++ b/v0.3.x/api/galois.totatives/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.trial_division/index.html b/v0.3.x/api/galois.trial_division/index.html index ea02d5026..5ac6e2db6 100644 --- a/v0.3.x/api/galois.trial_division/index.html +++ b/v0.3.x/api/galois.trial_division/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.typing.ArrayLike/index.html b/v0.3.x/api/galois.typing.ArrayLike/index.html index b7f185db7..4a19576ae 100644 --- a/v0.3.x/api/galois.typing.ArrayLike/index.html +++ b/v0.3.x/api/galois.typing.ArrayLike/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.typing.DTypeLike/index.html b/v0.3.x/api/galois.typing.DTypeLike/index.html index 20915fd90..d75587841 100644 --- a/v0.3.x/api/galois.typing.DTypeLike/index.html +++ b/v0.3.x/api/galois.typing.DTypeLike/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.typing.ElementLike/index.html b/v0.3.x/api/galois.typing.ElementLike/index.html index a474c0d59..7ea4ae0e7 100644 --- a/v0.3.x/api/galois.typing.ElementLike/index.html +++ b/v0.3.x/api/galois.typing.ElementLike/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.typing.IterableLike/index.html b/v0.3.x/api/galois.typing.IterableLike/index.html index 47307aac7..c91c853d4 100644 --- a/v0.3.x/api/galois.typing.IterableLike/index.html +++ b/v0.3.x/api/galois.typing.IterableLike/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.typing.PolyLike/index.html b/v0.3.x/api/galois.typing.PolyLike/index.html index 1a353a5e6..e05399e01 100644 --- a/v0.3.x/api/galois.typing.PolyLike/index.html +++ b/v0.3.x/api/galois.typing.PolyLike/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/api/galois.typing.ShapeLike/index.html b/v0.3.x/api/galois.typing.ShapeLike/index.html index b30c2287e..e373e0d4a 100644 --- a/v0.3.x/api/galois.typing.ShapeLike/index.html +++ b/v0.3.x/api/galois.typing.ShapeLike/index.html @@ -32,7 +32,7 @@ - + @@ -7756,7 +7756,7 @@
In [1]: GF = galois.GF(3**5)
 
 In [2]: x = GF.Random(4); x
-Out[2]: GF([ 44, 152, 163, 104], order=3^5)
+Out[2]: GF([119, 161, 232, 114], 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([[130, 191,  65],
-    [ 90,  42, 239]], order=3^5)
+GF([[  0, 109,  28],
+    [122, 193,  31]], order=3^5)
 
 In [5]: x.shape
 Out[5]: (2, 3)
 
 In [6]: x = GF.Random([2, 3, 4]); x
 Out[6]: 
-GF([[[ 59, 234, 231,  64],
-     [106,  32,  90, 127],
-     [ 91, 170,  61, 172]],
+GF([[[ 15,   3, 182,  43],
+     [154, 207, 172, 235],
+     [223,   8, 156,  52]],
 
-    [[143, 215, 120, 178],
-     [144,  95,  78, 166],
-     [221, 168, 110, 217]]], order=3^5)
+    [[102, 202,  22, 161],
+     [ 38,  58, 168,  64],
+     [ 40, 120, 184, 182]]], order=3^5)
 
 In [7]: x.shape
 Out[7]: (2, 3, 4)
 
 In [8]: x = GF.Random(()); x
-Out[8]: GF(1, order=3^5)
+Out[8]: GF(23, order=3^5)
 
 In [9]: x.shape
 Out[9]: ()
diff --git a/v0.3.x/api/index.html b/v0.3.x/api/index.html
index 14a865fa8..1f307cb61 100644
--- a/v0.3.x/api/index.html
+++ b/v0.3.x/api/index.html
@@ -32,7 +32,7 @@
         
       
     
-        
+        
         
         
     
@@ -10376,17 +10376,17 @@ 

Galois fields
-galois.Field(order, ...) type[galois._fields._array.FieldArray]
+galois.Field(order: int, *, ...) type[FieldArray]
-galois.Field(...) type[galois._fields._array.FieldArray]
+galois.Field(characteristic: int, degree, ...) type[FieldArray]

Alias of GF().

-galois.GF(order: int, ...) type[galois._fields._array.FieldArray]
+galois.GF(order: int, *, ...) type[FieldArray]
-galois.GF(...) type[galois._fields._array.FieldArray]
+galois.GF(characteristic: int, degree: int, ...) type[FieldArray]

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

diff --git a/v0.3.x/basic-usage/array-arithmetic/index.html b/v0.3.x/basic-usage/array-arithmetic/index.html index 81357d34c..3ed1f10d7 100644 --- a/v0.3.x/basic-usage/array-arithmetic/index.html +++ b/v0.3.x/basic-usage/array-arithmetic/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/basic-usage/array-classes/index.html b/v0.3.x/basic-usage/array-classes/index.html index 67265e9f7..f550c3b93 100644 --- a/v0.3.x/basic-usage/array-classes/index.html +++ b/v0.3.x/basic-usage/array-classes/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/basic-usage/array-creation/index.html b/v0.3.x/basic-usage/array-creation/index.html index 46d09208b..7dfb8e86d 100644 --- a/v0.3.x/basic-usage/array-creation/index.html +++ b/v0.3.x/basic-usage/array-creation/index.html @@ -32,7 +32,7 @@ - + @@ -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([763, 465, 958, 269], order=2^10) +Out[93]: GF([180, 658, 239, 185], 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([248761812025852773520287965115, 578517521538479367406987757478, - 345622303962815151528875328252, 804487740241641807336167672059], +GF([ 759255534363028631387827282488, 311484979945089808700875527348, + 1075251634952724486515380502024, 217128575398585433718204631919], order=2^100) In [98]: x.dtype diff --git a/v0.3.x/basic-usage/compilation-modes/index.html b/v0.3.x/basic-usage/compilation-modes/index.html index 67887cca2..81f33fa15 100644 --- a/v0.3.x/basic-usage/compilation-modes/index.html +++ b/v0.3.x/basic-usage/compilation-modes/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/basic-usage/element-representation/index.html b/v0.3.x/basic-usage/element-representation/index.html index 47b9fe047..60a009d9a 100644 --- a/v0.3.x/basic-usage/element-representation/index.html +++ b/v0.3.x/basic-usage/element-representation/index.html @@ -32,7 +32,7 @@ - + @@ -8001,21 +8001,21 @@

NumPy print optionsIn [40]: x = GF.Random((5, 5)); x Out[40]: -GF([[ 2α^4 + 2α^2 + α, 2α + 1, - 2α^3 + 2α^2 + 2, α^3 + 2α^2 + 2, - 2α^4 + 2α^3 + α + 2], - [ 2α^4 + 2α^3 + 2α^2 + 2, α^4 + 2α^3 + α^2 + 2α + 2, - 2α^4 + α^3 + α + 1, α^4 + 2α^2, - 2α^4 + 2α^3 + α^2 + 2α], - [ 2α^4 + 2α^3 + 2α^2 + 2, 2α^4 + α^3 + α^2 + α + 2, - 2α^3, 2α^3 + α^2, - 2α^4 + 2α^3 + α^2 + 2], - [ α^4 + α^3, 2α^4 + α^3 + α^2 + 2α + 2, - 2α^4 + 2α^3 + α^2 + 2α + 1, 2α^3 + 2α^2 + 2, - α^3 + 2α^2 + 1], - [ 2α^3 + 2α^2 + 1, α^3 + 2α^2 + 2α, - 2α^4 + α^3 + 2α^2 + 2, α + 1, - α^3 + α^2 + 2α + 2]], order=3^5) +GF([[ α^3 + α^2 + 2α, α^4 + α^3 + α^2 + 1, + 2α^2 + 2, 2α^3 + 2α^2 + 2α, + α^4], + [ α^3 + 2α^2 + 2α + 1, 2α^4 + 2α^2 + α, + 2α^4 + 2α^3 + 2α^2 + 2α, α^3 + α^2 + α + 1, + 2α^4 + 2α^2 + 2α], + [ 2α^3 + 2, 2α^2 + α + 2, + 2α^3 + α + 1, α + 2, + 2α^3 + α^2 + 2α + 1], + [ 2α^2 + 1, α^4 + 2α^3 + 2α, + α^4 + α^3 + 2, α^4 + 2α^3 + α + 2, + α^4 + α^3 + α^2], + [2α^4 + α^3 + α^2 + α + 1, α^4 + 1, + α^4 + α^3 + 2α + 1, α^4, + α^4 + 2α^3 + α^2 + 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 + 2α^2 + α, 2α + 1, 2α^3 + 2α^2 + 2, α^3 + 2α^2 + 2, 2α^4 + 2α^3 + α + 2], - [ 2α^4 + 2α^3 + 2α^2 + 2, α^4 + 2α^3 + α^2 + 2α + 2, 2α^4 + α^3 + α + 1, α^4 + 2α^2, 2α^4 + 2α^3 + α^2 + 2α], - [ 2α^4 + 2α^3 + 2α^2 + 2, 2α^4 + α^3 + α^2 + α + 2, 2α^3, 2α^3 + α^2, 2α^4 + 2α^3 + α^2 + 2], - [ α^4 + α^3, 2α^4 + α^3 + α^2 + 2α + 2, 2α^4 + 2α^3 + α^2 + 2α + 1, 2α^3 + 2α^2 + 2, α^3 + 2α^2 + 1], - [ 2α^3 + 2α^2 + 1, α^3 + 2α^2 + 2α, 2α^4 + α^3 + 2α^2 + 2, α + 1, α^3 + α^2 + 2α + 2]], order=3^5) +GF([[ α^3 + α^2 + 2α, α^4 + α^3 + α^2 + 1, 2α^2 + 2, 2α^3 + 2α^2 + 2α, α^4], + [ α^3 + 2α^2 + 2α + 1, 2α^4 + 2α^2 + α, 2α^4 + 2α^3 + 2α^2 + 2α, α^3 + α^2 + α + 1, 2α^4 + 2α^2 + 2α], + [ 2α^3 + 2, 2α^2 + α + 2, 2α^3 + α + 1, α + 2, 2α^3 + α^2 + 2α + 1], + [ 2α^2 + 1, α^4 + 2α^3 + 2α, α^4 + α^3 + 2, α^4 + 2α^3 + α + 2, α^4 + α^3 + α^2], + [2α^4 + α^3 + α^2 + α + 1, α^4 + 1, α^4 + α^3 + 2α + 1, α^4, α^4 + 2α^3 + α^2 + 1]], order=3^5)

Representation comparisons

diff --git a/v0.3.x/basic-usage/poly-arithmetic/index.html b/v0.3.x/basic-usage/poly-arithmetic/index.html index 0a1a60000..3a3f21228 100644 --- a/v0.3.x/basic-usage/poly-arithmetic/index.html +++ b/v0.3.x/basic-usage/poly-arithmetic/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/basic-usage/poly/index.html b/v0.3.x/basic-usage/poly/index.html index 4d0f8074f..d452f6c66 100644 --- a/v0.3.x/basic-usage/poly/index.html +++ b/v0.3.x/basic-usage/poly/index.html @@ -32,7 +32,7 @@ - + @@ -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(7x^4 + 190x^3 + 145x^2 + 175x + 145, GF(3^5))
+Out[23]: Poly(162x^4 + 23x^3 + 59x^2 + 137x + 20, GF(3^5))
 

Methods

diff --git a/v0.3.x/development/documentation/index.html b/v0.3.x/development/documentation/index.html index 75e37d2f3..127f66822 100644 --- a/v0.3.x/development/documentation/index.html +++ b/v0.3.x/development/documentation/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/development/formatting/index.html b/v0.3.x/development/formatting/index.html index 03623c93b..6becdefbe 100644 --- a/v0.3.x/development/formatting/index.html +++ b/v0.3.x/development/formatting/index.html @@ -32,7 +32,7 @@ - + @@ -7821,13 +7821,16 @@

Configuration[tool.ruff.lint] select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings "E", # pycodestyle "F", # Pyflakes "UP", # pyupgrade "B", # flake8-bugbear # "SIM",# flake8-simplify - "I", # isort - "PL", # pylint + "DTZ", # flake8-datetimez + "I", # isort + "PL", # pylint ] ignore = [ "E501", # line-too-long @@ -7842,6 +7845,7 @@

Configuration "PLR5501", # collapsible-else-if "PLW0603", # global-statement "PLW2901", # redefined-loop-name + "UP006", # non-pep585-annotation, type[FieldArray] renders wrong in docs ] [tool.ruff.lint.per-file-ignores] @@ -7874,7 +7878,7 @@

Pre-commit - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.15 + rev: v0.2.0 hooks: - id: ruff - id: ruff-format @@ -7904,7 +7908,7 @@

Run from VS Code - + @@ -7804,7 +7804,7 @@

Install the -
ruff == 0.1.15
+

Create a FieldArray subclass

diff --git a/v0.3.x/index.html b/v0.3.x/index.html index 227b95ad3..cc493d7ee 100644 --- a/v0.3.x/index.html +++ b/v0.3.x/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/objects.inv b/v0.3.x/objects.inv index e0431c27d..e788c7f71 100644 Binary files a/v0.3.x/objects.inv and b/v0.3.x/objects.inv differ diff --git a/v0.3.x/performance/benchmarks/index.html b/v0.3.x/performance/benchmarks/index.html index 910b28eb0..e8ba4bfb9 100644 --- a/v0.3.x/performance/benchmarks/index.html +++ b/v0.3.x/performance/benchmarks/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/performance/binary-extension-fields/index.html b/v0.3.x/performance/binary-extension-fields/index.html index 0460a1f9e..892a604f4 100644 --- a/v0.3.x/performance/binary-extension-fields/index.html +++ b/v0.3.x/performance/binary-extension-fields/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/performance/prime-fields/index.html b/v0.3.x/performance/prime-fields/index.html index 4d06a15a4..95d1d95b4 100644 --- a/v0.3.x/performance/prime-fields/index.html +++ b/v0.3.x/performance/prime-fields/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/py-modindex/index.html b/v0.3.x/py-modindex/index.html index 844e0d4ad..4cf16dc13 100644 --- a/v0.3.x/py-modindex/index.html +++ b/v0.3.x/py-modindex/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/release-notes/v0.0/index.html b/v0.3.x/release-notes/v0.0/index.html index 90cdd64cd..2e8cd8840 100644 --- a/v0.3.x/release-notes/v0.0/index.html +++ b/v0.3.x/release-notes/v0.0/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/release-notes/v0.1/index.html b/v0.3.x/release-notes/v0.1/index.html index 08f43b2c6..5fdd124de 100644 --- a/v0.3.x/release-notes/v0.1/index.html +++ b/v0.3.x/release-notes/v0.1/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/release-notes/v0.2/index.html b/v0.3.x/release-notes/v0.2/index.html index 6b806963f..69f0f2595 100644 --- a/v0.3.x/release-notes/v0.2/index.html +++ b/v0.3.x/release-notes/v0.2/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/release-notes/v0.3/index.html b/v0.3.x/release-notes/v0.3/index.html index 06b43435b..db16861ac 100644 --- a/v0.3.x/release-notes/v0.3/index.html +++ b/v0.3.x/release-notes/v0.3/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/release-notes/versioning/index.html b/v0.3.x/release-notes/versioning/index.html index 4e67ab223..93f0dc541 100644 --- a/v0.3.x/release-notes/versioning/index.html +++ b/v0.3.x/release-notes/versioning/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/searchindex.js b/v0.3.x/searchindex.js index 6f9844d1a..eb321804b 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", "Formatting", "Installation", "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, 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, 262, 267, 269, 270, 271, 272, 274], "union": [0, 248, 249, 250, 251, 252, 253, 272], "repres": [0, 2, 3, 4, 5, 6, 8, 36, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 108, 114, 115, 141, 152, 159, 166, 181, 193, 209, 240, 248, 249, 250, 251, 252, 253, 258, 266, 271, 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, 263, 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, 261, 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], "_field": [0, 22, 31, 34, 35, 45, 52, 60, 103, 104, 115, 117, 124, 168, 177, 180], "_arrai": [0, 22, 31, 34, 35, 45, 52, 60, 103, 104, 115, 117, 124, 132, 141, 156, 166, 168, 177, 180], "alia": [0, 60, 248, 249, 250, 251, 252, 253, 271], "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], "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], "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], "f": [0, 45, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 61, 69, 85, 101, 102, 103, 104, 116, 117, 119, 120, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 152, 153, 154, 155, 157, 158, 159, 161, 162, 165, 166, 167, 193, 199, 203, 205, 206, 207, 209, 214, 217, 218, 219, 224, 225, 232, 233, 236, 237, 238, 239, 240, 241, 242, 245, 259, 262, 271, 274, 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, 271, 277], "all": [0, 1, 3, 6, 13, 18, 20, 21, 46, 47, 61, 63, 65, 68, 76, 80, 82, 91, 96, 102, 103, 104, 106, 109, 110, 112, 113, 116, 118, 119, 132, 133, 138, 153, 157, 158, 161, 167, 193, 196, 199, 200, 204, 207, 213, 219, 220, 225, 226, 227, 228, 230, 235, 237, 239, 241, 247, 254, 255, 256, 257, 258, 259, 262, 264, 266, 267, 271, 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, 262, 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, 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, 262, 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], "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], "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, 264, 266, 267, 271, 272, 274, 276, 277], "default": [0, 1, 2, 3, 4, 5, 6, 9, 18, 25, 31, 33, 46, 47, 55, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 78, 81, 88, 91, 106, 107, 108, 111, 114, 115, 116, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 152, 157, 158, 166, 171, 177, 179, 191, 193, 195, 200, 204, 206, 207, 225, 226, 227, 228, 230, 232, 233, 238, 239, 240, 241, 242, 244, 245, 247, 249, 255, 257, 258, 259, 266, 268, 269, 270, 271, 276, 277], "primitive_poli": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 161, 193, 206, 207, 225, 238, 239, 259, 271, 274], "lagrange_poli": [0, 222, 271, 272], "y": [0, 45, 73, 83, 84, 89, 96, 110, 117, 191, 192, 222, 257, 266, 267, 271, 272, 276, 277], "comput": [0, 8, 18, 31, 33, 61, 72, 75, 76, 77, 83, 84, 90, 91, 93, 94, 97, 106, 109, 115, 116, 132, 152, 155, 157, 158, 159, 177, 179, 193, 196, 197, 198, 199, 200, 201, 203, 204, 205, 218, 219, 220, 222, 223, 224, 226, 230, 233, 243, 254, 257, 258, 259, 260, 267, 268, 269, 270, 271, 274, 276, 277], "lagrang": [0, 222, 271], "l": [0, 61, 83, 84, 92, 99, 116, 222, 240, 241], "x_i": [0, 222, 233], "y_i": [0, 222], "bch": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 267, 271, 273, 274], "textrm": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 61, 75, 76, 90, 94, 97, 107, 109, 116, 153, 159, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 192, 194, 200, 203, 204, 224, 228, 230, 233, 240, 241, 257, 270, 271, 276, 277], "n": [0, 1, 2, 22, 23, 24, 25, 27, 28, 30, 31, 32, 33, 36, 38, 40, 41, 45, 46, 47, 50, 51, 53, 55, 56, 57, 58, 61, 62, 66, 75, 76, 83, 90, 93, 97, 103, 104, 109, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 132, 157, 158, 165, 168, 169, 170, 171, 173, 174, 176, 177, 178, 179, 181, 183, 185, 186, 191, 192, 193, 195, 196, 198, 199, 200, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 240, 241, 246, 247, 254, 257, 258, 267, 270, 271, 273, 274], "k": [0, 22, 23, 24, 25, 27, 30, 31, 32, 33, 40, 41, 61, 69, 83, 84, 103, 104, 116, 132, 138, 152, 155, 159, 161, 162, 166, 168, 169, 170, 171, 173, 176, 177, 178, 179, 185, 186, 195, 198, 199, 204, 205, 209, 211, 213, 217, 221, 222, 230, 232, 240, 241, 273, 274, 277], "code": [0, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 153, 154, 155, 167, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 197, 199, 225, 263, 266, 267, 271, 273, 274], "reedsolomon": [0, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 267, 271, 273], "r": [0, 31, 76, 90, 104, 109, 132, 154, 157, 158, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 193, 228, 254, 261, 262, 263, 264, 266, 267, 268, 271], "flfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "fibonacci": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "feedback": [0, 45, 47, 50, 51, 117, 119, 122, 123, 191, 267, 271], "shift": [0, 45, 46, 58, 117, 118, 130, 191, 267], "regist": [0, 45, 46, 58, 117, 118, 130, 191, 267], "lfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 191, 271], "glfsr": [0, 45, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 191, 267, 271], "berlekamp_massei": [0, 45, 117, 191, 271], "output": [0, 31, 33, 45, 57, 59, 64, 67, 114, 117, 129, 131, 177, 179, 191, 204, 230, 261, 270, 271, 273], "minim": [0, 45, 54, 61, 93, 116, 117, 126, 191, 222, 271], "c": [0, 22, 25, 28, 29, 31, 32, 33, 36, 37, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 76, 97, 109, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 153, 167, 168, 171, 174, 175, 177, 178, 179, 181, 182, 188, 191, 204, 210, 230, 231, 233, 268, 271], "produc": [0, 45, 54, 57, 59, 64, 117, 126, 129, 131, 137, 191, 206, 207, 238, 239, 256, 269, 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, 262, 271], "argument": [0, 69, 91, 103, 104, 115, 190, 197, 201, 223, 230, 243, 256, 257, 258, 259, 262, 266, 268, 271, 272, 273, 274], "ar": [0, 1, 11, 22, 25, 28, 31, 32, 37, 43, 45, 57, 59, 61, 65, 67, 76, 78, 80, 89, 90, 91, 94, 96, 97, 103, 104, 108, 109, 110, 111, 114, 115, 116, 117, 131, 132, 133, 135, 138, 139, 141, 142, 143, 144, 147, 149, 151, 153, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 168, 171, 174, 177, 178, 182, 188, 190, 191, 192, 193, 198, 199, 200, 204, 206, 209, 210, 215, 216, 217, 219, 224, 225, 227, 228, 230, 231, 238, 240, 241, 242, 245, 246, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 263, 264, 266, 267, 268, 269, 270, 271, 274, 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, 262, 267, 269, 270, 271, 272, 274, 276, 277], "_poli": [0, 197, 199], "multiplicand": [0, 197], "t": [0, 22, 31, 44, 45, 46, 58, 76, 90, 97, 99, 109, 117, 118, 130, 133, 138, 143, 168, 177, 189, 191, 197, 206, 207, 225, 228, 238, 239, 260, 261, 269, 270, 271, 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, 261, 262, 263, 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, 262, 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, 262, 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, 263, 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, 263, 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, 274, 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, 261, 262, 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, 263, 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, 261, 266, 267, 268, 269, 270, 271, 272, 273, 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, 274], "nearest": [0, 229, 234], "prev_prim": [0, 221, 229, 234, 235, 244, 271, 274], "random_prim": [0, 244, 272], "bit": [0, 226, 227, 244], "seed": [0, 4, 64, 137, 244, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274], "random": [0, 1, 4, 22, 31, 32, 33, 61, 64, 75, 76, 90, 91, 93, 97, 109, 116, 132, 137, 152, 156, 159, 168, 177, 178, 179, 194, 200, 206, 222, 236, 238, 240, 243, 244, 249, 253, 254, 255, 258, 259, 264, 269, 270, 271, 272, 273, 274, 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, 263, 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, 263, 271], "print": [0, 25, 27, 34, 35, 45, 46, 49, 59, 61, 69, 71, 73, 88, 105, 106, 107, 115, 116, 117, 118, 121, 131, 147, 173, 180, 191, 192, 194, 202, 203, 205, 207, 209, 218, 219, 224, 236, 237, 239, 240, 241, 242, 245, 255, 256, 259, 266, 271, 272, 273, 274, 276, 277], "option": [0, 31, 73, 115, 166, 177, 202, 232, 242, 245, 268, 271, 274], "packag": [0, 103, 104, 202, 209, 232, 240, 242, 245, 263, 267, 271, 272, 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, 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, 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, 262, 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, 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, 262, 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, 263, 271, 274], "paramet": [2, 3, 4, 5, 6, 8, 18, 25, 31, 32, 33, 46, 47, 55, 57, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 91, 103, 104, 106, 107, 108, 114, 115, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 148, 152, 154, 157, 158, 166, 171, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247], "along": [2, 62, 191], "one": [2, 31, 32, 57, 62, 103, 104, 129, 132, 136, 137, 160, 162, 177, 178, 209, 217, 225, 226, 227, 232, 240, 254, 255, 257, 259, 260, 268, 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, 262, 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, 263, 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, 263, 266, 268, 274], "step": [5, 45, 53, 55, 56, 57, 59, 65, 117, 125, 127, 128, 129, 131, 155, 191, 199, 232, 255], "increment": [5, 65], "between": [5, 65, 139, 193, 254, 271, 274, 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, 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, 262, 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, 90, 91, 97, 99, 101, 102, 104, 107, 110, 111, 113, 115, 117, 155, 169, 170, 173, 177, 178, 179, 184, 187, 192, 198, 199, 209, 214, 235, 240, 246, 250, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 273, 276, 277], "larger": [8, 77, 115, 204, 225, 230, 247, 257], "whose": [8, 22, 28, 77, 78, 80, 111, 112, 115, 132, 153, 168, 174, 209, 214, 240, 271], "int64": [8, 77, 78, 80, 111, 112, 115, 249, 256, 257, 271, 273], "arithmet": [8, 22, 25, 34, 45, 51, 52, 73, 77, 78, 80, 111, 112, 115, 117, 123, 124, 132, 144, 204, 230, 255, 257, 267, 268, 269, 270, 271, 274], "zech": [8, 77, 115, 257], "anti": [8, 77, 115], "tabl": [8, 18, 61, 73, 77, 78, 91, 106, 107, 111, 112, 115, 116, 206, 225, 258, 267, 271, 276, 277], "effici": [8, 57, 77, 115, 129, 212, 233, 235, 240, 260, 267, 269, 270, 271, 277], "In": [8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 266, 269, 270, 271, 272, 274, 276, 277], "few": [8, 77, 115, 276, 277], "case": [8, 77, 115, 224, 232, 257, 264, 270], "explicit": [8, 18, 77, 78, 91, 106, 111, 112, 115, 250, 258, 267, 271, 276, 277], "faster": [8, 77, 115, 257, 267, 270, 271, 274], "design": [8, 25, 29, 30, 36, 37, 43, 77, 115, 171, 175, 182, 261, 267, 273], "larg": [8, 18, 77, 80, 106, 115, 212, 240, 256, 257, 258, 262, 267, 271, 274], "should": [8, 25, 77, 94, 115, 171, 206, 212, 238], "store": [8, 77, 115, 256, 257, 261, 263, 264], "ram": [8, 77, 115], "slower": [8, 77, 115, 257, 269, 270], "pure": [8, 77, 78, 111, 112, 115, 257, 267], "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, 263, 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, 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, 261, 269, 270, 271, 272, 273, 276, 277], "process": [18, 106, 258], "take": [18, 106, 115, 257, 258, 261, 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, 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, 262, 271], "perman": [18, 81, 106, 258], "disregard": [18, 106, 206, 207, 238, 239], "note": [18, 30, 33, 36, 42, 44, 45, 47, 50, 51, 67, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89, 90, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 117, 119, 122, 123, 135, 138, 139, 144, 147, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 177, 179, 181, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 211, 212, 213, 214, 215, 216, 217, 219, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 237, 238, 239, 240, 241, 244, 246, 260, 276, 277], "_q": [22, 30, 31, 40, 41, 168, 176, 185, 186], "linear": [22, 45, 50, 52, 54, 58, 76, 109, 117, 122, 124, 126, 130, 168, 191, 267, 271], "block": [22, 168, 242, 271], "codeword": [22, 25, 31, 32, 33, 35, 36, 39, 41, 44, 168, 171, 177, 178, 179, 180, 181, 184, 186, 189, 273], "messag": [22, 25, 31, 32, 33, 39, 40, 168, 171, 177, 178, 179, 184, 185, 273], "minimum": [22, 30, 31, 168, 176, 206, 207, 225, 238, 239, 271, 274], "distanc": [22, 25, 29, 30, 31, 36, 37, 43, 168, 171, 175, 176, 182, 273], "taken": [22, 168, 204, 230], "alphabet": [22, 25, 35, 168, 171, 180], "construct": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 73, 115, 117, 118, 119, 132, 133, 134, 135, 136, 137, 138, 139, 140, 155, 159, 168, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 199, 236, 237, 257, 271], "full": [22, 168, 242], "encod": [22, 25, 31, 32, 33, 168, 171, 177, 178, 179, 271, 273], "decod": [22, 31, 168, 177, 271, 273, 274], "onli": [22, 29, 31, 32, 33, 36, 37, 43, 80, 89, 108, 112, 141, 157, 159, 166, 168, 177, 178, 179, 193, 196, 207, 209, 210, 214, 215, 231, 239, 240, 241, 242, 247, 255, 256, 257, 264, 269, 270, 271, 274, 276, 277], "applic": [22, 31, 32, 33, 45, 117, 168, 177, 178, 179, 191, 206, 207, 238, 239, 271], "systemat": [22, 23, 25, 31, 32, 33, 39, 168, 169, 171, 177, 178, 179, 184, 271], "root": [22, 25, 28, 29, 31, 36, 37, 43, 61, 89, 101, 102, 103, 104, 110, 115, 116, 132, 138, 159, 166, 168, 171, 174, 175, 177, 181, 182, 188, 204, 205, 209, 215, 218, 230, 240, 241, 259, 266, 271], "alpha": [22, 25, 28, 29, 31, 36, 37, 43, 61, 69, 91, 101, 102, 103, 104, 116, 166, 168, 171, 174, 175, 177, 181, 182, 188, 238, 239, 254, 256, 257, 258, 266, 277], "evalu": [22, 31, 36, 43, 75, 93, 132, 138, 141, 177, 181, 188, 222, 271, 274], "uniti": [22, 25, 28, 61, 103, 104, 116, 168, 171, 174, 204, 230, 254], "m_": [22, 31, 33, 177, 179], "exampl": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 255, 256, 258, 259, 266, 269, 270, 271, 272, 273, 276, 277], "binari": [22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 115, 135, 206, 254, 259, 271, 274], "15": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 57, 61, 64, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 97, 101, 102, 103, 104, 107, 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, 254, 255, 256, 257, 258, 259, 260, 262, 263, 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, 261, 264, 266, 267, 268, 269, 270, 271, 273, 276, 277], "dec_m": [22, 168], "np": [22, 31, 64, 69, 75, 91, 92, 99, 103, 104, 108, 110, 137, 141, 168, 177, 191, 204, 222, 230, 237, 248, 249, 255, 256, 258, 260, 266, 269, 270, 271, 273, 274, 276, 277], "array_equ": [22, 31, 91, 92, 99, 110, 168, 177, 191, 222, 254, 271], "true": [22, 25, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 50, 51, 60, 61, 69, 75, 76, 86, 87, 88, 89, 90, 91, 92, 97, 99, 105, 107, 109, 110, 115, 116, 122, 123, 135, 141, 142, 144, 153, 154, 157, 158, 159, 160, 161, 162, 166, 167, 168, 171, 173, 174, 175, 177, 178, 180, 182, 183, 184, 190, 191, 192, 193, 194, 197, 198, 200, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 222, 226, 227, 228, 230, 231, 236, 237, 238, 239, 240, 241, 244, 246, 254, 255, 256, 258, 260, 266, 270, 271, 274, 276, 277], "instruct": [22, 168, 264], "number": [22, 25, 31, 32, 33, 57, 66, 76, 90, 97, 108, 109, 129, 152, 168, 171, 177, 178, 179, 198, 200, 204, 206, 207, 209, 215, 216, 228, 230, 237, 238, 239, 240, 241, 244, 246, 264, 267, 271, 274, 276, 277], "correct": [22, 31, 44, 168, 177, 189, 197, 267, 269, 276, 277], "error": [22, 31, 32, 44, 168, 177, 178, 189, 197, 225, 267, 271, 274], "8": [22, 23, 25, 27, 28, 31, 32, 33, 36, 37, 39, 43, 45, 55, 57, 61, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 106, 107, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 148, 152, 153, 154, 155, 156, 157, 158, 161, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 204, 206, 207, 209, 210, 213, 218, 219, 222, 230, 231, 232, 236, 237, 238, 239, 240, 241, 243, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 271, 272, 273, 276, 277], "9": [22, 23, 25, 27, 28, 31, 32, 33, 37, 39, 45, 55, 57, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 82, 83, 84, 89, 91, 93, 94, 96, 99, 101, 102, 103, 104, 106, 107, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 153, 154, 157, 158, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 206, 209, 210, 219, 228, 230, 231, 232, 236, 238, 240, 241, 243, 246, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 261, 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, 268, 274], "relev": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 271], "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, 262, 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, 262], "generator_poli": [22, 23, 27, 36, 37, 39, 43, 168, 169, 173, 175, 181, 182, 184, 188], "parity_check_poli": [22, 24, 42, 168, 170, 187], "13": [23, 24, 25, 26, 27, 28, 31, 32, 33, 38, 39, 42, 45, 57, 61, 65, 69, 73, 75, 76, 82, 89, 91, 93, 94, 101, 102, 107, 108, 110, 113, 115, 117, 129, 135, 139, 142, 152, 159, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 195, 197, 198, 204, 208, 209, 210, 212, 226, 229, 230, 231, 232, 234, 235, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 271, 272, 273, 274, 276, 277], "fals": [23, 27, 31, 32, 37, 38, 39, 75, 86, 87, 88, 89, 115, 132, 141, 142, 157, 158, 159, 160, 161, 162, 166, 169, 173, 177, 178, 182, 183, 184, 190, 192, 193, 200, 204, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 228, 231, 236, 237, 239, 240, 241, 255, 256, 268, 271, 273], "2x": [23, 24, 27, 34, 39, 42, 61, 69, 75, 93, 107, 115, 152, 154, 155, 157, 158, 161, 162, 167, 170, 180, 187, 193, 194, 197, 199, 206, 207, 214, 217, 223, 237, 238, 239, 243, 248, 250, 251, 252, 255, 256, 258, 259, 260, 266, 271, 276], "either": [25, 31, 32, 33, 108, 112, 139, 148, 171, 177, 178, 179, 228, 245, 257, 258, 266, 267], "provid": [25, 94, 115, 171, 193, 255, 256, 262, 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, 262], "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, 262, 267, 268, 271, 274, 277], "primitive_root_of_un": [25, 61, 103, 116, 171, 254, 271], "26": [25, 26, 27, 30, 31, 32, 34, 35, 40, 41, 44, 69, 75, 82, 91, 101, 102, 107, 109, 110, 113, 117, 170, 173, 176, 177, 178, 180, 185, 186, 187, 189, 254, 255, 256, 258, 259, 260, 261, 268, 270, 274, 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, 254, 255, 256, 258, 259, 260, 261, 266, 268, 272, 273, 274, 276, 277], "10": [25, 31, 32, 33, 37, 45, 53, 55, 56, 57, 59, 61, 64, 65, 69, 72, 73, 75, 76, 82, 89, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 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, 64, 65, 67, 69, 72, 73, 75, 76, 82, 89, 90, 91, 92, 93, 94, 96, 97, 101, 102, 103, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 181, 182, 184, 187, 188, 190, 191, 192, 194, 197, 198, 200, 204, 209, 210, 230, 231, 232, 235, 236, 238, 240, 241, 246, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 261, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "discov": [25, 199, 225, 232, 247, 271, 274, 277], "loop": [25, 207, 239, 241, 262, 269, 270, 271, 272, 274], "12": [25, 27, 31, 32, 33, 45, 55, 57, 61, 64, 65, 67, 69, 72, 73, 75, 82, 89, 91, 92, 93, 94, 101, 102, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 169, 170, 173, 175, 177, 178, 179, 181, 182, 184, 187, 188, 192, 194, 196, 197, 198, 201, 204, 209, 210, 216, 225, 228, 231, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 270, 271, 272, 274, 276, 277], "14": [25, 26, 27, 30, 31, 32, 33, 34, 35, 40, 41, 44, 45, 57, 61, 64, 65, 69, 73, 75, 76, 82, 89, 91, 93, 94, 97, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 129, 135, 152, 159, 166, 168, 169, 170, 173, 177, 178, 179, 184, 187, 192, 194, 204, 209, 223, 225, 230, 231, 238, 240, 243, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 269, 270, 276, 277], "24": [25, 31, 32, 45, 64, 69, 75, 76, 82, 91, 97, 99, 101, 102, 107, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 184, 196, 199, 209, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 268, 273, 274, 276, 277], "22": [25, 31, 32, 45, 64, 69, 75, 76, 82, 90, 91, 92, 97, 101, 102, 107, 110, 113, 115, 117, 169, 170, 173, 177, 178, 184, 187, 209, 228, 241, 250, 254, 255, 256, 258, 259, 260, 268, 276, 277], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 82, 90, 91, 101, 102, 104, 107, 109, 110, 113, 115, 117, 155, 166, 169, 173, 176, 177, 178, 179, 180, 184, 185, 186, 189, 192, 199, 209, 217, 231, 240, 250, 251, 254, 255, 256, 258, 259, 260, 261, 266, 268, 273, 274, 276, 277], "16": [25, 31, 32, 33, 34, 45, 64, 65, 67, 69, 73, 75, 78, 82, 90, 91, 92, 97, 101, 102, 103, 104, 107, 108, 110, 111, 113, 114, 115, 117, 135, 169, 170, 173, 177, 178, 179, 180, 184, 187, 192, 197, 201, 209, 225, 228, 231, 237, 240, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 272, 273, 276, 277], "string": [27, 49, 73, 95, 105, 107, 121, 135, 139, 147, 173, 248, 249, 250, 251, 252, 256, 259, 271, 276], "multiplicative_ord": [28, 61, 94, 107, 116, 174, 214, 236, 237, 255, 271, 273, 274, 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, 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, 261, 273, 274, 276], "entir": [31, 177, 269, 276], "too": [31, 80, 177, 262], "member": [31, 33, 177, 179], "m_1": [31, 33, 138, 166, 177, 179, 194], "m_0": [31, 33, 177, 179], "divis": [31, 73, 177, 199, 217, 247, 266, 269, 271], "c_1": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "c_0": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "receiv": [31, 177], "locat": [31, 108, 177, 261, 264], "sigma": [31, 177], "It": [31, 71, 159, 195, 204, 222, 230, 233, 254, 255, 256, 257, 258, 260, 264, 267, 268, 271, 276, 277], "up": [31, 115, 199, 226, 227, 235, 247, 257, 262, 267, 271, 274], "singl": [31, 32, 33, 64, 72, 75, 89, 91, 93, 94, 139, 177, 178, 179, 254, 256, 271], "recov": [31, 177, 232, 255], "19": [31, 32, 33, 45, 65, 69, 75, 82, 90, 91, 92, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 179, 184, 198, 199, 209, 226, 235, 240, 241, 246, 250, 252, 254, 255, 256, 258, 259, 260, 266, 268, 272, 276, 277], "three": [31, 32, 33, 177, 178, 179, 223, 225, 241, 243, 257, 276], "21": [31, 32, 45, 64, 69, 75, 76, 82, 90, 91, 92, 101, 102, 107, 109, 110, 113, 115, 117, 169, 171, 172, 173, 174, 177, 178, 183, 184, 209, 240, 241, 250, 254, 255, 256, 258, 259, 260, 266, 268, 270, 274, 276, 277], "23": [31, 32, 45, 69, 75, 76, 82, 90, 91, 101, 102, 107, 110, 113, 117, 155, 173, 177, 178, 199, 209, 250, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "add": [31, 108, 177, 250, 260, 271, 275, 276], "second": [31, 177, 197, 201, 232, 266, 268], "two": [31, 32, 89, 108, 110, 132, 142, 157, 177, 178, 193, 197, 201, 230, 254, 255, 257, 258, 260, 264, 269, 270, 271, 276, 277], "third": [31, 177, 264], "25": [31, 32, 45, 69, 75, 82, 90, 91, 92, 97, 101, 102, 107, 108, 109, 110, 113, 115, 117, 155, 169, 170, 173, 177, 178, 184, 187, 199, 254, 255, 256, 258, 259, 260, 268, 272, 274, 276, 277], "27": [31, 32, 34, 64, 69, 75, 76, 82, 91, 92, 101, 102, 107, 108, 110, 113, 115, 173, 177, 178, 180, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "28": [31, 32, 64, 75, 82, 85, 91, 97, 99, 101, 102, 104, 109, 110, 113, 115, 155, 173, 177, 178, 199, 223, 254, 255, 256, 258, 259, 260, 268, 276, 277], "29": [31, 32, 64, 75, 76, 82, 91, 92, 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, 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, 75, 76, 79, 80, 82, 85, 86, 87, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104, 108, 109, 113, 115, 155, 173, 177, 178, 199, 209, 218, 226, 227, 241, 254, 255, 256, 258, 259, 260, 268, 270, 272, 274, 276, 277], "32": [31, 32, 78, 91, 111, 112, 155, 173, 177, 178, 199, 253, 254, 255, 256, 258, 259, 260, 268, 269, 270, 274, 276, 277], "33": [31, 32, 91, 141, 155, 171, 172, 173, 174, 177, 178, 183, 199, 254, 255, 256, 258, 259, 260, 268, 269, 276, 277], "34": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 266, 268, 271, 276, 277], "35": [31, 32, 75, 91, 115, 177, 178, 210, 231, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "36": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 270, 276, 277], "37": [31, 32, 91, 115, 141, 145, 155, 177, 178, 199, 232, 254, 255, 256, 258, 259, 260, 268, 271, 276, 277], "38": [31, 32, 91, 155, 157, 158, 177, 178, 193, 199, 228, 254, 256, 258, 259, 260, 266, 268, 276, 277], "39": [31, 91, 155, 177, 178, 194, 199, 254, 256, 258, 259, 260, 268, 271, 276, 277], "40": [31, 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, 75, 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, 263, 267, 269, 274], "specif": [43, 138, 188, 232, 255, 263, 264, 266, 268], "bigg": [44, 189, 198, 224], "reciproc": [45, 47, 50, 51, 117, 119, 122, 123, 271, 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, 263, 266, 268], "revers": [45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 59, 117, 120, 121, 122, 123, 124, 125, 127, 128, 129, 131, 132, 165, 204, 207, 230, 239, 241, 267, 271], "refer": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 269, 271], "gardner": [45, 117, 191], "2019": [45, 117, 191], "model": [45, 117, 191], "cryptographi": [45, 117, 191], "figshar": [45, 117], "http": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 261, 262, 263, 267, 271, 272], "hdl": [45, 117, 191], "handl": [45, 117, 191, 271], "net": [45, 117, 191], "2134": [45, 117, 191], "21932": [45, 117, 191], "feedback_poli": [45, 46, 47, 49, 50, 51, 59, 117, 118, 119, 121, 122, 123, 131, 191], "characteristic_poli": [45, 46, 49, 50, 51, 59, 61, 75, 93, 116, 117, 118, 121, 122, 123, 131, 191, 271], "initial_st": [45, 46, 49, 53, 59, 117, 118, 121, 125, 131, 191], "3x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 142, 144, 146, 147, 148, 149, 150, 151, 152, 154, 160, 163, 164, 165, 167, 170, 175, 181, 182, 187, 188, 191, 194, 197, 206, 238, 242, 243, 245, 255, 259, 260, 271, 274], "5x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 141, 144, 146, 147, 148, 149, 150, 151, 152, 159, 163, 164, 165, 170, 187, 191, 194, 197, 206, 236, 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, 262, 266, 269, 270, 271, 276, 277], "direct": [57, 129, 209, 240], "backward": [57, 129, 275], "ab": [57, 129, 276], "end": [57, 129, 224, 262], "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, 267, 271], "44": [61, 75, 115, 155, 177, 199, 253, 254, 255, 256, 258, 259, 260, 268, 270, 271, 276, 277], "236": [61, 75, 254, 266, 271], "206": [61, 254, 268, 271], "138": [61, 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, 253, 254, 259, 268], "204": [61, 91, 254, 266], "55": [61, 115, 141, 254, 255, 256, 259, 260, 268, 271, 274, 276, 277], "113": [61, 91, 247, 254], "vandermond": [61, 66, 116], "row": [61, 66, 76, 90, 97, 107, 108, 109, 116], "prime": [61, 65, 67, 74, 75, 79, 82, 83, 84, 86, 87, 93, 100, 101, 102, 113, 114, 115, 116, 159, 192, 193, 196, 198, 199, 200, 204, 206, 207, 209, 210, 211, 212, 213, 216, 217, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, 244, 247, 258, 267, 269, 271, 274, 276], "subfield": [61, 67, 83, 84, 100, 114, 116, 193, 258], "non_squar": [61, 89, 96, 116, 254, 271], "primitive_roots_of_un": [61, 104, 116, 271], "without": [61, 71, 116, 132, 147, 250, 259, 266, 267], "arithmetic_t": [61, 73, 116, 271, 276, 277], "repr_tabl": [61, 107, 116, 258, 271, 276, 277], "compar": [61, 107, 116, 142, 258, 269, 270, 271], "additive_ord": [61, 72, 116, 271], "addit": [61, 72, 73, 116, 152, 200, 206, 207, 228, 238, 239, 257, 259, 266, 271, 274], "field_norm": [61, 83, 116, 271], "norm": [61, 83, 116, 271], "_": [61, 83, 84, 116, 241, 257, 276, 277], "field_trac": [61, 84, 116, 271], "trace": [61, 75, 84, 116, 271], "tr": [61, 75, 84, 116], "beta": [61, 91, 116, 254, 271, 272], "minimal_poli": [61, 93, 116, 271], "ord": [61, 94, 107, 116, 276, 277], "column_spac": [61, 76, 97, 116, 271], "column": [61, 66, 76, 97, 99, 108, 116, 268], "space": [61, 76, 90, 97, 109, 116, 139, 250, 258, 271], "left_null_spac": [61, 90, 109, 116, 271], "null": [61, 76, 90, 97, 109, 116], "lu_decompos": [61, 92, 116, 271], "decompos": [61, 92, 99, 116], "input": [61, 72, 75, 89, 92, 93, 94, 99, 108, 116, 204, 230, 254, 257, 258, 270, 271, 274], "lower": [61, 92, 99, 116, 159, 228], "upper": [61, 92, 99, 116], "triangular": [61, 92, 99, 116], "matric": [61, 92, 99, 116, 141, 254, 260, 269, 270], "null_spac": [61, 76, 97, 116, 271], "plu_decompos": [61, 99, 116, 271, 274], "partial": [61, 99, 116], "pivot": [61, 99, 116], "row_reduc": [61, 108, 116, 254, 272], "ncol": [61, 108, 116], "perform": [61, 108, 116, 141, 204, 230, 232, 254, 257, 259, 260, 267, 268, 271, 276, 277], "gaussian": [61, 108, 116], "elimin": [61, 108, 116, 255, 257, 274], "achiev": [61, 108, 116, 171, 204, 230, 271], "reduc": [61, 108, 116, 159, 200, 228, 255, 257, 260, 269, 270, 271, 276, 277], "echelon": [61, 108, 116], "form": [61, 108, 116, 209, 240, 246, 276, 277], "rref": [61, 108, 116], "row_spac": [61, 90, 109, 116, 271], "prime_subfield": [61, 100, 116], "is_extension_field": [61, 86, 116, 271], "is_prime_field": [61, 87, 116, 271], "is_squar": [61, 89, 96, 110, 116, 254, 271], "repeat": [64, 137, 141, 152, 254, 260], "123456789": [64, 137, 271], "global": [64, 137, 262, 271], "rng": [64, 137, 271], "default_rng": [64, 137, 271], "simpli": [65, 75, 93, 256, 258, 270], "sinc": [65, 83, 84, 89, 107, 159, 200, 209, 213, 228, 238, 239, 240, 247, 260, 261, 266, 271, 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, 75, 248, 250, 251, 254, 256, 258, 268], "148": [69, 248, 251, 254, 256, 269], "205": [69, 75, 91, 248, 251, 254, 256], "69": [69, 91, 228, 248, 251, 254, 256, 258, 259, 260, 268, 271, 276], "54": [69, 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, 262, 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, "198": [75, 91, 138, 254], "152": [75, 253, 254, 268], "115": [75, 91, 254, 268, 271], "200": [75, 254, 258, 268, 271], "144": [75, 253, 254], "142": [75, 254], "231": [75, 253, 254, 255, 256, 268, 272], "65x": 75, "54x": 75, "65": [75, 91, 171, 172, 173, 174, 183, 253, 254, 256, 260, 268, 270, 271, 276, 277], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "63": [75, 91, 254, 256, 260, 268, 276, 277], "218": [75, 141, 201, 254, 268, 271], "53": [75, 91, 228, 254, 256, 260, 268, 271, 276, 277], "52": [75, 115, 254, 255, 256, 259, 260, 268, 271, 276, 277], "185": [75, 91, 133, 141, 254, 255, 256, 272], "56": [75, 115, 254, 255, 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, 111, 112, 115, 210, 231, 232, 247, 249, 254, 255, 256, 257, 266, 268, 269, 270, 271, 272, 274], "unsupport": 80, "typeerror": [80, 104, 271], "small": [80, 233, 256, 270, 271, 274, 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, 261, 267, 270, 271, 276, 277], "certain": [80, 254, 256, 259, 271, 274], "unlimit": [80, 256, 257], "chang": [81, 257, 258, 259, 263, 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, 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, 264, 266, 268, 269, 270, 271], "obei": 91, "broadcast": [91, 254, 266, 272], "rule": [91, 139, 266], "180": [91, 254], "139": [91, 254], "146": [91, 141, 254, 266, 268], "99": [91, 254, 256, 268, 271], "67": [91, 254, 256, 260, 266, 268, 271, 272, 276], "83": [91, 242, 245, 254, 256, 268, 271, 276], "159": [91, 254, 271], "189": [91, 254], "209": [91, 254, 256], "169": [91, 254], "59": [91, 173, 253, 254, 256, 260, 268, 271, 274, 276, 277], "219": [91, 254, 268], "76": [91, 254, 256, 268, 271, 276], "120": [91, 93, 199, 253, 254, 262], "161": [91, 254, 268, 272], "129": [91, 254, 268, 271], "224": [91, 254, 266], "125": [91, 254], "232": [91, 254, 268, 271], "215": [91, 253, 254, 268, 271], "145": [91, 254, 259, 268], "233": [91, 254, 268], "190": [91, 254, 272], "174": [91, 254, 268], "202": [91, 254, 268], "239": [91, 253, 254], "230": [91, 254, 255, 266], "147": [91, 254, 268], "170": [91, 253, 254], "104": [91, 201, 253, 254, 256], "137": [91, 254, 259, 268, 271], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 276, 277], "anoth": [91, 108, 260, 277], "242": [91, 254, 255, 256, 271], "196": [91, 254], "51": [91, 254, 256, 259, 260, 266, 268, 272, 274, 276, 277], "163": [91, 141, 253, 254, 255, 271], "168": [91, 253, 254, 268, 271], "91": [91, 195, 228, 253, 254, 256, 268, 276], "86": [91, 254, 256, 268, 276], "203": [91, 254], "89": [91, 226, 254, 256, 268, 276], "107": [91, 197, 226, 254, 256], "175": [91, 254], "197": [91, 240, 241, 254, 268], "105": [91, 254, 256], "229": [91, 254, 268], "191": [91, 253, 254, 268, 271], "97": [91, 254, 256, 268], "177": [91, 254, 268], "135": [91, 254, 266], "221": [91, 197, 253, 254, 271], "43": [91, 115, 137, 177, 254, 255, 256, 258, 259, 260, 268, 276, 277], "227": [91, 166, 254], "217": [91, 253, 254, 271], "85": [91, 171, 172, 173, 174, 183, 254, 256, 268, 272, 276], "241": [91, 152, 254, 255, 266, 268, 271], "183": [91, 254, 256], "71": [91, 254, 256, 260, 268, 271, 276], "109": [91, 242, 245, 254, 256, 266, 271], "155": [91, 254], "151": [91, 254, 272], "181": [91, 197, 254, 269, 271], "199": [91, 254, 268], "213": [91, 254, 256, 268], "131": [91, 254, 268, 271], "201": [91, 141, 145, 254, 271], "87": [91, 254, 256, 266, 268, 274, 276], "79": [91, 228, 254, 256, 268, 274, 276], "123": [91, 141, 145, 254, 256, 271], "193": [91, 254, 255, 256, 268, 271, 272], "173": [91, 254, 266], "141": [91, 254, 268], "149": [91, 219, 220, 224, 254, 268], "61": [91, 226, 253, 254, 256, 260, 271, 276, 277], "195": [91, 254, 256, 271], "117": [91, 135, 139, 254, 259], "81": [91, 228, 237, 254, 255, 256, 268, 272, 274, 276], "111": [91, 254, 256], "225": [91, 138, 254, 271], "157": [91, 93, 254], "235": [91, 254, 268, 271], "75": [91, 228, 254, 256, 258, 268, 276], "133": [91, 254], "171": [91, 254, 271, 272], "101": [91, 254, 256], "207": [91, 254, 268, 271], "103": [91, 141, 254, 256], "57": [91, 115, 254, 255, 256, 260, 268, 271, 274, 276, 277], "119": [91, 137, 138, 254], "211": [91, 254], "223": [91, 132, 171, 172, 173, 174, 183, 254], "95": [91, 253, 254, 256, 266, 268, 271], "237": [91, 254, 271], "127": [91, 226, 227, 253, 254, 266, 271], "73": [91, 133, 254, 256, 260, 268, 276], "167": [91, 254, 256, 268], "93": [91, 254, 256, 271, 276], "47": [91, 115, 254, 255, 256, 260, 266, 268, 274, 276, 277], "49": [91, 254, 255, 256, 260, 268, 272, 276, 277], "153": [91, 166, 254, 256, 268, 269], "179": [91, 254, 255, 259, 266, 268], "lu": 92, "decomposit": [92, 99], "u": [92, 99, 267, 268], "Not": 92, "m_a": 93, "notimplementederror": 93, "divid": [93, 103, 104, 157, 158, 193, 204, 230, 260, 272], "minimal_polynomial_": 93, "field_theori": 93, "linear_algebra": 93, "divmod": [93, 271], "arithmeticerror": 94, "There": [94, 103, 104, 213, 225, 241, 257, 259, 275, 276, 277], "ever": 94, "said": [94, 144, 159, 200, 215, 240, 241], "confus": 94, "former": 94, "latter": 94, "16807": [98, 105, 236], "permut": 99, "plu": 99, "itself": [100, 271, 276], "happen": [103, 104, 233], "omega_n": [103, 104, 204, 230], "ne": [103, 104, 107, 192, 222], "lt": [103, 104], "Then": [103, 104, 166], "do": [103, 104, 277], "traceback": [103, 104, 209, 232, 240], "recent": [103, 104, 209, 232, 240, 271], "cell": [103, 104, 209, 232, 240], "line": [103, 104, 209, 232, 240, 258, 262], "file": [103, 104, 209, 232, 240, 262, 264, 268, 274], "opt": [103, 104, 209, 232, 240], "hostedtoolcach": [103, 104, 209, 232, 240], "x64": [103, 104, 209, 232, 240], "lib": [103, 104, 209, 232, 240], "python3": [103, 104, 209, 232, 240, 261, 262, 263, 264, 266, 268], "site": [103, 104, 209, 232, 240, 261], "py": [103, 104, 209, 232, 240, 262, 264, 268, 274], "888": [103, 268], "cl": [103, 104], "886": 103, "887": 103, "890": 103, "omega_5": [103, 104], "arang": [103, 104, 256], "sort": [104, 107, 155, 196, 199, 268], "950": [104, 271], "948": 104, "949": 104, "952": 104, "953": 104, "outer": 104, "outsid": [106, 258], "revert": [106, 271], "previou": [106, 166, 258, 271], "ascend": [107, 146, 147, 148, 245, 250, 258], "ey": [108, 271, 272], "elementari": 108, "swap": 108, "multipli": [108, 152, 199, 260], "get": [108, 259, 261, 271], "matrix_rank": 108, "side": [108, 267, 272], "Or": [108, 141, 207, 239, 250, 255, 259, 260, 263, 264, 268], "y1": 110, "y2": 110, "constructor": [114, 256, 266, 267, 271], "vec": 114, "build": [115, 262], "exponenti": [115, 141, 256, 257, 271, 274], "user": [115, 254, 266, 267, 268, 271, 274], "fact": [115, 116, 228], "alreadi": [115, 255, 257, 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], "48": [115, 240, 241, 254, 255, 256, 260, 268, 270, 271, 276, 277], "46": [115, 155, 199, 254, 255, 256, 260, 268, 273, 276, 277], "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, 261, 262, 264, 267, 271, 274], "factor": [115, 153, 154, 155, 162, 166, 167, 195, 196, 198, 199, 210, 211, 216, 217, 228, 231, 232, 233, 247, 255, 267, 271, 274, 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], "124": [132, 254, 255, 256], "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, 141, 156, 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], "214": [133, 254, 256, 271], "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, "228x": 137, "157x": 137, "218x": 137, "148x": 137, "194x": 137, "195x": 137, "200x": 137, "141x": [137, 152, 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], "215x": 138, "90x": 138, "183x": [138, 271], "pars": 139, "indetermin": [139, 141, 250, 260], "requir": [139, 191, 233, 261, 262, 263, 264, 268, 270, 271, 274, 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, "84": [141, 254, 256, 268, 276], "96": [141, 254, 256, 268, 271, 274], "192": [141, 152, 254, 266, 268], "156": [141, 254, 268], "matrix_pow": [141, 260], "55x": [141, 259, 271], "77x": [141, 271], "104x": [141, 173, 271], "against": [142, 268], "distinct": [142, 153, 154, 155, 199], "comparison": [142, 211, 262, 269, 271], "allow": [142, 230, 232, 253, 254, 257, 258, 263, 264, 271, 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, 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, 236, 238, 243, 259, 260], "6x": [152, 157, 158, 193, 194, 206, 222, 236, 238, 243, 260, 270, 271], "126x": [152, 173], "35x": 152, "170x": 152, "108x": 152, "193x": 152, "186x": 152, "85x": 152, "192x": 152, "186": [152, 254, 268], "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], "44x": 156, "38x": 156, "78x": 156, "113x": 156, "89x": 156, "132": [156, 254, 255, 268], "computation": [157, 158, 159, 161, 162, 193, 271], "expens": [157, 158, 159, 161, 162, 193, 255, 271, 274], "task": [157, 158, 159, 161, 162], "manual": [157, 158, 193, 207, 239, 262, 264, 274], "frank": [157, 158, 193, 267, 274], "luebeck": [157, 158, 193, 267, 274], "databas": [157, 158, 193, 199, 206, 274], "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, 263, 267], "scienc": [157, 158, 193], "articl": [157, 158, 193], "pii": [157, 158, 193], "s0747717104000331": [157, 158, 193], "among": [157, 158, 193], "candid": [157, 158, 193], "accordingli": [157, 158, 193, 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, 263, 267, 268, 269, 270, 271, 274], "sai": [159, 200], "siam": 159, "1980": 159, "273": [159, 254, 256], "280": [159, 254, 268], "app": 159, "dtic": 159, "mil": 159, "sti": 159, "ada078416": 159, "gao": 159, "panarino": 159, "clemson": 159, "sgao": 159, "paper": 159, "gp97a": 159, "chap4": [159, 161, 200, 228], "factorization_of_polynomials_over_finite_field": 159, "necessari": [159, 248, 250, 252, 261, 269, 270, 271, 276], "suffici": 159, "condit": [159, 206, 207, 239, 241], "being": [159, 209, 212, 214, 271], "11x": [159, 169, 170, 184, 187], "8x": [159, 169, 175, 181, 182, 184, 188, 270], "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, 262], "_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, 262, 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], "9x": [169, 175, 181, 182, 184, 188, 269], "7x": [170, 175, 181, 182, 187, 188, 222, 259], "15x": [170, 173, 175, 181, 182, 187, 188], "18x": [170, 173, 187], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "22x": [170, 187], "25x": [170, 187, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "232x": 173, "29x": 173, "189x": 173, "142x": 173, "246x": 173, "43x": 173, "82x": 173, "238x": 173, "158x": 173, "119x": 173, "224x": 173, "134x": 173, "227x": 173, "210x": 173, "163x": 173, "40x": 173, "27x": 173, "253x": 173, "239x": 173, "216x": [173, 271], "190x": [173, 259], "191x": 173, "96x": [173, 271], "116x": 173, "137x": 173, "26x": 173, "203x": [173, 271], "23x": 173, "208x": 173, "130x": 173, "53x": 173, "188x": 173, "94x": 173, "146x": 173, "182x": 173, "12x": [175, 181, 182, 188], "f3": [190, 197, 201, 223, 243], "berlekamp": [191, 271], "massei": [191, 271], "depend": [191, 206, 261, 262, 264, 267, 271], "2n": 191, "sach": 191, "uniniti": 191, "part": 191, "vi": 191, "sing": 191, "embeddedrel": 191, "showarticl": 191, "1099": 191, "php": 191, "crypto": 191, "stanford": 191, "mironov": 191, "cs359": 191, "below": [191, 209, 225, 240, 254, 257, 258, 259, 260, 261, 269, 270], "reproduc": [191, 264, 271], "carmichael": [192, 209, 240, 271], "lambda": [192, 209, 240], "oei": [192, 198, 226, 227, 235, 246], "a002322": 192, "euler": [192, 198, 209, 237, 240], "phi": [192, 198, 209, 215, 237, 240, 241, 246], "notabl": [192, 225, 256], "And": [192, 200, 225], "pow": [192, 209, 219, 224, 240, 241, 271], "standard": [193, 218, 266, 267, 268, 271, 273], "split": 193, "henc": 193, "wai": [193, 254, 256, 259, 263, 270, 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, 268, 271], "mn": [204, 230], "criteria": [204, 230], "nx": 204, "normal": [204, 230, 254, 257, 266, 267], "tolist": [204, 230], "fourier": [204, 230, 254], "dft": [204, 230, 254, 271], "pi": [204, 230], "neq": [204, 230], "omega_": [204, 230], "point": [204, 230, 269], "x_j": [204, 222, 230], "x_k": [204, 230], "kj": 204, "coolei": [204, 230, 271], "tukei": [204, 230, 271], "fft": [204, 230, 267, 271], "cgyurgyik": [204, 230], "github": [204, 225, 230, 262, 267, 272], "io": [204, 230, 271, 272], "post": [204, 230], "2021": [204, 230, 271], "04": [204, 230, 268], "brief": [204, 230], "introduct": [204, 230, 271], "nayuki": [204, 230], "geeksforgeek": [204, 230], "import": [204, 230, 263, 266, 270, 271, 272, 273, 274, 277], "forward": [204, 230, 267, 271], "ifft": [204, 271], "exact": [206, 207, 238, 239], "request": [206, 263, 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], "0x7f015c55ed60": 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], "150": [210, 231, 254, 268, 271], "64": [210, 231, 253, 254, 256, 260, 268, 269, 276, 277], "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, "80": [214, 254, 256, 268, 271, 276], "altern": [215, 240, 241, 255], "regular": 216, "humbl": 216, "highli": 216, "60": [216, 254, 255, 256, 260, 268, 272, 276, 277], "As": [217, 255, 259, 267, 276, 277], "consequ": 217, "version": [218, 257, 261, 263, 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, "spot": 225, "pleas": [225, 267], "submit": 225, "lin": 225, "costello": 225, "control": 225, "a000043": 226, "2000": [226, 227], "521": [226, 274], "607": 226, "1279": 226, "merseen": 226, "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087": [226, 227], "a000668": 227, "8191": 227, "131071": 227, "524287": 227, "2305843009213693951": 227, "618970019642690137449562111": 227, "162259276829213363391578010288127": 227, "170141183460469231731687303715884105727": 227, "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151": 227, "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127": 227, "strong": 228, "declar": 228, "much": [228, 271], "dartmouth": 228, "carlp": 228, "paper25": 228, "62": [228, 254, 256, 260, 268, 270, 276, 277], "74": [228, 254, 256, 260, 271, 276], "82": [228, 254, 256, 266, 268, 271, 276], "strong_liar": 228, "90": [228, 253, 254, 256, 268, 271, 276], "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, "1181": 232, "1178": 232, "1179": 232, "1182": 232, "1183": 232, "secondari": 232, "1184": 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, "0x7f014f24b480": 239, "shoup": [240, 241], "am": [240, 241], "mcom": [240, 241], "1992": [240, 241], "58": [240, 241, 254, 256, 259, 260, 268, 271, 274, 276, 277], "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, "556174757507661489677583": 240, "0x7f014f24a8a0": 241, "insid": [242, 258, 271], "112": [243, 254, 266], "randomli": 244, "prime_number_theorem": 244, "327845897586213436751081882871255331286648902836386839087617368608439574698192016043769533823474001379935585889197488144338014865193967937011638431094821943416361149113909692569658970713864593781874423564706915495970135894084612689487074397782022398597547611189482697523681694691585678818112329605903872356773": 244, "openssl": 244, "1d2de38de88c67e1eafdeeae77c40b8709ed9c275522c6d5578976b1abcbe7e0f8c6de1271eec6eb3827649164189788f9f3a622aea5f4039761ec708b5841de88566d9b5baf49ba92dce5a300297a9e0e890e4103ed2ad4b5e0553ce56e8c34758cd45900125dba1553ae73aa0cbd6018a2a8713d46e475bf058d1aaa52ef1a5": 244, "n_r": 247, "15013": 247, "500": [247, 274], "1696469": 247, "recurs": [248, 251], "mix": [248, 251], "match": [248, 251], "previous": [248, 250, 252, 271], "coercion": [248, 250, 252], "width": [249, 258, 271], "variabl": [250, 262], "decreas": 250, "130": [253, 254], "234": [253, 254], "106": [253, 254, 256], "172": [253, 254, 271], "178": [253, 254, 268, 271], "78": [253, 254, 255, 256, 268, 270, 276], "166": [253, 254, 268, 271], "110": [253, 254, 256], "nearli": [254, 260, 266], "184": [254, 268], "univers": 254, "unari": 254, "variou": [254, 256, 262, 267, 271, 273, 274], "enabl": [254, 262, 271, 273], "expand": [254, 260], "detail": [254, 258, 259, 260, 266, 271, 276, 277], "88": [254, 256, 268, 269, 271, 276], "176": [254, 271], "126": 254, "98": [254, 256, 268], "50": [254, 256, 260, 268, 271, 272, 276, 277], "216": [254, 255, 256, 268], "essenti": [254, 260], "how": [254, 260, 264, 273], "66": [254, 256, 260, 268, 276], "68": [254, 256, 260, 268, 274, 276], "70": [254, 256, 260, 271, 273, 276], "72": [254, 256, 260, 268, 271, 276], "182": [254, 268], "240": [254, 271], "122": [254, 268], "92": [254, 256, 268, 269, 271, 276], "94": [254, 256, 268, 276], "102": [254, 256, 268, 269, 271], "108": [254, 256, 266, 271], "114": [254, 255, 256, 271], "116": 254, "118": 254, "128": [254, 268], "134": [254, 268, 271], "136": [254, 271], "140": 254, "226": [254, 268, 271], "158": 254, "154": 254, "165": [254, 268], "228": [254, 268], "160": 254, "162": [254, 271], "164": [254, 268], "208": 254, "across": [254, 274], "target": [254, 271], "axi": 254, "187": [254, 271], "188": 254, "194": 254, "210": [254, 271], "212": [254, 268], "220": [254, 268, 269], "238": 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, 256], "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, 263, 268], "ringarrai": [255, 271], "runtim": 255, "furthermor": 255, "know": 255, "skip": 255, "verif": [255, 270, 271], "twice": 255, "onc": [255, 257, 266, 269, 270, 271, 274], "subsequ": [255, 271], "extrem": 255, "inexpens": 255, "isomorph": 255, "document": [255, 272, 273, 274], "access": [255, 258, 261, 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, 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], "763": 256, "465": 256, "958": 256, "248761812025852773520287965115": 256, "578517521538479367406987757478": 256, "345622303962815151528875328252": 256, "804487740241641807336167672059": 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, 262, 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, 263], "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], "145x": 259, "175x": 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, 262, 263, 264, 268, 274], "reason": 261, "aren": [261, 271], "resolut": 261, "minut": 261, "ci": 261, "myst": 261, "parser": 261, "git": [261, 263, 268], "dollar": 261, "ipykernel": 261, "nb": 261, "pickleshar": 261, "switch": [261, 276, 277], "pip": [261, 262, 263, 264, 266, 268], "command": [261, 262], "dirhtml": 261, "home": 261, "directori": [261, 263, 271], "webpag": 261, "local": [261, 264], "webserv": 261, "modul": 261, "server": 261, "8080": 261, "web": 261, "browser": 261, "localhost": 261, "ruff": [262, 263], "static": 262, "analysi": 262, "lint": [262, 263], "your": [262, 264, 267, 268], "develop": [262, 263, 264, 267, 268, 274], "dev": [262, 264, 268, 269, 270, 271, 272, 274], "pyproject": [262, 264, 271], "toml": [262, 263, 264, 271], "tool": [262, 264], "src": [262, 271], "ipynb": 262, "exclud": 262, "dist": 262, "doc": [262, 273], "_version": 262, "pycodestyl": 262, "pyflak": 262, "pyupgrad": 262, "flake8": 262, "bugbear": 262, "sim": 262, "isort": [262, 274], "pl": 262, "pylint": 262, "ignor": [262, 277], "e501": 262, "e713": 262, "e714": 262, "e741": 262, "ambigu": 262, "plr0911": 262, "plr0912": 262, "branch": [262, 263, 268], "plr0913": 262, "plr0915": 262, "plr2004": 262, "magic": 262, "plr5501": 262, "collaps": 262, "els": 262, "plw0603": 262, "plw2901": 262, "redefin": [262, 271], "per": [262, 268, 269, 270, 271, 272, 274], "__init__": 262, "f401": 262, "f403": 262, "hook": 262, "config": 262, "yaml": 262, "repo": [262, 263, 268], "v2": 262, "id": [262, 271], "fixer": 262, "trail": 262, "whitespac": 262, "astral": 262, "sh": 262, "v0": 262, "disabl": [262, 271], "uninstal": 262, "vscode": [262, 264], "json": [262, 264, 268], "edit": 262, "latest": [263, 266, 272], "releas": [263, 271, 272, 273, 274], "mhostett": [263, 267, 271, 272, 273, 274], "activ": 263, "benefici": 263, "fashion": 263, "seen": [263, 271], "upon": 263, "clone": 263, "wherev": [263, 271], "like": [263, 266, 267, 268, 271, 276], "flag": 263, "pytest": [263, 264, 268], "cov": [263, 268], "xdist": 263, "benchmark": [263, 271], "pdfminer": 263, "six": 263, "ini_opt": 264, "minvers": 264, "addopt": 264, "showloc": 264, "testpath": 264, "execut": 264, "test_math": 264, "test_gcd": 264, "integr": [264, 267], "infrastructur": 264, "debug": 264, "parti": 264, "pkl": 264, "folder": [264, 268, 271], "script": [264, 271], "generate_int_test_vector": 264, "generate_field_test_vector": 264, "sudo": 264, "apt": 264, "sagemath": 264, "re": [264, 271], "easi": 264, "individu": 264, "guid": 266, "intend": [266, 267], "basic": 266, "usag": [266, 271, 273], "pypi": [266, 271, 272], "__version__": 266, "dev1": 266, "ga796f37c": 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, "extra": [268, 274], "stddev": 268, "median": 268, "session": 268, "platform": 268, "linux": 268, "pluggi": 268, "timer": 268, "perf_count": 268, "disable_gc": 268, "min_round": 268, "min_tim": 268, "000005": 268, "max_tim": 268, "calibration_precis": 268, "warmup": 268, "warmup_iter": 268, "100000": 268, "rootdir": 268, "mnt": 268, "matth": 268, "inifil": 268, "setup": 268, "cfg": 268, "plugin": 268, "mock": 268, "typeguard": 268, "anyio": 268, "collect": 268, "item": 268, "100_000": [268, 274], "test_add": 268, "3810": 268, "3280": 268, "9455": 268, "4959": 268, "07": [268, 270], "3620": 268, "test_additive_invers": 268, "5850": 268, "5360": 268, "1445": 268, "9249": 268, "2670": 268, "test_divid": 268, "0870": 268, "0680": 268, "6357": 268, "9537": 268, "4920": 268, "test_multiplicative_invers": 268, "4410": 268, "0050": 268, "6590": 268, "8467": 268, "4670": 268, "test_multipli": 268, "0400": 268, "4400": 268, "3296": 268, "1267": 268, "9010": 268, "test_pow": 268, "2410": 268, "06": [268, 274], "2870": 268, "8103": 268, "4850": 268, "2860": 268, "test_scalar_multipli": 268, "543": 268, "3970": 268, "00": 268, "714": 268, "562": 268, "2968": 268, "4125": 268, "1370": 268, "test_subtract": 268, "3110": 268, "8710": 268, "2938": 268, "4038": 268, "2520": 268, "2620": 268, "9984": 268, "1680": 268, "7530": 268, "0860": 268, "9070": 268, "7403": 268, "0927": 268, "0520": 268, "351": 268, "6220": 268, "09": 268, "5920": 268, "4510": 268, "3240": 268, "1620": 268, "9590": 268, "350": [268, 271], "8016": 268, "05": [268, 274], "3332": 268, "1050": 268, "1090": 268, "5620": 268, "1805": 268, "9767": 268, "6600": 268, "7210": 268, "520": 268, "5480": 268, "349": 268, "02": 268, "3962": 268, "6105": 268, "544": 268, "0880": 268, "1140": 268, "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, "1175": 268, "945": 268, "0700": 268, "632": 268, "3527": 268, "9239": 268, "01": 268, "578": 268, "4425": 268, "022": 268, "8560": 268, "7516": 268, "808": 268, "8230": 268, "481": [268, 274], "3870": 268, "011": 268, "817": 268, "897": 268, "2702": 268, "471": [268, 274], "2330": 268, "992": 268, "5040": 268, "847": 268, "6130": 268, "894": 268, "3920": 268, "872": 268, "3102": 268, "8231": 268, "2980": 268, "3730": 268, "040": 268, "5270": 268, "650": 268, "6814": 268, "5041": 268, "693": 268, "8380": 268, "049": 268, "1360": 268, "4565": 268, "6458": 268, "1895": 268, "4720": 268, "075": 268, "8030": 268, "944": 268, "4420": 268, "1406": 268, "5830": 268, "legend": 268, "outlier": 268, "deviat": 268, "iqr": 268, "interquartil": 268, "1st": 268, "quartil": 268, "3rd": 268, "op": 268, "warn": [268, 274], "impact": 268, "0001_master": 268, "checkout": 268, "0001_branch": 268, "modular": [269, 271, 274, 277], "involv": 269, "convolut": 269, "make": [269, 271, 275], "fair": 269, "fight": 269, "million": [269, 270], "10_000_000": [269, 270], "timeit": [269, 270, 271, 272, 274], "std": [269, 270, 271, 272, 274], "incorrect": 269, "aa": [269, 270], "bb": [269, 270], "pp": 269, "747": 269, "\u00b5": [269, 270, 271, 272, 274], "1174047800": 269, "3249326965": 269, "3196014003": 269, "3195457330": 269, "100242821": 269, "338589759": 269, "386": 269, "isn": 269, "718": 269, "definit": 269, "bla": [269, 270], "lapack": [269, 270], "parallel": [269, 274], "hardwar": 269, "acceler": 269, "4203877556": 269, "3977035749": 269, "2623937858": 269, "3721257849": 269, "4250999056": 269, "4026271867": 269, "3120760606": 269, "1017695431": 269, "1111117124": 269, "1638387264": 269, "2988805996": 269, "1734614583": 269, "2508826906": 269, "2800993411": 269, "1720697782": 269, "3858180318": 269, "2521070820": 269, "3906771227": 269, "624580545": 269, "984724090": 269, "3969931498": 269, "1692192269": 269, "473079794": 269, "1029376699": 269, "1232183301": 269, "209395954": 269, "2659712274": 269, "2967695343": 269, "2747874320": 269, "1249453570": 269, "3938433735": 269, "828783569": 269, "3286222384": 269, "3669775257": 269, "33626526": 269, "4278384359": 269, "703": 269, "000": [269, 270, 271, 274], "xy": 270, "2097169": 270, "1879104": 270, "1566761": 270, "967164": 270, "744769": 270, "975853": 270, "1142138": 270, "due": [270, 271], "don": 270, "1403108": 270, "100593": 270, "595358": 270, "852783": 270, "1035698": 270, "1207498": 270, "989189": 270, "390": 270, "absolut": 270, "overflow": [270, 271, 274], "prevent": 270, "whenev": 270, "1147163": 270, "59466": 270, "1841183": 270, "667877": 270, "2084618": 270, "799166": 270, "306714": 270, "1380503": 270, "810935": 270, "1932687": 270, "1690697": 270, "329837": 270, "325274": 270, "575543": 270, "1327001": 270, "167724": 270, "422518": 270, "696986": 270, "862992": 270, "1143160": 270, "588384": 270, "668891": 270, "1285421": 270, "1196448": 270, "1026856": 270, "1413416": 270, "1844802": 270, "38844": 270, "1643604": 270, "10409": 270, "401717": 270, "329673": 270, "860449": 270, "1551173": 270, "1766877": 270, "986430": 270, "708": 270, "slightli": 270, "overhead": 270, "682": [270, 271], "renam": [271, 273], "gfarrai": 271, "chinese_remainder_theorem": 271, "bug": [271, 274, 275], "baalateja": 271, "kataru": 271, "bk": 271, "poly_exp_mod": 271, "poly_pow": 271, "is_prime_fermat": 271, "is_prime_miller_rabin": 271, "massiv": 271, "enhanc": 271, "convolv": 271, "oaklei": 271, "rfc": 271, "2409": 271, "restructur": 271, "is_group": 271, "is_field": 271, "poly_factor": 271, "vdot": 271, "poly_gcd": 271, "june": 271, "fieldmeta": 271, "fieldclass": 271, "remov": [271, 272, 273, 274], "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], "docstr": 271, "render": 271, "correctli": 271, "decemb": [271, 274], "style": 271, "randint": 271, "offici": 271, "major": [271, 272, 275], "syntax": 271, "express": 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, "quadratic_residu": 271, "quadratic_non_residu": 271, "co": 271, "march": 271, "differenti": 271, "wasn": 271, "memoiz": [271, 274], "routin": [271, 272], "cpu": [271, 274], "675": 271, "sy": [271, 274], "total": [271, 274], "wall": [271, 274], "741": 271, "0o13": 271, "0xb": 271, "made": 271, "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, 274], "That": 271, "alias": 271, "subpackag": 271, "metaclass": 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, 274], "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, 274], "ineffici": 272, "429": 272, "13546990": 272, "14653018": 272, "21619804": 272, "15507037": 272, "24669161": 272, "19116362": 272, "23979074": 272, "432": 272, "13693": 272, "426": 272, "modern": 272, "abbrevi": 272, "notat": 272, "418": 272, "appropri": 272, "420": 272, "424": 272, "430": 272, "413": 273, "435": 273, "ari": 273, "parity_onli": 273, "generator_to_parity_check_matrix": 273, "parity_check_to_generator_matrix": 273, "poly_to_generator_matrix": 273, "roots_to_parity_check_matrix": 273, "display_mod": 273, "bool_": 273, "437": 273, "publish": 273, "441": 274, "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512": 274, "core": 274, "440": 274, "664": 274, "776": 274, "bitwise_xor": 274, "infinit": 274, "450": 274, "2400610585866217": 274, "black": 274, "446": 274, "449": 274, "pivi": 274, "452": 274, "took": 274, "forev": 274, "641": 274, "274177": 274, "6700417": 274, "67280421310721": 274, "59649589127497217": 274, "5704689200685129054721": 274, "454": 274, "2013": 274, "2018": 274, "2023": 274, "463": 274, "462": 274, "1001": 274, "745": 274, "470": 274, "469": 274, "415": 274, "477": 274, "mypi": 274, "checker": 274, "concurr": 274, "484": 274, "octob": 274, "507": 274, "rare": 274, "488": 274, "resolv": 274, "deprec": 274, "492": 274, "lasagnen": 274, "wheel": 274, "510": 274, "511": 274, "instal": 274, "avadov": 274, "2024": 274, "534": 274, "533": 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, 262, 264], "abstract": [1, 61], "constructor": [1, 22, 45, 61, 116, 117, 132, 168, 255, 259], "method": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 254, 255, 259], "properti": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 255, 256, 259], "slower": [18, 91, 106, 157, 158, 193, 258], "perform": [18, 91, 106, 157, 158, 193, 206, 258, 266, 269, 270], "shorten": [22, 31, 32, 33, 168, 177, 178, 179], "code": [22, 31, 32, 33, 168, 177, 178, 179, 262, 264], "string": [22, 45, 61, 116, 117, 132, 168], "represent": [22, 45, 61, 116, 117, 132, 168, 258, 259, 266], "attribut": [22, 61, 116, 132, 168], "matric": [22, 168], "import": [25, 171, 269], "note": 31, "state": [45, 117], "convers": [61, 116], "compil": [61, 116, 257], "algebra": [61, 116, 254, 269, 270], "info": [116, 218, 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, "format": 262, "run": [262, 264], "linter": 262, "formatt": 262, "pre": 262, "commit": 262, "from": [262, 263, 264], "v": [262, 264], "pypi": 263, "github": 263, "edit": 263, "local": 263, "folder": 263, "dev": 263, "depend": [263, 268], "unit": 264, "command": 264, "line": 264, "sage": 264, "sympi": 264, "index": 265, "get": 266, "start": 266, "packag": 266, "two": 266, "disclaim": 267, "featur": 267, "roadmap": 267, "acknowledg": 267, "citat": 267, "benchmark": 268, "compar": 268, "previou": 268, "binari": 269, "extens": [269, 276], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274], "0": [271, 272, 273, 274], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274], "15": 271, "16": 271, "17": 271, "18": 271, "19": 271, "20": 271, "21": 271, "22": 271, "23": 271, "24": 271, "25": 271, "26": 271, "27": 271, "28": 271, "29": 271, "30": 271, "31": 271, "32": 271, "33": 271, "2": [272, 273, 274], "5": 274, "6": 274, "7": 274, "8": 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"], [262, "configuration"], [264, "configuration"]], "Abstract": [[1, null], [61, null]], "Constructors": [[1, "constructors"], [22, "constructors"], [45, "constructors"], [61, "constructors"], [116, "constructors"], [117, "constructors"], [132, "constructors"], [168, "constructors"], [255, "constructors"]], "Methods": [[1, "methods"], [22, "methods"], [45, "methods"], [61, "methods"], [116, "methods"], [117, "methods"], [132, "methods"], [168, "methods"], [255, "methods"], [259, "methods"]], "Properties": [[1, "properties"], [22, "properties"], [45, "properties"], [61, "properties"], [116, "properties"], [117, "properties"], [132, "properties"], [168, "properties"], [259, "properties"]], "Slower performance": [[18, null], [91, null], [106, null], [157, null], [158, null], [193, null], [258, null]], "Shortened codes": [[22, null], [31, null], [32, null], [33, null], [168, null], [177, null], [178, null], [179, null]], "String representation": [[22, "string-representation"], [45, "string-representation"], [61, "string-representation"], [116, "string-representation"], [117, "string-representation"], [132, "string-representation"], [168, "string-representation"]], "Attributes": [[22, "attributes"], [61, "attributes"], [116, "attributes"], [132, "attributes"], [168, "attributes"]], "Matrices": [[22, "matrices"], [168, "matrices"]], "Important": [[25, null], [171, null], [269, null]], "Note": [[31, null]], "State": [[45, "state"], [117, "state"]], "Conversions": [[61, "conversions"], [116, "conversions"]], "Elements": [[61, "elements"], [116, "elements"], [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"], [262, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Formatting": [[262, "formatting"]], "Run the linter": [[262, "run-the-linter"]], "Run the formatter": [[262, "run-the-formatter"]], "Pre-commit": [[262, "pre-commit"]], "Run from VS Code": [[262, "run-from-vs-code"], [264, "run-from-vs-code"]], "Installation": [[263, "installation"]], "Install from PyPI": [[263, "install-from-pypi"]], "Install from GitHub": [[263, "install-from-github"]], "Editable install from local folder": [[263, "editable-install-from-local-folder"]], "Install the dev dependencies": [[263, "install-the-dev-dependencies"]], "Unit Tests": [[264, "unit-tests"]], "Run from the command line": [[264, "run-from-the-command-line"]], "Test vectors": [[264, "test-vectors"]], "Install Sage": [[264, "install-sage"]], "Install SymPy": [[264, "install-sympy"]], "Generate test vectors": [[264, "generate-test-vectors"]], "Index": [[265, "index"]], "Getting Started": [[266, "getting-started"]], "Install the package": [[266, "install-the-package"]], "Create a FieldArray subclass": [[266, "create-a-fieldarray-subclass"]], "Create two FieldArray instances": [[266, "create-two-fieldarray-instances"]], "Change the element representation": [[266, "change-the-element-representation"]], "Perform array arithmetic": [[266, "perform-array-arithmetic"]], "Disclaimer": [[267, null]], "Features": [[267, "features"]], "Roadmap": [[267, "roadmap"]], "Acknowledgements": [[267, "acknowledgements"]], "Citation": [[267, "citation"]], "Benchmarks": [[268, "benchmarks"]], "Install dependencies": [[268, "install-dependencies"]], "Create a benchmark": [[268, "create-a-benchmark"]], "Compare with a previous benchmark": [[268, "compare-with-a-previous-benchmark"]], "Binary Extension Fields": [[269, "binary-extension-fields"]], "Lookup table performance": [[269, "lookup-table-performance"], [270, "lookup-table-performance"]], "Explicit calculation performance": [[269, "explicit-calculation-performance"], [270, "explicit-calculation-performance"]], "Linear algebra performance": [[269, "linear-algebra-performance"], [270, "linear-algebra-performance"]], "Prime Fields": [[270, "prime-fields"]], "Runtime floor": [[270, "runtime-floor"]], "v0.0": [[271, "v0-0"]], "v0.0.14": [[271, "v0-0-14"]], "Breaking changes": [[271, "breaking-changes"], [271, "id1"], [271, "id6"], [271, "id9"], [271, "id12"], [271, "id15"], [271, "id20"], [271, "id25"], [271, "id28"], [271, "id31"], [271, "id34"], [271, "id39"], [271, "id44"], [271, "id47"], [271, "id50"], [273, "breaking-changes"], [274, "breaking-changes"]], "Changes": [[271, "changes"], [271, "id2"], [271, "id4"], [271, "id7"], [271, "id10"], [271, "id13"], [271, "id16"], [271, "id18"], [271, "id21"], [271, "id23"], [271, "id26"], [271, "id29"], [271, "id32"], [271, "id35"], [271, "id37"], [271, "id40"], [271, "id42"], [271, "id45"], [271, "id48"], [271, "id51"], [272, "changes"], [272, "id1"], [272, "id3"], [273, "changes"], [274, "changes"], [274, "id1"], [274, "id3"], [274, "id5"], [274, "id7"], [274, "id9"], [274, "id11"], [274, "id13"], [274, "id15"]], "Contributors": [[271, "contributors"], [271, "id3"], [271, "id5"], [271, "id8"], [271, "id11"], [271, "id14"], [271, "id17"], [271, "id19"], [271, "id22"], [271, "id24"], [271, "id27"], [271, "id30"], [271, "id33"], [271, "id36"], [271, "id38"], [271, "id41"], [271, "id43"], [271, "id46"], [271, "id49"], [271, "id52"], [272, "contributors"], [272, "id2"], [272, "id4"], [273, "contributors"], [274, "contributors"], [274, "id2"], [274, "id4"], [274, "id6"], [274, "id8"], [274, "id10"], [274, "id12"], [274, "id14"], [274, "id16"]], "v0.0.15": [[271, "v0-0-15"]], "v0.0.16": [[271, "v0-0-16"]], "v0.0.17": [[271, "v0-0-17"]], "v0.0.18": [[271, "v0-0-18"]], "v0.0.19": [[271, "v0-0-19"]], "v0.0.20": [[271, "v0-0-20"]], "v0.0.21": [[271, "v0-0-21"]], "v0.0.22": [[271, "v0-0-22"]], "v0.0.23": [[271, "v0-0-23"]], "v0.0.24": [[271, "v0-0-24"]], "v0.0.25": [[271, "v0-0-25"]], "v0.0.26": [[271, "v0-0-26"]], "v0.0.27": [[271, "v0-0-27"]], "v0.0.28": [[271, "v0-0-28"]], "v0.0.29": [[271, "v0-0-29"]], "v0.0.30": [[271, "v0-0-30"]], "v0.0.31": [[271, "v0-0-31"]], "v0.0.32": [[271, "v0-0-32"]], "v0.0.33": [[271, "v0-0-33"]], "v0.1": [[272, "v0-1"]], "v0.1.0": [[272, "v0-1-0"]], "v0.1.1": [[272, "v0-1-1"]], "v0.1.2": [[272, "v0-1-2"]], "v0.2": [[273, "v0-2"]], "v0.2.0": [[273, "v0-2-0"]], "v0.3": [[274, "v0-3"]], "v0.3.0": [[274, "v0-3-0"]], "v0.3.1": [[274, "v0-3-1"]], "v0.3.2": [[274, "v0-3-2"]], "v0.3.3": [[274, "v0-3-3"]], "v0.3.4": [[274, "v0-3-4"]], "v0.3.5": [[274, "v0-3-5"]], "v0.3.6": [[274, "v0-3-6"]], "v0.3.7": [[274, "v0-3-7"]], "v0.3.8": [[274, "v0-3-8"]], "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/formatting/", "development/installation/", "development/unit-tests/", "genindex/", "getting-started/", "", "performance/benchmarks/", "performance/binary-extension-fields/", "performance/prime-fields/", "release-notes/v0.0/", "release-notes/v0.1/", "release-notes/v0.2/", "release-notes/v0.3/", "release-notes/versioning/", "tutorials/intro-to-extension-fields/", "tutorials/intro-to-prime-fields/"]}) \ No newline at end of file +Search.setIndex({"titles": ["Arrays", "galois.Array", "galois.Array.Identity", "galois.Array.Ones", "galois.Array.Random", "galois.Array.Range", "galois.Array.Zeros", "galois.Array.characteristic", "galois.Array.compile", "galois.Array.default_ufunc_mode", "galois.Array.degree", "galois.Array.dtypes", "galois.Array.element_repr", "galois.Array.elements", "galois.Array.irreducible_poly", "galois.Array.name", "galois.Array.order", "galois.Array.primitive_element", "galois.Array.repr", "galois.Array.ufunc_mode", "galois.Array.ufunc_modes", "galois.Array.units", "galois.BCH", "galois.BCH.G", "galois.BCH.H", "galois.BCH.__init__", "galois.BCH.__repr__", "galois.BCH.__str__", "galois.BCH.alpha", "galois.BCH.c", "galois.BCH.d", "galois.BCH.decode", "galois.BCH.detect", "galois.BCH.encode", "galois.BCH.extension_field", "galois.BCH.field", "galois.BCH.generator_poly", "galois.BCH.is_narrow_sense", "galois.BCH.is_primitive", "galois.BCH.is_systematic", "galois.BCH.k", "galois.BCH.n", "galois.BCH.parity_check_poly", "galois.BCH.roots", "galois.BCH.t", "galois.FLFSR", "galois.FLFSR.Taps", "galois.FLFSR.__init__", "galois.FLFSR.__repr__", "galois.FLFSR.__str__", "galois.FLFSR.characteristic_poly", "galois.FLFSR.feedback_poly", "galois.FLFSR.field", "galois.FLFSR.initial_state", "galois.FLFSR.order", "galois.FLFSR.reset", "galois.FLFSR.state", "galois.FLFSR.step", "galois.FLFSR.taps", "galois.FLFSR.to_galois_lfsr", "galois.Field", "galois.FieldArray", "galois.FieldArray.Identity", "galois.FieldArray.Ones", "galois.FieldArray.Random", "galois.FieldArray.Range", "galois.FieldArray.Vandermonde", "galois.FieldArray.Vector", "galois.FieldArray.Zeros", "galois.FieldArray.__init__", "galois.FieldArray.__repr__", "galois.FieldArray.__str__", "galois.FieldArray.additive_order", "galois.FieldArray.arithmetic_table", "galois.FieldArray.characteristic", "galois.FieldArray.characteristic_poly", "galois.FieldArray.column_space", "galois.FieldArray.compile", "galois.FieldArray.default_ufunc_mode", "galois.FieldArray.degree", "galois.FieldArray.dtypes", "galois.FieldArray.element_repr", "galois.FieldArray.elements", "galois.FieldArray.field_norm", "galois.FieldArray.field_trace", "galois.FieldArray.irreducible_poly", "galois.FieldArray.is_extension_field", "galois.FieldArray.is_prime_field", "galois.FieldArray.is_primitive_poly", "galois.FieldArray.is_square", "galois.FieldArray.left_null_space", "galois.FieldArray.log", "galois.FieldArray.lu_decompose", "galois.FieldArray.minimal_poly", "galois.FieldArray.multiplicative_order", "galois.FieldArray.name", "galois.FieldArray.non_squares", "galois.FieldArray.null_space", "galois.FieldArray.order", "galois.FieldArray.plu_decompose", "galois.FieldArray.prime_subfield", "galois.FieldArray.primitive_element", "galois.FieldArray.primitive_elements", "galois.FieldArray.primitive_root_of_unity", "galois.FieldArray.primitive_roots_of_unity", "galois.FieldArray.properties", "galois.FieldArray.repr", "galois.FieldArray.repr_table", "galois.FieldArray.row_reduce", "galois.FieldArray.row_space", "galois.FieldArray.squares", "galois.FieldArray.ufunc_mode", "galois.FieldArray.ufunc_modes", "galois.FieldArray.units", "galois.FieldArray.vector", "galois.GF", "galois.GF2", "galois.GLFSR", "galois.GLFSR.Taps", "galois.GLFSR.__init__", "galois.GLFSR.__repr__", "galois.GLFSR.__str__", "galois.GLFSR.characteristic_poly", "galois.GLFSR.feedback_poly", "galois.GLFSR.field", "galois.GLFSR.initial_state", "galois.GLFSR.order", "galois.GLFSR.reset", "galois.GLFSR.state", "galois.GLFSR.step", "galois.GLFSR.taps", "galois.GLFSR.to_fibonacci_lfsr", "galois.Poly", "galois.Poly.Degrees", "galois.Poly.Identity", "galois.Poly.Int", "galois.Poly.One", "galois.Poly.Random", "galois.Poly.Roots", "galois.Poly.Str", "galois.Poly.Zero", "galois.Poly.__call__", "galois.Poly.__eq__", "galois.Poly.__init__", "galois.Poly.__int__", "galois.Poly.__len__", "galois.Poly.__repr__", "galois.Poly.__str__", "galois.Poly.coefficients", "galois.Poly.coeffs", "galois.Poly.degree", "galois.Poly.degrees", "galois.Poly.derivative", "galois.Poly.distinct_degree_factors", "galois.Poly.equal_degree_factors", "galois.Poly.factors", "galois.Poly.field", "galois.Poly.is_conway", "galois.Poly.is_conway_consistent", "galois.Poly.is_irreducible", "galois.Poly.is_monic", "galois.Poly.is_primitive", "galois.Poly.is_square_free", "galois.Poly.nonzero_coeffs", "galois.Poly.nonzero_degrees", "galois.Poly.reverse", "galois.Poly.roots", "galois.Poly.square_free_factors", "galois.ReedSolomon", "galois.ReedSolomon.G", "galois.ReedSolomon.H", "galois.ReedSolomon.__init__", "galois.ReedSolomon.__repr__", "galois.ReedSolomon.__str__", "galois.ReedSolomon.alpha", "galois.ReedSolomon.c", "galois.ReedSolomon.d", "galois.ReedSolomon.decode", "galois.ReedSolomon.detect", "galois.ReedSolomon.encode", "galois.ReedSolomon.field", "galois.ReedSolomon.generator_poly", "galois.ReedSolomon.is_narrow_sense", "galois.ReedSolomon.is_primitive", "galois.ReedSolomon.is_systematic", "galois.ReedSolomon.k", "galois.ReedSolomon.n", "galois.ReedSolomon.parity_check_poly", "galois.ReedSolomon.roots", "galois.ReedSolomon.t", "galois.are_coprime", "galois.berlekamp_massey", "galois.carmichael_lambda", "galois.conway_poly", "galois.crt", "galois.divisor_sigma", "galois.divisors", "galois.egcd", "galois.euler_phi", "galois.factors", "galois.fermat_primality_test", "galois.gcd", "galois.get_printoptions", "galois.ilog", "galois.intt", "galois.iroot", "galois.irreducible_poly", "galois.irreducible_polys", "galois.is_composite", "galois.is_cyclic", "galois.is_perfect_power", "galois.is_powersmooth", "galois.is_prime", "galois.is_prime_power", "galois.is_primitive_element", "galois.is_primitive_root", "galois.is_smooth", "galois.is_square_free", "galois.isqrt", "galois.jacobi_symbol", "galois.kronecker_symbol", "galois.kth_prime", "galois.lagrange_poly", "galois.lcm", "galois.legendre_symbol", "galois.matlab_primitive_poly", "galois.mersenne_exponents", "galois.mersenne_primes", "galois.miller_rabin_primality_test", "galois.next_prime", "galois.ntt", "galois.perfect_power", "galois.pollard_p1", "galois.pollard_rho", "galois.prev_prime", "galois.primes", "galois.primitive_element", "galois.primitive_elements", "galois.primitive_poly", "galois.primitive_polys", "galois.primitive_root", "galois.primitive_roots", "galois.printoptions", "galois.prod", "galois.random_prime", "galois.set_printoptions", "galois.totatives", "galois.trial_division", "galois.typing.ArrayLike", "galois.typing.DTypeLike", "galois.typing.ElementLike", "galois.typing.IterableLike", "galois.typing.PolyLike", "galois.typing.ShapeLike", "Array Arithmetic", "Array Classes", "Array Creation", "Compilation Modes", "Element Representation", "Polynomials", "Polynomial Arithmetic", "Documentation", "Formatting", "Installation", "Unit Tests", "Index", "Getting Started", "Features", "Benchmarks", "Binary Extension Fields", "Prime Fields", "v0.0", "v0.1", "v0.2", "v0.3", "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, 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, 262, 271, 272, 273, 274], "arraylik": [0, 22, 31, 32, 33, 45, 46, 47, 55, 61, 67, 69, 91, 116, 117, 118, 119, 127, 132, 133, 138, 141, 143, 168, 177, 178, 179, 204, 230, 248, 252, 256, 266, 271], "A": [0, 1, 2, 3, 4, 5, 6, 17, 18, 22, 25, 26, 27, 28, 31, 32, 45, 46, 47, 48, 49, 61, 62, 63, 64, 65, 66, 68, 69, 73, 75, 76, 89, 90, 91, 92, 97, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 113, 115, 116, 117, 118, 119, 120, 121, 132, 137, 141, 146, 153, 154, 157, 158, 159, 160, 161, 162, 167, 168, 171, 172, 173, 174, 177, 178, 190, 191, 192, 193, 198, 199, 202, 203, 204, 205, 209, 215, 217, 218, 224, 226, 230, 232, 233, 236, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 262, 267, 269, 270, 271, 272, 274], "union": [0, 248, 249, 250, 251, 252, 253, 272], "repres": [0, 2, 3, 4, 5, 6, 8, 36, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 80, 108, 114, 115, 141, 152, 159, 166, 181, 193, 209, 240, 248, 249, 250, 251, 252, 253, 258, 266, 271, 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, 263, 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, 262, 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, 261, 262, 263, 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, 262, 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, 271, 277], "all": [0, 1, 3, 6, 13, 18, 20, 21, 46, 47, 61, 63, 65, 68, 76, 80, 82, 91, 96, 102, 103, 104, 106, 109, 110, 112, 113, 116, 118, 119, 132, 133, 138, 153, 157, 158, 161, 167, 193, 196, 199, 200, 204, 207, 213, 219, 220, 225, 226, 227, 228, 230, 235, 237, 239, 241, 247, 254, 255, 256, 257, 258, 259, 262, 264, 266, 267, 271, 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, 262, 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, 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, 262, 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, 264, 266, 267, 271, 272, 274, 276, 277], "default": [0, 1, 2, 3, 4, 5, 6, 9, 18, 25, 31, 33, 46, 47, 55, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 73, 78, 81, 88, 91, 106, 107, 108, 111, 114, 115, 116, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 148, 152, 157, 158, 166, 171, 177, 179, 191, 193, 195, 200, 204, 206, 207, 225, 226, 227, 228, 230, 232, 233, 238, 239, 240, 241, 242, 244, 245, 247, 249, 255, 257, 258, 259, 266, 268, 269, 270, 271, 276, 277], "primitive_poli": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 161, 193, 206, 207, 225, 238, 239, 259, 271, 274], "lagrange_poli": [0, 222, 271, 272], "y": [0, 45, 73, 83, 84, 89, 96, 110, 117, 191, 192, 222, 257, 266, 267, 271, 272, 276, 277], "comput": [0, 8, 18, 31, 33, 61, 72, 75, 76, 77, 83, 84, 90, 91, 93, 94, 97, 106, 109, 115, 116, 132, 152, 155, 157, 158, 159, 177, 179, 193, 196, 197, 198, 199, 200, 201, 203, 204, 205, 218, 219, 220, 222, 223, 224, 226, 230, 233, 243, 254, 257, 258, 259, 260, 267, 268, 269, 270, 271, 274, 276, 277], "lagrang": [0, 222, 271], "l": [0, 61, 83, 84, 92, 99, 116, 222, 240, 241], "x_i": [0, 222, 233], "y_i": [0, 222], "bch": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 267, 271, 273, 274], "textrm": [0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 61, 75, 76, 90, 94, 97, 107, 109, 116, 153, 159, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 192, 194, 200, 203, 204, 224, 228, 230, 233, 240, 241, 257, 270, 271, 276, 277], "n": [0, 1, 2, 22, 23, 24, 25, 27, 28, 30, 31, 32, 33, 36, 38, 40, 41, 45, 46, 47, 50, 51, 53, 55, 56, 57, 58, 61, 62, 66, 75, 76, 83, 90, 93, 97, 103, 104, 109, 116, 117, 118, 119, 122, 123, 125, 127, 128, 130, 132, 157, 158, 165, 168, 169, 170, 171, 173, 174, 176, 177, 178, 179, 181, 183, 185, 186, 191, 192, 193, 195, 196, 198, 199, 200, 203, 204, 205, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 240, 241, 246, 247, 254, 257, 258, 267, 270, 271, 273, 274], "k": [0, 22, 23, 24, 25, 27, 30, 31, 32, 33, 40, 41, 61, 69, 83, 84, 103, 104, 116, 132, 138, 152, 155, 159, 161, 162, 166, 168, 169, 170, 171, 173, 176, 177, 178, 179, 185, 186, 195, 198, 199, 204, 205, 209, 211, 213, 217, 221, 222, 230, 232, 240, 241, 273, 274, 277], "code": [0, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 153, 154, 155, 167, 169, 170, 171, 172, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 197, 199, 225, 263, 266, 267, 271, 273, 274], "reedsolomon": [0, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 267, 271, 273], "r": [0, 31, 76, 90, 104, 109, 132, 154, 157, 158, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 193, 228, 254, 261, 262, 263, 264, 266, 267, 268, 271], "flfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "fibonacci": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 131, 191, 267, 271], "feedback": [0, 45, 47, 50, 51, 117, 119, 122, 123, 191, 267, 271], "shift": [0, 45, 46, 58, 117, 118, 130, 191, 267], "regist": [0, 45, 46, 58, 117, 118, 130, 191, 267], "lfsr": [0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 191, 271], "glfsr": [0, 45, 59, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 191, 267, 271], "berlekamp_massei": [0, 45, 117, 191, 271], "output": [0, 31, 33, 45, 57, 59, 64, 67, 114, 117, 129, 131, 177, 179, 191, 204, 230, 261, 270, 271, 273], "minim": [0, 45, 54, 61, 93, 116, 117, 126, 191, 222, 271], "c": [0, 22, 25, 28, 29, 31, 32, 33, 36, 37, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 76, 97, 109, 117, 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 153, 167, 168, 171, 174, 175, 177, 178, 179, 181, 182, 188, 191, 204, 210, 230, 231, 233, 268, 271], "produc": [0, 45, 54, 57, 59, 64, 117, 126, 129, 131, 137, 191, 206, 207, 238, 239, 256, 269, 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, 262, 271], "argument": [0, 69, 91, 103, 104, 115, 190, 197, 201, 223, 230, 243, 256, 257, 258, 259, 262, 266, 268, 271, 272, 273, 274], "ar": [0, 1, 11, 22, 25, 28, 31, 32, 37, 43, 45, 57, 59, 61, 65, 67, 76, 78, 80, 89, 90, 91, 94, 96, 97, 103, 104, 108, 109, 110, 111, 114, 115, 116, 117, 131, 132, 133, 135, 138, 139, 141, 142, 143, 144, 147, 149, 151, 153, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 168, 171, 174, 177, 178, 182, 188, 190, 191, 192, 193, 198, 199, 200, 204, 206, 209, 210, 215, 216, 217, 219, 224, 225, 227, 228, 230, 231, 238, 240, 241, 242, 245, 246, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 263, 264, 266, 267, 268, 269, 270, 271, 274, 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, 262, 267, 269, 270, 271, 272, 274, 276, 277], "_poli": [0, 197, 199], "multiplicand": [0, 197], "t": [0, 22, 31, 44, 45, 46, 58, 76, 90, 97, 99, 109, 117, 118, 130, 133, 138, 143, 168, 177, 189, 191, 197, 206, 207, 225, 228, 238, 239, 260, 261, 269, 270, 271, 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, 261, 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, 262, 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, 262, 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, 262, 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, 263, 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, 263, 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, 274, 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, 261, 262, 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, 263, 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, 261, 266, 267, 268, 269, 270, 271, 272, 273, 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, 274], "nearest": [0, 229, 234], "prev_prim": [0, 221, 229, 234, 235, 244, 271, 274], "random_prim": [0, 244, 272], "bit": [0, 226, 227, 244], "seed": [0, 4, 64, 137, 244, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274], "random": [0, 1, 4, 22, 31, 32, 33, 61, 64, 75, 76, 90, 91, 93, 97, 109, 116, 132, 137, 152, 156, 159, 168, 177, 178, 179, 194, 200, 206, 222, 236, 238, 240, 243, 244, 249, 253, 254, 255, 258, 259, 264, 269, 270, 271, 272, 273, 274, 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, 263, 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, 263, 271], "print": [0, 25, 27, 34, 35, 45, 46, 49, 59, 61, 69, 71, 73, 88, 105, 106, 107, 115, 116, 117, 118, 121, 131, 147, 173, 180, 191, 192, 194, 202, 203, 205, 207, 209, 218, 219, 224, 236, 237, 239, 240, 241, 242, 245, 255, 256, 259, 266, 271, 272, 273, 274, 276, 277], "option": [0, 31, 73, 115, 166, 177, 202, 232, 242, 245, 268, 271, 274], "packag": [0, 103, 104, 202, 209, 232, 240, 242, 245, 263, 267, 271, 272, 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, 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, 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, 262, 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, 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, 262, 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, 263, 271, 274], "paramet": [2, 3, 4, 5, 6, 8, 18, 25, 31, 32, 33, 46, 47, 55, 57, 62, 63, 64, 65, 66, 67, 68, 69, 73, 77, 91, 103, 104, 106, 107, 108, 114, 115, 118, 119, 127, 129, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 148, 152, 154, 157, 158, 166, 171, 177, 178, 179, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247], "along": [2, 62, 191], "one": [2, 31, 32, 57, 62, 103, 104, 129, 132, 136, 137, 160, 162, 177, 178, 209, 217, 225, 226, 227, 232, 240, 254, 255, 257, 259, 260, 268, 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, 262, 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, 263, 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, 263, 266, 268, 274], "step": [5, 45, 53, 55, 56, 57, 59, 65, 117, 125, 127, 128, 129, 131, 155, 191, 199, 232, 255], "increment": [5, 65], "between": [5, 65, 139, 193, 254, 271, 274, 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, 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, 262, 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, 90, 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, 262, 267, 271, 274], "should": [8, 25, 77, 94, 115, 171, 206, 212, 238], "store": [8, 77, 115, 256, 257, 261, 263, 264], "ram": [8, 77, 115], "slower": [8, 77, 115, 257, 269, 270], "pure": [8, 77, 78, 111, 112, 115, 257, 267], "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, 263, 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, 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, 261, 269, 270, 271, 272, 273, 276, 277], "process": [18, 106, 258], "take": [18, 106, 115, 257, 258, 261, 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, 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, 262, 271], "perman": [18, 81, 106, 258], "disregard": [18, 106, 206, 207, 238, 239], "note": [18, 30, 33, 36, 42, 44, 45, 47, 50, 51, 67, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89, 90, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 117, 119, 122, 123, 135, 138, 139, 144, 147, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 177, 179, 181, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 209, 211, 212, 213, 214, 215, 216, 217, 219, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 237, 238, 239, 240, 241, 244, 246, 260, 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, 90, 91, 93, 94, 97, 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, 261, 264, 266, 267, 268, 269, 270, 271, 273, 276, 277], "dec_m": [22, 168], "np": [22, 31, 64, 69, 75, 91, 92, 99, 103, 104, 108, 110, 137, 141, 168, 177, 191, 204, 222, 230, 237, 248, 249, 255, 256, 258, 260, 266, 269, 270, 271, 273, 274, 276, 277], "array_equ": [22, 31, 91, 92, 99, 110, 168, 177, 191, 222, 254, 271], "true": [22, 25, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 50, 51, 60, 61, 69, 75, 76, 86, 87, 88, 89, 90, 91, 92, 97, 99, 105, 107, 109, 110, 115, 116, 122, 123, 135, 141, 142, 144, 153, 154, 157, 158, 159, 160, 161, 162, 166, 167, 168, 171, 173, 174, 175, 177, 178, 180, 182, 183, 184, 190, 191, 192, 193, 194, 197, 198, 200, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 222, 226, 227, 228, 230, 231, 236, 237, 238, 239, 240, 241, 244, 246, 254, 255, 256, 258, 260, 266, 270, 271, 274, 276, 277], "instruct": [22, 168, 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, 262, 267, 271, 274], "8": [22, 23, 25, 27, 28, 31, 32, 33, 36, 37, 39, 43, 45, 55, 57, 61, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 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, 266, 268, 269, 270, 271, 272, 273, 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, 159, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 206, 209, 210, 219, 228, 230, 231, 232, 236, 238, 240, 241, 243, 246, 248, 250, 251, 253, 254, 255, 256, 257, 258, 259, 260, 261, 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, 268, 274], "relev": [22, 27, 45, 49, 61, 105, 116, 117, 121, 168, 173, 271], "_field": [22, 31, 103, 104, 168, 177], "_arrai": [22, 31, 103, 104, 132, 166, 168, 177], "mathbf": [22, 23, 24, 31, 32, 33, 36, 61, 75, 76, 90, 92, 97, 99, 108, 109, 116, 168, 169, 170, 177, 178, 179, 181], "present": [22, 32, 168, 178, 271], "extension_field": [22, 25, 27, 34, 36, 38, 43], "defin": [22, 25, 29, 34, 35, 45, 50, 51, 52, 54, 58, 76, 83, 84, 90, 92, 94, 97, 99, 109, 115, 117, 122, 123, 124, 126, 130, 152, 157, 168, 171, 175, 180, 193, 194, 195, 204, 214, 222, 230, 233, 236, 237, 255, 257, 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, 262, 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, 262], "generator_poli": [22, 23, 27, 36, 37, 39, 43, 168, 169, 173, 175, 181, 182, 184, 188], "parity_check_poli": [22, 24, 42, 168, 170, 187], "13": [23, 24, 25, 26, 27, 28, 31, 32, 33, 38, 39, 42, 45, 57, 61, 64, 65, 69, 73, 75, 76, 82, 89, 90, 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, 161, 162, 167, 170, 180, 187, 193, 194, 197, 199, 206, 207, 214, 217, 222, 223, 237, 238, 239, 243, 248, 250, 251, 252, 255, 256, 258, 259, 260, 266, 271, 276], "either": [25, 31, 32, 33, 108, 112, 139, 148, 171, 177, 178, 179, 228, 245, 257, 258, 266, 267], "provid": [25, 94, 115, 171, 193, 255, 256, 262, 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, 262], "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, 262, 267, 268, 271, 274, 277], "primitive_root_of_un": [25, 61, 103, 116, 171, 254, 271], "26": [25, 26, 27, 30, 31, 32, 34, 35, 40, 41, 44, 69, 75, 76, 82, 90, 91, 101, 102, 107, 110, 113, 117, 170, 173, 176, 177, 178, 180, 185, 186, 187, 189, 254, 255, 256, 258, 259, 260, 261, 268, 270, 274, 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, 254, 255, 256, 258, 259, 260, 261, 266, 268, 272, 273, 274, 276, 277], "10": [25, 31, 32, 33, 37, 45, 53, 55, 56, 57, 59, 61, 64, 65, 69, 72, 73, 75, 76, 82, 89, 91, 92, 93, 94, 96, 101, 102, 104, 106, 107, 108, 109, 110, 113, 114, 115, 117, 125, 127, 128, 129, 131, 135, 141, 142, 144, 152, 153, 155, 157, 158, 166, 167, 168, 169, 170, 173, 177, 178, 179, 182, 184, 187, 191, 192, 193, 194, 197, 199, 200, 204, 206, 209, 210, 212, 216, 217, 225, 228, 230, 231, 232, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 277], "11": [25, 27, 31, 32, 33, 45, 55, 57, 61, 64, 65, 67, 69, 72, 73, 75, 82, 89, 91, 92, 93, 94, 96, 97, 101, 102, 103, 104, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 168, 169, 170, 173, 177, 178, 179, 181, 182, 184, 187, 188, 190, 191, 192, 194, 197, 198, 200, 204, 209, 210, 230, 231, 232, 235, 236, 238, 240, 241, 246, 248, 250, 251, 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, 262, 269, 270, 271, 272, 274], "12": [25, 27, 31, 32, 33, 45, 55, 57, 61, 64, 65, 67, 69, 72, 73, 75, 76, 82, 89, 91, 92, 93, 94, 97, 101, 102, 106, 107, 108, 110, 113, 114, 115, 117, 127, 129, 135, 141, 142, 152, 166, 169, 170, 173, 175, 177, 178, 179, 181, 182, 184, 187, 188, 192, 194, 196, 197, 198, 201, 204, 209, 210, 216, 225, 228, 231, 236, 238, 240, 241, 248, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 267, 268, 270, 271, 272, 274, 276, 277], "14": [25, 26, 27, 30, 31, 32, 33, 34, 35, 40, 41, 44, 45, 57, 61, 65, 69, 73, 75, 76, 82, 89, 90, 91, 93, 94, 97, 99, 101, 102, 104, 107, 108, 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, 266, 268, 269, 270, 276, 277], "24": [25, 31, 32, 45, 64, 69, 75, 76, 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, 82, 91, 92, 101, 102, 107, 109, 110, 113, 115, 117, 169, 170, 173, 177, 178, 184, 187, 209, 228, 241, 250, 253, 254, 255, 256, 258, 259, 260, 268, 276, 277], "18": [25, 31, 32, 33, 45, 64, 65, 69, 73, 75, 82, 90, 91, 97, 101, 102, 104, 107, 110, 113, 115, 117, 155, 166, 169, 173, 176, 177, 178, 179, 180, 184, 185, 186, 189, 192, 199, 209, 217, 231, 240, 250, 251, 254, 255, 256, 258, 259, 260, 261, 266, 268, 273, 274, 276, 277], "16": [25, 31, 32, 33, 34, 45, 64, 65, 67, 69, 73, 75, 78, 82, 91, 92, 97, 101, 102, 103, 104, 107, 108, 110, 111, 113, 114, 115, 117, 135, 169, 170, 173, 177, 178, 179, 180, 184, 187, 192, 197, 201, 209, 225, 228, 231, 237, 240, 250, 251, 254, 255, 256, 257, 258, 259, 260, 266, 268, 272, 273, 276, 277], "string": [27, 49, 73, 95, 105, 107, 121, 135, 139, 147, 173, 248, 249, 250, 251, 252, 256, 259, 271, 276], "multiplicative_ord": [28, 61, 94, 107, 116, 174, 214, 236, 237, 255, 271, 273, 274, 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, 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, 261, 273, 274, 276], "entir": [31, 177, 269, 276], "too": [31, 80, 177, 262], "member": [31, 33, 177, 179], "m_1": [31, 33, 138, 166, 177, 179, 194], "m_0": [31, 33, 177, 179], "divis": [31, 73, 177, 199, 217, 247, 266, 269, 271], "c_1": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "c_0": [31, 33, 45, 46, 58, 117, 118, 130, 177, 179], "receiv": [31, 177], "locat": [31, 108, 177, 261, 264], "sigma": [31, 177], "It": [31, 71, 159, 195, 204, 222, 230, 233, 254, 255, 256, 257, 258, 260, 264, 267, 268, 271, 276, 277], "up": [31, 115, 199, 226, 227, 235, 247, 257, 262, 267, 271, 274], "singl": [31, 32, 33, 64, 72, 75, 89, 91, 93, 94, 139, 177, 178, 179, 254, 256, 271], "recov": [31, 177, 232, 255], "19": [31, 32, 33, 45, 65, 69, 75, 82, 91, 92, 97, 99, 101, 102, 104, 107, 108, 109, 110, 113, 115, 117, 155, 169, 173, 177, 178, 179, 184, 198, 199, 209, 226, 235, 240, 241, 246, 250, 252, 254, 255, 256, 258, 259, 260, 266, 268, 272, 276, 277], "three": [31, 32, 33, 177, 178, 179, 223, 225, 241, 243, 257, 276], "21": [31, 32, 45, 69, 75, 82, 91, 92, 101, 102, 107, 110, 113, 115, 117, 169, 171, 172, 173, 174, 177, 178, 183, 184, 209, 240, 241, 250, 254, 255, 256, 258, 259, 260, 266, 268, 270, 274, 276, 277], "23": [31, 32, 45, 64, 69, 75, 76, 82, 90, 91, 101, 102, 107, 109, 110, 113, 117, 155, 173, 177, 178, 199, 209, 250, 253, 254, 255, 256, 258, 259, 260, 268, 272, 276, 277], "add": [31, 108, 177, 250, 260, 271, 275, 276], "second": [31, 177, 197, 201, 232, 266, 268], "two": [31, 32, 89, 108, 110, 132, 142, 157, 177, 178, 193, 197, 201, 230, 254, 255, 257, 258, 260, 264, 269, 270, 271, 276, 277], "third": [31, 177, 264], "25": [31, 32, 45, 69, 75, 76, 82, 90, 91, 92, 101, 102, 107, 108, 110, 113, 115, 117, 155, 169, 170, 173, 177, 178, 184, 187, 199, 254, 255, 256, 258, 259, 260, 268, 272, 274, 276, 277], "27": [31, 32, 34, 64, 69, 75, 76, 82, 90, 91, 92, 93, 101, 102, 107, 108, 110, 113, 115, 173, 177, 178, 180, 254, 255, 256, 258, 259, 260, 268, 270, 272, 276, 277], "28": [31, 32, 64, 75, 82, 85, 91, 99, 101, 102, 104, 109, 110, 113, 115, 155, 173, 177, 178, 199, 223, 253, 254, 255, 256, 258, 259, 260, 268, 276, 277], "29": [31, 32, 64, 75, 82, 90, 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, 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, 253, 254, 255, 256, 258, 259, 260, 268, 270, 272, 274, 276, 277], "32": [31, 32, 78, 91, 111, 112, 155, 173, 177, 178, 199, 254, 255, 256, 258, 259, 260, 268, 269, 270, 274, 276, 277], "33": [31, 32, 91, 141, 155, 171, 172, 173, 174, 177, 178, 183, 199, 254, 255, 256, 258, 259, 260, 268, 269, 276, 277], "34": [31, 32, 91, 115, 155, 177, 178, 199, 254, 255, 256, 258, 259, 260, 266, 268, 271, 276, 277], "35": [31, 32, 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, 253, 254, 256, 258, 259, 260, 266, 268, 276, 277], "39": [31, 75, 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, 263, 267, 269, 274], "specif": [43, 138, 188, 232, 255, 263, 264, 266, 268], "bigg": [44, 189, 198, 224], "reciproc": [45, 47, 50, 51, 117, 119, 122, 123, 271, 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, 263, 266, 268], "revers": [45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 59, 117, 120, 121, 122, 123, 124, 125, 127, 128, 129, 131, 132, 165, 204, 207, 230, 239, 241, 267, 271], "refer": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 225, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 269, 271], "gardner": [45, 117, 191], "2019": [45, 117, 191], "model": [45, 117, 191], "cryptographi": [45, 117, 191], "figshar": [45, 117], "http": [45, 75, 83, 84, 89, 93, 117, 152, 153, 154, 155, 157, 158, 159, 161, 167, 191, 192, 193, 194, 197, 198, 199, 200, 201, 204, 219, 220, 222, 224, 226, 227, 228, 230, 232, 233, 235, 240, 241, 244, 246, 261, 262, 263, 267, 271, 272], "hdl": [45, 117, 191], "handl": [45, 117, 191, 271], "net": [45, 117, 191], "2134": [45, 117, 191], "21932": [45, 117, 191], "feedback_poli": [45, 46, 47, 49, 50, 51, 59, 117, 118, 119, 121, 122, 123, 131, 191], "characteristic_poli": [45, 46, 49, 50, 51, 59, 61, 75, 93, 116, 117, 118, 121, 122, 123, 131, 191, 271], "initial_st": [45, 46, 49, 53, 59, 117, 118, 121, 125, 131, 191], "3x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 115, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 142, 144, 146, 147, 148, 149, 150, 151, 152, 154, 160, 163, 164, 165, 167, 170, 175, 181, 182, 187, 188, 191, 194, 197, 206, 236, 238, 242, 243, 245, 255, 259, 260, 271, 274], "5x": [45, 46, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 135, 141, 144, 146, 147, 148, 149, 150, 151, 152, 159, 163, 164, 165, 170, 187, 191, 194, 197, 206, 222, 238, 242, 243, 245, 259, 260, 269, 270, 271], "10x": [45, 117, 159, 170, 175, 181, 182, 187, 188], "reset": [45, 55, 117, 127, 266], "to_galois_lfsr": [45, 59], "convert": [45, 59, 61, 67, 114, 116, 117, 131, 133, 138, 143, 204, 230, 236, 237, 256, 257, 258, 259, 266, 270, 271], "same": [45, 57, 59, 115, 117, 129, 131, 132, 141, 142, 153, 155, 175, 182, 199, 204, 222, 225, 230, 238, 255, 270, 271], "finit": [45, 52, 61, 65, 69, 70, 71, 72, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 89, 91, 93, 94, 95, 103, 104, 107, 110, 113, 115, 116, 117, 124, 132, 141, 142, 144, 146, 147, 152, 156, 157, 158, 159, 193, 204, 230, 240, 241, 248, 250, 254, 256, 257, 258, 259, 260, 266, 267, 269, 270, 271, 273, 274, 276, 277], "relat": [45, 58, 117, 130, 255], "state": [46, 47, 49, 53, 55, 56, 57, 59, 118, 119, 121, 125, 127, 128, 129, 131, 191, 271], "becaus": [47, 80, 115, 119, 210, 231, 232, 233, 256, 257, 258, 269, 270, 276, 277], "unaffect": [53, 125], "view": [55, 127, 204, 230, 262, 266, 269, 270, 271, 276, 277], "direct": [57, 129, 209, 240], "backward": [57, 129, 275], "ab": [57, 129, 276], "end": [57, 129, 224, 262], "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, 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, 94, 101, 102, 106, 113, 114, 237, 248, 250, 251, 254, 255, 256, 258, 266, 271, 273, 276], "143": [61, 254, 259, 268], "204": [61, 91, 254, 266], "55": [61, 115, 141, 254, 255, 256, 259, 260, 268, 271, 274, 276, 277], "113": [61, 91, 247, 254], "vandermond": [61, 66, 116], "row": [61, 66, 76, 90, 97, 107, 108, 109, 116], "prime": [61, 65, 67, 74, 75, 79, 82, 83, 84, 86, 87, 93, 100, 101, 102, 113, 114, 115, 116, 159, 192, 193, 196, 198, 199, 200, 204, 206, 207, 209, 210, 211, 212, 213, 216, 217, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, 244, 247, 258, 267, 269, 271, 274, 276], "subfield": [61, 67, 83, 84, 100, 114, 116, 193, 258], "non_squar": [61, 89, 96, 116, 254, 271], "primitive_roots_of_un": [61, 104, 116, 271], "without": [61, 71, 116, 132, 147, 250, 259, 266, 267], "arithmetic_t": [61, 73, 116, 271, 276, 277], "repr_tabl": [61, 107, 116, 258, 271, 276, 277], "compar": [61, 107, 116, 142, 258, 269, 270, 271], "additive_ord": [61, 72, 116, 271], "addit": [61, 72, 73, 116, 152, 200, 206, 207, 228, 238, 239, 257, 259, 266, 271, 274], "field_norm": [61, 83, 116, 271], "norm": [61, 83, 116, 271], "_": [61, 83, 84, 116, 241, 257, 276, 277], "field_trac": [61, 84, 116, 271], "trace": [61, 75, 84, 116, 271], "tr": [61, 75, 84, 116], "beta": [61, 91, 116, 254, 271, 272], "minimal_poli": [61, 93, 116, 271], "ord": [61, 94, 107, 116, 276, 277], "column_spac": [61, 76, 97, 116, 271], "column": [61, 66, 76, 97, 99, 108, 116, 268], "space": [61, 76, 90, 97, 109, 116, 139, 250, 258, 271], "left_null_spac": [61, 90, 109, 116, 271], "null": [61, 76, 90, 97, 109, 116], "lu_decompos": [61, 92, 116, 271], "decompos": [61, 92, 99, 116], "input": [61, 72, 75, 89, 92, 93, 94, 99, 108, 116, 204, 230, 254, 257, 258, 270, 271, 274], "lower": [61, 92, 99, 116, 159, 228], "upper": [61, 92, 99, 116], "triangular": [61, 92, 99, 116], "matric": [61, 92, 99, 116, 141, 254, 260, 269, 270], "null_spac": [61, 76, 97, 116, 271], "plu_decompos": [61, 99, 116, 271, 274], "partial": [61, 99, 116], "pivot": [61, 99, 116], "row_reduc": [61, 108, 116, 254, 272], "ncol": [61, 108, 116], "perform": [61, 108, 116, 141, 204, 230, 232, 254, 257, 259, 260, 267, 268, 271, 276, 277], "gaussian": [61, 108, 116], "elimin": [61, 108, 116, 255, 257, 274], "achiev": [61, 108, 116, 171, 204, 230, 271], "reduc": [61, 108, 116, 159, 200, 228, 255, 257, 260, 269, 270, 271, 276, 277], "echelon": [61, 108, 116], "form": [61, 108, 116, 209, 240, 246, 276, 277], "rref": [61, 108, 116], "row_spac": [61, 90, 109, 116, 271], "prime_subfield": [61, 100, 116], "is_extension_field": [61, 86, 116, 271], "is_prime_field": [61, 87, 116, 271], "is_squar": [61, 89, 96, 110, 116, 254, 271], "repeat": [64, 137, 141, 152, 254, 260], "123456789": [64, 137, 271], "global": [64, 137, 262, 271], "rng": [64, 137, 271], "default_rng": [64, 137, 271], "simpli": [65, 75, 93, 256, 258, 270], "sinc": [65, 83, 84, 89, 107, 159, 200, 209, 213, 228, 238, 239, 240, 247, 260, 261, 266, 271, 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, 262, 271, 272, 273, 274], "alwai": [74, 93, 152, 159, 238, 260, 271, 276, 277], "result": [74, 94, 137, 141, 152, 212, 225, 254, 257, 260, 269, 271, 276, 277], "c_a": 75, "rais": [75, 80, 93, 94, 103, 104, 148, 153, 154, 155, 157, 158, 167, 193, 206, 209, 232, 233, 238, 240, 271], "valueerror": [75, 93, 103, 104, 148, 153, 154, 155, 167, 271], "annihil": [75, 90, 93, 97], "det": 75, "coeffici": [75, 133, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 156, 160, 163, 164, 165, 245, 252, 258, 271, 276], "en": [75, 83, 84, 93, 152, 159, 222, 244, 271], "wikipedia": [75, 83, 84, 93, 152, 159, 222, 244], "org": [75, 83, 84, 93, 152, 159, 192, 198, 204, 222, 226, 227, 230, 235, 240, 241, 244, 246], "wiki": [75, 83, 84, 93, 152, 159, 222, 244], "characteristic_polynomi": 75, "100": [75, 78, 80, 91, 111, 112, 115, 210, 231, 232, 247, 249, 254, 255, 256, 257, 266, 268, 269, 270, 271, 272, 274], "94": [75, 91, 254, 256, 268, 276], "136": [75, 91, 254, 271], "50": [75, 91, 254, 256, 260, 268, 271, 272, 276, 277], "134": [75, 91, 254, 268, 271], "95": [75, 91, 254, 256, 266, 268, 271], "178": [75, 91, 254, 268, 271], "80x": 75, "194x": [75, 137], "183": [75, 91, 254, 256], "linalg": [75, 108, 141, 260, 267], "elementwis": [75, 141, 271], "190": [75, 91, 254, 272], "208": [75, 91, 254], "211": [75, 91, 254], "196": [75, 91, 254], "160": [75, 91, 254], "84": [75, 91, 141, 254, 256, 268, 276], "80": [75, 91, 214, 254, 256, 268, 271, 276], "43": [75, 91, 115, 137, 177, 253, 254, 255, 256, 258, 259, 260, 268, 276, 277], "195": [75, 91, 254, 256, 271], "73": [75, 91, 133, 254, 256, 260, 268, 276], "77": [75, 161, 254, 256, 268, 271, 272, 276], "basi": [76, 90, 97, 109], "span": [76, 90, 97, 109, 209, 240, 241], "combin": [76, 109, 139, 190, 250], "most": [76, 103, 104, 109, 192, 209, 232, 240, 256, 258, 264, 266, 276], "mathcal": [76, 90, 97, 109], "dim": [76, 90, 97, 109], "speed": [78, 111, 257, 267, 271, 274], "65537": [78, 111, 112, 274], "memori": [78, 111, 256, 257, 267], "save": [78, 111, 267, 268], "still": [78, 111, 142], "fit": [78, 111, 112], "within": [78, 111, 112], "2147483647": [78, 111, 227], "36893488147419103183": [78, 80, 111, 112, 115], "unsupport": 80, "typeerror": [80, 104, 271], "small": [80, 233, 256, 270, 271, 274, 276, 277], "accept": [80, 139, 250, 271], "uint64": 80, "done": [80, 261], "uint8": [80, 256], "uint16": [80, 249, 256], "uint32": [80, 256], "int8": [80, 256], "int16": [80, 256], "int32": [80, 249, 256], "some": [80, 153, 159, 167, 200, 204, 209, 213, 224, 228, 230, 256, 257, 259, 261, 267, 270, 271, 276, 277], "certain": [80, 254, 256, 259, 271, 274], "unlimit": [80, 256, 257], "chang": [81, 257, 258, 259, 263, 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, 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, 264, 266, 268, 269, 270, 271], "obei": 91, "broadcast": [91, 254, 266, 272], "rule": [91, 139, 266], "90": [91, 228, 254, 256, 268, 271, 276], "68": [91, 254, 256, 260, 268, 274, 276], "119": [91, 137, 138, 253, 254], "218": [91, 141, 201, 254, 268, 271], "237": [91, 254, 271], "227": [91, 166, 254], "215": [91, 254, 268, 271], "53": [91, 228, 254, 256, 260, 268, 271, 276, 277], "226": [91, 254, 268, 271], "48": [91, 115, 240, 241, 254, 255, 256, 260, 268, 270, 271, 276, 277], "200": [91, 254, 258, 268, 271], "118": [91, 254], "96": [91, 141, 254, 256, 268, 271, 274], "167": [91, 254, 256, 268], "146": [91, 141, 254, 266, 268], "175": [91, 254], "187": [91, 254, 271], "207": [91, 253, 254, 268, 271], "115": [91, 254, 268, 271], "220": [91, 254, 268, 269], "223": [91, 132, 171, 172, 173, 174, 183, 253, 254], "102": [91, 253, 254, 256, 268, 269, 271], "147": [91, 254, 268], "216": [91, 254, 255, 256, 268], "114": [91, 253, 254, 255, 256, 271], "104": [91, 201, 254, 256], "85": [91, 171, 172, 173, 174, 183, 254, 256, 268, 272, 276], "212": [91, 254, 268], "217": [91, 254, 271], "240": [91, 254, 271], "197": [91, 240, 241, 254, 268], "anoth": [91, 108, 260, 277], "242": [91, 254, 255, 256, 271], "168": [91, 253, 254, 268, 271], "62": [91, 228, 254, 256, 260, 268, 270, 276, 277], "185": [91, 133, 141, 254, 255, 256, 272], "172": [91, 253, 254, 271], "188": [91, 254], "234": [91, 254], "166": [91, 254, 268, 271], "224": [91, 254, 266], "78": [91, 254, 255, 256, 268, 270, 276], "116": [91, 254], "86": [91, 254, 256, 268, 276], "76": [91, 254, 256, 268, 271, 276], "128": [91, 254, 268], "192": [91, 141, 254, 266, 268], "126": [91, 254], "184": [91, 253, 254, 268], "210": [91, 254, 271], "194": [91, 254], "202": [91, 253, 254, 268], "130": [91, 254], "60": [91, 216, 254, 255, 256, 260, 268, 272, 276, 277], "214": [91, 133, 254, 256, 271], "120": [91, 199, 253, 254, 262], "150": [91, 210, 231, 254, 268, 271], "232": [91, 253, 254, 268, 271], "124": [91, 132, 254, 255, 256], "158": [91, 152, 254], "122": [91, 253, 254, 268], "92": [91, 254, 256, 268, 269, 271, 276], "144": [91, 254], "228": [91, 254, 268], "98": [91, 254, 256, 268], "74": [91, 228, 254, 256, 260, 271, 276], "72": [91, 254, 256, 260, 268, 271, 276], "140": [91, 254], "152": [91, 254, 268], "56": [91, 115, 254, 255, 256, 260, 268, 271, 276, 277], "82": [91, 228, 254, 256, 266, 268, 271, 276], "108": [91, 254, 256, 266, 271], "46": [91, 115, 155, 199, 254, 255, 256, 260, 268, 273, 276, 277], "230": [91, 254, 255, 266], "174": [91, 254, 268], "156": [91, 141, 253, 254, 268], "238": [91, 254], "64": [91, 210, 231, 253, 254, 256, 260, 268, 269, 276, 277], "182": [91, 253, 254, 268], "164": [91, 254, 268], "52": [91, 115, 152, 253, 254, 255, 256, 259, 260, 268, 271, 276, 277], "162": [91, 254, 271], "58": [91, 240, 241, 253, 254, 256, 259, 260, 268, 271, 274, 276, 277], "170": [91, 254], "180": [91, 254, 256], "106": [91, 254, 256], "186": [91, 254, 268], "112": [91, 243, 254, 266], "70": [91, 254, 256, 260, 271, 273, 276], "142": [91, 254], "155": [91, 254], "125": [91, 254], "127": [91, 226, 227, 254, 266, 271], "83": [91, 242, 245, 254, 256, 268, 271, 276], "123": [91, 141, 145, 254, 256, 271], "201": [91, 141, 145, 254, 271], "213": [91, 254, 256, 268], "203": [91, 254], "91": [91, 195, 228, 254, 256, 268, 276], "235": [91, 253, 254, 268, 271], "97": [91, 254, 256, 268], "79": [91, 228, 254, 256, 268, 274, 276], "151": [91, 254, 272], "75": [91, 228, 254, 256, 258, 268, 276], "189": [91, 254], "81": [91, 228, 237, 254, 255, 256, 268, 272, 274, 276], "149": [91, 219, 220, 224, 254, 268], "163": [91, 141, 254, 255, 271], "169": [91, 93, 254], "171": [91, 254, 271, 272], "219": [91, 254, 268], "67": [91, 254, 256, 260, 266, 268, 271, 272, 276], "129": [91, 254, 268, 271], "61": [91, 226, 254, 256, 260, 271, 276, 277], "177": [91, 254, 268], "57": [91, 115, 254, 255, 256, 260, 268, 271, 274, 276, 277], "137": [91, 254, 259, 268, 271], "141": [91, 254, 268], "199": [91, 254, 268], "47": [91, 115, 254, 255, 256, 260, 266, 268, 274, 276, 277], "225": [91, 138, 254, 271], "105": [91, 254, 256], "101": [91, 254, 256], "173": [91, 254, 266], "139": [91, 254], "51": [91, 254, 256, 259, 260, 266, 268, 272, 274, 276, 277], "103": [91, 141, 254, 256], "89": [91, 226, 254, 256, 268, 276], "179": [91, 254, 255, 259, 266, 268], "135": [91, 254, 266], "59": [91, 173, 254, 256, 260, 268, 271, 274, 276, 277], "109": [91, 242, 245, 253, 254, 256, 266, 271], "193": [91, 253, 254, 255, 256, 268, 271, 272], "87": [91, 254, 256, 266, 268, 274, 276], "229": [91, 254, 268], "111": [91, 152, 254, 256], "71": [91, 254, 256, 260, 268, 271, 276], "241": [91, 254, 255, 266, 268, 271], "131": [91, 254, 268, 271], "239": [91, 254, 256], "45": [91, 115, 173, 254, 255, 256, 260, 268, 271, 276, 277], "157": [91, 254], "233": [91, 254, 268], "65": [91, 171, 172, 173, 174, 183, 254, 256, 260, 268, 270, 271, 276, 277], "159": [91, 254, 271], "191": [91, 254, 268, 271], "161": [91, 253, 254, 268, 272], "117": [91, 135, 139, 254, 259], "181": [91, 197, 254, 269, 271], "63": [91, 254, 256, 260, 268, 276, 277], "153": [91, 166, 254, 256, 268, 269], "145": [91, 254, 268], "107": [91, 197, 226, 254, 256], "133": [91, 254], "93": [91, 254, 256, 271, 276], "49": [91, 254, 255, 256, 260, 268, 272, 276, 277], "221": [91, 197, 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, 258, 262], "file": [103, 104, 209, 232, 240, 262, 264, 268, 274], "opt": [103, 104, 209, 232, 240], "hostedtoolcach": [103, 104, 209, 232, 240], "x64": [103, 104, 209, 232, 240], "lib": [103, 104, 209, 232, 240], "python3": [103, 104, 209, 232, 240, 261, 262, 263, 264, 266, 268], "site": [103, 104, 209, 232, 240, 261], "py": [103, 104, 209, 232, 240, 262, 264, 268, 274], "888": [103, 268], "cl": [103, 104], "886": 103, "887": 103, "890": 103, "omega_5": [103, 104], "arang": [103, 104, 256], "sort": [104, 107, 155, 196, 199, 268], "950": [104, 271], "948": 104, "949": 104, "952": 104, "953": 104, "outer": 104, "outsid": [106, 258], "revert": [106, 271], "previou": [106, 166, 258, 271], "ascend": [107, 146, 147, 148, 245, 250, 258], "ey": [108, 271, 272], "elementari": 108, "swap": 108, "multipli": [108, 152, 199, 260], "get": [108, 259, 261, 271], "matrix_rank": 108, "side": [108, 267, 272], "Or": [108, 141, 207, 239, 250, 255, 259, 260, 263, 264, 268], "y1": 110, "y2": 110, "constructor": [114, 256, 266, 267, 271], "vec": 114, "build": [115, 262], "exponenti": [115, 141, 256, 257, 271, 274], "user": [115, 254, 266, 267, 268, 271, 274], "fact": [115, 116, 228], "alreadi": [115, 255, 257, 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, 261, 262, 264, 267, 271, 274], "factor": [115, 153, 154, 155, 162, 166, 167, 195, 196, 198, 199, 210, 211, 216, 217, 228, 231, 232, 233, 247, 255, 267, 271, 274, 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, 259], "162x": [135, 259], "hex": [135, 259, 271], "_gener": 137, "56x": 137, "228x": 137, "157x": 137, "218x": 137, "148x": 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, 262, 263, 264, 268, 270, 271, 274, 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, 262, 269, 271], "allow": [142, 230, 232, 253, 254, 257, 258, 263, 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, 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, 238, 243, 259, 260], "6x": [152, 157, 158, 193, 194, 206, 236, 238, 243, 260, 270, 271], "118x": [152, 166], "68x": [152, 271], "170x": 152, "150x": 152, "120x": 152, "205x": 152, "52x": 152, "85x": 152, "158x": [152, 173], "f_i": 153, "algorithm": [153, 154, 155, 157, 158, 159, 161, 167, 191, 193, 197, 199, 201, 204, 212, 219, 220, 224, 230, 232, 233, 240, 247, 267, 271, 274, 276, 277], "suppos": [153, 167], "f_1": [153, 197, 201, 223], "f_2": [153, 197, 201, 223], "f_3": [153, 197, 201, 223], "those": [153, 167, 256, 271, 274], "often": [153, 154, 192, 213, 228, 232, 276], "appli": [153, 154, 155, 199, 249, 254, 266, 271, 274], "complet": [153, 154, 167, 267, 271, 276, 277], "implement": [153, 154, 159, 166, 167, 191, 192, 194, 195, 197, 198, 201, 204, 230, 235, 267, 269, 270, 271, 276, 277], "hachenberg": [153, 155, 167, 199], "jungnickel": [153, 155, 167, 199], "topic": [153, 155, 167, 199], "peopl": [153, 154, 155, 167, 199, 277], "csail": [153, 154, 155, 167, 199], "mit": [153, 154, 155, 167, 199], "edu": [153, 154, 155, 159, 167, 191, 199, 228], "dmoshkov": [153, 154, 155, 167, 199], "cours": [153, 154, 155, 167, 199, 240, 241], "g_1": [154, 155, 199], "g_r": 154, "cantor": 154, "zassenhau": 154, "probabilist": [154, 159], "www": [154, 157, 158, 159, 191, 193, 204, 230, 240, 241], "csa": 154, "iisc": 154, "ac": 154, "chandan": 154, "cnt": 154, "lec8": 154, "g_2": [155, 199], "g_k": [155, 199], "e_1": [155, 198, 199, 211, 216, 232, 247], "e_2": [155, 199], "e_k": [155, 198, 199, 211, 216, 232, 247], "g1": [155, 199], "g2": [155, 199], "g3": [155, 199], "e1": [155, 199], "e2": [155, 199], "e3": [155, 199], "125x": 156, "102x": 156, "22x": [156, 170, 187], "26x": [156, 173], "178x": 156, "254": [156, 254], "computation": [157, 158, 159, 161, 162, 193, 271], "expens": [157, 158, 159, 161, 162, 193, 255, 271, 274], "task": [157, 158, 159, 161, 162], "manual": [157, 158, 193, 207, 239, 262, 264, 274], "frank": [157, 158, 193, 267, 274], "luebeck": [157, 158, 193, 267, 274], "databas": [157, 158, 193, 199, 206, 274], "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, 263, 267], "scienc": [157, 158, 193], "articl": [157, 158, 193], "pii": [157, 158, 193], "s0747717104000331": [157, 158, 193], "among": [157, 158, 193], "candid": [157, 158, 193], "accordingli": [157, 158, 193, 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, 263, 267, 268, 269, 270, 271, 274], "sai": [159, 200], "siam": 159, "1980": 159, "273": [159, 254, 256], "280": [159, 254, 268], "app": 159, "dtic": 159, "mil": 159, "sti": 159, "ada078416": 159, "gao": 159, "panarino": 159, "clemson": 159, "sgao": 159, "paper": 159, "gp97a": 159, "chap4": [159, 161, 200, 228], "factorization_of_polynomials_over_finite_field": 159, "necessari": [159, 248, 250, 252, 261, 269, 270, 271, 276], "suffici": 159, "condit": [159, 206, 207, 239, 241], "being": [159, 209, 212, 214, 271], "11x": [159, 169, 170, 184, 187], "7x": [159, 170, 175, 181, 182, 187, 188, 222], "9x": [159, 169, 175, 181, 182, 184, 188, 269], "therefor": [162, 217, 256, 258, 276], "canon": [162, 217, 271], "f1": [162, 190, 197, 201, 217, 223, 243], "f2": [162, 190, 197, 201, 217, 223, 243], "rev": [165, 262], "_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, 262, 264, 266, 268, 269, 276, 277], "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], "15x": [170, 173, 175, 181, 182, 187, 188], "18x": [170, 173, 187], "20x": [170, 187], "17x": [170, 187], "24x": [170, 173, 187], "25x": [170, 187, 271], "bound": [171, 211, 216, 232, 256], "255": [171, 172, 173, 174, 183, 254, 269], "232x": 173, "29x": 173, "189x": 173, "142x": 173, "246x": 173, "43x": 173, "82x": 173, "238x": 173, "119x": 173, "224x": 173, "134x": 173, "227x": 173, "210x": 173, "163x": 173, "40x": 173, "27x": 173, "253x": 173, "239x": 173, "216x": [173, 271], "126x": 173, "190x": 173, "191x": 173, "96x": [173, 271], "116x": 173, "137x": [173, 259], "203x": [173, 271], "23x": [173, 259], "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, 262, 264, 267, 271], "2n": 191, "sach": 191, "uniniti": 191, "part": 191, "vi": 191, "sing": 191, "embeddedrel": 191, "showarticl": 191, "1099": 191, "php": 191, "crypto": 191, "stanford": 191, "mironov": 191, "cs359": 191, "below": [191, 209, 225, 240, 254, 257, 258, 259, 260, 261, 269, 270], "reproduc": [191, 264, 271], "carmichael": [192, 209, 240, 271], "lambda": [192, 209, 240], "oei": [192, 198, 226, 227, 235, 246], "a002322": 192, "euler": [192, 198, 209, 237, 240], "phi": [192, 198, 209, 215, 237, 240, 241, 246], "notabl": [192, 225, 256], "And": [192, 200, 225], "pow": [192, 209, 219, 224, 240, 241, 271], "standard": [193, 218, 266, 267, 268, 271, 273], "split": 193, "henc": 193, "wai": [193, 254, 256, 259, 263, 270, 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, 268, 271], "mn": [204, 230], "criteria": [204, 230], "nx": 204, "normal": [204, 230, 254, 257, 266, 267], "tolist": [204, 230], "fourier": [204, 230, 254], "dft": [204, 230, 254, 271], "pi": [204, 230], "neq": [204, 230], "omega_": [204, 230], "point": [204, 230, 269], "x_j": [204, 222, 230], "x_k": [204, 230], "kj": 204, "coolei": [204, 230, 271], "tukei": [204, 230, 271], "fft": [204, 230, 267, 271], "cgyurgyik": [204, 230], "github": [204, 225, 230, 262, 267, 272], "io": [204, 230, 271, 272], "post": [204, 230], "2021": [204, 230, 271], "04": [204, 230, 268], "brief": [204, 230], "introduct": [204, 230, 271], "nayuki": [204, 230], "geeksforgeek": [204, 230], "import": [204, 230, 263, 266, 270, 271, 272, 273, 274, 277], "forward": [204, 230, 267, 271], "ifft": [204, 271], "exact": [206, 207, 238, 239], "request": [206, 263, 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], "0x7fe5fe210040": 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, "humbl": 216, "highli": 216, "As": [217, 255, 259, 267, 276, 277], "consequ": 217, "version": [218, 257, 261, 263, 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, "spot": 225, "pleas": [225, 267], "submit": 225, "lin": 225, "costello": 225, "control": 225, "a000043": 226, "2000": [226, 227], "521": [226, 274], "607": 226, "1279": 226, "merseen": 226, "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087": [226, 227], "a000668": 227, "8191": 227, "131071": 227, "524287": 227, "2305843009213693951": 227, "618970019642690137449562111": 227, "162259276829213363391578010288127": 227, "170141183460469231731687303715884105727": 227, "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151": 227, "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127": 227, "strong": 228, "declar": 228, "much": [228, 271], "dartmouth": 228, "carlp": 228, "paper25": 228, "strong_liar": 228, "assert": 228, "6852976918500265458318414454675831645298": 229, "6852976918500265458318414454675831645343": 229, "jk": 230, "potenti": 231, "b_2": 232, "p_": 232, "chosen": [232, 276], "gg": 232, "pq": 232, "1039": 232, "1458757": 232, "1326001": 232, "_prime": 232, "1181": 232, "1178": 232, "1179": 232, "1182": 232, "1183": 232, "secondari": 232, "1184": 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, "0x7fe5fe211df0": 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, "815527560212068383170965": 240, "0x7fe615223940": 241, "insid": [242, 258, 271], "randomli": 244, "prime_number_theorem": 244, "327845897586213436751081882871255331286648902836386839087617368608439574698192016043769533823474001379935585889197488144338014865193967937011638431094821943416361149113909692569658970713864593781874423564706915495970135894084612689487074397782022398597547611189482697523681694691585678818112329605903872356773": 244, "openssl": 244, "1d2de38de88c67e1eafdeeae77c40b8709ed9c275522c6d5578976b1abcbe7e0f8c6de1271eec6eb3827649164189788f9f3a622aea5f4039761ec708b5841de88566d9b5baf49ba92dce5a300297a9e0e890e4103ed2ad4b5e0553ce56e8c34758cd45900125dba1553ae73aa0cbd6018a2a8713d46e475bf058d1aaa52ef1a5": 244, "n_r": 247, "15013": 247, "500": [247, 274], "1696469": 247, "recurs": [248, 251], "mix": [248, 251], "match": [248, 251], "previous": [248, 250, 252, 271], "coercion": [248, 250, 252], "width": [249, 258, 271], "variabl": [250, 262], "decreas": 250, "154": [253, 254], "nearli": [254, 260, 266], "univers": 254, "unari": 254, "variou": [254, 256, 262, 267, 271, 273, 274], "enabl": [254, 262, 271, 273], "expand": [254, 260], "detail": [254, 258, 259, 260, 266, 271, 276, 277], "88": [254, 256, 268, 269, 271, 276], "176": [254, 271], "209": [254, 256], "essenti": [254, 260], "how": [254, 260, 264, 273], "66": [254, 256, 260, 268, 276], "99": [254, 256, 268, 271], "110": [254, 256], "132": [254, 255, 268], "165": [254, 268], "across": [254, 274], "target": [254, 271], "axi": 254, "231": [254, 255, 256, 268, 272], "place": [254, 256], "negat": 254, "244": 254, "245": [254, 268], "246": 254, "247": 254, "248": 254, "249": 254, "250": [254, 268], "251": 254, "252": 254, "253": 254, "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, 263, 268], "ringarrai": [255, 271], "runtim": 255, "furthermor": 255, "know": 255, "skip": 255, "verif": [255, 270, 271], "twice": 255, "onc": [255, 257, 266, 269, 270, 271, 274], "subsequ": [255, 271], "extrem": 255, "inexpens": 255, "isomorph": 255, "document": [255, 272, 273, 274], "access": [255, 258, 261, 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, 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], "658": 256, "759255534363028631387827282488": 256, "311484979945089808700875527348": 256, "1075251634952724486515380502024": 256, "217128575398585433718204631919": 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, 262, 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, 263], "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], "59x": 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, 262, 263, 264, 268, 274], "reason": 261, "aren": [261, 271], "resolut": 261, "minut": 261, "ci": 261, "myst": 261, "parser": 261, "git": [261, 263, 268], "dollar": 261, "ipykernel": 261, "nb": 261, "pickleshar": 261, "switch": [261, 276, 277], "pip": [261, 262, 263, 264, 266, 268], "command": [261, 262], "dirhtml": 261, "home": 261, "directori": [261, 263, 271], "webpag": 261, "local": [261, 264], "webserv": 261, "modul": 261, "server": 261, "8080": 261, "web": 261, "browser": 261, "localhost": 261, "ruff": [262, 263], "static": 262, "analysi": 262, "lint": [262, 263], "your": [262, 264, 267, 268], "develop": [262, 263, 264, 267, 268, 274], "dev": [262, 264, 268, 269, 270, 271, 272, 274], "pyproject": [262, 264, 271], "toml": [262, 263, 264, 271], "tool": [262, 264], "src": [262, 271], "ipynb": 262, "exclud": 262, "dist": 262, "doc": [262, 273], "_version": 262, "pycodestyl": 262, "w": 262, "warn": [262, 268, 274], "pyflak": 262, "pyupgrad": 262, "flake8": 262, "bugbear": 262, "sim": 262, "dtz": 262, "datetimez": 262, "isort": [262, 274], "pl": 262, "pylint": 262, "ignor": [262, 277], "e501": 262, "e713": 262, "e714": 262, "e741": 262, "ambigu": 262, "plr0911": 262, "plr0912": 262, "branch": [262, 263, 268], "plr0913": 262, "plr0915": 262, "plr2004": 262, "magic": 262, "plr5501": 262, "collaps": 262, "els": 262, "plw0603": 262, "plw2901": 262, "redefin": [262, 271], "up006": 262, "pep585": 262, "annot": [262, 271, 272, 274], "render": [262, 271], "wrong": 262, "per": [262, 268, 269, 270, 271, 272, 274], "__init__": 262, "f401": 262, "f403": 262, "hook": 262, "config": 262, "yaml": 262, "repo": [262, 263, 268], "v2": 262, "id": [262, 271], "fixer": 262, "trail": 262, "whitespac": 262, "astral": 262, "sh": 262, "v0": 262, "disabl": [262, 271], "uninstal": 262, "vscode": [262, 264], "json": [262, 264, 268], "edit": 262, "latest": [263, 266, 272], "releas": [263, 271, 272, 273, 274], "mhostett": [263, 267, 271, 272, 273, 274], "activ": 263, "benefici": 263, "fashion": 263, "seen": [263, 271], "upon": 263, "clone": 263, "wherev": [263, 271], "like": [263, 266, 267, 268, 271, 276], "flag": 263, "pytest": [263, 264, 268], "cov": [263, 268], "xdist": 263, "benchmark": [263, 271], "pdfminer": 263, "six": 263, "ini_opt": 264, "minvers": 264, "addopt": 264, "showloc": 264, "testpath": 264, "execut": 264, "test_math": 264, "test_gcd": 264, "integr": [264, 267], "infrastructur": 264, "debug": 264, "parti": 264, "pkl": 264, "folder": [264, 268, 271], "script": [264, 271], "generate_int_test_vector": 264, "generate_field_test_vector": 264, "sudo": 264, "apt": 264, "sagemath": 264, "re": [264, 271], "easi": 264, "individu": 264, "guid": 266, "intend": [266, 267], "basic": 266, "usag": [266, 271, 273], "pypi": [266, 271, 272], "__version__": 266, "dev6": 266, "g384d4a47": 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, "extra": [268, 274], "stddev": 268, "median": 268, "session": 268, "platform": 268, "linux": 268, "pluggi": 268, "timer": 268, "perf_count": 268, "disable_gc": 268, "min_round": 268, "min_tim": 268, "000005": 268, "max_tim": 268, "calibration_precis": 268, "warmup": 268, "warmup_iter": 268, "100000": 268, "rootdir": 268, "mnt": 268, "matth": 268, "inifil": 268, "setup": 268, "cfg": 268, "plugin": 268, "mock": 268, "typeguard": 268, "anyio": 268, "collect": 268, "item": 268, "100_000": [268, 274], "test_add": 268, "3810": 268, "3280": 268, "9455": 268, "4959": 268, "07": [268, 270], "3620": 268, "test_additive_invers": 268, "5850": 268, "5360": 268, "1445": 268, "9249": 268, "2670": 268, "test_divid": 268, "0870": 268, "0680": 268, "6357": 268, "9537": 268, "4920": 268, "test_multiplicative_invers": 268, "4410": 268, "0050": 268, "6590": 268, "8467": 268, "4670": 268, "test_multipli": 268, "0400": 268, "4400": 268, "3296": 268, "1267": 268, "9010": 268, "test_pow": 268, "2410": 268, "06": [268, 274], "2870": 268, "8103": 268, "4850": 268, "2860": 268, "test_scalar_multipli": 268, "543": 268, "3970": 268, "00": 268, "714": 268, "562": 268, "2968": 268, "4125": 268, "1370": 268, "test_subtract": 268, "3110": 268, "8710": 268, "2938": 268, "4038": 268, "2520": 268, "2620": 268, "9984": 268, "1680": 268, "7530": 268, "0860": 268, "9070": 268, "7403": 268, "0927": 268, "0520": 268, "351": 268, "6220": 268, "09": 268, "5920": 268, "4510": 268, "3240": 268, "1620": 268, "9590": 268, "350": [268, 271], "8016": 268, "05": [268, 274], "3332": 268, "1050": 268, "1090": 268, "5620": 268, "1805": 268, "9767": 268, "6600": 268, "7210": 268, "520": 268, "5480": 268, "349": 268, "02": 268, "3962": 268, "6105": 268, "544": 268, "0880": 268, "1140": 268, "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, "1175": 268, "945": 268, "0700": 268, "632": 268, "3527": 268, "9239": 268, "01": 268, "578": 268, "4425": 268, "022": 268, "8560": 268, "7516": 268, "808": 268, "8230": 268, "481": [268, 274], "3870": 268, "011": 268, "817": 268, "897": 268, "2702": 268, "471": [268, 274], "2330": 268, "992": 268, "5040": 268, "847": 268, "6130": 268, "894": 268, "3920": 268, "872": 268, "3102": 268, "8231": 268, "2980": 268, "3730": 268, "040": 268, "5270": 268, "650": 268, "6814": 268, "5041": 268, "693": 268, "8380": 268, "049": 268, "1360": 268, "4565": 268, "6458": 268, "1895": 268, "4720": 268, "075": 268, "8030": 268, "944": 268, "4420": 268, "1406": 268, "5830": 268, "legend": 268, "outlier": 268, "deviat": 268, "iqr": 268, "interquartil": 268, "1st": 268, "quartil": 268, "3rd": 268, "op": 268, "impact": 268, "0001_master": 268, "checkout": 268, "0001_branch": 268, "modular": [269, 271, 274, 277], "involv": 269, "convolut": 269, "make": [269, 271, 275], "fair": 269, "fight": 269, "million": [269, 270], "10_000_000": [269, 270], "timeit": [269, 270, 271, 272, 274], "std": [269, 270, 271, 272, 274], "incorrect": 269, "aa": [269, 270], "bb": [269, 270], "pp": 269, "747": 269, "\u00b5": [269, 270, 271, 272, 274], "1174047800": 269, "3249326965": 269, "3196014003": 269, "3195457330": 269, "100242821": 269, "338589759": 269, "386": 269, "isn": 269, "718": 269, "definit": 269, "bla": [269, 270], "lapack": [269, 270], "parallel": [269, 274], "hardwar": 269, "acceler": 269, "4203877556": 269, "3977035749": 269, "2623937858": 269, "3721257849": 269, "4250999056": 269, "4026271867": 269, "3120760606": 269, "1017695431": 269, "1111117124": 269, "1638387264": 269, "2988805996": 269, "1734614583": 269, "2508826906": 269, "2800993411": 269, "1720697782": 269, "3858180318": 269, "2521070820": 269, "3906771227": 269, "624580545": 269, "984724090": 269, "3969931498": 269, "1692192269": 269, "473079794": 269, "1029376699": 269, "1232183301": 269, "209395954": 269, "2659712274": 269, "2967695343": 269, "2747874320": 269, "1249453570": 269, "3938433735": 269, "828783569": 269, "3286222384": 269, "3669775257": 269, "33626526": 269, "4278384359": 269, "703": 269, "000": [269, 270, 271, 274], "xy": 270, "2097169": 270, "1879104": 270, "1566761": 270, "967164": 270, "744769": 270, "975853": 270, "1142138": 270, "due": [270, 271], "don": 270, "1403108": 270, "100593": 270, "595358": 270, "852783": 270, "1035698": 270, "1207498": 270, "989189": 270, "390": 270, "absolut": 270, "overflow": [270, 271, 274], "prevent": 270, "whenev": 270, "1147163": 270, "59466": 270, "1841183": 270, "667877": 270, "2084618": 270, "799166": 270, "306714": 270, "1380503": 270, "810935": 270, "1932687": 270, "1690697": 270, "329837": 270, "325274": 270, "575543": 270, "1327001": 270, "167724": 270, "422518": 270, "696986": 270, "862992": 270, "1143160": 270, "588384": 270, "668891": 270, "1285421": 270, "1196448": 270, "1026856": 270, "1413416": 270, "1844802": 270, "38844": 270, "1643604": 270, "10409": 270, "401717": 270, "329673": 270, "860449": 270, "1551173": 270, "1766877": 270, "986430": 270, "708": 270, "slightli": 270, "overhead": 270, "682": [270, 271], "renam": [271, 273], "gfarrai": 271, "chinese_remainder_theorem": 271, "bug": [271, 274, 275], "baalateja": 271, "kataru": 271, "bk": 271, "poly_exp_mod": 271, "poly_pow": 271, "is_prime_fermat": 271, "is_prime_miller_rabin": 271, "massiv": 271, "enhanc": 271, "convolv": 271, "oaklei": 271, "rfc": 271, "2409": 271, "restructur": 271, "is_group": 271, "is_field": 271, "poly_factor": 271, "vdot": 271, "poly_gcd": 271, "june": 271, "fieldmeta": 271, "fieldclass": 271, "remov": [271, 272, 273, 274], "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], "docstr": 271, "correctli": 271, "decemb": [271, 274], "style": 271, "randint": 271, "offici": 271, "major": [271, 272, 275], "syntax": 271, "express": 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, "quadratic_residu": 271, "quadratic_non_residu": 271, "co": 271, "march": 271, "differenti": 271, "wasn": 271, "memoiz": [271, 274], "routin": [271, 272], "cpu": [271, 274], "675": 271, "sy": [271, 274], "total": [271, 274], "wall": [271, 274], "741": 271, "0o13": 271, "0xb": 271, "made": 271, "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, "That": 271, "alias": 271, "subpackag": 271, "metaclass": 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, 274], "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, 274], "ineffici": 272, "429": 272, "13546990": 272, "14653018": 272, "21619804": 272, "15507037": 272, "24669161": 272, "19116362": 272, "23979074": 272, "432": 272, "13693": 272, "426": 272, "modern": 272, "abbrevi": 272, "notat": 272, "418": 272, "appropri": 272, "420": 272, "424": 272, "430": 272, "413": 273, "435": 273, "ari": 273, "parity_onli": 273, "generator_to_parity_check_matrix": 273, "parity_check_to_generator_matrix": 273, "poly_to_generator_matrix": 273, "roots_to_parity_check_matrix": 273, "display_mod": 273, "bool_": 273, "437": 273, "publish": 273, "441": 274, "1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512": 274, "core": 274, "440": 274, "664": 274, "776": 274, "bitwise_xor": 274, "infinit": 274, "450": 274, "2400610585866217": 274, "black": 274, "446": 274, "449": 274, "pivi": 274, "452": 274, "took": 274, "forev": 274, "641": 274, "274177": 274, "6700417": 274, "67280421310721": 274, "59649589127497217": 274, "5704689200685129054721": 274, "454": 274, "2013": 274, "2018": 274, "2023": 274, "463": 274, "462": 274, "1001": 274, "745": 274, "470": 274, "469": 274, "415": 274, "477": 274, "mypi": 274, "checker": 274, "concurr": 274, "484": 274, "octob": 274, "507": 274, "rare": 274, "488": 274, "resolv": 274, "deprec": 274, "492": 274, "lasagnen": 274, "wheel": 274, "510": 274, "511": 274, "instal": 274, "avadov": 274, "2024": 274, "534": 274, "533": 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, 262, 264], "abstract": [1, 61], "constructor": [1, 22, 45, 61, 116, 117, 132, 168, 255, 259], "method": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 254, 255, 259], "properti": [1, 22, 45, 61, 116, 117, 132, 157, 158, 159, 161, 162, 168, 255, 256, 259], "slower": [18, 91, 106, 157, 158, 193, 258], "perform": [18, 91, 106, 157, 158, 193, 206, 258, 266, 269, 270], "shorten": [22, 31, 32, 33, 168, 177, 178, 179], "code": [22, 31, 32, 33, 168, 177, 178, 179, 262, 264], "string": [22, 45, 61, 116, 117, 132, 168], "represent": [22, 45, 61, 116, 117, 132, 168, 258, 259, 266], "attribut": [22, 61, 116, 132, 168], "matric": [22, 168], "import": [25, 171, 269], "note": 31, "state": [45, 117], "convers": [61, 116], "compil": [61, 116, 257], "algebra": [61, 116, 254, 269, 270], "info": [116, 218, 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, "format": 262, "run": [262, 264], "linter": 262, "formatt": 262, "pre": 262, "commit": 262, "from": [262, 263, 264], "v": [262, 264], "pypi": 263, "github": 263, "edit": 263, "local": 263, "folder": 263, "dev": 263, "depend": [263, 268], "unit": 264, "command": 264, "line": 264, "sage": 264, "sympi": 264, "index": 265, "get": 266, "start": 266, "packag": 266, "two": 266, "disclaim": 267, "featur": 267, "roadmap": 267, "acknowledg": 267, "citat": 267, "benchmark": 268, "compar": 268, "previou": 268, "binari": 269, "extens": [269, 276], "runtim": 270, "floor": 270, "v0": [271, 272, 273, 274], "0": [271, 272, 273, 274], "14": 271, "break": [271, 273, 274], "contributor": [271, 272, 273, 274], "15": 271, "16": 271, "17": 271, "18": 271, "19": 271, "20": 271, "21": 271, "22": 271, "23": 271, "24": 271, "25": 271, "26": 271, "27": 271, "28": 271, "29": 271, "30": 271, "31": 271, "32": 271, "33": 271, "2": [272, 273, 274], "5": 274, "6": 274, "7": 274, "8": 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"], [262, "configuration"], [264, "configuration"]], "Abstract": [[1, null], [61, null]], "Constructors": [[1, "constructors"], [22, "constructors"], [45, "constructors"], [61, "constructors"], [116, "constructors"], [117, "constructors"], [132, "constructors"], [168, "constructors"], [255, "constructors"]], "Methods": [[1, "methods"], [22, "methods"], [45, "methods"], [61, "methods"], [116, "methods"], [117, "methods"], [132, "methods"], [168, "methods"], [255, "methods"], [259, "methods"]], "Properties": [[1, "properties"], [22, "properties"], [45, "properties"], [61, "properties"], [116, "properties"], [117, "properties"], [132, "properties"], [168, "properties"], [259, "properties"]], "Slower performance": [[18, null], [91, null], [106, null], [157, null], [158, null], [193, null], [258, null]], "Shortened codes": [[22, null], [31, null], [32, null], [33, null], [168, null], [177, null], [178, null], [179, null]], "String representation": [[22, "string-representation"], [45, "string-representation"], [61, "string-representation"], [116, "string-representation"], [117, "string-representation"], [132, "string-representation"], [168, "string-representation"]], "Attributes": [[22, "attributes"], [61, "attributes"], [116, "attributes"], [132, "attributes"], [168, "attributes"]], "Matrices": [[22, "matrices"], [168, "matrices"]], "Important": [[25, null], [171, null], [269, null]], "Note": [[31, null]], "State": [[45, "state"], [117, "state"]], "Conversions": [[61, "conversions"], [116, "conversions"]], "Elements": [[61, "elements"], [116, "elements"], [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"], [262, "install"], [264, "install"]], "Build the docs": [[261, "build-the-docs"]], "Serve the docs": [[261, "serve-the-docs"]], "Formatting": [[262, "formatting"]], "Run the linter": [[262, "run-the-linter"]], "Run the formatter": [[262, "run-the-formatter"]], "Pre-commit": [[262, "pre-commit"]], "Run from VS Code": [[262, "run-from-vs-code"], [264, "run-from-vs-code"]], "Installation": [[263, "installation"]], "Install from PyPI": [[263, "install-from-pypi"]], "Install from GitHub": [[263, "install-from-github"]], "Editable install from local folder": [[263, "editable-install-from-local-folder"]], "Install the dev dependencies": [[263, "install-the-dev-dependencies"]], "Unit Tests": [[264, "unit-tests"]], "Run from the command line": [[264, "run-from-the-command-line"]], "Test vectors": [[264, "test-vectors"]], "Install Sage": [[264, "install-sage"]], "Install SymPy": [[264, "install-sympy"]], "Generate test vectors": [[264, "generate-test-vectors"]], "Index": [[265, "index"]], "Getting Started": [[266, "getting-started"]], "Install the package": [[266, "install-the-package"]], "Create a FieldArray subclass": [[266, "create-a-fieldarray-subclass"]], "Create two FieldArray instances": [[266, "create-two-fieldarray-instances"]], "Change the element representation": [[266, "change-the-element-representation"]], "Perform array arithmetic": [[266, "perform-array-arithmetic"]], "Disclaimer": [[267, null]], "Features": [[267, "features"]], "Roadmap": [[267, "roadmap"]], "Acknowledgements": [[267, "acknowledgements"]], "Citation": [[267, "citation"]], "Benchmarks": [[268, "benchmarks"]], "Install dependencies": [[268, "install-dependencies"]], "Create a benchmark": [[268, "create-a-benchmark"]], "Compare with a previous benchmark": [[268, "compare-with-a-previous-benchmark"]], "Binary Extension Fields": [[269, "binary-extension-fields"]], "Lookup table performance": [[269, "lookup-table-performance"], [270, "lookup-table-performance"]], "Explicit calculation performance": [[269, "explicit-calculation-performance"], [270, "explicit-calculation-performance"]], "Linear algebra performance": [[269, "linear-algebra-performance"], [270, "linear-algebra-performance"]], "Prime Fields": [[270, "prime-fields"]], "Runtime floor": [[270, "runtime-floor"]], "v0.0": [[271, "v0-0"]], "v0.0.14": [[271, "v0-0-14"]], "Breaking changes": [[271, "breaking-changes"], [271, "id1"], [271, "id6"], [271, "id9"], [271, "id12"], [271, "id15"], [271, "id20"], [271, "id25"], [271, "id28"], [271, "id31"], [271, "id34"], [271, "id39"], [271, "id44"], [271, "id47"], [271, "id50"], [273, "breaking-changes"], [274, "breaking-changes"]], "Changes": [[271, "changes"], [271, "id2"], [271, "id4"], [271, "id7"], [271, "id10"], [271, "id13"], [271, "id16"], [271, "id18"], [271, "id21"], [271, "id23"], [271, "id26"], [271, "id29"], [271, "id32"], [271, "id35"], [271, "id37"], [271, "id40"], [271, "id42"], [271, "id45"], [271, "id48"], [271, "id51"], [272, "changes"], [272, "id1"], [272, "id3"], [273, "changes"], [274, "changes"], [274, "id1"], [274, "id3"], [274, "id5"], [274, "id7"], [274, "id9"], [274, "id11"], [274, "id13"], [274, "id15"]], "Contributors": [[271, "contributors"], [271, "id3"], [271, "id5"], [271, "id8"], [271, "id11"], [271, "id14"], [271, "id17"], [271, "id19"], [271, "id22"], [271, "id24"], [271, "id27"], [271, "id30"], [271, "id33"], [271, "id36"], [271, "id38"], [271, "id41"], [271, "id43"], [271, "id46"], [271, "id49"], [271, "id52"], [272, "contributors"], [272, "id2"], [272, "id4"], [273, "contributors"], [274, "contributors"], [274, "id2"], [274, "id4"], [274, "id6"], [274, "id8"], [274, "id10"], [274, "id12"], [274, "id14"], [274, "id16"]], "v0.0.15": [[271, "v0-0-15"]], "v0.0.16": [[271, "v0-0-16"]], "v0.0.17": [[271, "v0-0-17"]], "v0.0.18": [[271, "v0-0-18"]], "v0.0.19": [[271, "v0-0-19"]], "v0.0.20": [[271, "v0-0-20"]], "v0.0.21": [[271, "v0-0-21"]], "v0.0.22": [[271, "v0-0-22"]], "v0.0.23": [[271, "v0-0-23"]], "v0.0.24": [[271, "v0-0-24"]], "v0.0.25": [[271, "v0-0-25"]], "v0.0.26": [[271, "v0-0-26"]], "v0.0.27": [[271, "v0-0-27"]], "v0.0.28": [[271, "v0-0-28"]], "v0.0.29": [[271, "v0-0-29"]], "v0.0.30": [[271, "v0-0-30"]], "v0.0.31": [[271, "v0-0-31"]], "v0.0.32": [[271, "v0-0-32"]], "v0.0.33": [[271, "v0-0-33"]], "v0.1": [[272, "v0-1"]], "v0.1.0": [[272, "v0-1-0"]], "v0.1.1": [[272, "v0-1-1"]], "v0.1.2": [[272, "v0-1-2"]], "v0.2": [[273, "v0-2"]], "v0.2.0": [[273, "v0-2-0"]], "v0.3": [[274, "v0-3"]], "v0.3.0": [[274, "v0-3-0"]], "v0.3.1": [[274, "v0-3-1"]], "v0.3.2": [[274, "v0-3-2"]], "v0.3.3": [[274, "v0-3-3"]], "v0.3.4": [[274, "v0-3-4"]], "v0.3.5": [[274, "v0-3-5"]], "v0.3.6": [[274, "v0-3-6"]], "v0.3.7": [[274, "v0-3-7"]], "v0.3.8": [[274, "v0-3-8"]], "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/formatting/", "development/installation/", "development/unit-tests/", "genindex/", "getting-started/", "", "performance/benchmarks/", "performance/binary-extension-fields/", "performance/prime-fields/", "release-notes/v0.0/", "release-notes/v0.1/", "release-notes/v0.2/", "release-notes/v0.3/", "release-notes/versioning/", "tutorials/intro-to-extension-fields/", "tutorials/intro-to-prime-fields/"]}) \ No newline at end of file diff --git a/v0.3.x/tutorials/intro-to-extension-fields/index.html b/v0.3.x/tutorials/intro-to-extension-fields/index.html index c2babcbbd..366eb268e 100644 --- a/v0.3.x/tutorials/intro-to-extension-fields/index.html +++ b/v0.3.x/tutorials/intro-to-extension-fields/index.html @@ -32,7 +32,7 @@ - + diff --git a/v0.3.x/tutorials/intro-to-prime-fields/index.html b/v0.3.x/tutorials/intro-to-prime-fields/index.html index c6bb1260b..e044436df 100644 --- a/v0.3.x/tutorials/intro-to-prime-fields/index.html +++ b/v0.3.x/tutorials/intro-to-prime-fields/index.html @@ -32,7 +32,7 @@ - +