示例#1
0
    def setUp(self):
        """
	create two different Fq's.
	"""
        self.F2 = FinitePrimeField.getInstance(2)
        f = FinitePrimeFieldPolynomial([(0, 1), (5, 1), (6, 1)], self.F2)
        self.F64 = FiniteExtendedField(2, f)
        self.F3 = FinitePrimeField.getInstance(3)
        f = FinitePrimeFieldPolynomial(enumerate([1, 2, 1, 2, 1]), self.F3)
        self.F81 = FiniteExtendedField(3, f)
示例#2
0
 def testCreateElement(self):
     F125 = FiniteExtendedField(5, 3)
     self.assertEqual(
         F125.createElement(6),
         F125.createElement(
             FinitePrimeFieldPolynomial(enumerate([1, 1]),
                                        FinitePrimeField.getInstance(5))))
     self.assertEqual(F125.createElement(6), F125.createElement([1, 1]))
示例#3
0
 def testInit(self):
     self.assertEqual(8, card(FiniteExtendedField(2, 3)))
     f = FinitePrimeFieldPolynomial(enumerate([1, 1, 0, 1]),
                                    FinitePrimeField.getInstance(2))
     self.assertEqual(8, card(FiniteExtendedField(2, f)))
     for i in range(10):  # 10 might be enough to check random moduli
         F8 = FiniteExtendedField(2, 3)
         defining_polynomial = F8.modulus
         self.assert_(defining_polynomial.degree() == 3)
         self.assert_(defining_polynomial.isirreducible())
示例#4
0
 def testContains(self):
     # elements of the field
     F125 = FiniteExtendedField(5, 3)
     self.assert_(F125.one in F125)
     self.assert_(F125.createElement(17) in F125)
     # elements of prime fields
     self.assert_(FinitePrimeField.getInstance(5).one in F125)
     # different characteristic
     self.failIf(FinitePrimeFieldElement(3, 7) in F125)
     # elements of disjoint fields
     F25 = FiniteExtendedField(5, 2)
     self.failIf(F25.one in F125)
     self.failIf(F25.createElement(17) in F125)
     F625 = FiniteExtendedField(5, 4)
     self.failIf(F625.one in F125)
     self.failIf(F625.createElement(17) in F125)
     # we don't expect an element of extended fields be in the field
     # even if it actually is.
     F15625 = FiniteExtendedField(5, 6)
     self.failIf(F15625.one in F125)
示例#5
0
class FinitePrimeFieldTest(unittest.TestCase):
    def setUp(self):
        self.F17 = FinitePrimeField(17)

    def testEq(self):
        self.assertEqual(self.F17, self.F17)

    def testNonZero(self):
        self.failUnless(self.F17)
        self.failUnless(FinitePrimeField(17L))

    def testConst(self):
        self.assertEqual(FinitePrimeFieldElement(1, 17), self.F17.one)
        self.assertEqual(FinitePrimeFieldElement(0, 17), self.F17.zero)
        self.assertEqual(self.F17.one, self.F17.one * self.F17.one)
        self.assertEqual(self.F17.one, self.F17.one + self.F17.zero)
        self.assertEqual(self.F17.zero, self.F17.zero * self.F17.zero)

    def testGetInstance(self):
        self.assertEqual(self.F17, FinitePrimeField.getInstance(17))
        self.failUnless(
            FinitePrimeField.getInstance(17) is FinitePrimeField.getInstance(
                17))

    def testStrings(self):
        self.assertEqual("F_17", str(self.F17))
        self.assertEqual("FinitePrimeField(17)", repr(self.F17))

    def testSubring(self):
        self.assert_(self.F17.issubring(self.F17))
        self.assert_(self.F17.issuperring(self.F17))
        # polynomial ring
        import nzmath.polynomial as polynomial
        F17X = polynomial.PolynomialRing(self.F17, 'X')
        self.assert_(self.F17.issubring(F17X))
        self.failIf(self.F17.issuperring(F17X))
        # rational field
        self.failIf(self.F17.issuperring(theRationalField))
        self.failIf(self.F17.issubring(theRationalField))

    def testHash(self):
        dictionary = {}
        dictionary[self.F17] = 1
        self.assertEqual(1, dictionary[FinitePrimeField(17)])
示例#6
0
 def setUp(self):
     self.F17 = FinitePrimeField(17)
示例#7
0
 def testRepr(self):
     f = FinitePrimeFieldPolynomial(
         [(0, 2), (8, 1)], coeffring=FinitePrimeField.getInstance(311))
     self.assertEqual(0, repr(f).index("Finite"))
示例#8
0
 def testSubring(self):
     F125 = FiniteExtendedField(5, 3)
     F5 = FinitePrimeField.getInstance(5)
     self.failIf(F125.issubring(F5))
示例#9
0
 def testSuperring(self):
     F125 = FiniteExtendedField(5, 3)
     F5 = FinitePrimeField.getInstance(5)
     self.assert_(F125.issuperring(F5))
示例#10
0
 def setUp(self):
     self.F3 = FinitePrimeField.getInstance(3)
     self.F81 = FiniteExtendedField(3, 4)
示例#11
0
 def testHash(self):
     dictionary = {}
     dictionary[self.F17] = 1
     self.assertEqual(1, dictionary[FinitePrimeField(17)])
示例#12
0
 def testGetInstance(self):
     self.assertEqual(self.F17, FinitePrimeField.getInstance(17))
     self.failUnless(
         FinitePrimeField.getInstance(17) is FinitePrimeField.getInstance(
             17))
示例#13
0
 def testNonZero(self):
     self.assertTrue(self.F17)
     self.assertTrue(FinitePrimeField(17))