
    \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     \/var/www/auris/envauris/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    d144j((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    44Kr"   c                 Z    U R                  U R                  R                  5       S   5      $ )Nr   r   r   as_numer_denomr&   s    r   numer!ExpressionDomain.Expression.numer/   #    ;;qtt224Q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%    ;;ryy{11;F;<<r"   c                 J    U R                  [        U R                  5      5      $ r   )r   absr   r&   s    r   __abs__#ExpressionDomain.Expression.__abs__8   s    ;;s144y))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!    44==?QTT]]_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%%bggbggzz!$$+..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   (    ::akk!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%%bggbggr	zz!$$+..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%%ww1& wwADDNN{{1449--::add144i((r"   c                 p    U R                  U R                  U5      R                  U R                  -  5      $ r   rd   rU   s     r   __rmul__$ExpressionDomain.Expression.__rmul__r   (    ::akk!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}zz!$$*--%%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}zz!$$qtt),,%%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    441;;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    tt||##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   -    ';;s144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    Dzr"   c                 "    UR                  5       $ )z!Convert ``a`` to a SymPy object. )r9   r   as     r   to_sympyExpressionDomain.to_sympy   s    yy{r"   c                 $    U R                  U5      $ )z)Convert SymPy's expression to ``dtype``. )dtyper   s     r   
from_sympyExpressionDomain.from_sympy   s    zz!}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     tt  "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    tt,,..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        tt  "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      wwy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    Awr"   c                 $    UR                  U5      $ r   r   r   s      r   r   ExpressionDomain.lcm  s    uuQx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U5
B Cu0, C CL r"   