You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
3.3 KiB
91 lines
3.3 KiB
import pycarl
|
|
from configurations import PackageSelector
|
|
|
|
|
|
class TestPolynomial(PackageSelector):
|
|
def test_init(self, package):
|
|
pycarl.clear_pools()
|
|
var = pycarl.Variable("x")
|
|
pol = package.Polynomial(var)
|
|
assert str(pol) == "x"
|
|
|
|
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_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_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_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_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_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_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
|