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))
Exemple #5
0
    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)
Exemple #6
0
    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)