Ë
    O/æj�  ã                   ó^   — 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	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         úd/root/repos/pocs/video-evals/.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                 ó.   — | 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.one,   s   € à�z‰z�~‰~Ðr   c                 ó.   — | j                   j                  S r   )r   r   r"   s    r   r   zFractionField.order0   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__4   s4   € Ü�4—;‘;Ó #Ñ%¨¯©´´S¸$¿,¹,Ó1GÓ(HÑHÈ3ÑNÐNr   c                 ó˜   — t        | j                  j                  | j                  j                  | j
                  | j                  f«      S r   )ÚhashÚ	__class__Ú__name__r   r   r   r   r"   s    r   Ú__hash__zFractionField.__hash__7   s2   € Ü�T—^‘^×,Ñ,¨d¯j©j×.>Ñ.>ÀÇÁÈTÏ\É\ÐZÓ[Ð[r   c                 óÜ   — t        |t        «      xr[ | j                  j                  | j                  | j
                  f|j                  j                  |j                  |j
                  fk(  S )z0Returns ``True`` if two domains are equivalent. )r   r	   r   r   r   r   )r   Úothers     r   Ú__eq__zFractionField.__eq__:   sS   € ä˜%¤Ó/ò =Ø�Z‰Z×Ñ˜tŸ{™{¨D¯L©LÐ9Ø�[‰[×Ñ §¡¨e¯m©mÐ<ñ=ð	=r   c                 ó"   — |j                  «       S )z!Convert ``a`` to a SymPy object. )Úas_expr©r   Úas     r   Úto_sympyzFractionField.to_sympy@   s   € à�y‰y‹{Ðr   c                 ó8   — | j                   j                  |«      S )z)Convert SymPy's expression to ``dtype``. )r   Ú	from_exprr8   s     r   Ú
from_sympyzFractionField.from_sympyD   s   € à�z‰z×#Ñ# AÓ&Ð&r   c                 óF   —  | | j                   j                  ||«      «      S ©z.Convert a Python ``int`` object to ``dtype``. ©r   Úconvert©ÚK1r9   ÚK0s      r   Úfrom_ZZzFractionField.from_ZZH   ó   € á�"—)‘)×#Ñ# A rÓ*Ó+Ð+r   c                 óF   —  | | j                   j                  ||«      «      S r?   r@   rB   s      r   Úfrom_ZZ_pythonzFractionField.from_ZZ_pythonL   rF   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)rC   r9   rD   r   Úconvs        r   Úfrom_QQzFractionField.from_QQP   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 rJ   r@   rB   s      r   Úfrom_QQ_pythonzFractionField.from_QQ_pythonY   rF   r   c                 óF   —  | | j                   j                  ||«      «      S )z,Convert a GMPY ``mpz`` object to ``dtype``. r@   rB   s      r   Úfrom_ZZ_gmpyzFractionField.from_ZZ_gmpy]   rF   r   c                 óF   —  | | j                   j                  ||«      «      S )z,Convert a GMPY ``mpq`` object to ``dtype``. r@   rB   s      r   Úfrom_QQ_gmpyzFractionField.from_QQ_gmpya   rF   r   c                 óF   —  | | j                   j                  ||«      «      S )z4Convert a ``GaussianRational`` object to ``dtype``. r@   rB   s      r   Úfrom_GaussianRationalFieldz(FractionField.from_GaussianRationalFielde   rF   r   c                 óF   —  | | j                   j                  ||«      «      S )z3Convert a ``GaussianInteger`` object to ``dtype``. r@   rB   s      r   Úfrom_GaussianIntegerRingz&FractionField.from_GaussianIntegerRingi   rF   r   c                 óF   —  | | j                   j                  ||«      «      S ©z.Convert a mpmath ``mpf`` object to ``dtype``. r@   rB   s      r   Úfrom_RealFieldzFractionField.from_RealFieldm   rF   r   c                 óF   —  | | j                   j                  ||«      «      S r\   r@   rB   s      r   Úfrom_ComplexFieldzFractionField.from_ComplexFieldq   rF   r   c                 ó€   — | j                   |k7  r| j                   j                  ||«      }|�| j                  |«      S y)z*Convert an algebraic number to ``dtype``. N)r   rK   r   rB   s      r   Úfrom_AlgebraicFieldz!FractionField.from_AlgebraicFieldu   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_groundrK   Úcoeffr   r   Úset_ringr   Úringr   r   rB   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   rB   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_positiverM   ÚLCr8   s     r   rq   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_negativerM   rr   r8   s     r   ru   zFractionField.is_negative›   rs   r   c                 ó`   — | j                   j                  |j                  j                  «      S )z+Returns True if ``LC(a)`` is non-positive. )r   Úis_nonpositiverM   rr   r8   s     r   rw   zFractionField.is_nonpositiveŸ   ó   € à�{‰{×)Ñ)¨!¯'©'¯*©*Ó5Ð5r   c                 ó`   — | j                   j                  |j                  j                  «      S )z+Returns True if ``LC(a)`` is non-negative. )r   Úis_nonnegativerM   rr   r8   s     r   rz   zFractionField.is_nonnegative£   rx   r   c                 ó   — |j                   S )zReturns numerator of ``a``. )rM   r8   s     r   rM   zFractionField.numer§   ó   € à�w‰wˆr   c                 ó   — |j                   S )zReturns denominator of ``a``. )rN   r8   s     r   rN   zFractionField.denom«   r|   r   c                 óV   — | j                  | j                  j                  |«      «      S )zReturns factorial of ``a``. )r   r   Ú	factorialr8   s     r   r   zFractionField.factorial¯   s    € à�z‰z˜$Ÿ+™+×/Ñ/°Ó2Ó3Ð3r   )NN)(r1   Ú
__module__Ú__qualname__Ú__doc__Úis_FractionFieldÚis_FracÚhas_assoc_RingÚhas_assoc_Fieldr   r   Úpropertyr!   r$   r   r-   r2   r5   r:   r=   rE   rH   rP   rR   rT   rV   rX   rZ   r]   r_   ra   rh   rk   ro   rq   ru   rw   rz   rM   rN   r   © r   r   r	   r	   	   sä   „ áJà!%Ð%Ð�wà€NØ€Oóò&-ð ñó ðð ñó ðð ñ ó ð òOò\ò=òò'ò,ò,ò#ò,ò,ò,ò,ò,ò,ò,òòò ò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Ý "àôg4�E˜?ó g4ó ñg4r   