def test_constant_equality(self): """Test that Constant(1) is equal to other instances of 1.""" to_test = [Polynomial(1), Monomial(1, 0), Constant(1), 1] for val in to_test: self.assertEqual(Constant(1), val)
def test_calculate_zero_polynomial(self): """Test that calculations of zero polynomial values always give 0.""" self.assertEqual(0, ZeroPolynomial().calculate(1)) self.assertEqual(0, Constant(0).calculate(5)) self.assertEqual(0, Monomial(0, 1).calculate(1.1))
def test_monomial_vector(self): """Test _vector for Monomials.""" m = Monomial(6, 5) self.assertEqual([0, 0, 0, 0, 0, 6], m._vector) m._vector = [0, 0, 0, 0] self.assertEqual(0, m.coefficient)
def test_monomial_set_degree(self): """Test setting Monomial degree""" m = Monomial(6, 5) self.assertEqual(5, m.degree) m.degree = 4 self.assertEqual(4, m.degree)
def get_cycle_index_sym(n: int) -> Polynomial: """ Compute the cycle index of S_n, i.e. the symmetry group of n symbols. """ if n < 0: raise ValueError("n should be a non-negative integer.") memo = { 0: Polynomial([Monomial({}, Fraction(1, 1))]), 1: Polynomial([Monomial({1: 1}, Fraction(1, 1))]), 2: Polynomial([ Monomial({1: 2}, Fraction(1, 2)), Monomial({2: 1}, Fraction(1, 2)) ]), 3: Polynomial([ Monomial({1: 3}, Fraction(1, 6)), Monomial({ 1: 1, 2: 1 }, Fraction(1, 2)), Monomial({3: 1}, Fraction(1, 3)), ]), 4: Polynomial([ Monomial({1: 4}, Fraction(1, 24)), Monomial({ 2: 1, 1: 2 }, Fraction(1, 4)), Monomial({ 3: 1, 1: 1 }, Fraction(1, 3)), Monomial({2: 2}, Fraction(1, 8)), Monomial({4: 1}, Fraction(1, 4)), ]), } result = cycle_index_sym_helper(n, memo) return result