Skip to content

Commit

Permalink
polys: remove FracField, make FractionField domain
Browse files Browse the repository at this point in the history
Partial fix for sympy/sympy#14220
  • Loading branch information
skirpichev committed Mar 5, 2018
1 parent 51b6759 commit 3b05245
Show file tree
Hide file tree
Showing 19 changed files with 150 additions and 215 deletions.
2 changes: 0 additions & 2 deletions diofant/domains/__init__.py
Expand Up @@ -14,7 +14,6 @@
from . import gmpyrationalfield # noqa: F401
from . import algebraicfield # noqa: F401
from . import polynomialring # noqa: F401
from . import fractionfield # noqa: F401
from . import expressiondomain # noqa: F401

from .domain import Domain # noqa: F401
Expand All @@ -31,7 +30,6 @@
from .gmpyrationalfield import GMPYRationalField
from .algebraicfield import AlgebraicField # noqa: F401
from .polynomialring import PolynomialRing # noqa: F401
from .fractionfield import FractionField # noqa: F401
from .expressiondomain import ExpressionDomain
from .groundtypes import PythonRational # noqa: F401

Expand Down
2 changes: 1 addition & 1 deletion diofant/domains/domain.py
Expand Up @@ -277,7 +277,7 @@ def poly_ring(self, *symbols, **kwargs):

def frac_field(self, *symbols, **kwargs):
"""Returns a fraction field, i.e. `K(X)`. """
from .fractionfield import FractionField
from ..polys.fields import FractionField
return FractionField(self, symbols, kwargs.get("order", lex))

def is_one(self, a):
Expand Down
132 changes: 0 additions & 132 deletions diofant/domains/fractionfield.py

This file was deleted.

4 changes: 2 additions & 2 deletions diofant/domains/polynomialring.py
Expand Up @@ -102,11 +102,11 @@ def from_FractionField(self, a, K0):
denom = K0.denom(a)

if denom.is_ground:
return self.from_PolynomialRing(K0.numer(a)/denom, K0.field.ring.to_domain())
return self.from_PolynomialRing(K0.numer(a)/denom, K0.ring.to_domain())

def get_field(self):
"""Returns a field associated with `self`. """
return self.ring.to_field().to_domain()
return self.ring.to_field()

def is_positive(self, a):
"""Returns True if `LC(a)` is positive. """
Expand Down
20 changes: 10 additions & 10 deletions diofant/domains/tests/test_domains.py
Expand Up @@ -685,9 +685,9 @@ def test_PolynomialRing_from_FractionField():
g = (x**2 + y**2)/4
h = x**2 + y**2

assert R.to_domain().from_FractionField(f, F.to_domain()) is None
assert R.to_domain().from_FractionField(g, F.to_domain()) == X**2/4 + Y**2/4
assert R.to_domain().from_FractionField(h, F.to_domain()) == X**2 + Y**2
assert R.to_domain().from_FractionField(f, F) is None
assert R.to_domain().from_FractionField(g, F) == X**2/4 + Y**2/4
assert R.to_domain().from_FractionField(h, F) == X**2 + Y**2

F, x, y = field("x,y", QQ)
R, X, Y = ring("x,y", QQ)
Expand All @@ -696,9 +696,9 @@ def test_PolynomialRing_from_FractionField():
g = (x**2 + y**2)/4
h = x**2 + y**2

assert R.to_domain().from_FractionField(f, F.to_domain()) is None
assert R.to_domain().from_FractionField(g, F.to_domain()) == X**2/4 + Y**2/4
assert R.to_domain().from_FractionField(h, F.to_domain()) == X**2 + Y**2
assert R.to_domain().from_FractionField(f, F) is None
assert R.to_domain().from_FractionField(g, F) == X**2/4 + Y**2/4
assert R.to_domain().from_FractionField(h, F) == X**2 + Y**2


def test_FractionField_from_PolynomialRing():
Expand All @@ -708,17 +708,17 @@ def test_FractionField_from_PolynomialRing():
f = 3*x**2 + 5*y**2
g = x**2/3 + y**2/5

assert F.to_domain().from_PolynomialRing(f, R.to_domain()) == 3*X**2 + 5*Y**2
assert F.to_domain().from_PolynomialRing(g, R.to_domain()) == (5*X**2 + 3*Y**2)/15
assert F.from_PolynomialRing(f, R.to_domain()) == 3*X**2 + 5*Y**2
assert F.from_PolynomialRing(g, R.to_domain()) == (5*X**2 + 3*Y**2)/15

RALG, u, v = ring("u,v", ALG)
pytest.raises(CoercionFailed,
lambda: F.to_domain().convert(3*u**2 + 5*sqrt(2)*v**2))
lambda: F.convert(3*u**2 + 5*sqrt(2)*v**2))


def test_FractionField_convert():
F, X, Y = field("x,y", QQ)
F.to_domain().convert(QQ_python()(1, 3)) == F.one/3
F.convert(QQ_python()(1, 3)) == F.one/3


def test_FF_of_type():
Expand Down
2 changes: 1 addition & 1 deletion diofant/polys/__init__.py
Expand Up @@ -42,4 +42,4 @@
from .partfrac import apart, apart_list, assemble_partfrac_list # noqa: F401
from .polyoptions import Options # noqa: F401
from .rings import ring, sring, vring # noqa: F401,F403
from .fields import field, sfield, vfield # noqa: F401
from .fields import FractionField, field, vfield # noqa: F401

0 comments on commit 3b05245

Please sign in to comment.