K i^dZddlmZddlmZddlmZmZddlm Z e GddeeZ y) z0Implementation of :class:`FractionField` class. )CompositeDomain)Field)CoercionFailedGeneratorsError)publicceZdZdZdxZZdZdZd$dZdZ dZ e dZ e dZ e d Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(y)% FractionFieldz@A class for representing multivariate rational function fields. TNc$ddlm}t||r|||}n ||||}||_|j|_|j |_|j |_|j|_|j|_|j|_ y)Nr) FracField) sympy.polys.fieldsr isinstancefielddtypegensngenssymbolsdomaindom)selfdomain_or_fieldrorderr rs g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/polys/domains/fractionfield.py__init__zFractionField.__init__su0 oy 1go%-#Eg>E [[ JJ [[ }} ll ;;c8|jj|SN)r field_newrelements rnewzFractionField.new%szz##G,,rc8|jj|S)z%Check if ``a`` is of type ``dtype``. )r is_elementrs rof_typezFractionField.of_type(szz$$W--rc.|jjSr)rzerors rr%zFractionField.zero,szzrc.|jjSr)roner&s rr(zFractionField.one0szz~~rc.|jjSr)rrr&s rrzFractionField.order4szzrct|jdzdjtt|jzdzS)N(,))strrjoinmaprr&s r__str__zFractionField.__str__8s44;;#%S$,,1G(HH3NNrct|jj|j|j|j fSr)hash __class____name__rrrr&s r__hash__zFractionField.__hash__;s,T^^,,djj$++t||TUUrc`t|tstS|j|jk(S)z0Returns ``True`` if two domains are equivalent. )r r NotImplementedr)rothers r__eq__zFractionField.__eq__>s%%/! !zzU[[((rc"|jS)z!Convert ``a`` to a SymPy object. )as_exprras rto_sympyzFractionField.to_sympyDsyy{rc8|jj|S)z)Convert SymPy's expression to ``dtype``. )r from_exprr=s r from_sympyzFractionField.from_sympyHszz##A&&rcF||jj||Sz.Convert a Python ``int`` object to ``dtype``. rconvertK1r>K0s rfrom_ZZzFractionField.from_ZZL"))##Ar*++rcF||jj||SrDrErGs rfrom_ZZ_pythonzFractionField.from_ZZ_pythonPrKrc|j}|j}|jr=|||j|||||j ||z S||||Sz3Convert a Python ``Fraction`` object to ``dtype``. )r convert_fromis_ZZnumerdenom)rHr>rIrconvs rfrom_QQzFractionField.from_QQTs`ii 99d288A;+,r$rxx{B2G/HH Hd1bk? "rcF||jj||SrOrErGs rfrom_QQ_pythonzFractionField.from_QQ_python]rKrcF||jj||S)z,Convert a GMPY ``mpz`` object to ``dtype``. rErGs r from_ZZ_gmpyzFractionField.from_ZZ_gmpyarKrcF||jj||S)z,Convert a GMPY ``mpq`` object to ``dtype``. rErGs r from_QQ_gmpyzFractionField.from_QQ_gmpyerKrcF||jj||S)z4Convert a ``GaussianRational`` object to ``dtype``. rErGs rfrom_GaussianRationalFieldz(FractionField.from_GaussianRationalFieldirKrcF||jj||S)z3Convert a ``GaussianInteger`` object to ``dtype``. rErGs rfrom_GaussianIntegerRingz&FractionField.from_GaussianIntegerRingmrKrcF||jj||Sz.Convert a mpmath ``mpf`` object to ``dtype``. rErGs rfrom_RealFieldzFractionField.from_RealFieldqrKrcF||jj||SrarErGs rfrom_ComplexFieldzFractionField.from_ComplexFieldurKrc|j|k7r|jj||}||j|Sy)z*Convert an algebraic number to ``dtype``. N)rrPr rGs rfrom_AlgebraicFieldz!FractionField.from_AlgebraicFieldys; 99? &&q"-A =66!9  rcT|jr+|j|jd|jS |j |j |j jS#ttf$r+ |j |cYS#ttf$rYYywxYwwxYw)z#Convert a polynomial to ``dtype``. N) is_groundrPcoeffrr set_ringrringrrrGs rfrom_PolynomialRingz!FractionField.from_PolynomialRings ;;??1771:ryy9 9 66!**RXX]]34 40   vvay "O4   s/3A--B'=B B'B#B'"B##B'cd |j|jS#ttf$rYywxYw)z*Convert a rational function to ``dtype``. N) set_fieldrrrrGs rfrom_FractionFieldz FractionField.from_FractionFields1 ;;rxx( (0  s //cR|jjjS)z*Returns a field associated with ``self``. )rto_ring to_domainr&s rget_ringzFractionField.get_ringszz!!#--//rc`|jj|jjS)z'Returns True if ``LC(a)`` is positive. )r is_positiverRLCr=s rrvzFractionField.is_positive{{&&qwwzz22rc`|jj|jjS)z'Returns True if ``LC(a)`` is negative. )r is_negativerRrwr=s rrzzFractionField.is_negativerxrc`|jj|jjS)z+Returns True if ``LC(a)`` is non-positive. )ris_nonpositiverRrwr=s rr|zFractionField.is_nonpositive{{))!''**55rc`|jj|jjS)z+Returns True if ``LC(a)`` is non-negative. )ris_nonnegativerRrwr=s rrzFractionField.is_nonnegativer}rc|jS)zReturns numerator of ``a``. )rRr=s rrRzFractionField.numer wwrc|jS)zReturns denominator of ``a``. )rSr=s rrSzFractionField.denomrrcV|j|jj|S)zReturns factorial of ``a``. )rr factorialr=s rrzFractionField.factorials zz$++//233r)NN))r5 __module__ __qualname____doc__is_FractionFieldis_Frachas_assoc_Ringhas_assoc_Fieldrr r#propertyr%r(rr1r6r:r?rBrJrMrUrWrYr[r]r_rbrdrfrmrprtrvrzr|rrRrSrrrr r sJ!%%wNO&-.  OV) ',,#,,,,,,, 033664rr N) r#sympy.polys.domains.compositedomainrsympy.polys.domains.fieldrsympy.polys.polyerrorsrrsympy.utilitiesrr rrrrs56@+B"k4E?k4k4r