def poly_is_square_free(field_folder): GF, d = read_pickle(field_folder, "is_square_free.pkl") d["GF"] = GF d["X"] = [galois.Poly(p, field=GF) for p in d["X"]] d["Z"] = d["Z"] return d
def poly_prod(field_folder): GF, d = read_pickle(field_folder, "prod.pkl") d["GF"] = GF d["X"] = [[galois.Poly(p, field=GF) for p in X] for X in d["X"]] d["Z"] = [galois.Poly(p, field=GF) for p in d["Z"]] return d
def poly_is_primitive(field_folder): GF, d = read_pickle(field_folder, "is_primitive.pkl") d["GF"] = GF d["IS"] = [galois.Poly(p, field=GF) for p in d["IS"]] d["IS_NOT"] = [galois.Poly(p, field=GF) for p in d["IS_NOT"]] return d
def test_prim_poly(self, field): prim_poly = field.prim_poly # Polynomial in GF(p) alpha = field.alpha poly = galois.Poly(prim_poly.coeffs, field=field) # Polynomial in GF(p^m) assert poly(alpha) == 0
def poly_reverse(field_folder): GF, d = read_pickle(field_folder, "reverse.pkl") d["GF"] = GF d["X"] = [galois.Poly(p, field=GF) for p in d["X"]] d["Z"] = [galois.Poly(p, field=GF) for p in d["Z"]] return d
c = e.polynomial().coefficients(sparse=False)[::-1] print(f" galois.Poly({c}, field=GF{p}),") print("]\n") """ import random import pytest import galois GF2 = galois.GF(2) GF3 = galois.GF(3) GF5 = galois.GF(5) PRIMITIVE_ELEMENTS_2_2 = [ galois.Poly([1, 0], field=GF2), galois.Poly([1, 1], field=GF2), ] PRIMITIVE_ELEMENTS_2_3 = [ galois.Poly([1, 0], field=GF2), galois.Poly([1, 1], field=GF2), galois.Poly([1, 0, 0], field=GF2), galois.Poly([1, 0, 1], field=GF2), galois.Poly([1, 1, 0], field=GF2), galois.Poly([1, 1, 1], field=GF2), ] PRIMITIVE_ELEMENTS_2_4 = [ galois.Poly([1, 0], field=GF2), galois.Poly([1, 1], field=GF2),
def test_negative_coeffs(type1, config): GF = config["GF"] p = galois.Poly(type1(config["neg_coeffs"]), field=GF) check_attributes(p, config)
def create_poly_from_array(bool_array): return galois.Poly(bool_array, field=GF)
def test_equal_with_scalar(field): # NOTE: GF(11) is not included in the `field` pytest fixture scalar = 0 p = galois.Poly([scalar], field=field) assert p == scalar assert p == field(scalar) assert p == galois.Poly([scalar], field=field) assert p != galois.Poly([scalar], field=galois.GF(11)) assert scalar == p assert field(scalar) == p assert galois.Poly([scalar], field=field) == p assert galois.Poly([scalar], field=galois.GF(11)) != p scalar = 1 p = galois.Poly([scalar], field=field) assert p == scalar assert p == field(scalar) assert p == galois.Poly([scalar], field=field) assert p != galois.Poly([scalar], field=galois.GF(11)) assert scalar == p assert field(scalar) == p assert galois.Poly([scalar], field=field) == p assert galois.Poly([scalar], field=galois.GF(11)) != p scalar = random.randint(1, field.order - 1) p = galois.Poly([scalar], field=field) assert p == scalar assert p == field(scalar) assert p == galois.Poly([scalar], field=field) assert scalar == p assert field(scalar) == p assert galois.Poly([scalar], field=field) == p
def test_equal(self, field): c = field.Random(6) c[0] = field.Random(low=1) # Ensure leading coefficient is non-zero p1 = galois.Poly(c) p2 = galois.Poly(c.tolist(), field=field) assert p1 == p2
def test_negative_coeffs(self, field): a = field.Random() l = [1, -int(a)] p = galois.Poly(l, field=field) assert np.all(p.coeffs == [1, -a]) check_poly(p, field)
def test_field_coeffs(self, field): c = field.Random(6) c[0] = field.Random(low=1) # Ensure leading coefficient is non-zero p = galois.Poly(c) assert np.all(p.coeffs == c) check_poly(p, field)
def field_minimal_poly_element(field_folder): GF, d = read_pickle(field_folder, "minimal_poly_element.pkl") d["GF"] = GF d["X"] = GF(d["X"]) d["Z"] = [galois.Poly(p, field=GF.prime_subfield) for p in d["Z"]] return d
def field_characteristic_poly_matrix(field_folder): GF, d = read_pickle(field_folder, "characteristic_poly_matrix.pkl") d["GF"] = GF d["X"] = [GF(x) for x in d["X"]] d["Z"] = [galois.Poly(p, field=GF) for p in d["Z"]] return d