def test_eq(self): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.variable_with_name("x") assert var1 == var2 var3 = pycarl.Variable("y") assert var1 != var3
def test_convert_polynomial(self): pycarl.clear_pools() var1 = pycarl.Variable("n") var2 = pycarl.Variable("o") original = pycarl.gmp.Polynomial( 5) * var2 * var1 + var2 * var2 + pycarl.gmp.Integer(3) assert isinstance(original, pycarl.gmp.Polynomial) converted = pycarl.convert.convert_to_gmp(original) assert isinstance(converted, pycarl.gmp.Polynomial)
def test_convert_polynomial(self, package, convert_package, converter): pycarl.clear_pools() var1 = pycarl.Variable("n") var2 = pycarl.Variable("o") original = package.Polynomial( 4) * var1 * var2 + var1 * var1 + package.Integer(2) assert isinstance(original, package.Polynomial) converted = converter.convert_polynomial(original) assert isinstance(converted, convert_package.Polynomial)
def test_convert_rational_function(self): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol1 = var1 * var2 + pycarl.gmp.Integer(42) pol2 = var1 + pycarl.gmp.Integer(-1) original = pycarl.gmp.RationalFunction(pol1, pol2) assert isinstance(original, pycarl.gmp.RationalFunction) converted = pycarl.convert.convert_to_gmp(original) assert isinstance(converted, pycarl.gmp.RationalFunction)
def test_multiplication(self, package): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol1 = var1 * var1 + package.Integer(2) pol2 = var2 + package.Integer(1) res = pol1 * pol2 assert isinstance(res, package.Polynomial) polOrig = package.Polynomial(var1 * var1 * var2) + var1 * var1 + package.Integer(2) * var2 + 2 assert res == polOrig
def test_pickle(self): pycarl.clear_pools() var1 = pycarl.Variable("x") ser = pickle.dumps(var1) var2 = pickle.loads(ser) assert var1 == var2 var3 = pycarl.Variable("y") ser = pickle.dumps(var3) var4 = pickle.loads(ser) assert var3 == var4 assert var4 != var2
def test_substitute(self, package): pycarl.clear_pools() x = pycarl.Variable("x") y = pycarl.Variable("y") pol1 = package.Polynomial(1) - x sub = {x: -package.Polynomial(y) + 1} assert pol1.substitute(sub) == package.Polynomial(y) z = pycarl.Variable("z") sub2 = {z: package.Polynomial(3)} assert pol1.substitute(sub2) == pol1
def test_division(self, package): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol1 = package.Polynomial(var1 * var1 * var2) + package.Integer(2) * var2 pol2 = package.Integer(3) * var2 res = pol1 / pol2 assert isinstance(res, package.RationalFunction) polOrig = package.Polynomial(var1 * var1) polOrig += package.Integer(2) assert res == package.RationalFunction(polOrig, package.Polynomial(3))
def test_convert_rational_function(self, package, convert_package, converter): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol1 = var1 * var1 + package.Integer(2) pol2 = var2 + package.Integer(1) original = package.RationalFunction(pol1, pol2) assert isinstance(original, package.RationalFunction) converted = converter.convert_rational_function(original) assert isinstance(converted, convert_package.RationalFunction)
def test_addition(self, package): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol1 = var1 * var1 + package.Integer(2) pol2 = var2 + package.Integer(1) res = pol1 + pol2 assert isinstance(res, package.Polynomial) polOrig = package.Polynomial(var1 * var1) polOrig += var2 + package.Integer(3) assert res == polOrig
def test_clear_cln(): pycarl.clear_pools() var = pycarl.Variable("i") pol = pycarl.cln.Polynomial(var) pycarl.clear_pools() var = pycarl.Variable("i") pol = pycarl.gmp.Polynomial(var) pycarl.clear_pools() var = pycarl.Variable("i") pol = pycarl.cln.Polynomial(var)
def test_clear(self, package): pycarl.clear_pools() var = pycarl.Variable("i") pol = package.Polynomial(var) pycarl.clear_pools() var = pycarl.Variable("i") pol = package.Polynomial(var) pycarl.clear_pools() var = pycarl.Variable("i") pol = package.Polynomial(var)
def test_multiplication(self, package): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol1 = var1 * var1 + package.Integer(2) pol2 = var2 + package.Integer(1) ratfunc1 = package.RationalFunction(pol1, pol2) ratfunc2 = package.RationalFunction(package.Polynomial(2), package.Polynomial(1)) res = ratfunc1 * ratfunc2 assert isinstance(res, package.RationalFunction) polOrig = package.Polynomial(2) * var1 * var1 + package.Integer(4) assert res == package.RationalFunction(polOrig, pol2)
def test_constant(self, package): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol = package.Polynomial(var1 * var1 * var2) + package.Integer(2) * var2 + package.Integer(4) assert pol.constant_part() == 4 pol = package.Polynomial(package.Rational(-8/3)) assert pol.is_constant() print(type(pol)) assert pol.constant_part() == package.Rational(-8/3) pol = package.Polynomial(1) assert pol.is_constant() print(type(pol)) assert pol.constant_part() == 1
def test_convert_factorized_polynomial(self): pycarl.clear_pools() var1 = pycarl.Variable("a") var2 = pycarl.Variable("b") pol1 = pycarl.gmp.create_factorized_polynomial( pycarl.gmp.Polynomial(4) * (var2 + pycarl.gmp.Integer(-2))) pol2 = pycarl.gmp.create_factorized_polynomial( pycarl.gmp.Polynomial(var1) - 3) pol3 = pycarl.gmp.create_factorized_polynomial( pycarl.gmp.Polynomial(2) * var2) original = pol1 * pol2 * pol3 assert isinstance(original, pycarl.gmp.FactorizedPolynomial) converted = pycarl.convert.convert_to_gmp(original) assert isinstance(converted, pycarl.gmp.FactorizedPolynomial) assert len(converted.factorization()) == len(original.factorization())
def test_division(self, package): pycarl.clear_pools() var1 = pycarl.Variable("x") var2 = pycarl.Variable("y") pol1 = var1 * var1 + package.Integer(2) pol2 = package.Polynomial(var2) ratfunc1 = package.RationalFunction(pol1, pol2) ratfunc2 = package.RationalFunction(package.Polynomial(3), pol2) res = ratfunc1 / ratfunc2 assert isinstance(res, package.RationalFunction) assert res == package.RationalFunction(pol1, package.Polynomial(3)) res = var1 / package.Rational("4/3") assert isinstance(res, package.RationalFunction) expected_res = package.Polynomial(package.Rational("3/4") * var1) assert res == expected_res
def test_convert_factorized_polynomial(self, package, convert_package, converter): pycarl.clear_pools() var1 = pycarl.Variable("a") var2 = pycarl.Variable("b") pol1 = package.create_factorized_polynomial( package.Polynomial(4) * (var2 + package.Integer(-2))) pol2 = package.create_factorized_polynomial( package.Polynomial(var2) - 2) pol3 = package.create_factorized_polynomial( package.Polynomial(2) * var1) original = pol1 * pol2 * pol3 assert isinstance(original, package.FactorizedPolynomial) converted = converter.convert_factorized_polynomial(original) assert isinstance(converted, convert_package.FactorizedPolynomial) assert len(converted.factorization()) == len(original.factorization())
def test_eq(self, package): pycarl.clear_pools() var = pycarl.Variable("x") term1 = package.Integer(4) * var term1 *= var term2 = package.Term(2, pycarl.create_monomial(var, 2)) assert term1 / 2 == term2
def test_init(self, package): pycarl.clear_pools() var = pycarl.Variable("x") num = package.Polynomial(2) * var * var + var denom = package.Polynomial(var) ratfunc = package.RationalFunction(num, denom) assert str(ratfunc) == "(2*x+1)/(1)"
def test_eq(self, package): pycarl.clear_pools() var = pycarl.Variable("x") pol1 = package.Integer(2) * var + package.Integer(3) * var * var assert not pol1 == package.Rational(1) pol2 = var + package.Integer(1) - var assert pol2 == package.Rational(1) assert pol2 == package.Integer(1)
def test_conjunction(self, package): pycarl.clear_pools() x = pycarl.Variable("x") y = pycarl.Variable("y") constraint1 = package.formula.Constraint(x, Relation.GREATER, package.Rational(3)) formula1 = package.formula.Formula(constraint1) constraint2 = package.formula.Constraint(y, Relation.EQ, package.Rational(2)) formula2 = package.formula.Formula(constraint2) and_formula = formula1 & formula2 assert and_formula.type == FormulaType.AND assert len(and_formula) == 2 subformulas = and_formula.get_subformulas() assert len(subformulas) == 2 assert str(subformulas[0]) == str(formula1) assert str(subformulas[1]) == str(formula2)
def test_multiplication(self, package): pycarl.clear_pools() var = pycarl.Variable("x") term1 = package.Integer(2) * var * var term2 = package.Integer(3) * var term3 = term1 * term2 termOrig = package.Term(6, var * var * var) assert term3 == termOrig
def test_negation(self, package): pycarl.clear_pools() x = pycarl.Variable("x") constraint = package.formula.Constraint(x, Relation.GREATER, package.Rational(3)) formula = package.formula.Formula(constraint) neg_formula = ~constraint assert neg_formula.type == FormulaType.CONSTRAINT assert str(~neg_formula) == str(formula)
def test_convert_term(self, package, convert_package, converter): pycarl.clear_pools() var = pycarl.Variable("n") rational = package.Integer(2) / package.Integer(5) monomial = pycarl.create_monomial(var, 2) original = package.Term(rational, monomial) assert isinstance(original, package.Term) converted = converter.convert_term(original) assert isinstance(converted, convert_package.Term)
def test_subtraction(self, package): pycarl.clear_pools() var1 = pycarl.Variable("x") pol1 = package.Polynomial(5) * var1 * var1 + 2 pol2 = package.Polynomial(var1 * var1) + 1 res = pol1 - pol2 assert isinstance(res, package.Polynomial) polOrig = package.Polynomial(4) * var1 * var1 + 1 assert res == polOrig
def test_convert_term(self): pycarl.clear_pools() var = pycarl.Variable("n") rational = pycarl.gmp.Integer(-1) / pycarl.gmp.Integer(6) monomial = pycarl.create_monomial(var, 3) original = pycarl.gmp.Term(rational, monomial) assert isinstance(original, pycarl.gmp.Term) converted = pycarl.convert.convert_to_gmp(original) assert isinstance(converted, pycarl.gmp.Term)
def test_init(self, package): pycarl.clear_pools() var = pycarl.Variable("x") rational = package.Rational(0.25) monomial = pycarl.create_monomial(var, 1) term = package.Term(rational, monomial) assert term.coeff == package.Rational(0.25) assert term.monomial == monomial assert str(term) == "1/4*x" assert term.tdeg == 1
def test_convert_constraint(self, package, convert_package, converter): pycarl.clear_pools() var1 = pycarl.Variable("a") pol1 = package.Polynomial(2) * var1 * var1 + var1 + package.Integer(4) original = package.formula.Constraint(pol1, pycarl.formula.Relation.GREATER) assert isinstance(original, package.formula.Constraint) converted = converter.convert_constraint(original) assert isinstance(converted, convert_package.formula.Constraint) assert converted.relation == original.relation
def test_convert_factorized_rational_function(self): pycarl.clear_pools() var1 = pycarl.Variable("a") var2 = pycarl.Variable("b") pol1 = pycarl.gmp.create_factorized_polynomial( pycarl.gmp.Polynomial(55) * (var1 + pycarl.gmp.Integer(20))) pol2 = pycarl.gmp.create_factorized_polynomial( pycarl.gmp.Polynomial(var2) - 2) pol3 = pycarl.gmp.create_factorized_polynomial( pycarl.gmp.Polynomial(562) * var2) original = pycarl.gmp.FactorizedRationalFunction( pol1 * pol2, pol2 * pol3) assert isinstance(original, pycarl.gmp.FactorizedRationalFunction) converted = pycarl.convert.convert_to_gmp(original) assert isinstance(converted, pycarl.gmp.FactorizedRationalFunction) assert len(converted.numerator.factorization()) == len( original.numerator.factorization()) assert len(converted.denominator.factorization()) == len( original.denominator.factorization())
def test_convert_constraint(self): pycarl.clear_pools() var1 = pycarl.Variable("a") pol1 = pycarl.gmp.Polynomial( 2) * var1 * var1 + var1 + pycarl.gmp.Integer(4) original = pycarl.gmp.formula.Constraint( pol1, pycarl.formula.Relation.GREATER) assert isinstance(original, pycarl.gmp.formula.Constraint) converted = pycarl.convert.convert_to_gmp(original) assert isinstance(converted, pycarl.gmp.formula.Constraint) assert converted.relation == original.relation