def test5(self): """Check equivalence between multiplication with and w/o use of generator in F27 """ f27g = finite_field(27) f3 = finite_field(3) f27 = FiniteField(3, 3, f3.polynomial(-1, -1, 0, 1)) for a in f27: for b in f27: self.assertEqual(a * b, f27g.element(a) * f27g.element(b)) if not b.null: self.assertEqual(a / b, f27g.element(a) / f27g.element(b))
def test4(self): """Check equivalence between multiplication with and w/o use of generator in F25 """ f25g = finite_field(25) f5 = finite_field(5) f25 = FiniteField(5, 2, f5.polynomial(2, 0, 1)) for a in f25: for b in f25: self.assertEqual(a * b, f25g.element(a) * f25g.element(b)) if not b.null: self.assertEqual(a / b, f25g.element(a) / f25g.element(b))
def test3(self): """Check equivalence between multiplication with and w/o use of generator in F16 """ f16g = finite_field(16) f2 = finite_field(2) f16 = FiniteField(2, 4, f2.polynomial(1, 1, 0, 0, 1)) for a in f16: for b in f16: self.assertEqual(a * b, f16g.element(a) * f16g.element(b)) if not b.null: self.assertEqual(a / b, f16g.element(a) / f16g.element(b))
def setUp(self) -> None: self.f2 = finite_field(2) self.f4 = FiniteField(2, 2, self.f2.polynomial(1, 1, 1)) self.f4g = FiniteField(2, 2, self.f2.polynomial(1, 1, 1), generator=(0, 1))
def testFiniteFieldF4(self): """Check full Cantor-Zassenhaus factorization over F4 """ f4 = finite_field(4) p1 = f4.polynomial(1, f4(1, 1), 1) p2 = f4.polynomial(1, f4(1, 1), 0, 1) p3 = f4.polynomial(f4(0, 1), 1)**2 p4 = f4.polynomial(f4(0, 1), 1, f4(0, 1), 0, f4(1, 1)) / f4(1, 1) ps = [p1, p2, p3, p4] for p in ps: with self.subTest(f'Testing factorizing {str(p)}'): factors, c = factorize(p).cantor_zassenhaus() self.assertTrue(p == factorize(p).factors_product(factors) * c)
def testFiniteFieldF9(self): """Check full Cantor-Zassenhaus factorization over F9 """ f9 = finite_field(9) p1 = f9.polynomial(1, f9(1, 1), 1) p2 = f9.polynomial(1, f9(1, 1), 0, 1) p3 = f9.polynomial(f9(0, 1), 1)**2 p4 = f9.polynomial(f9(0, 1), 1, f9(0, 1), 0, f9(1, 1)) / f9(1, 1) p5 = f9.polynomial(f9(-1, 1), f9(1, -1), 1)**3 ps = [p1, p2, p3, p4, p5] for p in ps: with self.subTest(f'Testing factorizing {str(p)}'): factors, c = factorize(p).cantor_zassenhaus() self.assertTrue(p == factorize(p).factors_product(factors) * c)