§
    ¬³Ùg�  ã                   ól   — 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
dS )	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'dS )$ÚFractionFieldz@A class for representing multivariate rational function fields. TNc                 óø   — ddl m} t          ||¦  «        r|€|€|}n ||||¦  «        }|| _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        | j        | _	        d S )Nr   )Ú	FracField)
Úsympy.polys.fieldsr   Ú
isinstanceÚfieldÚdtypeÚgensÚngensÚsymbolsÚdomainÚdom)ÚselfÚdomain_or_fieldr   Úorderr   r   s         úW/granary/edev/quantum/lib/python3.11/site-packages/sympy/polys/domains/fractionfield.pyÚ__init__zFractionField.__init__   s‹   € Ø0Ð0Ð0Ð0Ð0Ð0å�o yÑ1Ô1ð 	?°g°oÈ%È-Ø#ˆEˆEà�I˜g ¸Ñ>Ô>ˆEàˆŒ
Ø”[ˆŒ
à”JˆŒ	Ø”[ˆŒ
Ø”}ˆŒØ”lˆŒð ”;ˆŒˆˆó    c                 ó6   — | j                              |¦  «        S ©N)r   Ú	field_new)r   Úelements     r   ÚnewzFractionField.new%   s   € ØŒz×#Ò# GÑ,Ô,Ð,r   c                 ó   — | j         j        S r   )r   Úzero©r   s    r   r!   zFractionField.zero(   s   € àŒzŒÐr   c                 ó   — | j         j        S r   )r   Úoner"   s    r   r$   zFractionField.one,   s   € àŒzŒ~Ðr   c                 ó   — | j         j        S r   )r   r   r"   s    r   r   zFractionField.order0   s   € àŒzÔÐr   c                 ó’   — t          | j        ¦  «        dz   d                     t          t           | j        ¦  «        ¦  «        z   dz   S )Nú(ú,ú))Ústrr   ÚjoinÚmapr   r"   s    r   Ú__str__zFractionField.__str__4   s9   € Ý�4”;ÑÔ #Ñ%¨¯ªµµS¸$¼,Ñ1GÔ1GÑ(HÔ(HÑHÈ3ÑNÐNr   c                 ód   — 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   s'   € Ý�T”^Ô,¨d¬jÔ.>ÀÄÈTÌ\ÐZÑ[Ô[Ð[r   c                 ó”   — t          |t          ¦  «        o3| 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__:   sD   € å˜%¥Ñ/Ô/ð =ØŒZÔ˜tœ{¨D¬LÐ9ØŒ[Ô ¤¨e¬mÐ<ò=ð	=r   c                 ó*   — |                      ¦   «         S )z!Convert ``a`` to a SymPy object. )Úas_expr©r   Úas     r   Úto_sympyzFractionField.to_sympy@   s   € à�yŠy‰{Œ{Ðr   c                 ó6   — | j                              |¦  «        S )z)Convert SymPy's expression to ``dtype``. )r   Ú	from_exprr8   s     r   Ú
from_sympyzFractionField.from_sympyD   s   € àŒz×#Ò# AÑ&Ô&Ð&r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S ©z.Convert a Python ``int`` object to ``dtype``. ©r   Úconvert©ÚK1r9   ÚK0s      r   Úfrom_ZZzFractionField.from_ZZH   ó$   € àˆr�"”)×#Ò# A rÑ*Ô*Ñ+Ô+Ð+r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S r?   r@   rB   s      r   Úfrom_ZZ_pythonzFractionField.from_ZZ_pythonL   rF   r   c                 óø   — | j         }|j        }|j        rQ |  ||                     |¦  «        |¦  «        ¦  «         |  ||                     |¦  «        |¦  «        ¦  «        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ˆØÔˆØŒ9ð 	#Ø�2�d�d˜2Ÿ8š8 A™;œ;¨Ñ+Ô+Ñ,Ô,¨r¨r°$°$°r·x²xÀ±{´{ÀBÑ2GÔ2GÑ/HÔ/HÑHÐHà�2�d�d˜1˜b‘k”k‘?”?Ð"r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S rJ   r@   rB   s      r   Úfrom_QQ_pythonzFractionField.from_QQ_pythonY   rF   r   c                 ó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                 ó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                 óJ   —  | | j                              ||¦  «        ¦  «        S )z4Convert a ``GaussianRational`` object to ``dtype``. r@   rB   s      r   Úfrom_GaussianRationalFieldz(FractionField.from_GaussianRationalFielde   rF   r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S )z3Convert a ``GaussianInteger`` object to ``dtype``. r@   rB   s      r   Úfrom_GaussianIntegerRingz&FractionField.from_GaussianIntegerRingi   rF   r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S ©z.Convert a mpmath ``mpf`` object to ``dtype``. r@   rB   s      r   Úfrom_RealFieldzFractionField.from_RealFieldm   rF   r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S r\   r@   rB   s      r   Úfrom_ComplexFieldzFractionField.from_ComplexFieldq   rF   r   c                 ó€   — | j         |k    r| j                              ||¦  «        }|�|                      |¦  «        S dS )z*Convert an algebraic number to ``dtype``. N)r   rK   r   rB   s      r   Úfrom_AlgebraicFieldz!FractionField.from_AlgebraicFieldu   s@   € àŒ9˜Š?ˆ?Ø”	×&Ò& q¨"Ñ-Ô-ˆAØˆ=Ø—6’6˜!‘9”9Ðð ˆ=r   c                 ó^  — |j         r.|                      |                     d¦  «        |j        ¦  «        S 	 |                      |                     | j        j        ¦  «        ¦  «        S # t          t          f$ r2 	 |                      |¦  «        cY S # t          t          f$ r Y Y dS 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Ñ9Ô9Ð9ð
	Ø—6’6˜!Ÿ*š* R¤X¤]Ñ3Ô3Ñ4Ô4Ð4øÝ¥Ð0ð 	ð 	ð 	ð
Ø—v’v˜a‘y”yÐ Ð Ð øÝ"¥OÐ4ð ð ð Ø�t�t�tðøøøð	øøøs/   ·1A) Á)B,Á;BÂB,ÂB(Â#B,Â'B(Â(B,c                 óh   — 	 |                      | j        ¦  «        S # t          t          f$ r Y dS w xY w)z*Convert a rational function to ``dtype``. N)Ú	set_fieldr   r   r   rB   s      r   Úfrom_FractionFieldz FractionField.from_FractionFieldŒ   sB   € ð	Ø—;’;˜rœxÑ(Ô(Ð(øÝ¥Ð0ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ œ1°1c                 óX   — | j                              ¦   «                              ¦   «         S )z*Returns a field associated with ``self``. )r   Úto_ringÚ	to_domainr"   s    r   Úget_ringzFractionField.get_ring“   s"   € àŒ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¤zÑ2Ô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Ô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ˆr   c                 ó   — |j         S )zReturns denominator of ``a``. )rN   r8   s     r   rN   zFractionField.denom«   r|   r   c                 ó\   — |                       | j                             |¦  «        ¦  «        S )zReturns factorial of ``a``. )r   r   Ú	factorialr8   s     r   r   zFractionField.factorial¯   s$   € à�zŠz˜$œ+×/Ò/°Ñ2Ô2Ñ3Ô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ÐJà!%Ð%Ð�wà€NØ€Oðð ð ð ð&-ð -ð -ð ðð ñ „Xðð ðð ñ „Xðð ð ð  ñ „Xð ðOð Oð Oð\ð \ð \ð=ð =ð =ðð ð ð'ð 'ð 'ð,ð ,ð ,ð,ð ,ð ,ð#ð #ð #ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ðð ð ðð ð ð ð ð ð0ð 0ð 0ð3ð 3ð 3ð3ð 3ð 3ð6ð 6ð 6ð6ð 6ð 6ðð ð ðð ð ð4ð 4ð 4ð 4ð 4r   r	   N)r‚   Ú#sympy.polys.domains.compositedomainr   Úsympy.polys.domains.fieldr   Úsympy.polys.polyerrorsr   r   Úsympy.utilitiesr   r	   rˆ   r   r   ú<module>r�      s¦   ðØ 6Ð 6ð @Ð ?Ð ?Ð ?Ð ?Ð ?Ø +Ð +Ð +Ð +Ð +Ð +Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ "Ð "Ð "Ð "Ð "Ð "àðg4ð g4ð g4ð g4ð g4�E˜?ñ g4ô g4ñ „ðg4ð g4ð g4r   