コード例 #1
0
    def setUp(self):
        """
	setUp is run before each test method run.
	"""
        self.f = multivar.BasicPolynomial({(1, 2, 3): 4})
        self.g = multivar.BasicPolynomial({(1, 2, 3): 9})
        self.h = multivar.BasicPolynomial({(1, 1, 1): 1})
コード例 #2
0
    def testAdd(self):
        """
	addition
	"""
        sum1 = multivar.BasicPolynomial({(1, 2, 3): 13})
        sum2 = multivar.BasicPolynomial({(1, 1, 1): 1, (1, 2, 3): 4})
        self.assertEqual(sum1, self.f + self.g)
        self.assertEqual(sum2, self.f + self.h)
コード例 #3
0
 def testMul(self):
     """
     multiplication
     """
     prod1 = multivar.BasicPolynomial({(2, 4, 6): 36})
     self.assertEqual(prod1, self.f * self.g)
     sprod = multivar.BasicPolynomial({(1, 2, 3): 28})
     self.assertEqual(sprod, self.f * 7)
     self.assertEqual(sprod, 7 * self.f)
コード例 #4
0
 def testCall(self):
     """
     substitution
     """
     zero = multivar.BasicPolynomial({}, number_of_variables=3)
     self.assertEqual(zero, self.f(0, 0))
     self.assertEqual(zero, self.f(1, 0))
     self.assertEqual(zero, self.f(2, 0))
     self.assertRaises(IndexError, self.f.__call__, 3, 0)
     subst1 = multivar.BasicPolynomial({(0, 2, 3): 4})
     self.assertEqual(subst1, self.f(0, 1))
コード例 #5
0
 def testCombineSimilarTerm(self):
     p = multivar.BasicPolynomial({(1, 0): 1, (2, 0): 2, (1, 1): -2})
     p0 = [(1, multivar.BasicPolynomial({
         (0, ): 1,
         (1, ): -2
     })), (2, multivar.BasicPolynomial({(0, ): 2}))]
     p1 = [(0, multivar.BasicPolynomial({
         (1, ): 1,
         (2, ): 2
     })), (1, multivar.BasicPolynomial({(1, ): -2}))]
     self.assertEqual(p0, p.combine_similar_terms(0))
     self.assertEqual(p1, p.combine_similar_terms(1))
コード例 #6
0
 def testTermMul(self):
     """
     multiplication by a term.
     """
     prod1 = multivar.BasicPolynomial({(2, 4, 6): 36})
     self.assertEqual(prod1, self.f.term_mul(self.g))
     self.assertEqual(prod1, self.f.term_mul(((1, 2, 3), 9)))
コード例 #7
0
 def testFormatMinusOne(self):
     """
     format works for null terms polynomials.
     """
     f = multivar.BasicPolynomial({(0, 2): -1, (1, 1): 0, (1, 0): 0})
     flex = "- Y ** 2"
     self.assertEqual(flex, self.lex.format(f, varnames=("X", "Y")))
コード例 #8
0
 def testMultCall(self):
     """
     substitution simultaneous
     """
     subst12 = multivar.BasicPolynomial({(
         0,
         0,
         3,
     ): 16})
     self.assertEqual(subst12, self.f((0, 1), (1, 2)))
コード例 #9
0
 def testFormatConst(self):
     """
     format works for constant.
     """
     f = multivar.BasicPolynomial({(0, 0): 4})
     self.assertRaises(TypeError, self.lex.format, f)
     const4 = "4"
     self.assertEqual(const4, self.lex.format(f, varnames=("X", "Y")))
     self.assertEqual(const4, self.deglex.format(f, varnames=("X", "Y")))
     self.assertEqual(const4, self.degrevlex.format(f, varnames=("X", "Y")))
コード例 #10
0
 def testFormatHomogeneousTwoVars(self):
     """
     format works for homogeneous polynomials.
     """
     f = multivar.BasicPolynomial({(0, 2): 4, (1, 1): 1, (2, 0): 3})
     qf = "4 * Y ** 2 + X * Y + 3 * X ** 2"
     self.assertEqual(qf, self.lex.format(f, varnames=("X", "Y")))
     self.assertEqual(qf, self.deglex.format(f, varnames=("X", "Y")))
     self.assertEqual(qf, self.degrevlex.format(f, varnames=("X", "Y")))
     qfr = "3 * X ** 2 + X * Y + 4 * Y ** 2"
     self.assertEqual(qfr,
                      self.lex.format(f, varnames=("X", "Y"), reverse=True))
コード例 #11
0
 def testSquare(self):
     """
     squaring
     """
     hsquare = multivar.BasicPolynomial({(2, 2, 2): 1})
     self.assertEqual(hsquare, self.h**2)
     self.assertEqual(hsquare, self.h.square())
     ssquare = multivar.BasicPolynomial({
         (2, 2, 2): 1,
         (2, 3, 4): 8,
         (2, 4, 6): 16
     })
     self.assertEqual(ssquare, (self.f + self.h)**2)
     self.assertEqual(ssquare, (self.f + self.h).square())
     qsquare = multivar.BasicPolynomial({
         (4, 4, 4): 1,
         (4, 5, 6): 16,
         (4, 6, 8): 96,
         (4, 7, 10): 256,
         (4, 8, 12): 256
     })
     self.assertEqual(qsquare, (self.f + self.h)**4)
     self.assertEqual(qsquare, ssquare**2)
     self.assertEqual(qsquare, ssquare.square())
コード例 #12
0
 def testFormatInhomogeneous(self):
     """
     format works for inhomogeneous polynomials.
     """
     f = multivar.BasicPolynomial({
         (1, 1, 2): 2,
         (1, 2, 0): 1,
         (2, 0, 1): 3
     })
     fl = "2 * X * Y * Z ** 2 + X * Y ** 2 + 3 * X ** 2 * Z"
     self.assertEqual(fl, self.lex.format(f, varnames=("X", "Y", "Z")))
     fdl = "X * Y ** 2 + 3 * X ** 2 * Z + 2 * X * Y * Z ** 2"
     self.assertEqual(fdl, self.deglex.format(f, varnames=("X", "Y", "Z")))
     flr = "3 * X ** 2 * Z + X * Y ** 2 + 2 * X * Y * Z ** 2"
     self.assertEqual(
         flr, self.lex.format(f, varnames=("X", "Y", "Z"), reverse=True))
     self.assertEqual(flr, self.degrevlex.format(f,
                                                 varnames=("X", "Y", "Z")))
コード例 #13
0
 def testFormatHomogeneous(self):
     """
     format works for homogeneous polynomials.
     """
     f = multivar.BasicPolynomial({
         (1, 0, 2): 4,
         (0, 2, 1): 1,
         (2, 1, 0): 3
     })
     fl = "Y ** 2 * Z + 4 * X * Z ** 2 + 3 * X ** 2 * Y"
     self.assertEqual(fl, self.lex.format(f, varnames=("X", "Y", "Z")))
     self.assertEqual(fl, self.deglex.format(f, varnames=("X", "Y", "Z")))
     flr = "3 * X ** 2 * Y + 4 * X * Z ** 2 + Y ** 2 * Z"
     self.assertEqual(
         flr, self.lex.format(f, varnames=("X", "Y", "Z"), reverse=True))
     frl = "4 * X * Z ** 2 + Y ** 2 * Z + 3 * X ** 2 * Y"
     self.assertEqual(frl, self.degrevlex.format(f,
                                                 varnames=("X", "Y", "Z")))
コード例 #14
0
 def testEraseVariable(self):
     fxy = multivar.BasicPolynomial({(1, 2): 4})
     fxz = multivar.BasicPolynomial({(1, 3): 4})
     fyz = multivar.BasicPolynomial({(2, 3): 4})
     self.assertEqual(fxy, self.f.erase_variable(2))
     self.assertEqual(fxz, self.f.erase_variable(1))
     self.assertEqual(fyz, self.f.erase_variable(0))
     self.assertEqual(fyz, self.f.erase_variable())  # default
     p = multivar.BasicPolynomial({(1, 0): 1, (2, 0): 2, (1, 1): -2})
     q = multivar.BasicPolynomial({(0, ): 3, (1, ): -2})
     self.assertEqual(q, p.erase_variable())
     r = multivar.BasicPolynomial({(): 1})
     self.assertEqual(r, p.erase_variable().erase_variable())
コード例 #15
0
 def testNeg(self):
     """
     unary -
     """
     neg = multivar.BasicPolynomial({(1, 2, 3): -4})
     self.assertEqual(neg, -self.f)