Ë
    7^(hØ  ã                   ó^   — d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 e	 G d„ dee«      «       Z
y)	z0Implementation of :class:`FractionField` class. é    )ÚCompositeDomain)ÚField)ÚCoercionFailedÚGeneratorsError)Úpublicc                   ó   — e Zd ZdZdxZZdZdZd$d„Zd„ Z	d„ Z
ed„ «       Zed„ «       Zed	„ «       Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d „ Z%d!„ Z&d"„ Z'd#„ Z(y)%ÚFractionFieldz@A class for representing multivariate rational function fields. TNc                 ó$  — ddl m} t        ||«      r|€|€|}n
 ||||«      }|| _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        | j                  | _	        y )Nr   )Ú	FracField)
Úsympy.polys.fieldsr   Ú
isinstanceÚfieldÚdtypeÚgensÚngensÚsymbolsÚdomainÚdom)ÚselfÚdomain_or_fieldr   Úorderr   r   s         ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/domains/fractionfield.pyÚ__init__zFractionField.__init__   su   € Ý0ä�o yÔ1°g°oÈ%È-Ø#‰Eá˜g ¸Ó>ˆEàˆŒ
Ø—[‘[ˆŒ
à—J‘JˆŒ	Ø—[‘[ˆŒ
Ø—}‘}ˆŒØ—l‘lˆŒð —;‘;ˆ�ó    c                 ó8   — | j                   j                  |«      S ©N)r   Ú	field_new©r   Úelements     r   ÚnewzFractionField.new%   s   € Ø�z‰z×#Ñ# GÓ,Ð,r   c                 ó8   — | j                   j                  |«      S )z%Check if ``a`` is of type ``dtype``. )r   Ú
is_elementr   s     r   Úof_typezFractionField.of_type(   s   € à�z‰z×$Ñ$ WÓ-Ð-r   c                 ó.   — | j                   j                  S r   )r   Úzero©r   s    r   r%   zFractionField.zero,   s   € à�z‰z�‰Ðr   c                 ó.   — | j                   j                  S r   )r   Úoner&   s    r   r(   zFractionField.one0   s   € à�z‰z�~‰~Ðr   c                 ó.   — | j                   j                  S r   )r   r   r&   s    r   r   zFractionField.order4   s   € à�z‰z×ÑÐr   c                 óŒ   — t        | j                  «      dz   dj                  t        t         | j                  «      «      z   dz   S )Nú(ú,ú))Ústrr   ÚjoinÚmapr   r&   s    r   Ú__str__zFractionField.__str__8   s4   € Ü�4—;‘;Ó #Ñ%¨¯©´´S¸$¿,¹,Ó1GÓ(HÑHÈ3ÑNÐNr   c                 ó„   — t        | j                  j                  | j                  | j                  | j
                  f«      S r   )ÚhashÚ	__class__Ú__name__r   r   r   r&   s    r   Ú__hash__zFractionField.__hash__;   s,   € Ü�T—^‘^×,Ñ,¨d¯j©j¸$¿+¹+ÀtÇ|Á|ÐTÓUÐUr   c                 ó`   — t        |t        «      st        S | j                  |j                  k(  S )z0Returns ``True`` if two domains are equivalent. )r   r	   ÚNotImplementedr   )r   Úothers     r   Ú__eq__zFractionField.__eq__>   s%   € ä˜%¤Ô/Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(r   c                 ó"   — |j                  «       S )z!Convert ``a`` to a SymPy object. )Úas_expr©r   Úas     r   Úto_sympyzFractionField.to_sympyD   s   € à�y‰y‹{Ðr   c                 ó8   — | j                   j                  |«      S )z)Convert SymPy's expression to ``dtype``. )r   Ú	from_exprr=   s     r   Ú
from_sympyzFractionField.from_sympyH   s   € à�z‰z×#Ñ# AÓ&Ð&r   c                 óF   —  | | j                   j                  ||«      «      S ©z.Convert a Python ``int`` object to ``dtype``. ©r   Úconvert©ÚK1r>   ÚK0s      r   Úfrom_ZZzFractionField.from_ZZL   ó   € á�"—)‘)×#Ñ# A rÓ*Ó+Ð+r   c                 óF   —  | | j                   j                  ||«      «      S rD   rE   rG   s      r   Úfrom_ZZ_pythonzFractionField.from_ZZ_pythonP   rK   r   c                 óâ   — | j                   }|j                  }|j                  r= |  ||j                  |«      |«      «       |  ||j	                  |«      |«      «      z  S  |  |||«      «      S ©z3Convert a Python ``Fraction`` object to ``dtype``. )r   Úconvert_fromÚis_ZZÚnumerÚdenom)rH   r>   rI   r   Úconvs        r   Úfrom_QQzFractionField.from_QQT   s`   € à�i‰iˆØ×ÑˆØ�9Š9Ù‘d˜2Ÿ8™8 A›;¨Ó+Ó,©r±$°r·x±xÀ³{ÀBÓ2GÓ/HÑHÐHá‘d˜1˜b“k“?Ð"r   c                 óF   —  | | j                   j                  ||«      «      S rO   rE   rG   s      r   Úfrom_QQ_pythonzFractionField.from_QQ_python]   rK   r   c                 óF   —  | | j                   j                  ||«      «      S )z,Convert a GMPY ``mpz`` object to ``dtype``. rE   rG   s      r   Úfrom_ZZ_gmpyzFractionField.from_ZZ_gmpya   rK   r   c                 óF   —  | | j                   j                  ||«      «      S )z,Convert a GMPY ``mpq`` object to ``dtype``. rE   rG   s      r   Úfrom_QQ_gmpyzFractionField.from_QQ_gmpye   rK   r   c                 óF   —  | | j                   j                  ||«      «      S )z4Convert a ``GaussianRational`` object to ``dtype``. rE   rG   s      r   Úfrom_GaussianRationalFieldz(FractionField.from_GaussianRationalFieldi   rK   r   c                 óF   —  | | j                   j                  ||«      «      S )z3Convert a ``GaussianInteger`` object to ``dtype``. rE   rG   s      r   Úfrom_GaussianIntegerRingz&FractionField.from_GaussianIntegerRingm   rK   r   c                 óF   —  | | j                   j                  ||«      «      S ©z.Convert a mpmath ``mpf`` object to ``dtype``. rE   rG   s      r   Úfrom_RealFieldzFractionField.from_RealFieldq   rK   r   c                 óF   —  | | j                   j                  ||«      «      S ra   rE   rG   s      r   Úfrom_ComplexFieldzFractionField.from_ComplexFieldu   rK   r   c                 ó€   — | j                   |k7  r| j                   j                  ||«      }|�| j                  |«      S y)z*Convert an algebraic number to ``dtype``. N)r   rP   r    rG   s      r   Úfrom_AlgebraicFieldz!FractionField.from_AlgebraicFieldy   s;   € à�9‰9˜Š?Ø—	‘	×&Ñ& q¨"Ó-ˆAØˆ=Ø—6‘6˜!“9Ðð r   c                 óT  — |j                   r+| j                  |j                  d«      |j                  «      S 	 | j	                  |j                  | j                  j                  «      «      S # t        t        f$ r+ 	 | j	                  |«      cY S # t        t        f$ r Y Y yw xY ww xY w)z#Convert a polynomial to ``dtype``. é   N)
Ú	is_groundrP   Úcoeffr   r    Úset_ringr   Úringr   r   rG   s      r   Úfrom_PolynomialRingz!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/   ¹3A- Á-B'Á=BÂB'ÂB#ÂB'Â"B#Â#B'c                 ód   — 	 |j                  | j                  «      S # t        t        f$ r Y yw xY w)z*Convert a rational function to ``dtype``. N)Ú	set_fieldr   r   r   rG   s      r   Úfrom_FractionFieldz FractionField.from_FractionField�   s1   € ð	Ø—;‘;˜rŸx™xÓ(Ð(øÜ¤Ð0ò 	Ùð	ús   ‚ �/®/c                 óR   — | j                   j                  «       j                  «       S )z*Returns a field associated with ``self``. )r   Úto_ringÚ	to_domainr&   s    r   Úget_ringzFractionField.get_ring—   s   € à�z‰z×!Ñ!Ó#×-Ñ-Ó/Ð/r   c                 ó`   — | j                   j                  |j                  j                  «      S )z'Returns True if ``LC(a)`` is positive. )r   Úis_positiverR   ÚLCr=   s     r   rv   zFractionField.is_positive›   ó   € à�{‰{×&Ñ& q§w¡w§z¡zÓ2Ð2r   c                 ó`   — | j                   j                  |j                  j                  «      S )z'Returns True if ``LC(a)`` is negative. )r   Úis_negativerR   rw   r=   s     r   rz   zFractionField.is_negativeŸ   rx   r   c                 ó`   — | j                   j                  |j                  j                  «      S )z+Returns True if ``LC(a)`` is non-positive. )r   Úis_nonpositiverR   rw   r=   s     r   r|   zFractionField.is_nonpositive£   ó   € à�{‰{×)Ñ)¨!¯'©'¯*©*Ó5Ð5r   c                 ó`   — | j                   j                  |j                  j                  «      S )z+Returns True if ``LC(a)`` is non-negative. )r   Úis_nonnegativerR   rw   r=   s     r   r   zFractionField.is_nonnegative§   r}   r   c                 ó   — |j                   S )zReturns numerator of ``a``. )rR   r=   s     r   rR   zFractionField.numer«   ó   € à�w‰wˆr   c                 ó   — |j                   S )zReturns denominator of ``a``. )rS   r=   s     r   rS   zFractionField.denom¯   r�   r   c                 óV   — | j                  | j                  j                  |«      «      S )zReturns factorial of ``a``. )r   r   Ú	factorialr=   s     r   r„   zFractionField.factorial³   s    € à�z‰z˜$Ÿ+™+×/Ñ/°Ó2Ó3Ð3r   )NN))r5   Ú
__module__Ú__qualname__Ú__doc__Úis_FractionFieldÚis_FracÚhas_assoc_RingÚhas_assoc_Fieldr   r    r#   Úpropertyr%   r(   r   r1   r6   r:   r?   rB   rJ   rM   rU   rW   rY   r[   r]   r_   rb   rd   rf   rm   rp   rt   rv   rz   r|   r   rR   rS   r„   © 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   