K iRzdZddlmZddlmZddlmZddlmZddl m Z m Z m Z ddl mZeGdd eeZy ) z0Implementation of :class:`FractionField` class. )Field)CompositeDomain)DMF)GeneratorsNeeded)dict_from_basicbasic_from_dict _dict_reorder)publicceZdZdZeZdxZZdZdZ dZ dZ dZ dZ dZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#y) FractionFieldz3A class for representing rational function fields. Tc|s tdt|dz }t||_|jj |||_|jj |||_|x|_|_|x|_|_ y)Nzgenerators not specified) rlenngensdtypezeroonedomaindomsymbolsgens)selfrrlevs k/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/polys/domains/old_fractionfield.py__init__zFractionField.__init__sq"#=> >$i!mY JJOOC- ::>>#s+!$$ dh#'' tyc<|j|g|jS)z-Make a new fraction field with given domain. ) __class__r)rrs r set_domainzFractionField.set_domain"st~~c.DII..rch|j||jt|jdz S)Nr)rrrr)relements rnewzFractionField.new&s&zz'488S^a-?@@rct|jdzdjtt|jzdzS)N(,))strrjoinmaprrs r__str__zFractionField.__str__)s3488}s"SXXc#tyy.A%BBSHHrct|jj|j|j|j fS)N)hashr__name__rrrr*s r__hash__zFractionField.__hash__,s,T^^,,djj$((DIINOOrct|txrO|j|jk(xr4|j|jk(xr|j|jk(S)z0Returns ``True`` if two domains are equivalent. ) isinstancer rrr)rothers r__eq__zFractionField.__eq__/sW%/\ JJ%++ %\*.((eii*?\DHIIQVQ[Q[D[ \rct|jjg|jt|j jg|jz S)z!Convert ``a`` to a SymPy object. )rnumer to_sympy_dictrdenomras rto_sympyzFractionField.to_sympy4sN 7 7 9FDIIF 7 7 9FDIIFG Hrc|j\}}t||j\}}t||j\}}|jD]#\}}|jj |||<%|jD]#\}}|jj |||<%|||fj S)z)Convert SymPy's expression to ``dtype``. )r)as_numer_denomrritemsr from_sympycancel) rr9pqnum_denkvs rr>zFractionField.from_sympy9s!1 3Q 3QIIK ,DAqXX((+CF ,IIK ,DAqXX((+CF ,S#J&&((rcF||jj||Sz.Convert a Python ``int`` object to ``dtype``. rconvertK1r9K0s rfrom_ZZzFractionField.from_ZZH"&&..B'((rcF||jj||SrHrIrKs rfrom_ZZ_pythonzFractionField.from_ZZ_pythonLrOrcF||jj||S)z3Convert a Python ``Fraction`` object to ``dtype``. rIrKs rfrom_QQ_pythonzFractionField.from_QQ_pythonPrOrcF||jj||S)z,Convert a GMPY ``mpz`` object to ``dtype``. rIrKs r from_ZZ_gmpyzFractionField.from_ZZ_gmpyTrOrcF||jj||S)z,Convert a GMPY ``mpq`` object to ``dtype``. rIrKs r from_QQ_gmpyzFractionField.from_QQ_gmpyXrOrcF||jj||S)z.Convert a mpmath ``mpf`` object to ``dtype``. rIrKs rfrom_RealFieldzFractionField.from_RealField\rOrc,|j|jk(r^|j|jk(r||jS||j|jjSt |j |j|j\}}|j|jk7r3|Dcgc](}|jj||j*}}|t t||Scc}w)z'Convert a ``DMF`` object to ``dtype``. )rrto_listrJr to_dictdictzip)rLr9rMmonomscoeffscs rfrom_GlobalPolynomialRingz'FractionField.from_GlobalPolynomialRing`s 77bgg vv!))+&!))BFF+33566*199;INFFvv>DF266>>!RVV4FFd3vv./0 0Gs-Dc $|j|jk(r|j|jk(r|S||jj|jj |j j|jj fSt |jj|jr/t|jj|j|j\}}t|j j|j|j\}}|j|jk7rf|Dcgc](}|jj||j*}}|Dcgc](}|jj||j*}}|tt||tt||fSycc}wcc}w)a Convert a fraction field element to another fraction field. Examples ======== >>> from sympy.polys.polyclasses import DMF >>> from sympy.polys.domains import ZZ, QQ >>> from sympy.abc import x >>> f = DMF(([ZZ(1), ZZ(2)], [ZZ(1), ZZ(1)]), ZZ) >>> QQx = QQ.old_frac_field(x) >>> ZZx = ZZ.old_frac_field(x) >>> QQx.from_FractionField(f, ZZx) DMF([1, 2], [1, 1], QQ) N) rrr5rJr[r7setissubsetr r\r]r^)rLr9rMnmonomsncoeffsdmonomsdcoeffsras rfrom_FractionFieldz FractionField.from_FractionFieldos( 77bgg vv1779,,RVV4<<>779,,RVV4<<>@AA \ " "277 +, !!#RWWbgg 7 GW, !!#RWWbgg 7 GWvv?FH!BFFNN1bff5HH?FH!BFFNN1bff5HHtC12DWg9N4OPQ Q,IHs 5-H(-H cHddlm}||jg|jS)z)Returns a ring associated with ``self``. r)PolynomialRing)sympy.polys.domainsrlrr)rrls rget_ringzFractionField.get_rings6dhh333rctd)z(Returns a polynomial ring, i.e. `K[X]`. nested domains not allowedNotImplementedErrorrrs r poly_ringzFractionField.poly_ring!">??rctd)z'Returns a fraction field, i.e. `K(X)`. rprqrss r frac_fieldzFractionField.frac_fieldrurcp|jj|jjS)z#Returns True if ``a`` is positive. )r is_positiver5LCr8s rryzFractionField.is_positive#xx##AGGILLN33rcp|jj|jjS)z#Returns True if ``a`` is negative. )r is_negativer5rzr8s rr}zFractionField.is_negativer{rcp|jj|jjS)z'Returns True if ``a`` is non-positive. )ris_nonpositiver5rzr8s rrzFractionField.is_nonpositive#xx&&qwwy||~66rcp|jj|jjS)z'Returns True if ``a`` is non-negative. )ris_nonnegativer5rzr8s rrzFractionField.is_nonnegativerrc"|jS)zReturns numerator of ``a``. )r5r8s rr5zFractionField.numerwwyrc"|jS)zReturns denominator of ``a``. )r7r8s rr7zFractionField.denomrrcV|j|jj|S)zReturns factorial of ``a``. )rr factorialr8s rrzFractionField.factorials zz$((,,Q/00rN)$r. __module__ __qualname____doc__rris_FractionFieldis_Frachas_assoc_Ringhas_assoc_Fieldrrr"r+r/r3r:r>rNrQrSrUrWrYrbrjrnrtrwryr}rrr5r7rrrr r s= E!%%wNO (/AIP\ H ))))))) 1$RL4 @@44771rr N)rsympy.polys.domains.fieldr#sympy.polys.domains.compositedomainrsympy.polys.polyclassesrsympy.polys.polyerrorsrsympy.polys.polyutilsrrr sympy.utilitiesr r rrrrs=6,?'3QQ"p1E?p1p1r