Llama-3.1-8B-DALv0.1
/
venv
/lib
/python3.12
/site-packages
/sympy
/polys
/domains
/tests
/test_quotientring.py
"""Tests for quotient rings.""" | |
from sympy.polys.domains.integerring import ZZ | |
from sympy.polys.domains.rationalfield import QQ | |
from sympy.abc import x, y | |
from sympy.polys.polyerrors import NotReversible | |
from sympy.testing.pytest import raises | |
def test_QuotientRingElement(): | |
R = QQ.old_poly_ring(x)/[x**10] | |
X = R.convert(x) | |
assert X*(X + 1) == R.convert(x**2 + x) | |
assert X*x == R.convert(x**2) | |
assert x*X == R.convert(x**2) | |
assert X + x == R.convert(2*x) | |
assert x + X == 2*X | |
assert X**2 == R.convert(x**2) | |
assert 1/(1 - X) == R.convert(sum(x**i for i in range(10))) | |
assert X**10 == R.zero | |
assert X != x | |
raises(NotReversible, lambda: 1/X) | |
def test_QuotientRing(): | |
I = QQ.old_poly_ring(x).ideal(x**2 + 1) | |
R = QQ.old_poly_ring(x)/I | |
assert R == QQ.old_poly_ring(x)/[x**2 + 1] | |
assert R == QQ.old_poly_ring(x)/QQ.old_poly_ring(x).ideal(x**2 + 1) | |
assert R != QQ.old_poly_ring(x) | |
assert R.convert(1)/x == -x + I | |
assert -1 + I == x**2 + I | |
assert R.convert(ZZ(1), ZZ) == 1 + I | |
assert R.convert(R.convert(x), R) == R.convert(x) | |
X = R.convert(x) | |
Y = QQ.old_poly_ring(x).convert(x) | |
assert -1 + I == X**2 + I | |
assert -1 + I == Y**2 + I | |
assert R.to_sympy(X) == x | |
raises(ValueError, lambda: QQ.old_poly_ring(x)/QQ.old_poly_ring(x, y).ideal(x)) | |
R = QQ.old_poly_ring(x, order="ilex") | |
I = R.ideal(x) | |
assert R.convert(1) + I == (R/I).convert(1) | |