§
    OŠtj©  ã                   óº   — d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ d	d
d	d	d	d	d	dœZe G d„ de	ee¦  «        ¦   «         Z e¦   «         ZdS )z3Implementation of :class:`ExpressionDomain` class. é    )ÚsympifyÚSympifyError)ÚDomainElement)ÚCharacteristicZero)ÚField)ÚSimpleDomain)ÚPicklableWithSlots)ÚpublicFT)ÚdeepÚmulÚ	power_expÚ
power_baseÚbasicÚmultinomialÚlogc                   ó"  — e Zd ZdZdxZZ G d„ dee¦  «        Ze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 „ Z&d!„ Z'd"„ Z(d#„ Z)d$„ Z*d%„ Z+d&S )'ÚExpressionDomainz#A class for arbitrary expressions. Tc                   ó¸   — e 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„ Zd„ Zd„ Zd„ ZdS )úExpressionDomain.ExpressionzAn arbitrary expression. ©Úexc                 ót   — t          || j        ¦  «        st          |¦  «        | _        d S |j        | _        d S ©N)Ú
isinstanceÚ	__class__r   r   )Úselfr   s     úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/domains/expressiondomain.pyÚ__init__z$ExpressionDomain.Expression.__init__   s4   € Ý˜b $¤.Ñ1Ô1ð  Ý! "™+œ+�”��àœ%�”��ó    c                 ó0   — dt          | j        ¦  «        z  S ©NzEX(%s))Úreprr   ©Úfs    r   Ú__repr__z$ExpressionDomain.Expression.__repr__    s   € Ø�d 1¤4™jœjÑ(Ð(r   c                 ó0   — dt          | j        ¦  «        z  S r!   )Ústrr   r#   s    r   Ú__str__z#ExpressionDomain.Expression.__str__#   s   € Ø�c !¤$™iœiÑ'Ð'r   c                 óB   — t          | j        j        | j        f¦  «        S r   )Úhashr   Ú__name__r   ©r   s    r   Ú__hash__z$ExpressionDomain.Expression.__hash__&   s   € Ý˜œÔ0°$´'Ð:Ñ;Ô;Ð;r   c                 ó   — t           S r   )ÚEXr,   s    r   Úparentz"ExpressionDomain.Expression.parent)   s   € ÝˆIr   c                 ó   — | j         S r   r   r#   s    r   Úas_exprz#ExpressionDomain.Expression.as_expr,   s	   € Ø”4ˆKr   c                 óf   — |                       | j                             ¦   «         d         ¦  «        S )Nr   ©r   r   Úas_numer_denomr#   s    r   Únumerz!ExpressionDomain.Expression.numer/   ó'   € Ø—;’;˜qœt×2Ò2Ñ4Ô4°QÔ7Ñ8Ô8Ð8r   c                 óf   — |                       | j                             ¦   «         d         ¦  «        S ©Né   r4   r#   s    r   Údenomz!ExpressionDomain.Expression.denom2   r7   r   c                 óp   — |                        |                     ¦   «         j        di t          ¤Ž¦  «        S )N© )r   ÚcancelÚexpandÚeflags)r$   r   s     r   Úsimplifyz$ExpressionDomain.Expression.simplify5   s0   € Ø—;’;Ð1˜rŸyšy™{œ{Ô1Ð;Ð;µFÐ;Ð;Ñ<Ô<Ð<r   c                 óP   — |                       t          | j        ¦  «        ¦  «        S r   )r   Úabsr   r#   s    r   Ú__abs__z#ExpressionDomain.Expression.__abs__8   s   € Ø—;’;�s 1¤4™yœyÑ)Ô)Ð)r   c                 ó8   — |                       | j         ¦  «        S r   )r   r   r#   s    r   Ú__neg__z#ExpressionDomain.Expression.__neg__;   s   € Ø—;’; ¤˜uÑ%Ô%Ð%r   c                 óP   — 	 |                       |¦  «        S # t          $ r Y d S w xY wr   )r   r   ©r$   Úgs     r   Ú_to_exz"ExpressionDomain.Expression._to_ex>   s9   € ðØ—{’{ 1‘~”~Ð%øÝð ð ð Ø�t�tðøøøs   ‚ —
%¤%c                 ój   — | j                              ¦   «         |j                              ¦   «         k     S r   )r   Úsort_keyrH   s     r   Ú__lt__z"ExpressionDomain.Expression.__lt__D   s!   € Ø”4—=’=‘?”? Q¤T§]¢]¡_¤_Ò4Ð4r   c                 óÊ   — |                       |¦  «        }|€t          S |t          j        k    r| S | t          j        k    r|S |                      | j        |j        z   ¦  «        S r   ©rJ   ÚNotImplementedr/   ÚzerorA   r   rH   s     r   Ú__add__z#ExpressionDomain.Expression.__add__G   sV   € Ø—’˜‘”ˆAàˆyÝ%Ð%Ø•b”g’�Ø�Ø•b”g’�Ø�à—z’z !¤$¨¬¡+Ñ.Ô.Ð.r   c                 ól   — |                       |                      |¦  «        j        | j        z   ¦  «        S r   ©rA   r   r   rH   s     r   Ú__radd__z$ExpressionDomain.Expression.__radd__S   ó(   € Ø—:’:˜aŸkšk¨!™nœnÔ/°!´$Ñ6Ñ7Ô7Ð7r   c                 óÌ   — |                       |¦  «        }|€t          S |t          j        k    r| S | t          j        k    r| S |                      | j        |j        z
  ¦  «        S r   rO   rH   s     r   Ú__sub__z#ExpressionDomain.Expression.__sub__V   sX   € Ø—’˜‘”ˆAàˆyÝ%Ð%Ø•b”g’�Ø�Ø•b”g’�Ø�r�	à—z’z !¤$¨¬¡+Ñ.Ô.Ð.r   c                 ól   — |                       |                      |¦  «        j        | j        z
  ¦  «        S r   rT   rH   s     r   Ú__rsub__z$ExpressionDomain.Expression.__rsub__b   rV   r   c                 ó.  — |                       |¦  «        }|€t          S t          j        | |fv rt          j        S | j        j        r.|j        j        r"|                      | j        |j        z  ¦  «        S |                      | j        |j        z  ¦  «        S r   )rJ   rP   r/   rQ   r   Ú	is_Numberr   rA   rH   s     r   Ú__mul__z#ExpressionDomain.Expression.__mul__e   s   € Ø—’˜‘”ˆAàˆyÝ%Ð%åŒw˜1˜a˜&Ð Ð Ý”w�Ø””ð . A¤D¤Nð .Ø—{’{ 1¤4¨¬¡9Ñ-Ô-Ð-à—:’:˜aœd 1¤4™iÑ(Ô(Ð(r   c                 ól   — |                       |                      |¦  «        j        | j        z  ¦  «        S r   rT   rH   s     r   Ú__rmul__z$ExpressionDomain.Expression.__rmul__r   ó(   € Ø—:’:˜aŸkšk¨!™nœnÔ/°´Ñ4Ñ5Ô5Ð5r   c                 ó‚   — |                       |¦  «        }|�"|                      | j        |j        z  ¦  «        S t          S r   ©rJ   rA   r   rP   )r$   Úns     r   Ú__pow__z#ExpressionDomain.Expression.__pow__u   s6   € Ø—’˜‘”ˆAàˆ}Ø—z’z !¤$¨¬¡*Ñ-Ô-Ð-å%Ð%r   c                 ó‚   — |                       |¦  «        }|�"|                      | j        |j        z  ¦  «        S t          S r   rb   rH   s     r   Ú__truediv__z'ExpressionDomain.Expression.__truediv__}   s6   € Ø—’˜‘”ˆAàˆ}Ø—z’z !¤$ q¤t¡)Ñ,Ô,Ð,å%Ð%r   c                 ól   — |                       |                      |¦  «        j        | j        z  ¦  «        S r   rT   rH   s     r   Ú__rtruediv__z(ExpressionDomain.Expression.__rtruediv__…   r`   r   c                 óH   — | j         |                      |¦  «        j         k    S r   )r   r   rH   s     r   Ú__eq__z"ExpressionDomain.Expression.__eq__ˆ   s   € Ø”4˜1Ÿ;š; q™>œ>Ô,Ò,Ð,r   c                 ó   — | |k     S r   r=   rH   s     r   Ú__ne__z"ExpressionDomain.Expression.__ne__‹   s   € Ø˜A’v�:Ðr   c                 ó   — | j         j         S r   )r   Úis_zeror#   s    r   Ú__bool__z$ExpressionDomain.Expression.__bool__Ž   s   € Ø”t”|Ð#Ð#r   c                 ó†   — ddl m} |                       || j        |                      |¦  «        j        ¦  «        ¦  «        S )Nr   )Úgcd)Úsympy.polysrq   r   r   )r$   rI   rq   s      r   rq   zExpressionDomain.Expression.gcd‘   óA   € Ø'Ð'Ð'Ð'Ð'Ð'Ø—;’;˜s˜s 1¤4¨¯ª°Q©¬Ô):Ñ;Ô;Ñ<Ô<Ð<r   c                 ó†   — ddl m} |                       || j        |                      |¦  «        j        ¦  «        ¦  «        S )Nr   ©Úlcm)rr   rv   r   r   )r$   rI   rv   s      r   rv   zExpressionDomain.Expression.lcm•   rs   r   N) r+   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r%   r(   r-   r0   r2   r6   r;   rA   rD   rF   rJ   rM   rR   rU   rX   rZ   r]   r_   rd   rf   rh   rj   rl   ro   rq   rv   r=   r   r   Ú
Expressionr      s´  € € € € € Ø'Ð'àˆ	ð	 ð 	 ð 	 ð	)ð 	)ð 	)ð	(ð 	(ð 	(ð	<ð 	<ð 	<ð	ð 	ð 	ð	ð 	ð 	ð	9ð 	9ð 	9ð	9ð 	9ð 	9ð	=ð 	=ð 	=ð	*ð 	*ð 	*ð	&ð 	&ð 	&ð	ð 	ð 	ð	5ð 	5ð 	5ð
	/ð 
	/ð 
	/ð	8ð 	8ð 	8ð
	/ð 
	/ð 
	/ð	8ð 	8ð 	8ð	)ð 	)ð 	)ð	6ð 	6ð 	6ð	&ð 	&ð 	&ð	&ð 	&ð 	&ð	6ð 	6ð 	6ð	-ð 	-ð 	-ð	ð 	ð 	ð	$ð 	$ð 	$ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð 	=ð 	=r   r{   r   r:   r/   Fc                 ó   — d S r   r=   r,   s    r   r   zExpressionDomain.__init__£   s   € Øˆr   c                 ó>   — t          |t          ¦  «        rdS t          S )NT)r   r   rP   )r   Úothers     r   rj   zExpressionDomain.__eq__¦   s    € Ý�eÕ-Ñ.Ô.ð 	"Ø�4å!Ð!r   c                 ó    — t          d¦  «        S )Nr/   )r*   r,   s    r   r-   zExpressionDomain.__hash__¬   s   € Ý�D‰zŒzÐr   c                 ó*   — |                      ¦   «         S )z!Convert ``a`` to a SymPy object. )r2   ©r   Úas     r   Úto_sympyzExpressionDomain.to_sympy¯   s   € à�yŠy‰{Œ{Ðr   c                 ó,   — |                       |¦  «        S )z)Convert SymPy's expression to ``dtype``. )Údtyper�   s     r   Ú
from_sympyzExpressionDomain.from_sympy³   s   € à�zŠz˜!‰}Œ}Ðr   c                 ó>   —  | |                      |¦  «        ¦  «        S ©z.Convert a Python ``int`` object to ``dtype``. ©rƒ   ©ÚK1r‚   ÚK0s      r   Úfrom_ZZzExpressionDomain.from_ZZ·   ó   € àˆr�"—+’+˜a‘.”.Ñ!Ô!Ð!r   c                 ó>   —  | |                      |¦  «        ¦  «        S rˆ   r‰   rŠ   s      r   Úfrom_ZZ_pythonzExpressionDomain.from_ZZ_python»   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S ©z3Convert a Python ``Fraction`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_QQzExpressionDomain.from_QQ¿   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S r’   r‰   rŠ   s      r   Úfrom_QQ_pythonzExpressionDomain.from_QQ_pythonÃ   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S )z,Convert a GMPY ``mpz`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_ZZ_gmpyzExpressionDomain.from_ZZ_gmpyÇ   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S )z,Convert a GMPY ``mpq`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_QQ_gmpyzExpressionDomain.from_QQ_gmpyË   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S ©z4Convert a ``GaussianRational`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_GaussianIntegerRingz)ExpressionDomain.from_GaussianIntegerRingÏ   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S r›   r‰   rŠ   s      r   Úfrom_GaussianRationalFieldz+ExpressionDomain.from_GaussianRationalFieldÓ   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S )z(Convert an ``ANP`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_AlgebraicFieldz$ExpressionDomain.from_AlgebraicField×   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S )z.Convert a mpmath ``mpf`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_RealFieldzExpressionDomain.from_RealFieldÛ   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S )z.Convert a mpmath ``mpc`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_ComplexFieldz"ExpressionDomain.from_ComplexFieldß   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S )z'Convert a ``DMP`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_PolynomialRingz$ExpressionDomain.from_PolynomialRingã   rŽ   r   c                 ó>   —  | |                      |¦  «        ¦  «        S )z'Convert a ``DMF`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_FractionFieldz#ExpressionDomain.from_FractionFieldç   rŽ   r   c                 ó   — |S )z&Convert a ``EX`` object to ``dtype``. r=   rŠ   s      r   Úfrom_ExpressionDomainz&ExpressionDomain.from_ExpressionDomainë   s   € àˆr   c                 ó   — | S )z)Returns a ring associated with ``self``. r=   r,   s    r   Úget_ringzExpressionDomain.get_ringï   ó   € àˆr   c                 ó   — | S )z*Returns a field associated with ``self``. r=   r,   s    r   Ú	get_fieldzExpressionDomain.get_fieldó   r­   r   c                 óJ   — |j                              ¦   «         d         j        S )z#Returns True if ``a`` is positive. r   )r   Úas_coeff_mulÚis_positiver�   s     r   r²   zExpressionDomain.is_positive÷   s   € àŒt× Ò Ñ"Ô" 1Ô%Ô1Ð1r   c                 ó4   — |j                              ¦   «         S )z#Returns True if ``a`` is negative. )r   Úcould_extract_minus_signr�   s     r   Úis_negativezExpressionDomain.is_negativeû   s   € àŒt×,Ò,Ñ.Ô.Ð.r   c                 óJ   — |j                              ¦   «         d         j        S )z'Returns True if ``a`` is non-positive. r   )r   r±   Úis_nonpositiver�   s     r   r·   zExpressionDomain.is_nonpositiveÿ   ó   € àŒt× Ò Ñ"Ô" 1Ô%Ô4Ð4r   c                 óJ   — |j                              ¦   «         d         j        S )z'Returns True if ``a`` is non-negative. r   )r   r±   Úis_nonnegativer�   s     r   rº   zExpressionDomain.is_nonnegative  r¸   r   c                 ó*   — |                      ¦   «         S )zReturns numerator of ``a``. )r6   r�   s     r   r6   zExpressionDomain.numer  ó   € à�wŠw‰yŒyÐr   c                 ó*   — |                      ¦   «         S )zReturns denominator of ``a``. )r;   r�   s     r   r;   zExpressionDomain.denom  r¼   r   c                 ó   —  | d¦  «        S r9   r=   ©r   r‚   Úbs      r   rq   zExpressionDomain.gcd  s   € Øˆt�A‰wŒwˆr   c                 ó,   — |                      |¦  «        S r   ru   r¿   s      r   rv   zExpressionDomain.lcm  s   € Ø�uŠu�Q‰xŒxˆr   N),r+   rw   rx   ry   Úis_SymbolicDomainÚis_EXr   r	   r{   r…   rQ   ÚoneÚrepÚhas_assoc_RingÚhas_assoc_Fieldr   rj   r-   rƒ   r†   r�   r�   r“   r•   r—   r™   rœ   rž   r    r¢   r¤   r¦   r¨   rª   r¬   r¯   r²   rµ   r·   rº   r6   r;   rq   rv   r=   r   r   r   r      s>  € € € € € à-Ð-à $Ð$Ð˜ðB=ð B=ð B=ð B=ð B=�]Ð$6ñ B=ô B=ð B=ðH €Eàˆ:�a‰=Œ=€DØ
ˆ*�Q‰-Œ-€Cà
€Cà€NØ€Oðð ð ð"ð "ð "ðð ð ðð ð ðð ð ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ðð ð ðð ð ðð ð ð2ð 2ð 2ð/ð /ð /ð5ð 5ð 5ð5ð 5ð 5ðð ð ðð ð ðð ð ðð ð ð ð r   r   N)ry   Ú
sympy.corer   r   Ú!sympy.polys.domains.domainelementr   Ú&sympy.polys.domains.characteristiczeror   Úsympy.polys.domains.fieldr   Ú sympy.polys.domains.simpledomainr   Úsympy.polys.polyutilsr	   Úsympy.utilitiesr
   r@   r   r/   r=   r   r   ú<module>rÏ      s  ðØ 9Ð 9ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø EÐ EÐ EÐ EÐ EÐ EØ +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø "Ð "Ð "Ð "Ð "Ð "à °5ÈØ¨U¸5ð
Bð 
B€ð ðCð Cð Cð Cð C�uÐ0°,ñ Cô Cñ „ðCðL ÐÑÔ€€€r   