
    oVhMJ                        d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZmZmZ ddlmZmZ ddlmZm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,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddlm5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd  ZId! ZJd" ZKd# ZLd$ ZMy%)&zCTests for tools for manipulating of large commutative expressions.     )Sum)Add)Basic)DictTuple)Function)Mul)IRationaloo)S)DummySymbolsymbols)explog)rootsqrt)cossin)Integral)O)Interval)collect)simplify)	decompose_powerFactorsTerm
_gcd_terms	gcd_termsfactor_terms	factor_nc_mask_nc_monotonic_sign)_keep_coeff)sub_pre)raises)abtxyzc                     t        t              t        dfk(  sJ t        t        dz        t        dfk(  sJ t        t        dt        z  z        t        t        z  dfk(  sJ t        t        dt        z  dz  z        t        t        dz  z  dfk(  sJ t        t        t        t        dd      z  z        t        t        dz  z  dfk(  sJ y )N         )r   r+   r,   r        O/home/dcms/DCMS/lib/python3.12/site-packages/sympy/core/tests/test_exprtools.pytest_decompose_powerr5      s    1!Q'''1a4 QF***1qs8$Aq	1111qs1u:&1qs8Q-7771q!Q/01a!A#h]BBBr3   c                  \'   t               t        i       cxk(  rt        t        j                        k(  sJ  J t               j                         t        j                  u sJ t        t        dt
        dt        t              di      j                         t        dz  t
        dz  z  t        t              dz  z  k(  sJ t        t        j                        t        t        di      k(  sJ t        t        j                        t        t        dddi      k(  sJ t        t        dz  t        j                  z        j                         t        dz  t        j                  z  k(  sJ t        t        dt
        dt        di      } t        t
        dt        dt        di      } | j                  |      | |z  cxk(  r't        t        dt
        dt        dt        di      k(  sJ  J  | j                  |      t        | |      cxk(  r2t        t        dt        di      t        t
        dt        di      fk(  sJ  J  | j                   |      | |z  cxk(  rt        t        dt        di      k(  sJ  J  | j"                  |      | |z  cxk(  rt        t
        dt        di      k(  sJ  J  | j$                  d      | dz  cxk(  r!t        t        d	t
        d
t        di      k(  sJ  J  |j$                  d      |dz  cxk(  r!t        t
        dt        d
t        di      k(  sJ  J  | j&                  |      t        t
        dt        di      k(  sJ  | j(                  |      t        t        dt
        dt        dt        di      k(  sJ t        t        dt
        dt        di      } t        t        dt        di      } | j*                  |      t        t        dt
        dt        di      t        t        di      fk(  sJ t        t-        d      t        z        j                         t-        d      t        z  k(  sJ t        t.               t.        z  t               k(  sJ t        t        j0                  t        d      i      t        t        j0                  t        j                  t.        t        d      i      z  t        t.              k(  sJ t        t-        t.              t.        z        t        t.        t        d      dz  z        cxk(  r!t        t.        t        d      dz  i      k(  sJ  J t        t.        t        d      dz  i      j                         t.        t        d      dz  z  k(  sJ t        t        d      t        z        j                  t        d      t        z        t        t        d      t        i      t        t        d      t        i      fk(  sJ t        ddt        z  dz   z        j                  t        d            t        t        d      dt        z  dz   i      t        t        d      t        j                  i      fk(  sJ t        t        j0                  t3        dd      i      t        t.        t        j                  t        j0                  t        j                  i      k(  sJ t        t.        t        j                  t        j0                  t3        dd      i      j                         t.        dt3        dd      z  z  k(  sJ t        d      t        t        j0                  t        j                  t        d      di      k(  sJ t        d      t        t        j0                  t        j                  t        d      di      k(  sJ t        dt        z        t        t        d      t        i      k(  sJ t        t        d            t        t        j0                  t        j                  t        d      di      k(  sJ t        t        j                        t        t        d      t        j                   i      k(  sJ t        t3        dd            t        t        d      t        j                  t        d      t        j0                  i      k(  sJ t        t.        t        j                  i      t        t.              k(  sJ t        ddt.        di      t        t        d      dt.        di      k(  sJ t        t        j0                  t3        dd      i      j                         t.        k(  sJ t5        dd      }t        d|dz  z        t        t        d      d|dz  di      k(  sJ t        t.              t        t.        t        j                  i      k(  sJ t        t              j+                  t        d            t        t              t        t        d            fk(  sJ t        t              j+                  t        j6                        t               t        t        j6                        fk(  sJ t9        t:        d        t        t              j                  t        d            t        dt        z        k(  sJ t        t              j                  t        j6                        j<                  sJ t        t              j                  dt        z        j>                  sJ t        t        t-        d      dz  z        j                         t        dt-        d      z  z  k(  sJ t        t              t        t        d            z  t        t        dz        k(  sJ t        t              j'                  t        j6                        t        t              k(  sJ t        t              j)                  t        j6                        j<                  sJ t        t        j6                        j                  t              t        t        j6                        t               fk(  sJ t        t              j                  t              t               t               fk(  sJ t        t        di      t        t        di      z  t               k(  sJ t        t              t               k7  sJ t        t        j6                        j+                  t              t        t        j6                        t               fk(  sJ t        dt
        z   z  t        dz  }}t        |      }|j                  |      |j+                  |      cxk(  r$t        t        t
        z        t               fk(  sJ  J |j'                  |      t               k(  sJ t        t
        z  }|j                  |      |j+                  |      cxk(  r t        t        dz        t               fk(  sJ  J |j'                  |      t        |      k(  sJ dt        z  x}}t        |      }|j                  |      |j+                  |      cxk(  rt               t               fk(  sJ  J |j'                  |      t        |      k(  sJ dt        z  dt
        z  }}t        |      }|j                  |      |j+                  |      cxk(  r8t        t        d      t        i      t        t        d      t
        i      fk(  sJ  J |j'                  |      t               k(  sJ t        t        dz   z  }t        |      j+                  t        dz        t        t        t        dz   i      t        i       fk(  sJ t        |      j+                  t        dz        t        t        t        i      t        i       fk(  sJ t        |      j+                  t        dz        t        t        t        i      t        t        di      fk(  sJ t        |      j+                  t        t
        dz
  z        t        t        t        dz   i      t        t        t
        i      fk(  sJ t        |      j+                  t        t
        dz   z        t        t        t        i      t        t        t
        i      fk(  sJ t        |      j+                  t        t
        dz   z        t        t        t        i      t        t        t
        dz   i      fk(  sJ t        |      j                  t        dz        t        t        t        dz   i      t        i       fk(  sJ t        |      j                  t        dz        t        t        t        i      t        i       fk(  sJ t        |      j                  t        dz        t        t        t        i      t        t        di      fk(  sJ t        |      j                  t        t
        dz
  z        t        t        t        dz   i      t        t        t
        i      fk(  sJ t        |      j                  t        t
        dz   z        t        t        t        i      t        t        t
        i      fk(  sJ t        |      j                  t        t
        dz   z        t        t        t        i      t        t        t
        dz   i      fk(  sJ t        dt        z  dz        t        ddddt        di      k(  sJ t        t        t        z  t
        z        t        t        dt
        di      k(  sJ t        dt        z  t
        d
z  z        t        ddt        dt
        di      k(  sJ y )Nr0   r1      r/         
      	               g      g      ?g       g       @AFcommutativec                  Z    t        t              j                  t        j                        S N)r   r+   divr   Zeror2   r3   r4   <lambda>ztest_Factors.<locals>.<lambda>d   s    gajnnQVV&< r3   g?      i) r   r   Oneas_exprr+   r,   r   Infinityr   NegativeInfinityHalfr-   r*   mulrI   divmodquorempowgcdlcmnormalr   r
   NegativeOner   r   rJ   r'   ZeroDivisionErroris_zerois_one)r(   r)   rD   ndfs         r4   test_Factorsrb   &   s   95wquu~555559!%%'''Aq!QA*+335Aad3q6199LLLL1::'2q'"22221%%&'2q"a.*AAAAAqD166>"**,A>>>Aq!Q"#Aq!Q1b)*A1558qsAgq!Q1b!R&@AAAAAA1558va| 8	!Q1	Aq" 678 8 8 8 81558qs3gq!Ql3333331558q1u6Aq" 6666661558q!t<w2q!Q';<<<<<<1558q!t<w2q!Q';<<<<<<1558w1a|,,,,1558w1aAq!R89999Aq!Q"#AAq!A188A;7Aq!Q1#56AHHHH4719%%'4719444A2;q=GI%%%AMM1Q4()'1==!%%AaD2Q*RR
  4719QqT!V!5M!QqT!V9MMMMMMAqtAv;'')Q1a[8881Q47!a(	!A$	WadAY/01 1 11qsQw< $$QqT*	!A$!a	!7AaD!%%=#9:; ; ;
 AMM8Aq>23w155!--YZY^Y^?_7````AquuammXa^<=EEG1bS[\]_`SaMaKaaaa3<7AMM155!B%#CDDDD3<7AMM155!B%#CDDDDC!83 44441R5>WammQUUAaD!%DEEEE166?gqtaeeVn55558Aq>"gqtQUUAaD!--.P&QQQQAquu:'!*,,,D!Q?#w#1a/@'AAAAAMM8B?34<<>!CCC'A1QT6?gqtQ1a&899991:!QUU,,,,1:QqT"wqz71Q4=&AAAA1:QVV$GAFFO(DDDD
<=1:>>!A$71Q3<///1:>>!&&!))))1:>>!A#%%%%1d1gqj=!))+q1T!W9~===1:wqt}$15551:>>!&&!WQZ///1:>>!&&!))))166?q!gaffowy%AAAA1:>>!GI 6666Ar7GQG,,	9991:"""166?!!!$')(DDDDq1u:q!tqA
A558qxx{@wq!t}gi&@@@@@@558wy   	1A558qxx{@wq!t}gi&@@@@@@558wqz!!!qDLA
A558qxx{<wy')&<<<<<<558wqz!!!a4AqA
A558qxx{Nw!ay'97AaD!9;M&NNNNNN558wy    	
AE
A1:QU#AE
(;WR['IIII1:QT"w1v&DDDD1:QT"w1vA&HHHH1:QQZ(	!QU	gq!fo./ / /1:QQZ(WaV_gq!fo,NNNN1:QQZ(	!Q'1a!e*-./ / / 1:>>!R% WaQZ%8'"+$FFFF1:>>!Q$GQFOWR[#AAAA1:>>!Q$GQFOWaV_#EEEE1:>>!a!e*%	!QU	gq!fo./ / /1:>>!a!e*%'1a&/7Aq6?)KKKK1:>>!a!e*%	!Q'1a!e*-./ / / 1q519!Q2q!)<!====1q519!Q2!777726AqD=!Wb!Q1b-A%BBBBr3   c                     t        dt        z  t        dz  z  t        z  t        dz  z        } t        dt        dz  z  t        dz  z  t        dz  z        }| t        dt        t        dt        di      t        t        dt        di            k(  sJ |t        dt        t        dt        di      t        t        di            k(  sJ  | j                         dt        z  t        dz  z  t        z  t        dz  z  k(  sJ  |j                         dt        dz  z  t        dz  z  t        dz  z  k(  sJ  | j                         t        t        j                  dz  t        t        dt        di      t        t        dt        di            k(  sJ  |j                         t        t        j                  t        t        di      t        t        dt        di            k(  sJ  | j                  |      | |z  cxk(  r;t        dt        t        dt        di      t        t        dt        di            k(  sJ  J  | j                  |      | |z  cxk(  r5t        dt        i       t        t        dt        dt        di            k(  sJ  J  | j                  d      | dz  cxk(  r;t        d	t        t        dt        di      t        t        dt        d
i            k(  sJ  J  |j                  d      |dz  cxk(  r5t        dt        t        d
t        di      t        t        d
i            k(  sJ  J  | j                  d      | dz  cxk(  rLt        t        j                  d	z  t        t        dt        d
i      t        t        dt        di            k(  sJ  J  |j                  d      |dz  cxk(  rFt        t        j                  dz  t        t        d
i      t        t        d
t        di            k(  sJ  J  | j                  |      t        dt        t        dt        di      t        t        di            k(  sJ  | j                  |      t        dt        t        dt        di      t        t        dt        di            k(  sJ t        dt        z  t        dz  z  t        z  t        dz  z        } t        dt        dz  z  t        dz  z  t        dz  z        } | j                  |      t        dt        t        dt        dt        di      t        t        di            k(  sJ t        dt        z  dz   dz        t        dt        t        dz   di      t        i             k(  sJ t        dt        z  dz   dt        z  dz   dz  z        t        dt        t        dz   dt        dz   di      t        i             k(  sJ y )Nr7   r0   r1   r9   r/   rA   r:   rL   @   r=   r<   rC      )r   r+   r,   r-   r*   r   rO   invr   rN   rR   rS   rU   rW   rX   rY   )r(   r)   s     r4   	test_Termrg      s   QqSAXaZ1_AQq!tVAqD[AAQAq!-w1a|/DEEEEQAq!-w1v????199;!A#ad(1*QT/)))199;!AqD&A+ad****1557QUU1Wgq!Ql+WaAq\-BCD D D1557d1667Aq6?GQ1aL4IJJJJ1558qs >QAq!%w1a|'<=> > > > >1558qsOd1gbk7Aq!Q1;M3NOOOOOO1558q!t ?R!Q1&Aq!(=>? ? ? ? ?1558q!tOtAw1a}'=w1vOOOOOO1559B EQUU2Xw1a|,gq!Ql.CDE E E E E1559B ?QUU1Wgq!fow1a}'=>? ? ? ? ? 1558tAw1a|4gq!foFFFF1558tAw1a|4gq!Ql6KLLLLQqSAXaZ1_AQq!tVAqD[AA1558tAw1aAq'9:GQFOLLLL1q1a!a%)<gbk!JJJJ1q1Q37Q,&'R!a%AE1-.<= = =r3   c                     dt         dz   z  t         dz   z  dt         dz  z  dz   z  dt         z  dz   t         dz   z  t         dz  dz   z  dz  z   dt         z  dz   t         dz   z  dt         dz  z  dz   z  z   } t        |       t        dd      dt         z   dt         dz  z   z  z  dt         z   dfk(  sJ t        t        j                  |             t        dd      dt         z   dt         dz  z   z  z  dt         z   dfk(  sJ t        dd      dt         z   dt         z   z  dt         dz  z   z  z  }t        |       |k(  sJ t        j                  |       }t        t        |            |k(  sJ t        t        |            |k(  sJ t        t        |            |k(  sJ t        t        |       |k7  sJ t        t        t        t        d      dt        z  dt         z  t        z  z         t        t        d      t        d                        t        t        t        d      dt        z  t         dz   z        t        t        d      t        d                  k(  sJ t        t        t         dt        z   z  t        d      ft         t         t        z  z   t        t         t        z  z   f            t        t         t        dz   z  t        d      t         t         t        z  z   t        dt         z   z  i      k(  sJ t        dt         z  dz   dz  dt         z  dz   dz  z         dt         dz   dz  z  dt         z  dz   z  k(  sJ t        d      dk(  sJ t        d      dk(  sJ t        t               t         k(  sJ t        ddt         z  z         t        ddt         z   d	      k(  sJ t         dt         z  dt        z  z   z  }dt         z  t         dt        z  z   z  }t        |      |k(  sJ t        t        |            t        |      k(  sJ t!        d
      \  }}}}|dz  |t         dz  z  z
  |z   t         dz  z   t         |dz   z  z
  }	|dt#        d      z   dz  |t         z  z   |t         dz  z  z   |t         dz  z  z   f}
 |	t         |z
  z  j$                  |
 j'                  t         dd      }t)        t+        |t                     t#        d       dz  t        dd      z
  t-        t               z   k(  sJ t        t        j.                  t        j.                  g      dk(  sJ t        dt         z  dz   g      dt         dz   dfk(  sJ t         t         dt         z  z   z  }t        |d      |k(  sJ t         dz  t        z  dt         z  t        z  z   }t        |dd      t         dz  dz   dt         z  t        z  z  k(  sJ t        |dd      t         dz  dz  dz   t         t        z  z  k(  sJ t        |dd      t         dt         z  z   dt        z  z  k(  sJ t        |dd      t         dz  dt         z  z   t        z  k(  sJ y )Nr0   r/   r7   r9   rL   r1   r   Fevaluatezalpha:4)r   r   r/   fractionT)rl   clear)r+   r   r   r   	make_argsr    listtuplesetr   r   r   r,   r   r	   r   r   r   subsseriesr   r   r   rJ   )ra   newfargsarggargalphaalpha1alpha2alpha3r(   repseqs                r4   test_gcd_termsr      s   	1q5	1q51QT6A:&!A#'AE):AqD1H)Ea)GG	
1q1q51QT6A:&	'A a=hq!nAAqD/ABAE1MMMMcmmA&'
1a.AEA1H-	.Aq9: : : QNa!ea!e_a!Q$h78DQ<4==DT$Z D(((U4[!T)))SY4'''UD\"d***U51qsQqSU{3U1Q415FGHeAaD!A#q1u+&adAaD(9:; ; ; T1a!e9ad+a!A#gq1Q3w-?@AaQi1q1Q3w1q5	234 4 4 acAg\QqS1WqL01QAz\1Q375KKKKQ<1Q<1Q<1Q1WQA!>>>>
QqS1Q3Y-CQ3AaC=DS>T!!!SX#d)+++ %,I$6!E666q5A:%1,q%!)}<A1tAw;/F1H,vad{:VAqD[H
ICAIc"))!Q2AGAqM"tAwhqj8Aq>&AAaD&HHHH qvvqvv&'9444qsQwi QAqM111	
A!GBR%(B...	
1Q1QBR$d3	
AAaCE  R$e4	
Aa!ac  R%t4	
QqS1Q3  R%u5	
1qsA  r3   c            
         t        dd      } t        dt        t        t        z  z   dz   z  dt        z  dz   ddt        z  z   z  z         dt        z  t        z  dt        z  z   t	        t        d      t        dz         t	        t        d      t        dz         z  z   dz   k(  sJ t        dt        t        t        z  z   dz   z  dddt        z  z   z  z         t	        t        d      ddt        z  z  t        t        z  z   t        z   dz         k(  sJ t        dddt        z  z   z  t        dddt        z  z   z  z  z         dddt        z  z  z  t        dz   z  k(  sJ t        t        t        | z  z         t        d| z   z  k(  sJ t        t        t        t        | z  z               t        t        d| z   z        k(  sJ t        dt        z  dz   ddt        z  z   dz  z        t	        t        d      t        dz         t	        t        dd      t        dz         z  k(  sJ t        t        t        t        z  t        z   dt        z  dz   z  z         t        t        t        dz   z  t	        t        d      t        dz         z  z   k(  sJ t        t        t        t        t        z  z   z  t        t        dz  t        t        z  dz  z   z  z         t        t        dt        z  z   z  t        dz   z  k(  sJ t        t        t        dt        f      }t        |      |k(  sJ t        t        dz  t        z         t        dz  t        z   k(  sJ t        t        dz  t        z   d	
      t        dz  t        z   k(  sJ t        t        dz  t        z   d	      t        t
        j                  t        dt        z  z   d      k(  sJ t        d      t        d      z   }t        |      |k(  sJ t        |d	      t        d      dt        d      z   z  k(  sJ t        dd      t        dd      z   }t        |d	      dt
        j                   dz  z  ddt
        j                   dz  z  z   z  k(  sJ t        t        t        z  z   g}t        t        dz   z  g}t"        t$        t&        fD ]  }t         ||             ||      k(  rJ  t        t)        t        t        t        z  z               t)        t        t        dz   z        k(  sJ t        t+        dd            t+        dd      k(  sJ dt        t        dz  dz         z  }t        |d      dt        t        dz  dz         z  k(  sJ t        |d	      t        d      t        t        dz         z  k(  sJ t        t        dt        z  z   z  dt        dz  dz   z  z   }t        |d
      |k(  sJ t        |d	
      dk(  sJ t        dt        dz  t        dz  z   z  dt        dz  z  z   t        z        t        ddt        dz   z  z   z  t        dz  z  k(  sJ t-        t         t        z
        t         t        z
  k(  sJ t        t         t        z
        t        dt        t        z   d      k(  sJ t-        t/        t        dt        dz                     t/        t         dz
        k(  sJ t/        t         dz
        t        z   }t        |      t/        t        dt        dz   d            t        z   k(  sJ t        |d      |k(  sJ t        t/        dt        z  dz
        t        z
        t         t/        t        ddt        z  dz   d            z   k(  sJ t0        t        fD ]  }t         |t        t        ddf            t         |dt        ddf      z  k(  sJ t         |t        t        ddf      t        z         t        d |dt        ddf      z   z  k(  sJ t         |t        t        z  t        t        dz  z  z   t        ddf            t         |t        t        dz   z  t        ddf      z  k(  rJ  t        dt        dz
  z  dz
        dt        dz
  z  dz
  k(  sJ t        dt        dz   z  dz
        dt        dz   z  dz
  k(  sJ t        dt        dz   z  dz
  j3                  t        d            dk(  sJ y )NrD   FrE   r=   r/   r1   r0   r   Trk   )rm   ri   r;   )radicalr9   irL   r8   )signrB   )r   r!   r+   r,   r%   r   r(   r   r   r)   r   r   r	   rR   r   r   rN   ro   rp   rq   r   r   r    r   r   rr   )rD   ir~   ansceFs          r4   test_factor_termsr      s   s&A1qs7Q;1Q37a!A#g*>>?	!A!k!A$A.AaD!a%0HHH1LM M M1qs7Q;1AaC.89AaD!ac(QqS.1,q012 2 2A!GqQ1W~56	!ac(
AE  AaC 	1q5	  A!G%Aq1uI  1qQ1WaK01AaD!a% +hq!na!e"DDE E EQqS1W!a001	QAYQqT1q51112 2 21qs7a1qs1uo56	1qs7QU  Q2JA?a!a AaC!G+++!a$/1Q37:::!at,AFFA!Ge0TTTT 
a48	Br!!!D)T!Wa$q'k-BBBB	b!tAqz	!BD)Qq\1aeeAg;N-OOOO
ac'Ba!e9+CE3 -AbE"af,,,-a!A#g'5AE+;;;;A'8Aq>999	$qsQw-A'1T!A#']?:::&$q'$q1u+*====	
A!Gq!Q$(|	#BU+r111T*a///AqD1a4K1QT61145	1q!a%y=!Q$   aR!VQ&&&Q3r1q55#AAAA SRQ()S!a[888QBFaA?c#b!a%%"@AAEEEE&!+++BqD1H)*qb3s2qsQwQV7W3X.XXXX 8_ WAa!Q,-Qq1a*5E1EEEEAa!Q,q01Q!aAq":>N:N5OOOOAacAadFlQ2J78Aa1q5	AqRT:>V<VVVVW AE
Q'1q1u:>999AE
Q'1q1u:>999QUa--a34999r3   c                      t        ddt        z   d      } | j                  i       | k(  sJ | j                  t        t        i      | k(  sJ y )Nr0   r/   Fri   )r	   r+   xreplacer,   )r   s    r4   test_xreplacer   F  sE    Aq1uu%A::b>Q::q!f"""r3   c                  `   t        d      \  } }t        dd      }t        dd      \  }}}dd	lm | d
|z   dz  z  } |      | | dz  |z  z   | |dz  z  z   k(  sJ fd} || d
|z   z          ||| d
z   z          ||| |z   z          || |z   |z          |||z  | |z  ||z  |z  z   z  |z         t        | | d
df      } || d
|z   z          || d
|z   z  |z          || d
t	        |      z   z          |d
|z   dz          || |z   | |z   z  | |z   z          || ||z  d
z   z          || ||z  | z   z          || | |z  |z  d
z   z          |||| z  |z   z          ||||dz  z   z          || |z  | |z  d
z   z          || ||z  | |z  |z  z   z          ||d
|z
  z  |dz  z          |||z   dz          |||z
  ||z   dz  z          |||z   dz  ||z
  z          |||z
  ||z   dz  z  ||z
  z         t        ||||z  z   z        |dz  d
|z   z  k(  sJ t        |||z  ||z  |dz  z  z   z        ||||z  |z  z   z  |z  k(  sJ |t	        |      z  t	        |      |z  z
  }	t        |	      |	k(  sJ ddlm}
 ddlm	} d
|  |
||      z  z   }	t        |	      |	k(  sJ |  |
||      z  |  |
||      z   |
||      z  z   }	 ||	      | d
 |
||      z   z   |
||      z  k(  sJ d|z  d|z  z   j                         d||z   z  k(  sJ t        ddd      }t        ||z  ||d
z   z  z         ||z  d
|z   z  k(  sJ t        ||z  |z  ||z  |d
z   z  z         d
||z  z   ||z  |z  z  k(  sJ t        | d| dz  z  d| z  z   z        d|z  | z  | d
z   z  k(  sJ y )Nzx,ykT)integerzn,m,oFrE   r   )_mexpandr/   r0   c                 z     |       }|j                   sJ t        |      }|j                   s |      |k(  sJ y rH   )is_Addr"   )r   exra   r   s      r4   factor_nc_testz&test_factor_nc.<locals>.factor_nc_testV  s<    a[yyybM88r 111 1r3   )
Commutator)factornz)zerorF   rB   )
r   sympy.core.functionr   r   r   r"   sympy.physics.secondquantr   sympy.polys.polytoolsr   )r+   r,   r   r_   mor   r   r}   r~   r   r   _nr   s                @r4   test_factor_ncr   L  sy   5>DAqT"Ag51GAq! -	1q51*AA;!ac!e)a1f,,,,2 1a!e91a!e91a!e9AE191Q3!ac!e$Q&'A1ayA1a!e91a!e9Q;1a#a&j>"AEA:AEAE?AE*+1acAg;1acAg;1ac!eai=!1acAg;1a!A#g;1Q3!a=!1acAaCEk?#1a!e9QT>"AEA:AEAEA:%&AEA:q1u%&AEAEA:%q1u-.QAaC[!QT1q5\111Q!ac!Q$h'(Aq1Q3q5yM!O;;;	
3q6CF1H	BR=B 5,	
Qz!Q	BR=B	
:a	a
1a 00Aq1AA	AB":A
1a 001*Q2BBBBB aC!A#I1a!e9,,, 
Eu	5BRUR!a%[()RUAF^;;;acAX1A./A!GacAX3EEEE aR1a4!A#&'2a461q5>999r3   c                      t        d      \  } }| |z   }||dz  d| z  d|z  z
  z  z   }t        t        |            | |z   d| |z   dz  z  z
  k(  sJ y )Nza br0   rB   r1   )r   r!   r&   )r(   r)   apbr~   s       r4   test_issue_6360r     sc    5>DAq
a%C	sAvr!tacz"	"B$A1q51*(<<<<r3   c                      t        dd      } t        t        t        |       z        t        t         t	        |       z        z   } |j
                         sJ y )Nr(   T)real)r   r   r
   r   r   r   )r(   r*   s     r4   test_issue_7903r     sB    4 AAc!fHQBs1vI&A1::<<r3   c                     t        ddt              \  } }t        d      \  }}t         | |       ||      z   ||       | |      z  z
        \  }}}|j                         D ]  }|j                  sJ  |j
                  rJ y )NzF, GF)rF   clszx, y)r   r   r#   valuesis_commutativer]   )r   Gr+   r,   exprdummies_vs           r4   test_issue_8263r     s    6u(;DAq6?DAq!QqT	AaD1I 56D'1^^ $####$|||r3   c                     t         } t        d      } | |      J  | |       J  | t        d            dk(  sJ  | t        dd            dk(  sJ  | t        d            dk(  sJ  | t        dd	            d
k(  sJ  | t        dd            dk(  sJ  | t        dd            dk(  sJ  | t        ddd            dk(  sJ  | t        dd            dk(  sJ  | t        dd            dk(  sJ  | t        d            dk(  sJ  | t        d            dk(  sJ  | t        d            dk(  sJ  | t        d      dz         j                  sJ  | t        dd      dz
        j                  sJ  | t        d      dz
        J  | t        d      dz         J  | t        dd      dz
        j
                  sJ  | t        d      dz
        j                  sJ  | t        d       dz         J  | t        dd       dz
        j                  sJ  | t        d       dz
        j                  sJ  | t        d       dz         j                  sJ  | t        dd       dz
        j                  sJ  | t        d       dz
        J t        d      } | |dz        j
                  sJ  | |dz  t        d      |z  z   dz
        j                  sJ t        d      } | |dz         j
                  sJ t        d      } | d|z        j                  sJ  | ||dz   z        j                  sJ t        d      } | ||dz   z        j                  sJ t        d      } | d|z        j                  sJ t        d      } | || dz   z        j
                  sJ t        dd      }t        dd      } | d|z  |z        j                  sJ  | d|dz
  z  |z        J  | |dz
  |z  dz         j                  sJ  | |dz
   |z  dz
        j                  sJ y )Nr+   T)primer0   )r   oddr1   )	compositer7   )r   r   r=   )positiver   r/   )r   evenF)r   r   r   )negativer   r8   )r   r   rB   )r   r   )nonnegative)nonpositive)r   )r   )r$   r   r   is_positiveis_nonnegativeis_nonpositiveis_negativer   )r   r+   pqs       r4   test_monotonic_signr     s{   AAQ4<<aR5==U1$$$U4()Q...UT"#q(((UTt,-222UD$/0A555UDt,-222UDt59:a???UD$/0B666UDt,-333U!###Ut$%***Ut$%***UD!A%&2222UD$/!34CCCCUD!A%&...UD!A%&...UD$/!34CCCCUD!A%&2222eT""Q&'///eT400145AAAAeT""Q&'3333eT""Q&'3333eT400145DDDDeT""Q&'///tAQT7!!!!QTCF1H_q !----tAadU8""""tAQqS6QAY<####$AQAY<&&&&tART7$AQQZ=''''tT*AtT*ART!V9    RQZ\?"""a!eQY]''''q1uXaZ!^((((r3   c                     ddl m}  t        d      }t        |dz   |ddf      }t        |dz   | | dd      f      }t        d      }|j	                  ||i      }|j	                  ||i      }|j                         |j                         k(  sJ t        |dz   |ddf      }t        |dz   | | d      f      }t        d      }|j	                  ||i      }|j	                  ||i      }||k(  sJ y )Nr   )Ranger+   r/   r=   r;   r(   )sympy.sets.fancysetsr   r   r   r   doit)r   r+   s1s2r(   r1r2s          r4   test_issue_17256r     s    *sA	QUQ1I	B	QUQa%	&BsA	aU	B	aU	B779	!!!	QUQ1I	B	QUQb	N	#BsA	aU	B	aU	B8O8r3   c                  R    ddl m}   | ddd      }t        |d   d      |d   k(  sJ y )Nr   )MatrixSymbolXr0   )r   r   r/   )"sympy.matrices.expressions.matexprr   r    )r   Ms     r4   test_issue_21623r     s0    ?S!QAQsVQ1S6)))r3   N)N__doc__sympy.concrete.summationsr   sympy.core.addr   sympy.core.basicr   sympy.core.containersr   r   r   r   sympy.core.mulr	   sympy.core.numbersr
   r   r   sympy.core.singletonr   sympy.core.symbolr   r   r   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.miscellaneousr   r   (sympy.functions.elementary.trigonometricr   r   sympy.integrals.integralsr   sympy.series.orderr   sympy.sets.setsr   sympy.simplify.radsimpr   sympy.simplify.simplifyr   sympy.core.exprtoolsr   r   r   r   r    r!   r"   r#   r$   r%   sympy.simplify.cse_optsr&   sympy.testing.pytestr'   	sympy.abcr(   r)   r*   r+   r,   r-   r5   rb   rg   r   r   r   r   r   r   r   r   r   r   r2   r3   r4   <module>r      s    I )  " / (  0 0 " 6 6 = A ? .   $ * ,3 3 3 6 + ' & &CqCh%=P7tG:T#@:F=
4)l"*r3   