§
    OŠtjØ  ã                   ó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	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         ú_/var/www/html/CA-Chatbot/venv/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                 ó6   — | j                              |¦  «        S )z%Check if ``a`` is of type ``dtype``. )r   Ú
is_elementr   s     r   Úof_typezFractionField.of_type(   s   € àŒz×$Ò$ WÑ-Ô-Ð-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.one0   s   € àŒzŒ~Ðr   c                 ó   — | j         j        S r   )r   r   r&   s    r   r   zFractionField.order4   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__8   s9   € Ý�4”;ÑÔ #Ñ%¨¯ªµµS¸$¼,Ñ1GÔ1GÑ(HÔ(HÑHÈ3ÑNÐNr   c                 óZ   — 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¸$¼+ÀtÄ|ÐTÑUÔUÐUr   c                 óZ   — 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˜Uœ[Ò(Ð(r   c                 ó*   — |                      ¦   «         S )z!Convert ``a`` to a SymPy object. )Úas_expr©r   Úas     r   Úto_sympyzFractionField.to_sympyD   s   € à�yŠy‰{Œ{Ðr   c                 ó6   — | j                              |¦  «        S )z)Convert SymPy's expression to ``dtype``. )r   Ú	from_exprr=   s     r   Ú
from_sympyzFractionField.from_sympyH   s   € àŒz×#Ò# AÑ&Ô&Ð&r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S ©z.Convert a Python ``int`` object to ``dtype``. ©r   Úconvert©ÚK1r>   ÚK0s      r   Úfrom_ZZzFractionField.from_ZZL   ó$   € àˆr�"”)×#Ò# A rÑ*Ô*Ñ+Ô+Ð+r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S rD   rE   rG   s      r   Úfrom_ZZ_pythonzFractionField.from_ZZ_pythonP   rK   r   c                 óø   — | j         }|j        }|j        rQ |  ||                     |¦  «        |¦  «        ¦  «         |  ||                     |¦  «        |¦  «        ¦  «        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ˆØÔˆØŒ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 rO   rE   rG   s      r   Úfrom_QQ_pythonzFractionField.from_QQ_python]   rK   r   c                 ó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                 ó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                 óJ   —  | | j                              ||¦  «        ¦  «        S )z4Convert a ``GaussianRational`` object to ``dtype``. rE   rG   s      r   Úfrom_GaussianRationalFieldz(FractionField.from_GaussianRationalFieldi   rK   r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S )z3Convert a ``GaussianInteger`` object to ``dtype``. rE   rG   s      r   Úfrom_GaussianIntegerRingz&FractionField.from_GaussianIntegerRingm   rK   r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S ©z.Convert a mpmath ``mpf`` object to ``dtype``. rE   rG   s      r   Úfrom_RealFieldzFractionField.from_RealFieldq   rK   r   c                 óJ   —  | | j                              ||¦  «        ¦  «        S ra   rE   rG   s      r   Úfrom_ComplexFieldzFractionField.from_ComplexFieldu   rK   r   c                 ó€   — | j         |k    r| j                              ||¦  «        }|�|                      |¦  «        S dS )z*Convert an algebraic number to ``dtype``. N)r   rP   r    rG   s      r   Úfrom_AlgebraicFieldz!FractionField.from_AlgebraicFieldy   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_groundrP   Úcoeffr   r    Úset_ringr   Úringr   r   rG   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   rG   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_positiverR   ÚLCr=   s     r   rv   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_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Ô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ˆr   c                 ó   — |j         S )zReturns denominator of ``a``. )rS   r=   s     r   rS   zFractionField.denom¯   r�   r   c                 ó\   — |                       | j                             |¦  «        ¦  «        S )zReturns factorial of ``a``. )r   r   Ú	factorialr=   s     r   r„   zFractionField.factorial³   s$   € à�zŠz˜$œ+×/Ò/°Ñ2Ô2Ñ3Ô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ÐJà!%Ð%Ð�wà€NØ€Oðð ð ð ð&-ð -ð -ð.ð .ð .ð ðð ñ „Xðð ðð ñ „Xðð ð ð  ñ „Xð ðOð Oð OðVð Vð Vð)ð )ð )ðð ð ð'ð 'ð 'ð,ð ,ð ,ð,ð ,ð ,ð#ð #ð #ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ðð ð ðð ð ð ð ð ð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Ø "Ð "Ð "Ð "Ð "Ð "àðk4ð k4ð k4ð k4ð k4�E˜?ñ k4ô k4ñ „ðk4ð k4ð k4r   