ó
    Š*£hØ  ã                   ó^   • S r SSKJr  SSKJr  SSKJrJr  SSKJ	r	  \	 " S S\\5      5       r
g)	z0Implementation of :class:`FractionField` class. é    )ÚCompositeDomain)ÚField)ÚCoercionFailedÚGeneratorsError)Úpublicc                   ó
  • \ rS rSrSrS=rrSrSrS&S jr	S r
S r\S 5       r\S	 5       r\S
 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S%r*g)'ÚFractionFieldé	   z@A class for representing multivariate rational function fields. TNc                 ó,  • SSK Jn  [        X5      (       a	  Uc  Uc  UnO	U" X!U5      nXPl        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        UR                  U l        U R                  U l	        g )Nr   )Ú	FracField)
Úsympy.polys.fieldsr   Ú
isinstanceÚfieldÚdtypeÚgensÚngensÚsymbolsÚdomainÚdom)ÚselfÚdomain_or_fieldr   Úorderr   r   s         Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/polys/domains/fractionfield.pyÚ__init__ÚFractionField.__init__   sr   € Ý0ä�o×1Ñ1°g±oÈ%É-Ø#‰Eá˜g¸Ó>ˆEàŒ
Ø—[‘[ˆŒ
à—J‘JˆŒ	Ø—[‘[ˆŒ
Ø—}‘}ˆŒØ—l‘lˆŒð —;‘;ˆ�ó    c                 ó8   • U R                   R                  U5      $ ©N)r   Ú	field_new©r   Úelements     r   ÚnewÚFractionField.new%   s   € Ø�z‰z×#Ñ# GÓ,Ð,r   c                 ó8   • U R                   R                  U5      $ )z%Check if ``a`` is of type ``dtype``. )r   Ú
is_elementr    s     r   Úof_typeÚFractionField.of_type(   s   € à�z‰z×$Ñ$ WÓ-Ð-r   c                 ó.   • U R                   R                  $ r   )r   Úzero©r   s    r   r)   ÚFractionField.zero,   s   € à�z‰z�‰Ðr   c                 ó.   • U R                   R                  $ r   )r   Úoner*   s    r   r-   ÚFractionField.one0   s   € à�z‰z�~‰~Ðr   c                 ó.   • U R                   R                  $ r   )r   r   r*   s    r   r   ÚFractionField.order4   s   € à�z‰z×ÑÐr   c                 óŒ   • [        U R                  5      S-   SR                  [        [         U R                  5      5      -   S-   $ )NÚ(Ú,Ú))Ústrr   ÚjoinÚmapr   r*   s    r   Ú__str__ÚFractionField.__str__8   s4   € Ü�4—;‘;Ó #Ñ%¨¯©´´S¸$¿,¹,Ó1GÓ(HÑHÈ3ÑNÐNr   c                 ó„   • [        U R                  R                  U R                  U R                  U R
                  45      $ r   )ÚhashÚ	__class__Ú__name__r   r   r   r*   s    r   Ú__hash__ÚFractionField.__hash__;   s,   € Ü�T—^‘^×,Ñ,¨d¯j©j¸$¿+¹+ÀtÇ|Á|ÐTÓUÐUr   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ )z0Returns ``True`` if two domains are equivalent. )r   r	   ÚNotImplementedr   )r   Úothers     r   Ú__eq__ÚFractionField.__eq__>   s(   € ä˜%¤×/Ñ/Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(r   c                 ó"   • UR                  5       $ )z!Convert ``a`` to a SymPy object. )Úas_expr©r   Úas     r   Úto_sympyÚFractionField.to_sympyD   s   € à�y‰y‹{Ðr   c                 ó8   • U R                   R                  U5      $ )z)Convert SymPy's expression to ``dtype``. )r   Ú	from_exprrG   s     r   Ú
from_sympyÚFractionField.from_sympyH   s   € à�z‰z×#Ñ# AÓ&Ð&r   c                 óD   • U " U R                   R                  X5      5      $ ©z.Convert a Python ``int`` object to ``dtype``. ©r   Úconvert©ÚK1rH   ÚK0s      r   Úfrom_ZZÚFractionField.from_ZZL   ó   € á�"—)‘)×#Ñ# AÓ*Ó+Ð+r   c                 óD   • U " U R                   R                  X5      5      $ rP   rQ   rS   s      r   Úfrom_ZZ_pythonÚFractionField.from_ZZ_pythonP   rX   r   c                 óê   • U R                   nUR                  nUR                  (       a=  U " U" UR                  U5      U5      5      U " U" UR	                  U5      U5      5      -  $ U " U" X5      5      $ ©z3Convert a Python ``Fraction`` object to ``dtype``. )r   Úconvert_fromÚis_ZZÚnumerÚdenom)rT   rH   rU   r   Úconvs        r   Úfrom_QQÚFractionField.from_QQT   s^   € à�i‰iˆØ×ÑˆØ�9�9Ù‘d˜2Ÿ8™8 A›;¨Ó+Ó,©r±$°r·x±xÀ³{ÀBÓ2GÓ/HÑHÐHá‘d˜1“k“?Ð"r   c                 óD   • U " U R                   R                  X5      5      $ r]   rQ   rS   s      r   Úfrom_QQ_pythonÚFractionField.from_QQ_python]   rX   r   c                 óD   • U " U R                   R                  X5      5      $ )z,Convert a GMPY ``mpz`` object to ``dtype``. rQ   rS   s      r   Úfrom_ZZ_gmpyÚFractionField.from_ZZ_gmpya   rX   r   c                 óD   • U " U R                   R                  X5      5      $ )z,Convert a GMPY ``mpq`` object to ``dtype``. rQ   rS   s      r   Úfrom_QQ_gmpyÚFractionField.from_QQ_gmpye   rX   r   c                 óD   • U " U R                   R                  X5      5      $ )z4Convert a ``GaussianRational`` object to ``dtype``. rQ   rS   s      r   Úfrom_GaussianRationalFieldÚ(FractionField.from_GaussianRationalFieldi   rX   r   c                 óD   • U " U R                   R                  X5      5      $ )z3Convert a ``GaussianInteger`` object to ``dtype``. rQ   rS   s      r   Úfrom_GaussianIntegerRingÚ&FractionField.from_GaussianIntegerRingm   rX   r   c                 óD   • U " U R                   R                  X5      5      $ ©z.Convert a mpmath ``mpf`` object to ``dtype``. rQ   rS   s      r   Úfrom_RealFieldÚFractionField.from_RealFieldq   rX   r   c                 óD   • U " U R                   R                  X5      5      $ ru   rQ   rS   s      r   Úfrom_ComplexFieldÚFractionField.from_ComplexFieldu   rX   r   c                 ó‚   • U R                   U:w  a  U R                   R                  X5      nUb  U R                  U5      $ g)z*Convert an algebraic number to ``dtype``. N)r   r^   r"   rS   s      r   Úfrom_AlgebraicFieldÚ!FractionField.from_AlgebraicFieldy   s9   € à�9‰9˜‹?Ø—	‘	×&Ñ& qÓ-ˆAØ‰=Ø—6‘6˜!“9Ðð r   c                 ób  • UR                   (       a+  U R                  UR                  S5      UR                  5      $  U R	                  UR                  U R                  R                  5      5      $ ! [        [        4 a,     U R	                  U5      s $ ! [        [        4 a      gf = ff = f)z#Convert a polynomial to ``dtype``. é   N)
Ú	is_groundr^   Úcoeffr   r"   Úset_ringr   Úringr   r   rS   s      r   Úfrom_PolynomialRingÚ!FractionField.from_PolynomialRing€   s‰   € à�;�;Ø—?‘? 1§7¡7¨1£:¨r¯y©yÓ9Ð9ð
	Ø—6‘6˜!Ÿ*™* R§X¡X§]¡]Ó3Ó4Ð4øÜ¤Ð0ó 	ð
Ø—v‘v˜a“yÒ øÜ"¤OÐ4ó Úðúð	ús/   ¾3A2 Á2B.ÂBÂB.ÂB*Â&B.Â)B*Â*B.c                 óf   •  UR                  U R                  5      $ ! [        [        4 a     gf = f)z*Convert a rational function to ``dtype``. N)Ú	set_fieldr   r   r   rS   s      r   Úfrom_FractionFieldÚ FractionField.from_FractionField�   s1   € ð	Ø—;‘;˜rŸx™xÓ(Ð(øÜ¤Ð0ó 	Ùð	ús   ‚ �0¯0c                 óR   • U R                   R                  5       R                  5       $ )z*Returns a field associated with ``self``. )r   Úto_ringÚ	to_domainr*   s    r   Úget_ringÚFractionField.get_ring—   s   € à�z‰z×!Ñ!Ó#×-Ñ-Ó/Ð/r   c                 ó`   • U R                   R                  UR                  R                  5      $ )z'Returns True if ``LC(a)`` is positive. )r   Úis_positiver`   ÚLCrG   s     r   r�   ÚFractionField.is_positive›   ó   € à�{‰{×&Ñ& q§w¡w§z¡zÓ2Ð2r   c                 ó`   • U R                   R                  UR                  R                  5      $ )z'Returns True if ``LC(a)`` is negative. )r   Úis_negativer`   r‘   rG   s     r   r•   ÚFractionField.is_negativeŸ   r“   r   c                 ó`   • U R                   R                  UR                  R                  5      $ )z+Returns True if ``LC(a)`` is non-positive. )r   Úis_nonpositiver`   r‘   rG   s     r   r˜   ÚFractionField.is_nonpositive£   ó   € à�{‰{×)Ñ)¨!¯'©'¯*©*Ó5Ð5r   c                 ó`   • U R                   R                  UR                  R                  5      $ )z+Returns True if ``LC(a)`` is non-negative. )r   Úis_nonnegativer`   r‘   rG   s     r   rœ   ÚFractionField.is_nonnegative§   rš   r   c                 ó   • UR                   $ )zReturns numerator of ``a``. )r`   rG   s     r   r`   ÚFractionField.numer«   ó   € à�w‰wˆr   c                 ó   • UR                   $ )zReturns denominator of ``a``. )ra   rG   s     r   ra   ÚFractionField.denom¯   r    r   c                 óV   • U R                  U R                  R                  U5      5      $ )zReturns factorial of ``a``. )r   r   Ú	factorialrG   s     r   r¤   ÚFractionField.factorial³   s    € à�z‰z˜$Ÿ+™+×/Ñ/°Ó2Ó3Ð3r   )r   r   r   r   r   r   r   )NN)+r=   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úis_FractionFieldÚis_FracÚhas_assoc_RingÚhas_assoc_Fieldr   r"   r&   Úpropertyr)   r-   r   r8   r>   rC   rI   rM   rV   rZ   rc   rf   ri   rl   ro   rr   rv   ry   r|   r„   rˆ   r�   r�   r•   r˜   rœ   r`   ra   r¤   Ú__static_attributes__© r   r   r	   r	   	   sé   † áJà!%Ð%Ð�wà€NØ€Oôò&-ò.ð ñó ðð ñó ðð ñ ó ð òOòVò)òò'ò,ò,ò#ò,ò,ò,ò,ò,ò,ò,òòò ò0ò3ò3ò6ò6òòõ4r   r	   N)r©   Ú#sympy.polys.domains.compositedomainr   Úsympy.polys.domains.fieldr   Úsympy.polys.polyerrorsr   r   Úsympy.utilitiesr   r	   r°   r   r   Ú<module>rµ      s5   ðÙ 6õ @Ý +ß BÝ "àôk4�E˜?ó k4ó ñk4r   