
    Цi
]                        S r SSKJrJr  SSKJrJrJrJrJ	r	J
r
  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSKJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSKJ-r-  SSK.J/r/  SS	K0J1r1  SS
K2J3r3J4r4J5r5  SSK6J7r7  SSK8J9r9  SSK:J;r;  SSK<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrF  S rG\=R                  " \I\5      S 5       rJ\=R                  " \\\\\\\\5      S 5       rJ\=R                  " \5      S 5       rJ\=R                  " \\	5      S 5       rJ\=R                  " \5      S 5       rJ\=R                  " \ 5      S 5       rJ\=R                  " \3\7\55      S 5       rJ\>R                  " \5      S 5       rJ\>R                  " \5      S 5       rJ\>R                  " \\\\\\\5      S 5       rJ\>R                  " \5      S 5       rJ\>R                  " \\5      S 5       rJ\>R                  " \	5      S 5       rJ\>R                  " \#\$\%\+\,5      S 5       rJ\>R                  " \'5      S  5       rJ\>R                  " \"\&5      S! 5       rJ\>R                  " \!\)5      S" 5       rJ\?R                  " \5      S# 5       rJ\?R                  " \5      S$ 5       rJS% rL\@R                  " \ \\\\(\\\*\5	      S& 5       rJ\@R                  " \\\5      S' 5       rJ\@R                  " \5      S( 5       rJ\@R                  " \5      S) 5       rJ\@R                  " \5      S* 5       rJ\@R                  " \	5      S+ 5       rJ\@R                  " \%\+5      S, 5       rJ\@R                  " \'5      S- 5       rJ\@R                  " \)5      S. 5       rJ\@R                  " \3\7\55      S/ 5       rJ\AR                  " \M5      S0 5       rJ\AR                  " \\5      S1 5       rJ\AR                  " \\\	5      S2 5       rJ\BR                  " \M5      S3 5       rJ\BR                  " \5      S4 5       rJ\BR                  " \5      S5 5       rJ\BR                  " \	5      S6 5       rJ\BR                  " \%\+5      S7 5       rJ\BR                  " \'5      S8 5       rJ\BR                  " \45      S9 5       rJ\CR                  " \ \%\'\(\\)\\\*\+5
      S: 5       rJ\CR                  " \\5      S; 5       rJ\CR                  " \5      S< 5       rJ\CR                  " \\5      S= 5       rJ\CR                  " \	5      S> 5       rJ\CR                  " \3\7\55      S? 5       rJ\CR                  " \5      S@ 5       rJSA rN\DR                  " \5      SB 5       rJ\DR                  " \5      SC 5       rJ\DR                  " \5      SD 5       rJ\DR                  " \5      SE 5       rJ\DR                  " \	5      SF 5       rJ\DR                  " \)5      SG 5       rJ\DR                  " \'5      SH 5       rJ\DR                  " \\5      SI 5       rJ\DR                  " \5      SJ 5       rJ\ER                  " \M5      SK 5       rJ\ER                  " \5      SL 5       rJ\ER                  " \5      SM 5       rJ\ER                  " \	5      SN 5       rJ\ER                  " \45      SO 5       rJ\FR                  " \\\\\5      SP 5       rJ\FR                  " \\\\\5      SQ 5       rJ\FR                  " \\5      SR 5       rJ\FR                  " \	5      SS 5       rJ\FR                  " \5      ST 5       rJ\FR                  " \#\$\%\+\,5      SU 5       rJ\FR                  " \'5      SV 5       rJ\FR                  " \"\&5      SW 5       rJ\FR                  " \!\)5      SX 5       rJgY)ZzL
Handlers for predicates related to set membership: integer, rational, etc.
    )Qask)AddBasicExprMulPowS)AlgebraicNumberComplexInfinityExp1FloatGoldenRatioImaginaryUnitInfinityIntegerNaNNegativeInfinityNumberNumberSymbolPipiRationalTribonacciConstantE)
fuzzy_bool)Absacosacotasinatancoscotexpimlogresintan)I)Eq)	conjugate)Determinant
MatrixBaseTrace)MatrixElement)MDNotImplementedError   )test_closed_group   )
IntegerPredicateRationalPredicateIrrationalPredicateRealPredicateExtendedRealPredicateHermitianPredicateComplexPredicateImaginaryPredicateAntihermitianPredicateAlgebraicPredicatec                      [        U R                  5       5      nX-
  R                  S5      (       d  [        eg! [         a     gf = f)Nr   TF)introundequals	TypeErrorexprassumptionsis      ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sympy/assumptions/handlers/sets.py_IntegerPredicate_numberrI      sD    	DJJL!AH$$Q'' 		s   7: 
AAc                     gNT rE   rF   s     rH   _rN   (           c                     gNFrL   rM   s     rH   rN   rN   ,        rP   c                 0    U R                   nUc  [        eU$ N)
is_integerr1   rE   rF   rets      rH   rN   rN   1       
//C
{##JrP   c                 n    U R                   (       a  [        X5      $ [        X[        R                  5      $ )zg
* Integer + Integer       -> Integer
* Integer + !Integer      -> !Integer
* !Integer + !Integer -> ?
)	is_numberrI   r3   r   integerrM   s     rH   rN   rN   8   s'     ~~'::T		::rP   c                    U R                   (       a  [        X5      $ SnU R                   H  n[        [        R
                  " U5      U5      (       a  M*  UR                  (       aN  UR                  S:X  a%  [        [        R                  " SU -  5      U5      s  $ UR                  S-  ) (       a    gM  [        [        R                  " U5      U5      (       a  U(       a  SnM    g  g   U$ )z
* Integer*Integer      -> Integer
* Integer*Irrational   -> !Integer
* Odd/Even             -> !Integer
* Integer*Rational     -> ?
Tr4   r2   NF)
r[   rI   argsr   r   r\   is_Rationalqeven
irrational)rE   rF   _outputargs       rH   rN   rN   C   s     ~~'::Gyy199S>;//55A:qvvaf~{;;UUQY<  Q\\#&44#G  NrP   c                 \    [        [        R                  " U R                  S   5      U5      $ Nr   )r   r   r\   r^   rM   s     rH   rN   rN   _   s     qyy1&44rP   c                 \    [        [        R                  " U R                  S   5      U5      $ rf   )r   r   integer_elementsr^   rM   s     rH   rN   rN   c   "    q!!$))A,/==rP   c                     grK   rL   rM   s     rH   rN   rN   j   rO   rP   c                     g rU   rL   rM   s     rH   rN   rN   n   rO   rP   c                     grR   rL   rM   s     rH   rN   rN   r   rS   rP   c                 0    U R                   nUc  [        eU$ rU   )is_rationalr1   rW   s      rH   rN   rN   w   s    


C
{##JrP   c                     U R                   (       a  U R                  5       S   (       a  g[        X[        R                  5      $ )zm
* Rational + Rational     -> Rational
* Rational + !Rational    -> !Rational
* !Rational + !Rational   -> ?
r2   F)r[   as_real_imagr3   r   rationalrM   s     rH   rN   rN   ~   s0     ~~q!T

;;rP   c                 D   U R                   [        :X  aS  U R                  n[        [        R
                  " U5      U5      (       a!  [        [        R                  " U5      ) U5      $ g[        [        R                  " U R                  5      U5      (       a*  [        [        R
                  " U R                   5      U5      $ [        [        R
                  " U R                  5      U5      (       a1  [        [        R                  " U R                   5      U5      (       a  ggg)zq
* Rational ** Integer      -> Rational
* Irrational ** Rational   -> Irrational
* Rational ** Irrational   -> ?
NF)	baser   r$   r   r   rq   nonzeror\   primerE   rF   xs      rH   rN   rN      s     yyA~HHqzz!}k**		!}k22
199TXX,,1::dii(+66	QZZ!;	/	/qwwtyy!;// 0 
0rP   c                     U R                   S   n[        [        R                  " U5      U5      (       a!  [        [        R                  " U5      ) U5      $ g rf   r^   r   r   rq   rt   rv   s      rH   rN   rN      s@    		!A
1::a=+&&AIIaL=+.. 'rP   c                     U R                   n[        [        R                  " U5      U5      (       a!  [        [        R                  " U5      ) U5      $ g rU   )r$   r   r   rq   rt   rv   s      rH   rN   rN      s<    A
1::a=+&&AIIaL=+.. 'rP   c                 n    U R                   S   n[        [        R                  " U5      U5      (       a  gg Nr   F)r^   r   r   rq   rv   s      rH   rN   rN      s,    		!A
1::a=+&& 'rP   c                     U R                   S   n[        [        R                  " U5      U5      (       a$  [        [        R                  " US-
  5      ) U5      $ g Nr   r2   ry   rv   s      rH   rN   rN      sF    		!A
1::a=+&&AIIa!e$$k22 'rP   c                 0    U R                   nUc  [        eU$ rU   )is_irrationalr1   rW   s      rH   rN   rN      s    


C
{##JrP   c                     [        [        R                  " U 5      U5      nU(       a+  [        [        R                  " U 5      U5      nUc  g U(       + $ U$ rU   )r   r   realrq   )rE   rF   _real	_rationals       rH   rN   rN      sD    tk*E

4(+6	}rP   c                 v    U R                  5       S   R                  S5      nUR                  S:w  a  U(       + $ g )Nr2   r4   rp   evalf_precrD   s      rH   _RealPredicate_numberr      9     	A$$Q'Aww!|u rP   c                     grK   rL   rM   s     rH   rN   rN           rP   c                     grR   rL   rM   s     rH   rN   rN          rP   c                 0    U R                   nUc  [        eU$ rU   )is_realr1   rW   s      rH   rN   rN      s    
,,C
{##JrP   c                 n    U R                   (       a  [        X5      $ [        X[        R                  5      $ )zH
* Real + Real              -> Real
* Real + (Complex & !Real) -> !Real
)r[   r   r3   r   r   rM   s     rH   rN   rN      s'     ~~$T77T77rP   c                    U R                   (       a  [        X5      $ SnU R                   HV  n[        [        R
                  " U5      U5      (       a  M*  [        [        R                  " U5      U5      (       a  US-  nMV    g   U$ )zh
* Real*Real               -> Real
* Real*Imaginary          -> !Real
* Imaginary*Imaginary     -> Real
TN)r[   r   r^   r   r   r   	imaginary)rE   rF   resultrd   s       rH   rN   rN      sj     ~~$T77Fyyqvvc{K((S!;//d]F  rP   c                    U R                   (       a  [        X5      $ U R                  [        :X  aY  [	        [
        R                  " U R                  [        -  [        -  5      [
        R                  " U R                  5      -  U5      $ U R                  R                  [        :X  d:  U R                  R                  (       Ga  U R                  R                  [        :X  a  [	        [
        R                  " U R                  R                  5      U5      (       a0  [	        [
        R                  " U R                  5      U5      (       a  gU R                  R                  [        -  [        -  n[	        [
        R                  " SU-  5      U5      (       a>  [	        [
        R                  " [        R                  U-  U R                  -  5      U5      $ g[	        [
        R                  " U R                  5      U5      (       ad  [	        [
        R                  " U R                  5      U5      (       a5  [	        [
        R                   " U R                  5      U5      nUb  U(       + $ g[	        [
        R                  " U R                  5      U5      (       a8  [	        [
        R                  " [#        U R                  5      5      U5      nUb  U$ [	        [
        R                  " U R                  5      U5      (       Ga@  [	        [
        R                  " U R                  5      U5      (       Ga  U R                  R$                  (       ac  [	        [
        R&                  " U R                  R(                  5      U5      (       a*  [	        [
        R*                  " U R                  5      U5      $ [	        [
        R                  " U R                  5      U5      (       a  g[	        [
        R*                  " U R                  5      U5      (       a  g[	        [
        R,                  " U R                  5      U5      (       a  gggg)a  
* Real**Integer              -> Real
* Positive**Real             -> Real
* Real**(Integer/Even)       -> Real if base is nonnegative
* Real**(Integer/Odd)        -> Real
* Imaginary**(Integer/Even)  -> Real
* Imaginary**(Integer/Odd)   -> not Real
* Imaginary**Real            -> ? since Real could be 0 (giving real)
                                or 1 (giving imaginary)
* b**Imaginary               -> Real if log(b) is imaginary and b != 0
                                and exponent != integer multiple of
                                I*pi/log(b)
* Real**Real                 -> ? e.g. sqrt(-1) is imaginary and
                                sqrt(2) is not
Tr4   NF)r[   r   rs   r   r   r   r\   r$   r*   r   r   funcis_Powr   r
   NegativeOneoddr&   r_   ra   r`   positivenegative)rE   rF   rG   r   imlogs        rH   rN   rN     s   " ~~$T77yyA~IIdhhqjm$qvvdhh'77
 	
 yy~~!1!1!1diinn6Iq{{499==);771;;txx(+66
 IIMM!OBqyy1~{++qvvq}}a/$((:;[II
1;;tyy!;//qyy"K00aeeDHHo{3Cw
1;;txx +..AKKDII/= L
166$))k**qvvdhh--xx##txxzz*K881::dii0+>>QYYtxx(+66QZZ		*K88QZZ		*K88 9 . +rP   c                 j    [        [        R                  " U R                  S   5      U5      (       a  gg Nr   T)r   r   r   r^   rM   s     rH   rN   rN   D  s(    
166$))A,-- .rP   c                     [        [        R                  " U R                  [        -  [
        -  5      [        R                  " U R                  5      -  U5      $ rU   )r   r   r\   r$   r*   r   r   rM   s     rH   rN   rN   I  s;    			$((1*R- 166$((#33[ rP   c                 \    [        [        R                  " U R                  S   5      U5      $ rf   )r   r   r   r^   rM   s     rH   rN   rN   O  s     qzz$))A,'55rP   c                 \    [        [        R                  " U R                  S   5      U5      $ rf   )r   r   real_elementsr^   rM   s     rH   rN   rN   S  s     qtyy|,k::rP   c                     [        [        R                  " U 5      [        R                  " U 5      -  [        R                  " U 5      -  [        R
                  " U 5      -  [        R                  " U 5      -  U5      $ rU   )r   r   negative_infiniter   zeror   positive_infiniterM   s     rH   rN   rN   Z  sj    q""4(D!" D!" $$T*	+
  rP   c                     grK   rL   rM   s     rH   rN   rN   c  rO   rP   c                 6    [        X[        R                  5      $ rU   )r3   r   extended_realrM   s     rH   rN   rN   g  s    T@@rP   c                 n    [        U [        5      (       a  g [        [        R                  " U 5      U5      $ rU   )
isinstancer.   r   r   r   rM   s     rH   rN   rN   n  s'    $
##qvvd|[))rP   c                 d    U R                   (       a  [        e[        X[        R                  5      $ )zN
* Hermitian + Hermitian  -> Hermitian
* Hermitian + !Hermitian -> !Hermitian
)r[   r1   r3   r   	hermitianrM   s     rH   rN   rN   t  s"     ~~##T<<rP   c                 p   U R                   (       a  [        eSnSnU R                   H  n[        [        R
                  " U5      U5      (       a  US-  nO'[        [        R                  " U5      U5      (       d    g[        [        R                  " U5      ) U5      (       d  M}  US-  nUS:  d  M    g   U$ )z
As long as there is at most only one noncommutative term:

* Hermitian*Hermitian         -> Hermitian
* Hermitian*Antihermitian     -> !Hermitian
* Antihermitian*Antihermitian -> Hermitian
r   Tr2   Nr[   r1   r^   r   r   antihermitianr   commutativerE   rF   nccountr   rd   s        rH   rN   rN   ~  s     ~~##GFyyqs#[11d]FQ[[%{33c""K00qLG{  rP   c                    U R                   (       a  [        eU R                  [        :X  a6  [	        [
        R                  " U R                  5      U5      (       a  g[        e[	        [
        R                  " U R                  5      U5      (       a0  [	        [
        R                  " U R                  5      U5      (       a  g[        e)z#
* Hermitian**Integer -> Hermitian
T)	r[   r1   rs   r   r   r   r   r$   r\   rM   s     rH   rN   rN     s|    
 ~~##yyA~q{{488$k22##
1;;tyy!;//qyy"K00
rP   c                 t    [        [        R                  " U R                  S   5      U5      (       a  g[        er   )r   r   r   r^   r1   rM   s     rH   rN   rN     s)    
1;;tyy|$k22
rP   c                 n    [        [        R                  " U R                  5      U5      (       a  g[        erK   )r   r   r   r$   r1   rM   s     rH   rN   rN     s%    
1;;txx +..
rP   c                     U R                   u  p#Sn[        U5       HI  n[        XS5       H7  n[        [        XU4   [	        XU4   5      5      5      nUc  S nUS:X  d  M6      g   MK     Uc  [
        eU$ NTFshaperanger   r+   r,   r1   matrF   rowscolsret_valrG   jconds           rH   rN   rN     sv    JDG4[qAbTIcQ$i,@ABD|u}    ##NrP   c                     grK   rL   rM   s     rH   rN   rN     r   rP   c                     grR   rL   rM   s     rH   rN   rN     r   rP   c                 0    U R                   nUc  [        eU$ rU   )
is_complexr1   rW   s      rH   rN   rN     rY   rP   c                 6    [        X[        R                  5      $ rU   )r3   r   complexrM   s     rH   rN   rN     s    T		::rP   c                 `    U R                   [        :X  a  g[        X[        R                  5      $ rK   )rs   r   r3   r   r   rM   s     rH   rN   rN     s!    yyA~T		::rP   c                 \    [        [        R                  " U R                  S   5      U5      $ rf   )r   r   complex_elementsr^   rM   s     rH   rN   rN     ri   rP   c                     g rU   rL   rM   s     rH   rN   rN     rO   rP   c                 v    U R                  5       S   R                  S5      nUR                  S:w  a  U(       + $ g )Nr   r4   r2   r   )rE   rF   rs      rH   _Imaginary_numberr     r   rP   c                     grK   rL   rM   s     rH   rN   rN     rO   rP   c                 0    U R                   nUc  [        eU$ rU   )is_imaginaryr1   rW   s      rH   rN   rN     s    


C
{##JrP   c                 R   U R                   (       a  [        X5      $ SnU R                   HV  n[        [        R
                  " U5      U5      (       a  M*  [        [        R                  " U5      U5      (       a  US-  nMV    g   US:X  a  gUS[        U R                  5      4;   a  gg)zi
* Imaginary + Imaginary -> Imaginary
* Imaginary + Complex   -> ?
* Imaginary + Real      -> !Imaginary
r   r2   TFNr[   r   r^   r   r   r   r   len)rE   rF   realsrd   s       rH   rN   rN     s     ~~ 33Eyyq{{3--k**QJE  A:QDII'' (rP   c                 F   U R                   (       a  [        X5      $ SnSnU R                   HV  n[        [        R
                  " U5      U5      (       a  US-  nM/  [        [        R                  " U5      U5      (       a  MV    g   U[        U R                  5      :X  a  gU$ )zB
* Real*Imaginary      -> Imaginary
* Imaginary*Imaginary -> Real
Fr   TNr   )rE   rF   r   r   rd   s        rH   rN   rN     s     ~~ 33FEyyq{{3--d]FQVVC[+..	  C		N"rP   c                    U R                   (       a  [        X5      $ U R                  [        :X  aU  U R                  [
        -  [        -  n[        [        R                  " SU-  5      [        R                  " U5      ) -  U5      $ U R                  R                  [        :X  d:  U R                  R                  (       Ga  U R                  R                  [        :X  a  [        [        R                  " U R                  R                  5      U5      (       a  [        [        R                  " U R                  5      U5      (       a  gU R                  R                  [
        -  [        -  n[        [        R                  " SU-  5      U5      (       a>  [        [        R                  " [        R                  U-  U R                  -  5      U5      $ [        [        R                  " U R                  5      U5      (       a_  [        [        R                  " U R                  5      U5      (       a0  [        [        R                  " U R                  5      U5      nUb  U$ g[        [        R                  " U R                  5      U5      (       a7  [        [        R                  " [!        U R                  5      5      U5      nUb  g[        [        R"                  " U R                  5      [        R"                  " U R                  5      -  U5      (       a  [        [        R$                  " U R                  5      U5      (       a  g[        [        R&                  " U R                  5      U5      nU(       d  U$ [        [        R                  " U R                  5      U5      (       a  g[        [        R                  " SU R                  -  5      U5      nU(       a*  [        [        R(                  " U R                  5      U5      $ U$ g)a  
* Imaginary**Odd        -> Imaginary
* Imaginary**Even       -> Real
* b**Imaginary          -> !Imaginary if exponent is an integer
                           multiple of I*pi/log(b)
* Imaginary**Real       -> ?
* Positive**Real        -> Real
* Negative**Integer     -> Real
* Negative**(Integer/2) -> Imaginary
* Negative**Real        -> not Imaginary if exponent is not Rational
r4   FN)r[   r   rs   r   r$   r*   r   r   r   r\   r   r   r   r
   r   r   r&   r   r   rq   r   )rE   rF   arG   r   r   rathalfs           rH   rN   rN   +  s~    ~~ 33yyA~HHQJrM199QqS>QYYq\M1;??yy~~!1!1!1diinn6Iq{{499==);771;;txx(+66		a"A199QqS>;//1;;q(8488'CDkRR
1;;tyy!;//qyy"K00aeeDHHo{3C

1;;txx +..AKKDII/=
166$))qvvdhh//==qzz$))$k22ajj*K8C
199TXX&44199QtxxZ0+>qzz$))4kBB >rP   c                 H   [        [        R                  " U R                  S   5      U5      (       a4  [        [        R                  " U R                  S   5      U5      (       a  gg U R                  S   R
                  [        :X  d?  U R                  S   R                  (       aJ  U R                  S   R                  [        :X  a)  U R                  S   R                  [        [        * 4;   a  g[        [        R                  " U R                  S   5      U5      nUSL a  gg )Nr   FT)r   r   r   r^   r   r   r$   r   rs   r   r*   r   )rE   rF   r%   s      rH   rN   rN   c  s    
166$))A,--qzz$))A,'55
 yy|CDIIaL$7$7DIIaL<M<MQR<R99Q<A2w&	Q[[1&	4B	U{ rP   c                     U R                   [        -  [        -  n[        [        R
                  " SU-  5      [        R
                  " U5      ) -  U5      $ )Nr4   )r$   r*   r   r   r   r\   )rE   rF   r   s      rH   rN   rN   t  s;    
2Aqyy1~1-{;;rP   c                 0    U R                  5       S   S:X  + $ )Nr2   r   )rp   rM   s     rH   rN   rN   y  s    !!#A&!,,rP   c                     g rU   rL   rM   s     rH   rN   rN   }  rO   rP   c                     [        U [        5      (       a  g [        [        R                  " U 5      U5      (       a  g[        [        R
                  " U 5      U5      $ rK   )r   r.   r   r   r   r   rM   s     rH   rN   rN     s@    $
##
166$<%%q{{4 +..rP   c                 d    U R                   (       a  [        e[        X[        R                  5      $ )zf
* Antihermitian + Antihermitian  -> Antihermitian
* Antihermitian + !Antihermitian -> !Antihermitian
)r[   r1   r3   r   r   rM   s     rH   rN   rN     s"     ~~##T@@rP   c                 p   U R                   (       a  [        eSnSnU R                   H  n[        [        R
                  " U5      U5      (       a  US-  nO'[        [        R                  " U5      U5      (       d    g[        [        R                  " U5      ) U5      (       d  M}  US-  nUS:  d  M    g   U$ )z
As long as there is at most only one noncommutative term:

* Hermitian*Hermitian         -> !Antihermitian
* Hermitian*Antihermitian     -> Antihermitian
* Antihermitian*Antihermitian -> !Antihermitian
r   FTr2   Nr   r   s        rH   rN   rN     s     ~~##GFyyqs#[11d]FQ[[%{33c""K00qLG{  rP   c                 &   U R                   (       a  [        e[        [        R                  " U R
                  5      U5      (       a7  [        [        R                  " U R                  5      U5      (       a  g [        e[        [        R                  " U R
                  5      U5      (       a`  [        [        R                  " U R                  5      U5      (       a  g[        [        R                  " U R                  5      U5      (       a  g[        e)zx
* Hermitian**Integer  -> !Antihermitian
* Antihermitian**Even -> !Antihermitian
* Antihermitian**Odd  -> Antihermitian
FT)r[   r1   r   r   r   rs   r\   r$   r   ra   r   rM   s     rH   rN   rN     s     ~~##
1;;tyy!;//qyy"K00 1   
Q__TYY'	5	5qvvdhh--txx+..
rP   c                     U R                   u  p#Sn[        U5       HJ  n[        XS5       H8  n[        [        XU4   [	        XU4   5      * 5      5      nUc  S nUS:X  d  M7      g   ML     Uc  [
        eU$ r   r   r   s           rH   rN   rN     sy    JDG4[qAbTYsa4y-A,ABCD|u}    ##NrP   c                     grK   rL   rM   s     rH   rN   rN     r   rP   c                     grR   rL   rM   s     rH   rN   rN     rS   rP   c                 6    [        X[        R                  5      $ rU   )r3   r   	algebraicrM   s     rH   rN   rN     s    T<<rP   c                 n   U R                   [        :X  a[  [        [        R                  " U R
                  5      U5      (       a+  [        [        R                  " U R
                  5      ) U5      $ g U R
                  R                  =(       a*    [        [        R                  " U R                   5      U5      $ rU   )rs   r   r   r   r   r$   rt   r_   rM   s     rH   rN   rN     sp    yyA~q{{488$k22		$((++[9988LCDII(>$LLrP   c                      U R                   S:g  $ rf   )r`   rM   s     rH   rN   rN     s    66Q;rP   c                     U R                   S   n[        [        R                  " U5      U5      (       a!  [        [        R                  " U5      ) U5      $ g rf   r^   r   r   r   rt   rv   s      rH   rN   rN     s@    		!A
1;;q>;''AIIaL=+.. (rP   c                     U R                   n[        [        R                  " U5      U5      (       a!  [        [        R                  " U5      ) U5      $ g rU   )r$   r   r   r   rt   rv   s      rH   rN   rN     s<    A
1;;q>;''AIIaL=+.. (rP   c                 n    U R                   S   n[        [        R                  " U5      U5      (       a  gg r|   )r^   r   r   r   rv   s      rH   rN   rN     s,    		!A
1;;q>;'' (rP   c                     U R                   S   n[        [        R                  " U5      U5      (       a$  [        [        R                  " US-
  5      ) U5      $ g r~   r   rv   s      rH   rN   rN      sF    		!A
1;;q>;''AIIa!e$$k22 (rP   N)O__doc__sympy.assumptionsr   r   
sympy.corer   r   r   r   r	   r
   sympy.core.numbersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.core.logicr   sympy.functionsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   sympy.core.relationalr+   $sympy.functions.elementary.complexesr,   sympy.matricesr-   r.   r/   "sympy.matrices.expressions.matexprr0   sympy.multipledispatchr1   commonr3   predicates.setsr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   rI   register_manyr@   rN   registerr   objectr   rL   rP   rH   <module>r      s	   % 4 4C C C C C (      $ : 9 9 < 8 %0 0 0 W- . k=("h(:<< 4  ! S); *; 3  6 35  5 ]EB> C> H% & E" #   {M8b,.. D! "   c*	< +	< C  !$   tS#s;/ </
 C / !/
   s+ ,
   s+3 ,3 d# $ e$ % S${BH ]H6FG H   8 8  & = =~ S#& '  
 6 6 [-?; @; ' ( $$X/?@ A $$S#s3A 4A V$* %*
 S!= "= S! "0 S!  "  !!#s+  , 
 S!  " 
 Z( )" S#r=#v"c *:; < 4  ! S); *; 3;  ;
 ]EB> C> 3   ]+ , T" # S! "0 S! "& S!5 "5n S! "  S!< "< !!&,7- 8- S! "   (/ )/   %A &A   % &0   %  & $   , -" !!/5+%'' !!/4b !!#s+= ,= S!M "M X& ' !!$c3</ =/
 S!/ "/
 !!$, -
 !!$,3 -3rP   