def test_to_expression(self): m = sym.Monomial(x, 3) * y # m = x³y e = m.ToExpression() self.assertEqual(str(e), "(pow(x, 3) * y)")
def test_get_variables(self): m = sym.Monomial(x, 3) * y # m = x³y vars = m.GetVariables() # = [x, y] self.assertEqual(vars.size(), 2)
def test_constructor_vars_exponents(self): m = sym.Monomial([x, y], [1, 2]) powers_out = EqualToDict(m.get_powers()) self.assertEqual(powers_out[x], 1) self.assertEqual(powers_out[y], 2)
def test_get_powers(self): m = sym.Monomial(x, 2) * y # m = x²y powers = m.get_powers() self.assertEqual(powers[x], 2) self.assertEqual(powers[y], 1)
def test_str(self): m1 = sym.Monomial(x, 2) self.assertEqual(str(m1), "x^2") m2 = m1 * sym.Monomial(y) self.assertEqual(str(m2), "x^2 * y")
def test_multiplication1(self): m1 = sym.Monomial(x, 2) m2 = sym.Monomial(y, 3) m3 = m1 * m2 self.assertEqual(m3.degree(x), 2) self.assertEqual(m3.degree(y), 3)
def test_evaluate(self): m = sym.Monomial(x, 3) * sym.Monomial(y) # m = x³y env = {x: 2.0, y: 3.0} self.assertEqual(m.Evaluate(env), env[x]**3 * env[y])
def test_constructor_variable_int(self): m = sym.Monomial(x, 2) # m = x² self.assertEqual(m.degree(x), 2) self.assertEqual(m.total_degree(), 2)
def test_add_product(self): p = sym.Polynomial() m = sym.Monomial(x) p.AddProduct(sym.Expression(3), m) # p += 3 * x numpy_compare.assert_equal(p.ToExpression(), 3 * x)
def test_get_powers(self): m = sym.Monomial(x, 2) * sym.Monomial(y) # m = x²y powers = EqualToDict(m.get_powers()) self.assertEqual(powers[x], 2) self.assertEqual(powers[y], 1)
def test_monomial_to_coefficient_map(self): m = sym.Monomial(x, 2) e = a * (x**2) p = sym.Polynomial(e, [x]) the_map = p.monomial_to_coefficient_map() numpy_compare.assert_equal(the_map[m], a)
def test_to_expression(self): m = sym.Monomial(x, 3) * sym.Monomial(y) # m = x³y e = m.ToExpression() numpy_compare.assert_equal(e, "(pow(x, 3) * y)")
def test_str(self): m1 = sym.Monomial(x, 2) numpy_compare.assert_equal(m1, "x^2") m2 = m1 * sym.Monomial(y) numpy_compare.assert_equal(m2, "x^2 * y")
def test_pow(self): m1 = sym.Monomial(x, 2) * y # m1 = x²y m2 = m1**2 # m2 = x⁴y² self.assertEqual(m2.degree(x), 4) self.assertEqual(m2.degree(y), 2)
def test_evaluate_exception_np_nan(self): m = sym.Monomial(x, 3) env = {x: np.nan} with self.assertRaises(RuntimeError): m.Evaluate(env)
def test_constructor_variable(self): m = sym.Monomial(x) # m = x¹ self.assertEqual(m.degree(x), 1) self.assertEqual(m.total_degree(), 1)
def test_evaluate_exception_python_nan(self): m = sym.Monomial(x, 3) env = {x: float('nan')} with self.assertRaises(RuntimeError): m.Evaluate(env)
def test_equalto(self): m1 = sym.Monomial(x, 2) m2 = sym.Monomial(x, 1) m3 = sym.Monomial(x, 2) self.assertTrue(m1.EqualTo(m3)) self.assertFalse(m1.EqualTo(m2))
def test_monomial_to_coefficient_map(self): m = sym.Monomial(x, 2) e = a * (x**2) p = sym.Polynomial(e, [x]) the_map = p.monomial_to_coefficient_map() self.assertEqualStructure(the_map[m], a)
def test_repr(self): m = sym.Monomial(x, 2) self.assertEqual(repr(m), '<Monomial "x^2">')
def test_add_product(self): p = sym.Polynomial() m = sym.Monomial(x) p.AddProduct(sym.Expression(3), m) # p += 3 * x self.assertEqualStructure(p.ToExpression(), 3 * x)
def test_multiplication_assignment2(self): m = sym.Monomial(x, 2) m *= sym.Monomial(y) self.assertEqual(m.degree(x), 2) self.assertEqual(m.degree(y), 1)
def test_constructor_maptype(self): m = {sym.Monomial(x): sym.Expression(3), sym.Monomial(y): sym.Expression(2)} # 3x + 2y p = sym.Polynomial(m) expected = 3 * x + 2 * y numpy_compare.assert_equal(p.ToExpression(), expected)