ó
    Š*£h©  ã                   ó¦   • S r SSKJrJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  S	S
S	S	S	S	S	S.r\ " S S\	\\5      5       r\" 5       rg)z3Implementation of :class:`ExpressionDomain` class. é    )ÚsympifyÚSympifyError)ÚDomainElement)ÚCharacteristicZero)ÚField)ÚSimpleDomain)ÚPicklableWithSlots)ÚpublicFT)ÚdeepÚmulÚ	power_expÚ
power_baseÚbasicÚmultinomialÚlogc                   ó  • \ rS rSrSrS=rr " S S\\5      r	\	r
\	" S5      r\	" S5      rSrS	rSrS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)S$ r*S% r+S& r,S'r-g())ÚExpressionDomainé   z#A class for arbitrary expressions. Tc                   ó¾   • \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r Sr!g) ÚExpressionDomain.Expressioné   zAn arbitrary expression. ©Úexc                 ó|   • [        XR                  5      (       d  [        U5      U l        g UR                  U l        g ©N)Ú
isinstanceÚ	__class__r   r   )Úselfr   s     Úa/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/polys/domains/expressiondomain.pyÚ__init__Ú$ExpressionDomain.Expression.__init__   s'   € Ü˜b§.¡.×1Ñ1Ü! "›+�•àŸ%™%�•ó    c                 ó2   • S[        U R                  5      -  $ ©NzEX(%s))Úreprr   ©Úfs    r   Ú__repr__Ú$ExpressionDomain.Expression.__repr__    s   € Øœd 1§4¡4›jÑ(Ð(r"   c                 ó2   • S[        U R                  5      -  $ r$   )Ústrr   r&   s    r   Ú__str__Ú#ExpressionDomain.Expression.__str__#   s   € Øœc !§$¡$›iÑ'Ð'r"   c                 óX   • [        U R                  R                  U R                  45      $ r   )Úhashr   Ú__name__r   ©r   s    r   Ú__hash__Ú$ExpressionDomain.Expression.__hash__&   s    € Ü˜Ÿ™×0Ñ0°$·'±'Ð:Ó;Ð;r"   c                 ó   • [         $ r   )ÚEXr1   s    r   ÚparentÚ"ExpressionDomain.Expression.parent)   s   € ÜˆIr"   c                 ó   • U R                   $ r   r   r&   s    r   Úas_exprÚ#ExpressionDomain.Expression.as_expr,   s   € Ø—4‘4ˆKr"   c                 óZ   • U R                  U R                  R                  5       S   5      $ )Nr   ©r   r   Úas_numer_denomr&   s    r   ÚnumerÚ!ExpressionDomain.Expression.numer/   ó#   € Ø—;‘;˜qŸt™t×2Ñ2Ó4°QÑ7Ó8Ð8r"   c                 óZ   • U R                  U R                  R                  5       S   5      $ ©Né   r<   r&   s    r   ÚdenomÚ!ExpressionDomain.Expression.denom2   r@   r"   c                 óh   • U R                  UR                  5       R                  " S0 [        D65      $ )N© )r   ÚcancelÚexpandÚeflags)r'   r   s     r   ÚsimplifyÚ$ExpressionDomain.Expression.simplify5   s%   € Ø—;‘;˜rŸy™y›{×1Ò1Ñ;´FÑ;Ó<Ð<r"   c                 óJ   • U R                  [        U R                  5      5      $ r   )r   Úabsr   r&   s    r   Ú__abs__Ú#ExpressionDomain.Expression.__abs__8   s   € Ø—;‘;œs 1§4¡4›yÓ)Ð)r"   c                 ó:   • U R                  U R                  * 5      $ r   )r   r   r&   s    r   Ú__neg__Ú#ExpressionDomain.Expression.__neg__;   s   € Ø—;‘; §¡˜uÓ%Ð%r"   c                 óF   •  U R                  U5      $ ! [         a     g f = fr   )r   r   ©r'   Úgs     r   Ú_to_exÚ"ExpressionDomain.Expression._to_ex>   s'   € ðØ—{‘{ 1“~Ð%øÜó Ùðús   ‚ “
 Ÿ c                 ól   • U R                   R                  5       UR                   R                  5       :  $ r   )r   Úsort_keyrU   s     r   Ú__lt__Ú"ExpressionDomain.Expression.__lt__D   s!   € Ø—4‘4—=‘=“? Q§T¡T§]¡]£_Ñ4Ð4r"   c                 óÞ   • U R                  U5      nUc  [        $ U[        R                  :X  a  U $ U [        R                  :X  a  U$ U R	                  U R
                  UR
                  -   5      $ r   ©rW   ÚNotImplementedr5   ÚzerorK   r   rU   s     r   Ú__add__Ú#ExpressionDomain.Expression.__add__G   sU   € Ø—‘˜“ˆAà‰yÜ%Ð%Ø”b—g‘g“Ø�Ø”b—g‘g“Ø�à—z‘z !§$¡$¨¯©¡+Ó.Ð.r"   c                 óp   • U R                  U R                  U5      R                  U R                  -   5      $ r   ©rK   r   r   rU   s     r   Ú__radd__Ú$ExpressionDomain.Expression.__radd__S   ó(   € Ø—:‘:˜aŸk™k¨!›n×/Ñ/°!·$±$Ñ6Ó7Ð7r"   c                 óà   • U R                  U5      nUc  [        $ U[        R                  :X  a  U $ U [        R                  :X  a  U* $ U R	                  U R
                  UR
                  -
  5      $ r   r^   rU   s     r   Ú__sub__Ú#ExpressionDomain.Expression.__sub__V   sW   € Ø—‘˜“ˆAà‰yÜ%Ð%Ø”b—g‘g“Ø�Ø”b—g‘g“Ø�r�	à—z‘z !§$¡$¨¯©¡+Ó.Ð.r"   c                 óp   • U R                  U R                  U5      R                  U R                  -
  5      $ r   rd   rU   s     r   Ú__rsub__Ú$ExpressionDomain.Expression.__rsub__b   rg   r"   c                 óŒ  • U R                  U5      nUc  [        $ [        R                  X4;   a  [        R                  $ U R                  R
                  (       aC  UR                  R
                  (       a(  U R                  U R                  UR                  -  5      $ U R                  U R                  UR                  -  5      $ r   )rW   r_   r5   r`   r   Ú	is_Numberr   rK   rU   s     r   Ú__mul__Ú#ExpressionDomain.Expression.__mul__e   s|   € Ø—‘˜“ˆAà‰yÜ%Ð%ä�w‰w˜1˜&Ó Ü—w‘w�Ø—‘—— A§D¡D§N§NØ—{‘{ 1§4¡4¨¯©¡9Ó-Ð-à—:‘:˜aŸd™d 1§4¡4™iÓ(Ð(r"   c                 óp   • U R                  U R                  U5      R                  U R                  -  5      $ r   rd   rU   s     r   Ú__rmul__Ú$ExpressionDomain.Expression.__rmul__r   ó(   € Ø—:‘:˜aŸk™k¨!›n×/Ñ/°·±Ñ4Ó5Ð5r"   c                 ó†   • U R                  U5      nUb(  U R                  U R                  UR                  -  5      $ [        $ r   ©rW   rK   r   r_   )r'   Úns     r   Ú__pow__Ú#ExpressionDomain.Expression.__pow__u   s5   € Ø—‘˜“ˆAà‰}Ø—z‘z !§$¡$¨¯©¡*Ó-Ð-ä%Ð%r"   c                 ó†   • U R                  U5      nUb(  U R                  U R                  UR                  -  5      $ [        $ r   rw   rU   s     r   Ú__truediv__Ú'ExpressionDomain.Expression.__truediv__}   s5   € Ø—‘˜“ˆAà‰}Ø—z‘z !§$¡$ q§t¡t¡)Ó,Ð,ä%Ð%r"   c                 óp   • U R                  U R                  U5      R                  U R                  -  5      $ r   rd   rU   s     r   Ú__rtruediv__Ú(ExpressionDomain.Expression.__rtruediv__…   ru   r"   c                 óR   • U R                   U R                  U5      R                   :H  $ r   )r   r   rU   s     r   Ú__eq__Ú"ExpressionDomain.Expression.__eq__ˆ   s   € Ø—4‘4˜1Ÿ;™; q›>×,Ñ,Ñ,Ð,r"   c                 ó   • X:X  + $ r   rG   rU   s     r   Ú__ne__Ú"ExpressionDomain.Expression.__ne__‹   s
   € Ø’:Ðr"   c                 ó8   • U R                   R                  (       + $ r   )r   Úis_zeror&   s    r   Ú__bool__Ú$ExpressionDomain.Expression.__bool__Ž   s   € Ø—t‘t—|‘|Ô#Ð#r"   c                 ó„   • SSK Jn  U R                  U" U R                  U R                  U5      R                  5      5      $ )Nr   )Úgcd)Úsympy.polysrŒ   r   r   )r'   rV   rŒ   s      r   rŒ   ÚExpressionDomain.Expression.gcd‘   ó-   € Ý'Ø—;‘;™s 1§4¡4¨¯©°Q«×):Ñ):Ó;Ó<Ð<r"   c                 ó„   • SSK Jn  U R                  U" U R                  U R                  U5      R                  5      5      $ )Nr   ©Úlcm)r�   r’   r   r   )r'   rV   r’   s      r   r’   ÚExpressionDomain.Expression.lcm•   r�   r"   N)"r0   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r    r(   r,   r2   r6   r9   r>   rD   rK   rO   rR   rW   r[   ra   re   ri   rl   rp   rs   ry   r|   r   r‚   r…   r‰   rŒ   r’   Ú__static_attributes__rG   r"   r   Ú
Expressionr      s‘   † Ù'àˆ	ò	 ò	)ò	(ò	<ò	ò	ò	9ò	9ò	=ò	*ò	&ò	ò	5ò
	/ò	8ò
	/ò	8ò	)ò	6ò	&ò	&ò	6ò	-ò	ò	$ò	=õ	=r"   rš   r   rC   r5   Fc                 ó   • g r   rG   r1   s    r   r    ÚExpressionDomain.__init__£   s   € Ør"   c                 ó:   • [        U[        5      (       a  g[        $ )NT)r   r   r_   )r   Úothers     r   r‚   ÚExpressionDomain.__eq__¦   s   € Ü�eÔ-×.Ñ.Øä!Ð!r"   c                 ó   • [        S5      $ )Nr5   )r/   r1   s    r   r2   ÚExpressionDomain.__hash__¬   s   € Ü�D‹zÐr"   c                 ó"   • UR                  5       $ )z!Convert ``a`` to a SymPy object. )r9   ©r   Úas     r   Úto_sympyÚExpressionDomain.to_sympy¯   s   € à�y‰y‹{Ðr"   c                 ó$   • U R                  U5      $ )z)Convert SymPy's expression to ``dtype``. )Údtyper£   s     r   Ú
from_sympyÚExpressionDomain.from_sympy³   s   € à�z‰z˜!‹}Ðr"   c                 ó0   • U " UR                  U5      5      $ ©z.Convert a Python ``int`` object to ``dtype``. ©r¥   ©ÚK1r¤   ÚK0s      r   Úfrom_ZZÚExpressionDomain.from_ZZ·   ó   € á�"—+‘+˜a“.Ó!Ð!r"   c                 ó0   • U " UR                  U5      5      $ r¬   r­   r®   s      r   Úfrom_ZZ_pythonÚExpressionDomain.from_ZZ_python»   r³   r"   c                 ó0   • U " UR                  U5      5      $ ©z3Convert a Python ``Fraction`` object to ``dtype``. r­   r®   s      r   Úfrom_QQÚExpressionDomain.from_QQ¿   r³   r"   c                 ó0   • U " UR                  U5      5      $ r¸   r­   r®   s      r   Úfrom_QQ_pythonÚExpressionDomain.from_QQ_pythonÃ   r³   r"   c                 ó0   • U " UR                  U5      5      $ )z,Convert a GMPY ``mpz`` object to ``dtype``. r­   r®   s      r   Úfrom_ZZ_gmpyÚExpressionDomain.from_ZZ_gmpyÇ   r³   r"   c                 ó0   • U " UR                  U5      5      $ )z,Convert a GMPY ``mpq`` object to ``dtype``. r­   r®   s      r   Úfrom_QQ_gmpyÚExpressionDomain.from_QQ_gmpyË   r³   r"   c                 ó0   • U " UR                  U5      5      $ ©z4Convert a ``GaussianRational`` object to ``dtype``. r­   r®   s      r   Úfrom_GaussianIntegerRingÚ)ExpressionDomain.from_GaussianIntegerRingÏ   r³   r"   c                 ó0   • U " UR                  U5      5      $ rÅ   r­   r®   s      r   Úfrom_GaussianRationalFieldÚ+ExpressionDomain.from_GaussianRationalFieldÓ   r³   r"   c                 ó0   • U " UR                  U5      5      $ )z(Convert an ``ANP`` object to ``dtype``. r­   r®   s      r   Úfrom_AlgebraicFieldÚ$ExpressionDomain.from_AlgebraicField×   r³   r"   c                 ó0   • U " UR                  U5      5      $ )z.Convert a mpmath ``mpf`` object to ``dtype``. r­   r®   s      r   Úfrom_RealFieldÚExpressionDomain.from_RealFieldÛ   r³   r"   c                 ó0   • U " UR                  U5      5      $ )z.Convert a mpmath ``mpc`` object to ``dtype``. r­   r®   s      r   Úfrom_ComplexFieldÚ"ExpressionDomain.from_ComplexFieldß   r³   r"   c                 ó0   • U " UR                  U5      5      $ )z'Convert a ``DMP`` object to ``dtype``. r­   r®   s      r   Úfrom_PolynomialRingÚ$ExpressionDomain.from_PolynomialRingã   r³   r"   c                 ó0   • U " UR                  U5      5      $ )z'Convert a ``DMF`` object to ``dtype``. r­   r®   s      r   Úfrom_FractionFieldÚ#ExpressionDomain.from_FractionFieldç   r³   r"   c                 ó   • U$ )z&Convert a ``EX`` object to ``dtype``. rG   r®   s      r   Úfrom_ExpressionDomainÚ&ExpressionDomain.from_ExpressionDomainë   s   € àˆr"   c                 ó   • U $ )z)Returns a ring associated with ``self``. rG   r1   s    r   Úget_ringÚExpressionDomain.get_ringï   ó   € àˆr"   c                 ó   • U $ )z*Returns a field associated with ``self``. rG   r1   s    r   Ú	get_fieldÚExpressionDomain.get_fieldó   rà   r"   c                 óP   • UR                   R                  5       S   R                  $ )z#Returns True if ``a`` is positive. r   )r   Úas_coeff_mulÚis_positiver£   s     r   ræ   ÚExpressionDomain.is_positive÷   s    € à�t‰t× Ñ Ó" 1Ñ%×1Ñ1Ð1r"   c                 ó6   • UR                   R                  5       $ )z#Returns True if ``a`` is negative. )r   Úcould_extract_minus_signr£   s     r   Úis_negativeÚExpressionDomain.is_negativeû   s   € à�t‰t×,Ñ,Ó.Ð.r"   c                 óP   • UR                   R                  5       S   R                  $ )z'Returns True if ``a`` is non-positive. r   )r   rå   Úis_nonpositiver£   s     r   rí   ÚExpressionDomain.is_nonpositiveÿ   ó    € à�t‰t× Ñ Ó" 1Ñ%×4Ñ4Ð4r"   c                 óP   • UR                   R                  5       S   R                  $ )z'Returns True if ``a`` is non-negative. r   )r   rå   Úis_nonnegativer£   s     r   rñ   ÚExpressionDomain.is_nonnegative  rï   r"   c                 ó"   • UR                  5       $ )zReturns numerator of ``a``. )r>   r£   s     r   r>   ÚExpressionDomain.numer  ó   € à�w‰w‹yÐr"   c                 ó"   • UR                  5       $ )zReturns denominator of ``a``. )rD   r£   s     r   rD   ÚExpressionDomain.denom  rõ   r"   c                 ó   • U " S5      $ rB   rG   ©r   r¤   Úbs      r   rŒ   ÚExpressionDomain.gcd  s   € Ù�A‹wˆr"   c                 ó$   • UR                  U5      $ r   r‘   rù   s      r   r’   ÚExpressionDomain.lcm  s   € Ø�u‰u�Q‹xˆr"   rG   N).r0   r”   r•   r–   r—   Úis_SymbolicDomainÚis_EXr   r	   rš   r¨   r`   ÚoneÚrepÚhas_assoc_RingÚhas_assoc_Fieldr    r‚   r2   r¥   r©   r±   rµ   r¹   r¼   r¿   rÂ   rÆ   rÉ   rÌ   rÏ   rÒ   rÕ   rØ   rÛ   rÞ   râ   ræ   rê   rí   rñ   r>   rD   rŒ   r’   r™   rG   r"   r   r   r      sÛ   † á-à $Ð$Ð˜ôB=�]Ð$6ô B=ðH €Eá�a‹=€DÙ
�Q‹-€Cà
€Cà€NØ€Oòò"òòòò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"òòòò2ò/ò5ò5òòòõr"   r   N)r—   Ú
sympy.corer   r   Ú!sympy.polys.domains.domainelementr   Ú&sympy.polys.domains.characteristiczeror   Úsympy.polys.domains.fieldr   Ú sympy.polys.domains.simpledomainr   Úsympy.polys.polyutilsr	   Úsympy.utilitiesr
   rJ   r   r5   rG   r"   r   Ú<module>r     se   ðÙ 9÷ -Ý ;Ý EÝ +Ý 9Ý 4Ý "à °5ÈØ¨U¸5ñ
B€ð ôC�uÐ0°,ó Có ðCñL Ó�r"   