Ë
    7^(h©  ã                   ó¦   — 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y)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+y&)'Ú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y)úExpressionDomain.ExpressionzAn arbitrary expression. ©Úexc                 ót   — t        || j                  «      st        |«      | _        y |j                  | _        y ©N)Ú
isinstanceÚ	__class__r   r   )Úselfr   s     úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/domains/expressiondomain.pyÚ__init__z$ExpressionDomain.Expression.__init__   s&   € Ü˜b $§.¡.Ô1Ü! "›+�•àŸ%™%�•ó    c                 ó2   — dt        | j                  «      z  S ©NzEX(%s))Úreprr   ©Úfs    r   Ú__repr__z$ExpressionDomain.Expression.__repr__    s   € Øœd 1§4¡4›jÑ(Ð(r   c                 ó2   — dt        | j                  «      z  S r!   )Ústrr   r#   s    r   Ú__str__z#ExpressionDomain.Expression.__str__#   s   € Øœc !§$¡$›iÑ'Ð'r   c                 óX   — t        | j                  j                  | j                  f«      S r   )Úhashr   Ú__name__r   ©r   s    r   Ú__hash__z$ExpressionDomain.Expression.__hash__&   s    € Ü˜Ÿ™×0Ñ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‘4ˆKr   c                 óZ   — | j                  | j                  j                  «       d   «      S )Nr   ©r   r   Úas_numer_denomr#   s    r   Únumerz!ExpressionDomain.Expression.numer/   ó#   € Ø—;‘;˜qŸt™t×2Ñ2Ó4°QÑ7Ó8Ð8r   c                 óZ   — | j                  | j                  j                  «       d   «      S ©Né   r4   r#   s    r   Údenomz!ExpressionDomain.Expression.denom2   r7   r   c                 óh   — | j                   |j                  «       j                  di t        ¤Ž«      S )N© )r   ÚcancelÚexpandÚeflags)r$   r   s     r   Úsimplifyz$ExpressionDomain.Expression.simplify5   s(   € Ø—;‘;Ð1˜rŸy™y›{×1Ñ1Ñ;´FÑ;Ó<Ð<r   c                 óJ   — | j                  t        | j                  «      «      S r   )r   Úabsr   r#   s    r   Ú__abs__z#ExpressionDomain.Expression.__abs__8   s   € Ø—;‘;œs 1§4¡4›yÓ)Ð)r   c                 ó:   — | j                  | j                   «      S r   )r   r   r#   s    r   Ú__neg__z#ExpressionDomain.Expression.__neg__;   s   € Ø—;‘; §¡˜uÓ%Ð%r   c                 óD   — 	 | j                  |«      S # t        $ r Y y w xY wr   )r   r   ©r$   Úgs     r   Ú_to_exz"ExpressionDomain.Expression._to_ex>   s'   € ðØ—{‘{ 1“~Ð%øÜò Ùðús   ‚ “	žc                 ól   — | j                   j                  «       |j                   j                  «       k  S r   )r   Úsort_keyrH   s     r   Ú__lt__z"ExpressionDomain.Expression.__lt__D   s!   € Ø—4‘4—=‘=“? Q§T¡T§]¡]£_Ñ4Ð4r   c                 óØ   — | j                  |«      }|€t        S |t        j                  k(  r| S | t        j                  k(  r|S | j	                  | j
                  |j
                  z   «      S r   ©rJ   ÚNotImplementedr/   ÚzerorA   r   rH   s     r   Ú__add__z#ExpressionDomain.Expression.__add__G   sU   € Ø—‘˜“ˆAàˆyÜ%Ð%Ø”b—g‘g’Ø�Ø”b—g‘g’Ø�à—z‘z !§$¡$¨¯©¡+Ó.Ð.r   c                 óp   — | j                  | j                  |«      j                  | j                  z   «      S r   ©rA   r   r   rH   s     r   Ú__radd__z$ExpressionDomain.Expression.__radd__S   ó(   € Ø—:‘:˜aŸk™k¨!›n×/Ñ/°!·$±$Ñ6Ó7Ð7r   c                 óÚ   — | j                  |«      }|€t        S |t        j                  k(  r| S | t        j                  k(  r| S | j	                  | j
                  |j
                  z
  «      S r   rO   rH   s     r   Ú__sub__z#ExpressionDomain.Expression.__sub__V   sW   € Ø—‘˜“ˆAàˆyÜ%Ð%Ø”b—g‘g’Ø�Ø”b—g‘g’Ø�r�	à—z‘z !§$¡$¨¯©¡+Ó.Ð.r   c                 óp   — | j                  | j                  |«      j                  | j                  z
  «      S r   rT   rH   s     r   Ú__rsub__z$ExpressionDomain.Expression.__rsub__b   rV   r   c                 ót  — | j                  |«      }|€t        S t        j                  | |fv rt        j                  S | j                  j
                  r>|j                  j
                  r(| j                  | j                  |j                  z  «      S | j                  | 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‰w˜1˜a˜&Ñ Ü—w‘w�Ø—‘—’ A§D¡D§N¢NØ—{‘{ 1§4¡4¨¯©¡9Ó-Ð-à—:‘:˜aŸd™d 1§4¡4™iÓ(Ð(r   c                 óp   — | j                  | j                  |«      j                  | j                  z  «      S r   rT   rH   s     r   Ú__rmul__z$ExpressionDomain.Expression.__rmul__r   ó(   € Ø—:‘:˜aŸk™k¨!›n×/Ñ/°·±Ñ4Ó5Ð5r   c                 ó„   — | j                  |«      }|�(| j                  | j                  |j                  z  «      S t        S r   ©rJ   rA   r   rP   )r$   Úns     r   Ú__pow__z#ExpressionDomain.Expression.__pow__u   s5   € Ø—‘˜“ˆAàˆ}Ø—z‘z !§$¡$¨¯©¡*Ó-Ð-ä%Ð%r   c                 ó„   — | j                  |«      }|�(| j                  | j                  |j                  z  «      S t        S r   rb   rH   s     r   Ú__truediv__z'ExpressionDomain.Expression.__truediv__}   s5   € Ø—‘˜“ˆAàˆ}Ø—z‘z !§$¡$ q§t¡t¡)Ó,Ð,ä%Ð%r   c                 óp   — | j                  | j                  |«      j                  | j                  z  «      S r   rT   rH   s     r   Ú__rtruediv__z(ExpressionDomain.Expression.__rtruediv__…   r`   r   c                 óR   — | j                   | j                  |«      j                   k(  S r   )r   r   rH   s     r   Ú__eq__z"ExpressionDomain.Expression.__eq__ˆ   s   € Ø—4‘4˜1Ÿ;™; q›>×,Ñ,Ñ,Ð,r   c                 ó   — | |k(   S r   r=   rH   s     r   Ú__ne__z"ExpressionDomain.Expression.__ne__‹   s   € Ø˜A‘v�:Ðr   c                 ó0   — | j                   j                   S r   )r   Úis_zeror#   s    r   Ú__bool__z$ExpressionDomain.Expression.__bool__Ž   s   € Ø—t‘t—|‘|Ð#Ð#r   c                 ó„   — ddl m} | j                   || j                  | j                  |«      j                  «      «      S )Nr   )Úgcd)Úsympy.polysrq   r   r   )r$   rI   rq   s      r   rq   zExpressionDomain.Expression.gcd‘   ó-   € Ý'Ø—;‘;™s 1§4¡4¨¯©°Q«×):Ñ):Ó;Ó<Ð<r   c                 ó„   — ddl m} | j                   || j                  | 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ò	=ò	*ò	&ò	ò	5ò
	/ò	8ò
	/ò	8ò	)ò	6ò	&ò	&ò	6ò	-ò	ò	$ò	=ó	=r   r{   r   r:   r/   Fc                  ó   — y r   r=   r,   s    r   r   zExpressionDomain.__init__£   s   € Ør   c                 ó0   — t        |t        «      ryt        S )NT)r   r   rP   )r   Úothers     r   rj   zExpressionDomain.__eq__¦   s   € Ü�eÔ-Ô.Øä!Ð!r   c                 ó   — t        d«      S )Nr/   )r*   r,   s    r   r-   zExpressionDomain.__hash__¬   s   € Ü�D‹zÐr   c                 ó"   — |j                  «       S )z!Convert ``a`` to a SymPy object. )r2   ©r   Úas     r   Úto_sympyzExpressionDomain.to_sympy¯   s   € à�y‰y‹{Ðr   c                 ó$   — | j                  |«      S )z)Convert SymPy's expression to ``dtype``. )Údtyper�   s     r   Ú
from_sympyzExpressionDomain.from_sympy³   s   € à�z‰z˜!‹}Ðr   c                 ó0   —  | |j                  |«      «      S ©z.Convert a Python ``int`` object to ``dtype``. ©rƒ   ©ÚK1r‚   ÚK0s      r   Úfrom_ZZzExpressionDomain.from_ZZ·   ó   € á�"—+‘+˜a“.Ó!Ð!r   c                 ó0   —  | |j                  |«      «      S rˆ   r‰   rŠ   s      r   Úfrom_ZZ_pythonzExpressionDomain.from_ZZ_python»   rŽ   r   c                 ó0   —  | |j                  |«      «      S ©z3Convert a Python ``Fraction`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_QQzExpressionDomain.from_QQ¿   rŽ   r   c                 ó0   —  | |j                  |«      «      S r’   r‰   rŠ   s      r   Úfrom_QQ_pythonzExpressionDomain.from_QQ_pythonÃ   rŽ   r   c                 ó0   —  | |j                  |«      «      S )z,Convert a GMPY ``mpz`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_ZZ_gmpyzExpressionDomain.from_ZZ_gmpyÇ   rŽ   r   c                 ó0   —  | |j                  |«      «      S )z,Convert a GMPY ``mpq`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_QQ_gmpyzExpressionDomain.from_QQ_gmpyË   rŽ   r   c                 ó0   —  | |j                  |«      «      S ©z4Convert a ``GaussianRational`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_GaussianIntegerRingz)ExpressionDomain.from_GaussianIntegerRingÏ   rŽ   r   c                 ó0   —  | |j                  |«      «      S r›   r‰   rŠ   s      r   Úfrom_GaussianRationalFieldz+ExpressionDomain.from_GaussianRationalFieldÓ   rŽ   r   c                 ó0   —  | |j                  |«      «      S )z(Convert an ``ANP`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_AlgebraicFieldz$ExpressionDomain.from_AlgebraicField×   rŽ   r   c                 ó0   —  | |j                  |«      «      S )z.Convert a mpmath ``mpf`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_RealFieldzExpressionDomain.from_RealFieldÛ   rŽ   r   c                 ó0   —  | |j                  |«      «      S )z.Convert a mpmath ``mpc`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_ComplexFieldz"ExpressionDomain.from_ComplexFieldß   rŽ   r   c                 ó0   —  | |j                  |«      «      S )z'Convert a ``DMP`` object to ``dtype``. r‰   rŠ   s      r   Úfrom_PolynomialRingz$ExpressionDomain.from_PolynomialRingã   rŽ   r   c                 ó0   —  | |j                  |«      «      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                 óP   — |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‰t× Ñ Ó" 1Ñ%×1Ñ1Ð1r   c                 ó6   — |j                   j                  «       S )z#Returns True if ``a`` is negative. )r   Úcould_extract_minus_signr�   s     r   Úis_negativezExpressionDomain.is_negativeû   s   € à�t‰t×,Ñ,Ó.Ð.r   c                 óP   — |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‰t× Ñ Ó" 1Ñ%×4Ñ4Ð4r   c                 óP   — |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                 ó"   — |j                  «       S )zReturns numerator of ``a``. )r6   r�   s     r   r6   zExpressionDomain.numer  ó   € à�w‰w‹yÐr   c                 ó"   — |j                  «       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   € Ù�A‹wˆr   c                 ó$   — |j                  |«      S r   ru   r¿   s      r   rv   zExpressionDomain.lcm  s   € Ø�u‰u�Q‹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=�]Ð$6ô B=ðH €Eá�a‹=€DÙ
�Q‹-€Cà
€Cà€NØ€Oòò"òòòò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"òòòò2ò/ò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Ï      se   ðÙ 9÷ -Ý ;Ý EÝ +Ý 9Ý 4Ý "à °5ÈØ¨U¸5ñ
B€ð ôC�uÐ0°,ó Có ðCñL Ó�r   