
    g                     r   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mZmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d d	lmZmZmZm Z m!Z! d d
l"m#Z# d dl$m%Z%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImJZJ d dlKmLZL d dlMmNZNmOZO d dlPmQZQmRZR d dlSmTZTmUZU d dlVmWZW d dlXmYZYmZZZ d dl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe d dlfmgZg d d lhmiZimjZjmkZk d d!llmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZz d" Z{d# Z|d$ Z}d% Z~d& Zekd'             Zd( Zd) Zd* Zd+ Zd, Zd- Zd. Zd/ Zekd0             Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Zd; Zeid<             Zd= Zd> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZekdK             ZdL ZdM ZdN ZdO ZdP ZdQ ZejdR             ZdS ZdT ZdU ZdV ZdW ZeidX             ZeidY             ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc ZddS )e    )Sum)Add)Basic)	unchanged)	count_opsdiffexpandexpand_multinomialFunction
Derivative)Mul_keep_coeff)GoldenRatio)EFloatIoopiRationalzoo)EqLtGtGeLe)S)Symbolsymbols)sympify)binomial	factorial)Abssign)exp	exp_polarlog)coshcschsinh)sqrt)	Piecewise)acosasinatancossinsinctan)erf)gamma)hyper)KroneckerDelta)rad)Integral	integrate)AndOr)Matrixeye)MatrixSymbol)factorPoly)

besselsimp	hypersimpinversecombine
logcombine	nsimplifynthrootposifyseparatevarssignsimpsimplify)solve)XFAILslow_both_exp_pow)xyztabcdefghinc                      t          t          ddt          t          d                    dz  z  z
                                            dz
            dk     sJ d S )NgQ@g    @@g333333'@   grfa@g-q=)absrJ   r0   r7   evalf     ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/simplify/tests/test_simplify.pytest_issue_7263rd   %   si    7ST^^Q->#>>??FFHH   %& & & & & &rb   c                     t          d          } t          t          |           | z            t          |           k    sJ t          t          t          |                               t          t          |                     k    sJ d S )NrO   )r   rJ   r!   r4   rO   s    rc   test_factorial_simplifyrg   *   sq    sAIaLLN##uQxx////Iill++,,	)A,,0G0GGGGGGGrb   c                      t          d          \	  } }}}}}}}}t          d          }	t          d t          t          t
          | |  t
           t           t           fD                       sJ d| z  d|z  z   }
|
| |z   | |z  z  k    sJ t          |
          | |z   | |z  z  k    sJ |dz  |dz  z  dt          z  |z  |dz  z  z  }
t          |
          |
k    sJ dd| z  z   ddd| z  z   z  z
  dd| z  z   z  }
t          |
          dk    sJ d	| z  |dz  z  d|dz  z  z
  d| dz  z  |z  z
  | |z   dz  z  }
t          |
          d
|z  k    sJ |  |z
  | |z   dz  |dz  z  z
  | |z   dz  | dz  z  z   }
t          |
          d
|z  k    sJ | | |z  z   | z  }
t          |
          d|z   k    sJ  |	|           | |	|           z  z    |	|           z  }
t          |
          d|z   k    sJ dd|z  t          |t          z            |z  z
  z  t          z  }
t          |
          t          t          |z             dz   t          |z  z  dz  k    sJ t          d| dz  dz   z  |           
                    |           }
t          |
          d| dz  dz   z  k    sJ t          | | dz  d| z  z   dz   z  |           
                    |           }
t          |
          | | dz  d| z  z   dz   z  k    sJ t          d          }	t          d|z  ||dz  z  z
  | g| |||dz  z  z
  gg                                          }t          |t          d|	g          z  d         |	 d|z  ||dz  z  z
  z  |dz  |||dz  z  z
  d|z  ||dz  z  z
  z  z
  z  z
            dk    sJ |  ||t          z   z  z   || z  |t          z   z  z   |t          z  |t          z   z  z   t          | z  |t          z   z  z   }	t          |	          |t          |z  z   |t          z   z  k    sJ |  |dz  dz
  z  d|dz  z  | dz  dz
  z  t          | dz  |dz  z
  dz  z  z  | dz  dz
  t          | dz  |dz  z
  z  z  z   z  t          | dz  |dz  z
  z  z  | d
| dz  z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          z  t          | dz  |dz  z
  dz  z  z  | dz  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          z  t          | dz  dz
  z  | dz  |dz  z
  z  z  z
  | dz  t!          | dz   dz   |dz  dz
  z            z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          z  | dz  dz
  z  t!          | dz   dz   |dz  dz
  z            | |  |dz  z  | z   z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z   z  t#          |          z  z   t          t!          | dz   dz   |dz  dz
  z            z  | dz  |dz  z
  z  z  z   z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          z  t          | dz  |dz  z
  z  z  z   | d
| dz  z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  t          | dz  |dz  z
  dz  z  z  | dz  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  t          | dz  dz
  z  | dz  |dz  z
  z  z  z
  | dz  t!          | dz   dz   |dz  dz
  z            z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  | dz  dz
  z  | t!          | dz   dz   |dz  dz
  z            z  |  |dz  z  | z   z  t          |          z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  z   t!          | dz   dz   |dz  dz
  z            t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  z   t          t!          | dz   dz   |dz  dz
  z            z  | dz  |dz  z
  z  z  z   z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  t          | dz  |dz  z
  z  z  z   |t!          | dz   dz   |dz  dz
  z            z  |  |z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          z  t          | dz  |dz  z
  z  |dz  dz
  z  z  d| z  |z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          z  t          | dz  |dz  z
  dz  z  z  z   | |z  t!          | dz   dz   |dz  dz
  z            z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          z  |dz  dz
  z  | t!          | dz   dz   |dz  dz
  z            z  | dz   |z  |z   z  t#          |          z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  z   t          t!          | dz   dz   |dz  dz
  z            z  | dz  |dz  z
  z  z  z   z  t#          |          z  t          | dz  |dz  z
  z  z  z
  || dz  dz
  z  d
| z  |z  | dz  dz
  z  t          | dz  |dz  z
  dz  z  z  d| z  |z  t          | dz  |dz  z
  z  z  z   z  t          | dz  |dz  z
  z  z  z   || dz  dz
  z  |dz  dz
  z  |  |z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  t          | dz  |dz  z
  z  |dz  dz
  z  z  d| z  |z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  t          | dz  |dz  z
  dz  z  z  z   | |z  t!          | dz   dz   |dz  dz
  z            z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          z  |dz  dz
  z  | t!          | dz   dz   |dz  dz
  z            z  | dz   |z  |z   z  t          |          z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  z   t          t!          | dz   dz   |dz  dz
  z            z  | dz  |dz  z
  z  z  z   z  t          |          z  t          t!          | dz   dz   |dz  dz
  z            z  | dz  |dz  z
  z  z  z   | t!          | dz   dz   |dz  dz
  z            z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t#          |          dz  z  t          dz  | dz  dz
  z  | dz  |dz  z
  z  |dz  dz
  z  z  z
  | t!          | dz   dz   |dz  dz
  z            z  t!          | dz   |dz  z  | dz  z   |dz  z   dz
            z  t          |          dz  z  t          dz  | dz  dz
  z  | dz  |dz  z
  z  |dz  dz
  z  z  z
  }t          |          d| z  t          dz  | dz  |dz  z
  z  z  k    sJ t          d          t%          t'          d          t'          d                    k    sJ t          dd          \  }}t          ||z  ||z  z
            ||z  ||z  z
  k    sJ t          |d|| z  z   z            | |z  | |z   z  k    sJ t          |d| z  d|z  z   z            || z  ||z  z   k    sJ t          t)          d          t)          d          z             t)          d          k    sJ t          t)          d| z            t)          d          z
            t)          |           k    sJ t          t+          g g |                     t-          |           k    sJ d S )Nzx,y,z,k,n,m,w,s,ArX   c              3   <   K   | ]}t          |          |k    V  d S NrJ   ).0tmps     rc   	<genexpr>z%test_simplify_expr.<locals>.<genexpr>5   s-      NNx}}#NNNNNNrb      r^         r   z/((-1/2)*Boole(True)*Boole(False)-1)*Boole(True)z(2 + Boole(True)*Boole(False))z-Boole(True)/2zA,BFcommutative   )r   r   allr   r   r   rJ   r   r/   r9   r   r   r<   invrR   rS   r*   r0   r   r   r&   r5   r$   )rO   rP   rQ   kr\   mwsArX   rW   exprBs                rc   test_simplify_exprr   1   s    '(; < <Aq!Q1aAANN1b!aR"qb1"/MNNNNNNNN	!ac	AQ1A;;1q51Q3-''''	1QT	1R46!Q$;AA;;!	
QqS1a!A#g;	QqS)AA;;!	AadQq!tV	a1fQh	&Q
2AA;;"Q$	
Q!a%2q!t##q1umAqD&88AA;;"Q$	
QqS!AA;;!a%	
1!!A$$!AA;;!a%	
acCBKKM!	"B&AA;;C1II:>BqD1!33333!QTAX,""''**AA;;!QTAX,&&&&!QTAaCZ!^$a((--a00AA;;!QTAaCZ!^,,,,,sA1qAvr"aRQq!tV$4566::<<AQvq!f~~%q)R1qAv1AadF
QqS1QT6\'B BCE F FIJK K K K 
QAY1a!e$qsAE{2QqS!a%[@AA;;1qs7QU+++++ 2q!tax=!AqD&!Q$(+Q1q!ta/?-?@AqD1H
QTAqD[/D  1q!t_.012ad74Aad
QPQT@Q
Q$AA < < 4FF4q!tad{Q..4023Q$tQTE!Q$JA<M	1== 8 8 3a&&3QTAX,1q!t436469:AdQTEAI	
AD ? ? :!Q$q!tad*QT1A566:77:1vv:>?@!tax:IKO
Q$QTAXL  L !"QBq!tGaKq!teAqDj1a46G!Q$6N	7
 2 2 "1a4%1*q!t#ad*Q.//"0L114QL8:8 ;<D1a4%!)	1qB = = ;qD1a4K;!9"4" 1# $(Aad
QT(9AqD(@1(D#E#E1F GJ!ff1M OP	
A1O1 Bq!tGD!Q$q!tad):QT)AA)E$F$FFs1vvMq	
A1qP qDq!teAqDj1a4&7!Q$&>&B!C!CCCFFJA	
AMqD1a4KM! ""%&T$A	AqD1H/E*F*F%FtQPQTE	
AM1M!tMM  H! H! &!!$Q&()*A&356tadUQYA	J
 = 8 8 6R1Wq[6a&&6!!%q!teAqDj1a4&7!Q$&>&B!C!C6D&DFJQPQTE
MdQhL G Gq!teAqDj1a4/!Q$6:;;G<<?FFGC&C FGtaQRdU
NdQhM H H FQ$A+F'%(( ) *.q!teAqDj1a4.?!Q$.F.J)K)KL MP	M M q!tad{O  !1uqy1a4!8&<!=!==r!tD!Q$	1J!tJdJJ E  E  @  #A@'()1a4!Q$;A(B@DFGc!eD	
Aad
QTAqD 1$M& M& G&&)!ffG-./A1q0@.@GB@BEFqS	
A	AqD1HO J J F#QTE!Q$JA$51$<q$@AAFBBEa&&FIJKQ$	K
FtadUQYA*+++adU1Wq[9#a&&@q!teAqDj
Q$GAGG B B F tadUQYA$:;;;QTAqD[IEK@K  L
 MP	M M  q!tad{O *  !!Q$(|RT!VQTAX->1a4!Q$;
C A .s1uaA1o&.'  ()*AqD1a4K :+:, =>q!taxL!Q$	K
 =BqDq!teAqDj1a4'!Q$.2333CFF:Aq!tad{OQPQT
N = !AdAqD5A:1,q!t3a7888Q?AqD1a4K
D B !D1a4%!)adQh/000q!teAqDj1a46G!Q$6N	7
 2 2 q66a4!8 1uqy1a4!8&<!=!==1uQw{KC	M M  Aad
QT!AqD(1,-- ..01$A	AqD1H7M 3
 3
 1
a4!Q$;1= a&&=! #$D1a4%!)adQh)?$@$@"@!Q$A+"N=
-
: dQTEAI1q)***4Aad
QT0AAqD0H10L+M+MMc	O OO !tQTAX1q!t,adQh79;9< <=TAqD519	1qC > > <Aad
QT)AqD01455<669!ffai<@ABAq!tax	1q!tBdQhB <!= !DB D>>QqS!Q$1q!t"455555 EFF8997CS;T;TUUV V V V 5e,,,DAqAaC!A#I!A#!)++++Aq1Q3wK  AaCQK////AqsQqSyM""acAaCi////CFFSVVO$$A....C!HHs1vv%&&#a&&0000E"b!$$%%Q//////rb   c                     t           t          z  t          t          z  z   t          t
          z  z   dz
  } t           t          z  t          t          z  z   t          t          z  z   dz
  }t           t          z  t          t          z  z   t          t          z  z   dz
  }t          | ||gt           t          t          d          }t          |t                             t          t          z  t
          t          z  z   t          t          z  z   t          t          z  z
  t
          t          z  z
  t          t          z  z
  t          t          z  t          z  t          t          z  t          z  z   t
          t          z  t          z  z   t          t          z  t          z  z
  t          t          z  t          z  z
  t
          t          z  t          z  z
  z  k    sJ d S )Nro   Frk   )rO   rS   rP   rT   rQ   rU   rV   rW   rX   rY   rZ   r[   rK   rJ   )f_1f_2f_3	solutionss       rc   test_issue_3557r      s)   
A#!)ac/A
C
A#!)ac/A
C
A#!)ac/A
CsCoq!Q???IIaL!!	
1qsQqS1Q3	1	$qs	*	
1Q1Q1Q	1Q	&1Q	.1Q	6	88 8 8 8 8 8rb   c                     t          t          t                    dz  t          t                    dz  z             dk    sJ t          t	          t          dz             t	          t                    z            t          k    sJ t          t          t                    dz  t          t                    dz  z   t          t                    t	          t                    z  z             dt          z   k    sJ t          t          t          t                    dz  t          t                    dz  z   t          t                    t	          t                    z                      t          t          d          k    sJ t          dd          } t          t          t          | z  z             t          d| z   z  k    sJ t          t           t          z  t          t          t          z  t          dd          z  t          t          dz  z  dt          z  z  z             z  t          t          t          t          t          z  t          dd          z            z  dt          t                    z  z            z  dt          t                    z  z  t          t          z  t          t          t          z  t          dd          z  t          t          dz  z  dt          z  z  z             z  dt          t                    z  z  z   z  t          t           t          dz  z  dt          z  z            z  t          t                    t          z  z  t          t          t                    z  t          t          t          t          t          z  dz            z  dt          t                    z  z             dz   z  t          t          t          z  dz            z  dt          t                    z  z  z
  }t          |          dt          d	d          z   t          t                    z  t          t                    z  k    sJ t          ddt          z   z  dz            dt          z  k    sJ d S )
Nr^   ro   ncFru   rp   rt   rq   )rJ   r0   rO   r/   r4   r!   r   r   r   r   r$   r   rR   r3   r*   )r   anss     rc   test_simplify_otherr      sW   CFFAIA	)**a////E!a%LLq)**a////CFFAIA	)IaLLq,AABBa!eKKKK
3q6619s1vvqy )A,,uQxx"788: :=?1XXF F F F	5	)	)	)BA"HAF++++ bSU3qtHROO+a1facl:;;;C#ad8TVXY??FZB[B[@[	
477A = = Qi!#%a4AbD"a,@1QT61Q3<,O(P(P#P	
477$ !AqD!A#''()-b!578bz
aAbDFmQtAwwY'
(
(	(1	,8..1!B$q&kk8:;<T!WW98FFC C==b8Aq>>11$r((:477BBBBBAAJqL!!QT))))))rb   c            	         t          t                                        t                    } t          t                                        t                    }t	          | |z            t          t                    k    sJ t	          t          t          ddgddgg                              t          t          d          t          d           gt          d          t          d          gg          k    sJ d S )Nr   rt   ro   )r/   rO   _eval_rewrite_as_expr2   rJ   r0   r$   r<   )cosAsExptanAsExps     rc   test_simplify_complexr      s    1vv**1--H1vv**1--HHX%&&#a&&0000 CB!Q0112233vA	Q@q663q66"?$ 8% 8% % % % % % %rb   c                      g d} | D ]\}t          |          }t          t          |d                    t          |          k    sJ t          |t                    |usJ ]d S )N)za(1/2 - sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3) + 1/((1/2 - sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3))za1/((1/2 + sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3)) + (1/2 + sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3)z8-(sqrt(21)/2 + 5/2)**(1/3) - 1/(sqrt(21)/2 + 5/2)**(1/3)ro   )ratio)r   r   rJ   r   )rootsrs     rc   test_simplify_ratior      s    I I IE  . .aDD!1---..)A,,>>>>$$$A-----	. .rb   c                  X   d } d }t           dz   t           t          t                     dz  z   t          t                     dz  z   z  } | t          ||                      | |          k    sJ  |t          ||                     ||          k    sJ t	          t          t                     dz  t          t                     dz  z   d          } | t          ||                      | |          k    sJ  |t          ||                     ||          k    sJ d S )Nc                 :    t          t          |                     S rj   )lenstrr   s    rc   <lambda>z'test_simplify_measure.<locals>.<lambda>   s    CD		NN rb   c                 "    t          |            S rj   )r   r   s    rc   r   z'test_simplify_measure.<locals>.<lambda>   s    Yt__, rb   ro   r^   )measure)rO   r0   r/   rJ   r   )measure1measure2r   expr2s       rc   test_simplify_measurer      s+   **H,,HEAA	MCFFAI-.D8HT844455$GGGG8HT844455$GGGGs1vvqy3q6619$a((E8HUH55566((5//IIII8HUH55566((5//IIIIIIrb   c                  (   dt           z  dt          z  z  } t          | d          dt           t          z   z  k    sJ t          | d           dt           t          z   z  k    sJ t          | d          | k    sJ t          dd          dk    sJ d S )Nr^          @TrationalFz0.9 - 0.8 - 0.1r   )rO   rP   rJ   r   s    rc   test_simplify_rationalr      s    a4A:DDT***a!A#h6666DT***cAaCj8888DU+++t3333%$7771<<<<<<rb   c            	          t          t          t          dd                    t          t          dd                    z             dt          z   t          t          dd                    z  k    sJ d S )Nrt   r^   r   ro   )rJ   r$   r   r   ra   rb   rc   test_simplify_issue_1308r      sl    CQ((3xA+?+??@@	
QHROO$$$% % % % % %rb   c                     t          t          t          t                     z             t          t                     t          z   k    sJ t          dd          } t          | | |  z  z             | | |  z  z   k    sJ d S )Nr\   Fru   )rJ   r   r$   r   r\   s    rc   test_issue_5652r      sx    AQBK  CGGaK////'''AAQBK  AQBK//////rb   c                      t          d          } t          d          }| |z   dz  d| z  |dz  z  d|dz  z  z
  d| dz  z  |z  z
  z  }t          |          dd|z  z  k    sJ d S )NrO   rP   r^   rr   rq   ro   rs   )r   rJ   )rO   rP   rW   s      rc   test_simplify_fail1r      sy    sAsA	
Q
BqDAI!Q$&1a412AA;;!r!t*$$$$$$rb   c                     t          ddt          d          z  z   d          t          d          dz   k    sJ dt          d          z   dt          d          z  z
  t          d          z   t          d          z   } t          t          | dz            d          | k    sJ t          dd	t          d          z  z   d
          dt          d          z   k    sJ t          dd	t          d          z  z
  d
          dt          d          z
  k    sJ dt          d          z  dz   dt          d          z  z   dt          d          z  z   }t          |d
          dt          d          z   t          d          z   k    sJ dt          d          z   t          d          z   t          d
          z   } t          t          t          | d
z            d
                    | k    sJ dt          d          z   dt          d          z  z   dt          d          z  z   } t          t          | d
z            d
d          | k    sJ dt          d          z   dt          d          z  z
  dt          d          z  z   } t          t          | dz            d          | k    sJ t          t          | dz            d          | k    sJ d S )NZ   "      rq   ro   r^   rw   )         irt   i(  
   ix  i
  ih        i  )rF   r*   r
   )qr   s     rc   test_nthrootr      s   2477
?A&&$q''A+5555	DGGaQi$q'')DGG3A%ad++Q//144442477
?A&&!d1gg+55553DGG#Q''2Q<7777R=4$tAww,.d2hh>D4q477{T"XX55555	DGGd1ggQ'Ag&8A&>&>BBCCqHHHH	DGGaQi!DHH*,A%ad++Q22a7777	DGGaQi$tAww,.A%ad++Q//14444%ad++Q//1444444rb   c                  n   dt          d          z   t          d          z   t          j        dz  z   } t          | dz            }t	          |d          | k    sJ dt          d          z   t          d          z   t          j        dz  z   } t          | dz            }t	          |d          | k    sJ d S )Nro   r^   rq   l      Fx:^V r   l       73Me')r*   r   Oner
   rF   )r   ps     rc   test_nthroot1r     s    	DGGd1ggf,A1a4  A1a==A	DGGd1ggf,A1a4  A1a==Arb   c            	         t          d          \  } }}}t          d|z  | z  |z  d| z  |z  |z  z             d| z  |z  ||z   z  k    sJ t          | |z  | |z  |z  z             | |z  d|z   z  k    sJ t          t          | z  |z  t          | z  |z  |z  z             t          | z  |z  d|z   z  k    sJ t          | |dz  z  t          |           z  | t          |           z  t          |          z  z             | t          |          |dz  z   z  t          |           z  k    sJ t          | t	          | |z             z  | t	          |           z  z             | dt	          |          z   z  t	          |           z  k    sJ t          | |dz   z  |z            j        sJ t          d| z   |z   | |z  z             | dz   |dz   z  k    sJ t          |t          z  t	          || z
   t          |          z            z            |t	          | t          |          z            z  t	          | t          |          z            z  t          z  k    sJ t          | |z   | |z
  z  |dz  z   d| z  z   dz             | dz   dz  k    sJ t          dd          }t          t          |dz  | |dz  z  z                       |t          d| z             z  k    sJ t          t          ||dz  | |dz  z  z   z                      |t          |d| z   z            z  k    sJ t          t          ||dz  | |dz  z  z   z            d          |t          |          z  t          d| z             z  k    sJ t          t          | |z                      j        sJ t          t          | |z            d          t          |           t          |          z  k    sJ t          d| z  dz   |z  dd	          d
d| d| z  dz   ||ik    sJ t          d| z  dz   |z  d| g	          d
|| d| z  dz   ik    sJ t          d| z  dz   |z  dg 	          d
d| d| z  dz   ||ik    sJ t          d| z  dz   |z  d          d
d| d| z  dz   ||ik    sJ t          d| z  dz   |z  dd 	          d
|d| z  dz   z  ik    sJ t          dd          J t          d| z  |z   dd	          J t          d| z  |z   d          J t          d| z  |z   dd 	          d
d| z  |z   ik    sJ t          dd          \  }}t          |||z  z             d|z   |z  k    sJ t          | | |z  z             | d|z   z  k    sJ t          d          }t           ||           |  ||           z  z              ||           |  ||           z  z   k    sJ | dt          dd||z            z   z  }t          |          |k    sJ t          t          | |z                      }|t          |           t          |          z  k    r|j        sJ t          d          dz  t          d          dz  z   dz
  }t          | |z            }	t          |	          }|	j        s*|j        r#|t          |           t          |          z  k    sJ t          t          | |z  |z                      }|t          |           t          |          z  t          |          z  k    sJ t          t          | |z   |z                      t          | |z   |z            k    sJ d S )Nzx,y,z,nr^   ro   r   Tpositiveforcera   )dictr   coeff)r   rq   zn,mFru   rX   )r   rH   r   r0   r$   is_Powr/   r   r*   r   r5   r_   is_Mul)
rO   rP   rQ   r\   r   r{   rX   eqr}   rS   s
             rc   test_separatevarsr     s   ##JAq!Q!Aa!A#a%')**ac!eQUm;;;;!ac!e$$!QU33331QAa)**bd1fa!en<<<<!Q$s1vv#a&&Q788	3q66AqD=#a&& ! ! ! !#a!e**qQx/00Aq3q66zN3q664IIIIIAEQ''....A	AaC((QUQUO;;;;"S1q5#a&&11122	#aAh--QBs1vvI&r)* * * *QQ!Q$.14q899a!eaZGGGGsT"""AQTAadF]++,,$q1u++====Q1qAv.//00Ad1a!e9oo4EEEEEQ1qAv.//t<<<	$q''	$q1u++    QqS		""))))QqS		...$q''$q''/AAAA !A#'1D"===	!Q!aA&' ' ' ' !A#'1D1#>>>	!Q!a ! ! ! !!A#'1D"===	!Q!aA&' ' ' '!A#'1D111	!Q!aA&' ' ' '!A#'1D$???	!QqS1W+    %%%---!adB777???!ad+++333!adD999gqsQw=OOOOO5e,,,DAqAaC  QUAI----AaC  Aq1uI----A!q1v&&!!A$$11Q44-7777	
Ab"ac"""	#Br!!!!S1XXAAs1vv!(A	CFFAI!AAaCAQAx;AH;c!ffSVVm););););S1QZZ  AAs1vvc!ff$$$$$ QqS!G%%ac1W555555rb   c            	         t          d          \  } }}t          dt          |           t          |          z  z   t          |           z   t          |          z             t          |           dz   t          |          dz   z  k    sJ t          d| z   t          |          z
  | t          |          z  z
  t          |          t          |          z  z
  | t          |          z  t          |          z  z
  | t          |          z  z   t          |          z             | dz   t          |          dz
  z  t          |          dz   z   k    sJ t          dd          \  } }t          dt          | t          |          z            z   t          | |z            z             t          |           dz   t          |          dz   z  k    sJ d S )Nzx,y,zro   x,yTr   )r   rH   r&   r$   rO   rP   rQ   s      rc   !test_separatevars_advanced_factorr   O  s   gGAq!CFF3q66M)CFF2SVV;<<	Q!c!ffqj!" " " "AA3q661CFF3q66MA	#a&&QCFF(#%(VV, - -q53q66A:
A

+,- - - - 54(((DAqC3q66	NN*S1XX566	Q!c!ffqj!" " " " " "rb   c                  Z   t          dd          \  } }t          t          |          |          |dz   k    sJ t          t          |dz            |          J t          dt          |          z  |          d|dz   z  k    sJ t          d|z  t          |          dz  z  |          d|dz   dz  z  k    sJ t          t          | |          |          | |z
  |dz   z  k    sJ t          t          | dz   |          |          | |z
  dz   |dz   z  k    sJ d|z  dz   t          |          z  t          d|z  dz             z  }t          ||          t          j        d|z  dz   dd	|z  z   d
|dz  z  z   z  z  k    sJ dd|z  dz
  t          d|z  dz             z  z  }t          ||          |t          j        z
  |dz   d|z  dz   z  d|z  dz   z  z  k    sJ t          | |          d|z  z  t          |          z  }t          ||          || z
  |dz   dz  z  k    sJ d S )Nzn,kTintegerro   r^   rp   r   rq      r   rt   )r   rB   r!   r    r   Half)r\   rz   terms      rc   test_hypersimpr   [  s\   5$'''DAqYq\\1%%Q....Yq!t__a((000Qy||^Q''1a!e94444QT)A,,/)1--AEA:====Xa^^Q''AEAE?::::Xa!eQ''++A	AE/BBBBBaC!GYq\\!)AaC!G"4"44DT1!A#'A1HqAv4E)F!GGGGGqsQw	!A#'***+DT1!af*A!a/@!A#'/J!KKKKKAq>>2'!)A,,.DT1!a%!a%!!3333333rb   c            	      (   t          d          } t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d| z             d| z   k    sJ t          d          t          dd          k    sJ t          dt          z
            dt	          d          z
  d	z  k    sJ t          dt	          d          z   d
z  t          g          t          d	z  k    sJ t          d	t          z  t          g          d	t          z  d	z
  k    sJ t          t          t          t          z  t          dd          z  d                    t          d          k    sJ t          t          t          t          dd          z  d                    t          d          k    sJ t          t	          t          dd                    d	t          z   z  t          g          t	          t                    t	          t                    d	z  t          z  z   k    sJ t          d	t          d	t          d          z  t          z            z             t          d          k    sJ t          t          d          t          dd          k    sJ t          t          d          t          dd          k    sJ t          dd          t          dd          k    sJ t          dd          t          dd          k    sJ t          ddd           d	t          dd          z  k    sJ t          | d!z   d"          t          j        | z   k    sJ t          d#| z   d"          t          dd          | z   k    sJ t          t          d                                          d"          t          d$          k    sJ t          t          d%          t          t          d	          g          t          t          d	          z  d&z  k    sJ t          t          d%                              d          t          t          d	          g          t           d
z  t          d	          z
  t          dd
          z   k    sJ t          | d'z            | dz  k    sJ t          t          d(z            t          d)z  k    sJ t          t          d(z  d"          t          d(z  k    sJ t          t          d*z            d+t          z  k    sJ t          t!          d,t"          d	z  z  t"          d	z  d-z  z  dt"          d	z  d.z  z  z                                           t                    rJ | d/z  }|j        rt          | d/z            dk    sJ t          d0d1d2          t          dd          k    sJ t          d0dd2          t          dd          k    sJ t          d3d1d2          t          d4d          k    sJ t          d3dd2          t          d4d          k    sJ t          d5dd2          t          d5          k    sJ t          d6dd2          t          d7          k    sJ t          d8dd2          t          d9          k    sJ t          d:          t          d;d          k    sJ t          d<d          t          dd          k    sJ t          d=d          t          dd          k    sJ t          d>d          t          d?d@          k    sJ t          dAd          t          dBd@          k    sJ t          t          dC                    t          ddD          k    sJ t          dEd"          dk    sJ t          dF          }t(           t(          || f}|D ]I}t+          |          t(          z  }t          |          |k    sJ t          || z             | |z   k    sJ Jt          dGddHI          t          dG          k    sJ t          t          j        d)          | z  dHJ                              d)          t          j        d)          | z  k    sJ d S )KNrO   r   rt   ro   g@   r   r   r^   rp   rq   Fevaluatez1/2 - sqrt(3)*I/2zsqrt(sqrt(5)/8 + 5/8)1z1/4z49/17 + 8*I/17g{Gz?)	tolerance   r   gMbP?ic  q   g1ZGU?g-C6?gr(?i{  i  T)r   full      ?r   g
@z109861228866811/100000000000000gAk?r         @g      Y@d   gHz>i g      g      g              gk}
@g?)r   r   gRTU@   !   g
ףp=@@   gzGB@(   g33333ciig?gɿg镲q?iW  i  g镲q̿ig:0yU>ig9(L67infgQUU?exact)r   rational_conversion)r   )r   rE   r   r   r*   r$   r   r   r   r0   r.   r   r   r&   r\   r   r?   rQ   atomsr   r   r#   r`   )rO   rW   r   infszir   s         rc   test_nsimplifyr   r  sb   sAQ<<1R==BQ<<1QUq1u$$$$S>>Xb"------Q_%%!d1gg+q8888a$q''k1_{m44AEEEEQ{][M22ama6GGGGGSAhq!nn,u===>>#$$% % % %SHQNN*U;;;<<'(() ) ) )T$sU33344a!e<rdCCR488A:a<       QQtE{{]1_---..':J2K2KKKKKR4(((HROO;;;;R5)))Xc3-?-?????W---!Q????[E222hsC6H6HHHHH[E===	8Aq>>   QVd+++qvz9999TAX---"a11DDDDDSVVXXZZ$///1223 3 3 3U,--CFF|<<3q66	!KKKKU,--//22RQLAA	AA!Q'( ( ( (QsUqs""""RV3&&&&RVe,,,58888RW",,,,tAqDy!Q$$'!QTTN*::;;= ==BU5\\J J J	3A8.	!S&))Q....Xt<<<QOOOOX==="aPPPPXt<<<QOOOOX==="aPPPPR2555"EEEEUb4888HRLLHHHHUb4888HRLLHHHHV 3 33333R1%%%!Q7777SA&&&(2q//9999Ua(((HT4,@,@@@@@Vq)))XeT-B-BBBBBQtWW!X!6!66666UT***a////
,,CCS3$D , ,2hhrk}}####a  AG+++++Z$GLLLPXYcPdPddddd RXc]]1_'BBBHHMMQSQYZ]Q^Q^_`Q```````rb   c                  b    t          d          } t          |           t          j        k    sJ d S )NzE1/(1 - (-1)**(2/3) - (-1)**(1/3)) + 1/(1 + (-1)**(2/3) + (-1)**(1/3)))r   rE   r   r   )rm   s    rc   test_issue_9448r     s/    
Y
Z
ZCS>>QV######rb   c                  B   t          d          } t          d          }t          d          }t          d          }t          |  | z            | |z  k    sJ t          |  |z            |  |z  k    sJ t          | |z            | |z  k    sJ t          | | z            |  |z  k    sJ t          |  dz            t          | z  k    sJ t          t          dd                    t          u sJ t          | | z  | |z
  z            || z  ||z   z  k    sJ d S )NrO   rP   rS   rT   r   )r   rJ   r   r   )rO   rP   rS   rT   s       rc   test_extract_minus_signr     s3   sAsAsAsAQBrE??ac!!!!QBqD>>aRT!!!!AaC==AaCAqbD>>aRT!!!!QBqD>>SU""""HROO$$++++QBqD1"q&M""ac1q5k111111rb   c                     t          d          } t          d          }t          d          }t          d          }t           ||                               |            ||                               |           z   ||                               |            ||                               |           z  z
            dk    sJ t          d ||           z   ||                               |           z  t           ||           dz  |           z
            dk    sJ t          t          d ||           z  |            ||                               |            ||           dz  z  z             dk    sJ t           ||                               | |           ||                               ||           z
            dk    sJ d S )NrO   rP   rX   rY   r   r^   ro   )r   r   rJ   r   rO   rP   rX   rY   s       rc   	test_diffr     s   sAsAAAAAaDDIIaLL11-!		!QQqTTYYq\\0IIJJaOOOOAaaddF11Q4499Q<<'$qqttQw*:*::;;q@@@@D11Q44OOaaddiill11Q447&::;;q@@@@AAaDDIIaOOaaddii1oo566!;;;;;;rb   c            	         t          d          \  } }t          d          }t          dd          \  }}t          dd          }t          t          |           dt          |          z  z             t          |           dt          |          z  z   k    sJ t          t          |           dt          |          z  z   d	          t          | |dz  z            k    sJ t          |t          |          z  t          |          z             |t          |          z  t          |          z   k    sJ t          |t          |          z  |t          |           z  z             t          ||z            |t          |           z  z   k    sJ t          |t          |          z  t          |          z
            t          ||z  |z            k    sJ t          t          |           t          |          z            t          |           t          |          z  k    sJ t          t          |          t          |           z            t          |          t          |           z  k    sJ t          t	          d
t          |          z  |t          |          z  z                       t	          t          ||z  |dz  z                      t	          t          |dz  ||z  z                      fv sJ t          t          t          |           t          |          z
            t          |          z
  d	          t          t          | |z            |z            k    sJ t          dt
          z   t          |           z  d	          dt
          z   t          |           z  k    sJ t          | dz  t          |           z   t          |          z
  | |z  z  d	          | dz  t          | |z            z   | |z  z  k    sJ t          t          |           dz  t          |          z  t          |          z   d	          t          ||t          | dz            z  z            k    sJ t          | |z  t          | dz  |dz  z             z   t          |           z   t          |          z
  t          | t          dd          z  z  t          |          dz  z  z  d	          | |z  t          | dz  |dz  z             z   t          | |z            z   t          | t          dd          z  z  |t          dd          z  z  z  k    sJ t          t          t          | |z                       t          t          | |z                       z  d	          t          t          | |z                       t          t          | |z                       z  k    sJ t          dt          |          z  t          |          z  t          |           z  t          |          z   t          |          z             t          |t          |dz            z            t          |           z  t          ||z            z   k    sJ t          dt          |          z  dt          |          z  z             t          |dz  |dz  z            k    sJ t          | |dz   z  t          d          z   t          d          z             | |dz   z  t          d          z   k    sJ t          | |z   t          |          z  |  |z
  t          d          z  z             | |z   t          |dz            z  k    sJ t          t          |           t          d          z             t          d| z            k    sJ t          t          |                     t          t          |                    z   }t          |          |k    sJ | d|di}t          t          |           t          |          z                                |          |                    |          k    sJ d S )Nr   rS   zz,wTr   rT   realr^   r   rs   rp   rq   ro   rw   r   )r   r   rD   r&   r/   r   r*   r   r   r4   r,   r_   subs)rO   rP   rS   rQ   r|   rT   r   repss           rc   test_logcombine_1r     sw   5>>DAqsA54(((DAqsAc!ffqQx'((CFFQs1vvX,=====c!ffqQx't444AadFCCCCaAhQ'((Ac!ffHs1vv,=====aAh3q66)**c!Q$ii!CFF(.BBBBBaAhQ'((C1QKK7777c!ffSVVm$$As1vv5555c!ffSVVm$$As1vv5555c"SVV)aAh.//00SQT!Q$Y5H5H36s1a419~~3F3F5H H H H Hc#a&&3q66/**SVV34@@@C!HHQJ   q1uc!ffnD111a!eSVV^CCCCq!tc!ff}s1vv-!4DAAA	
AAaC1Q3        c!ffQhs1vvoA.d;;;AaQTlN   qsT!Q$A+...Q7#a&&@2aRSUVFWCWGGQJD #% % %aC$q!tad{###c!A#hh.Ax1~~4E1EaRSUVFW1W)YY Y Y Y eS1XXI&&tS1XXI6dCCCc!A#hhYs1Q3xxi((() ) ) ) aAhs1vvoc!ff,s1vv5A>??As1a4yyL#a&& 3qs88+, , , ,aAh3q66)**c!Q$q!t)nn<<<<aQi#a&&(3q66122aQi#a&&6HHHHHq1uc!ffnQA677AE3qs88;KKKKKc!ffs1vvo&&#ac((2222	SVVs3q66{{	"Bb>>Rq!Q<Ds1vvc!ff}""4((BGGDMM999999rb   c                  V   t          t          t          dz            t          t          dz            z   t          z  t                    } t	          | d          | k    sJ t	          | dt          t                    z  z   d          | t          t          dz            z   k    sJ d S )Nr^   rq   Tr   )r8   r0   rO   r/   rD   r&   )r[   s    rc   test_logcombine_complex_coeffr     s    #ad))c!Q$ii'*A..Aat$$$))))a!CFF(l$///	C1II     rb   c                     t          dd          \  } }t          t          d          t          d          z
            t          t          dd          d          k    sJ t          t          |           t          |          z
            t          | |z            k    sJ t          t          t          dd          d          t          d          z
            t          t          dd          d          k    sJ d S )	Nr   Tr   rq   r^   Fr   rp   )r   rD   r&   r   rO   rP   s     rc   test_issue_5950r     s    54(((DAqc!ffs1vvo&&#hqmme*L*L*LLLLLc!ffs1vvo&&#ac((2222c(1Q--%8883q66ABBHQqMME***+ + + + + +rb   c            	         t          d          } t          t          | t          dd          z   t          dd          z                       dk    sJ t          d| z            \  }}t	          |                                                              |          t	          |            k    sJ t          t          | d| z   g                    d	k    sJ t          dd          }t          dd          }| ||g}t          |          \  }t          |          d
k    sJ fd|D             |k    sJ t          t          t          d| z  t          z             d         t          ddf                                                    dk    sJ t          t          t          d| |z  z            d         |ddf                                                    dk    sJ t          dd          }t          |          \  }}|j
        i ddddddddddddddddddddddddddd dd!dd"dd#dddd$k    sJ d S )%NrO   r   Tr   r\   negativez(_x + n + p, {_x: x})ro   z([_x, _x + 1], {_x: x})z
[_x, n, p]c                 :    g | ]}|                               S ra   )r   )rl   r|   r   s     rc   
<listcomp>ztest_posify.<locals>.<listcomp>  s#    +++QAFF4LL+++rb   r   rq   z3Integral(1/_x, (y, 1, 3)) + Integral(_y, (y, 1, 3))zSum(_x**(-n), (n, 1, 3))rz   )finiter   zeroF	imaginarynonpositiverv   	hermitianr   nonzerononnegativer  complexr  infiniteextended_realextended_negativeextended_nonnegativeextended_nonpositive)extended_nonzeroextended_positive)r   r   rG   r   r&   r	   r   r8   rP   r   assumptions0)	rO   r   repr   r\   origmodifiedrz   r   s	           @rc   test_posifyr    s   Av	sT"""	#sT"""	#$ $ % % )@@ @ @ @
 QqSkkGBr77>>  %%#a&&0000vq!a%j!!""&?????d###Ad###Aq!9DD\\NHdx==L((((++++(+++t3333xqsQw*Q1I66==??@@=> > > >s6!AqD&>>!$q1g..557788"# # # # 	s4   AQiiGB? :z4 : :U :E:($:0;T:CI4:QZ\`:D:$e:-6:>F: : (: /B5: T	: $:5	:
 D: : : : : : : : :rb   c                      t          d          } t          dt          z  d | t                    z  z   dt          z  d | t                    z  z   z            dk    sJ d S )NrX   rp   rw   r^   rq   )r   rJ   rO   rP   )rX   s    rc   test_issue_4194r  0  sY    AQqS1QQqTT6\AaC!AAaDD&L122a777777rb   c                      t          t          dz  t          dz  z
            dk    sJ t          t          dz  t          dz  z
            dk    sJ d S )Nr   r^   r   )rJ   rO   ra   rb   rc   test_simplify_float_vs_integerr  6  sT     AsFQTM""a''''AqD1c6M""a''''''rb   c            	      j   t           dz  t          z                                   t          j        t           dt          z  z   fk    sJ t           dz  t          z                       d          t          j        t           dz  t          z   fk    sJ t          t           dz  t          z   z                                  t          j        t          t           dt          z  z   z  fk    sJ t          t           dz  t          z   z                      d          t          j        t          t           dz  t          z   z  fk    sJ t           ddt           z  z   z  dt           z  dz   dz  z                                  dt           t           dz   dz  z  fk    sJ ddt           z  z   dt          z  ddt          z  z   z  z                                   dt           dt          z  t          dz   z  z   dz   fk    sJ ddt           z  z   dz                                  ddt           z  dz   dz  fk    sJ ddt           z  z   dt          z  z                                  dt          t          d          dt           z  dz             dt          z  z  fk    sJ d	d
t           z  z   dt          z  ddt          z  z   z  z                                   dd
t           z  dt          z  t          dz   z  z   d	z   fk    sJ d	t           dt          z   z  z  dt           z  ddt          z  z   z  z                                   dt           t          dz   z  fk    sJ d	t           dt          z   z  z  dt           z  ddt          z  z   z  z   dz                                  dt           dz  t          dz   dz  z  fk    sJ t          dz                                  dt          dz  fk    sJ t          j                                        dt          fk    sJ t           dt          z   z  } |                                 d| fk    sJ t          j        dt           z   z                                  t          dd          dt            z  fk    sJ t          dd          dt           z   z                                  t          dd          t          dd          t           z  fk    sJ t          dd          dt           z   z                                  t          dd          t          dd          t           z  fk    sJ ddt          z   dz  z                                  ddt          dz  z  fk    sJ ddt          z   dz  z                                  ddt          t          j        dt          z   d          z  fk    sJ d	t          dd          z                                  dd	t          dd          z  fk    sJ d	t          dd          z                                  d	d	t          dd          z  fk    sJ t          t          t          d	d          z  dt           z  t          t          dd          z  d                                          t          dd          dt           z  dt          z  z   d
t          z  z   fk    sJ dt          dd          z  dt          dd          z  t          d          z  z                       d          ddt          dd          z  t          d          t          d          z   z  fk    sJ d S )Nr^   F)clearrq      ro   rw   rp   r   r   r   y   rt   r   r   r   r   r      T)radical)rO   rP   as_content_primitiver   r   r   r   Infinityr   r   r   r   rQ   r*   r   s    rc   test_as_content_primitiver&  >  s   aC!G))++AaC/@@@@@aC!G)))6615!A#':JJJJJqsQwK--//AFAq1Q3wK3HHHHHqsQwK--E-::qua1qk>RRRRR
 q1Q3wK1q1$::<<	QAz\   !Gac1qs7m#99;;	
A!QUOa ! ! ! !1WqL..00	
QqS1WqL   1W!2244	
[1!a))QqS123 3 3 31HqsA!G}$::<<	
BqD1Q3A;"#$ $ $ $q!a%yMAaCQqSM)??AA	QAY   1q5	]QqS!ac']*Q.DDFF	adAEA:o   qD&&((	
AqD	   J,,..1b'9999	
QUB$$&&1b'1111FQUO1133AA27NNNNNROOa!e$::<<QNNXb!__q012 2 2 2ROOa!e$::<<QNNHROOQ./0 0 0 0Q	N0022q!ac(mCCCCQ	N0022q3qvq1uu555678 8 8 8x1~~3355!QA=N9OOOOOx1~~3355!QA=N9OOOOOq!QQ(1a..(85III^^``2A1r!t 345 5 5 5x1~~8Aq>> 1$q'' 99OOX\O]]q(1a.. $q''DGG"3456 6 6 6 6 6rb   c                     t           t            dz   z  t           t           dz
  z  z   } t          t          | d                    t          j        u sJ t          t           dz
            t          dt           z
            k    sJ t          t          t           z
            t          t           z
  k    sJ t          t          t           z
  d          t          dt           t          z
  d          k    sJ d S )Nro   r   Fr   rt   )rO   rI   r   r   truer"   rP   r   )rW   s    rc   test_signsimpr)  j  s    	A26
QAYABq!HH''''q1u::QU####AE??a!e####AEE***c"a!ee.L.L.LLLLLLLrb   c                     ddl m} m}m} ddlm} t          t          t           t          z  t          z  dz             | t          t          t          t          t          z  dz            z            z             |t          t                    k    sJ t          t          t           t          z  t          z  dz             | t          dt          t                    z  t          t          t          z  dz            z            z             |t          dt          t                    z            k    sJ t          t          d          t          t                    z  t          t!          dd          z  z  t          t          t          z  dz            z  t          t           t          z  t          z  dz            z   | t!          dd          t          t                    t          t          t          z  dz            z            z   | t          t          t                    t          t          t          z  dz            z            z  dz             |t          t          t                              t#          t          t                              z  k    sJ t           | t!          dd          t                              t          d          t%          t                    z  t          t                    t          t                    z  z  k    sJ t           | t          t          t          t           t          z  dz            z                      t          t           t          z  t          z  dz             |t          t                    z  k    sJ  |dt&          z  t)          t          t&          z            z  t&          t                    t          d          t          t                    z   |ddt          t                    z  t          t                    z            z  dz  k    sJ t          t          dz  t          d |d	t          z  t                    z   |dd	t          z  z   t                    z    |dd	t          z  z   t                    z   z  t*          d |d	t          z  t                    z   |dd	t          z  z   t                    z    |dd	t          z  z   t                    z   z  z   z  dz  t          t           |dd	t          z  z   t                    dz   |dd	t          z  z   t                    dz  z
  z  t*           |dd	t          z  z   t                    dz   |dd	t          z  z   t                    dz  z
  z  z   z  z   t          dz  d
z   t           |d	t          z  t                    z  t*           |d	t          z  t                    z  z   z  z             dk    sJ t          dt          dz  z  t           |t!          dd          dt          z            d |t!          dd          dt          z            z  z
   |t!          dd          dt          z            z   z  t*           |t!          dd          dt          z            d |t!          dd          dt          z            z  z
   |t!          dd          dt          z            z   z  z   z  dz  t          t          d |t!          dd          dt          z            z  dz  d |t!          dd          dt          z            z  dz  z
  z  t*          d |t!          dd          dt          z            z  dz  d |t!          dd          dt          z            z  dz  z
  z  z   z  z   dt          dz  z  t!          dd          z
  t           |t!          dd          dt          z            z  t*           |t!          dd          dt          z            z  z   z  z             dk    sJ t           |t          dz
  t                     |t          dz   t                    z   dt          z   |t          t                    z  t          z  z
            dk    sJ t           |t          dz
  t                     |t          dz   t                    z    |t          t                    z             dt          z  t          z    |t          t                    z  t          z  k    sJ t          t          dz   |t          t                    z  t          dz   |t          dz   t                    z  z    |t          dz   t                    z             dt          z  t          z   |t          dz   t                    z  t          dz   |t          dz   t                    z  z   t          dz   |t          dz   t                    z  z
  dt          z   |t          dz   t                    z  z    |t          dz   t                    z   k    sJ d S )Nr   )besselibesseljbessely)cosine_transformr^   ro   rp   rt   rs   r      Q   r   rq   	   r   )sympy.functions.special.besselr+  r,  r-  sympy.integrals.transformsr.  rA   r$   r   r   rP   rQ   r%   rS   r*   rO   r   r/   r'   rR   r0   rT   )r+  r,  r-  r.  s       rc   test_besselsimpr4  r  s	   JJJJJJJJJJ;;;;;;c1"R%'!)nnWWQ)AbDF2C2C0C%D%DDEE1   c1"R%'!)nnWWQ$q''	)AbDF:K:K0K%L%LLMM1T!WW9   d1ggd2hh&q(1a..'88QrT!VDS!BqQR^^Sghr1ootAwwy2a7H7H/HIIJgaa1R46):):!:;;<<=> ? ? 	477c$q''ll*+ + + + gghr1ooq1122QQb$q'')*+ + + +gga9aRU1W#5#5!56677QBrE!GAIwwq!}}$% % % %AaCAaCL!Q//QRAd1ggId1gg$5666q89 9 9 9 adAr''!A#q//1GGB1Ha4H4HHGA!GQ  b1a0772!8Q3G3GGGA!GQ  GGB1Ha$8$8$:WWQ1Wa=P=PQR=R$R!Sac1		a	''!ac'1"5"5a"7	78"9 :: >?TBY77STUVSVXY??IZ!QJ =   	    bAgq''(2q//1Q3"?"?!GGHUVXYNN\]^_\_D`D`B`"`cjcjkstuwxkyky{|}~{~cc"   A"a!A#	&	&778Aq>>1Q3+G+G)G	G''RZ[\^_R`R`bcdebeJfJf	fg h iijkmnpqstu|u|  ~F  GI  KL  ~M  ~M  OP  QR  OR  vS  vS  tS  TU  tUA!$$$Q&t' q(*+QwwxA!/L/L-LQ-NQRSZSZ[cdegh[i[iklmnknSoSoQopqQq-q*rqs ntt 1Wx1~~''(1a..!A#">"> >778TUWX>>[\]^[^C_C_A_ _`a b b fgg g g g
 ggac!nnwwqsA61WWQ]]9J19LLMMQRRRRRggac!nnwwqsA6AFGGAaCRSGU\U\]^`aUbUbKbcdKdddddadGGAaLL(1a4!Q+??''!A#q//QRRaCE''!a%

ad771q5!#4#444q!tGGAE1<M<M7MMPQRSPST[T[\]`a\acdTeTePeehohopqtupuwxhyhyyz z z z z zrb   c                  
   t           t           t          z   z  t          t           t          z   z  z
  } t          t                     dz  t          t                     dz  z   }t	          t           t          z   t          z  t           z            }t          |           }t          |          }t          |          }t          t          | t           |k     f|df                    t          |t           |k     f|df          k    sJ d S )Nr^   T)rO   rP   r0   r/   r	   rJ   r+   )e1e2e3s1s2s3s         rc   test_Piecewiser<    s    	
AEQAY	B	QSVVQY	B	Q	!		B	"B	"B	"BIr1r6lRJ77882q2v,T
++, , , , , ,rb   c                       G d dt                     }  | t          d          t          d                    }t          |          dk    sJ d S )Nc                       e Zd Zd ZdS )test_polymorphism.<locals>.Ac                     t           j        S rj   )r   r   )rO   kwargss     rc   _eval_simplifyz+test_polymorphism.<locals>.A._eval_simplify  s	    5Lrb   N)__name__
__module____qualname__rB  ra   rb   rc   r~   r?    s#        	 	 	 	 	rb   r~   r   r^   ro   )r   r   rJ   )r~   rS   s     rc   test_polymorphismrF    sf        E    	
!A$$!AA;;!rb   c                      t          dd          \  } }}}t          t          t          |           z            t          |             k    sJ d S )Nzn1 n2 n3 n4Tr  )r   rJ   r   r*   )n1n2n3n4s       rc   test_issue_from_PR1599rL    sO    ]T:::NBBAd2hhJD"II:------rb   c                  b   t           dt          z  z   dt           z  dz   z  } t          |           t           dz   t           dt          z  z   z  dz  k    sJ t          |                                           dt           dz  z  dt           z  t          z  z   dt           z  z   dt          z  z   k    sJ d S )Nr^   ro   rp   )rO   rP   rJ   r	   r%  s    rc   test_issue_6811rN    s    
ac'AaC!G	BB<<AEA!G,Q.....BIIKK  	!Q$1Q1qs"# # # # # #rb   c                  r   t          t                    t          t          t                    z  z   t          t                    t          t          t                    z  z
  t	          t                    t          t                    z
  t	          t                    t          t                    z   g} t          t          t          z            t          t           t          z            t          t                     t          t                    g}t          d          fd| D             |k    sJ d S )NrX   c                 V    g | ]%}t           |                    j        d          &S )r   )rJ   args)rl   eirX   s     rc   r  z#test_issue_6920.<locals>.<listcomp>  s/    000HQQrUUOO #000rb   )r/   rO   r   r0   r'   r)   r$   r   )rW   okrX   s     @rc   test_issue_6920rT    s    	Q!CFF(	CFFQs1vvX-Q$q''477T!WW,	.A
ac((C1IIsA2wwA	/BA0000a000B666666rb   c                     ddl m} m} t          | t	          t
          t          dd          z  | |k    fdt
          z  |dz  z  d| dz  z  z  df          z  dt	          t
          | z  t          dd          z  | |k    fdt
          z  |dz  z  d| dz  z  z  df          z  z    dt
          z  | z  z            t	          d| |k    fd	          k    sJ d S )
Nr   r   Rrp   rq   iTr^   rt   r   T)	sympy.abcr   rW  rJ   r+   r   r   rV  s     rc   test_issue_7001rZ    s   a	2hq!nn#4a1f"=	Bq!tQq!tV	d#% % %'(BqD!Q4Ga3P	
2adAadF	T"*$ *$ ($$ %&'d1f. / / 	2qAv,	**+ + + + + +rb   c                      t          t                    dz  t          t                    dz  z   } d}t          | |d          }|t          j        usJ t          |          sJ d S )Nr^   Fr   )r/   rO   r0   r   r   r(  rJ   )lhsrhsrW   s      rc    test_inequality_no_auto_simplifyr^    s`    
a&&!)c!ffai
C
C
3e$$$AAF????A;;rb   c                     ddl m}  ddlm}  |d          dk    sJ  |dt          z            dk    sJ t          d          dk    sJ t          dt          z            dk    sJ t           | d          z   | d           | d          z  z                                  dk    sJ  |d          dk    sJ  |dt          z            dk    sJ t          d          dk    sJ t          dt          z            dk    sJ  |d	          dk    sJ  |d	t          z            dk    sJ t          d	          dk    sJ t          d	t          z            dk    sJ t          d
          } ||          dk    sJ  ||t          z            dk    sJ t          |          dk    sJ t          |t          z            dk    sJ d S )Nr   )Number)cancelg+=g      ?r   ig#B;g0.++z1e-1000)sympy.core.numbersr`  sympy.polys.polytoolsra  r   rJ   r   )r`  ra  rX   s      rc   test_issue_9398rd    s"   )))))),,,,,,6%==A6%'??aE??aE!G!!!!ffRjjLVVC[[00::<<AAAA6%==A6%'??aE??aE!G!!!!6&>>Q6&(q    Fq    F1H""""iA6!99>>>>6!A#;;!A;;!AaC==Arb   c                  z    t          ddd          } | d         | d         z   dz   }t          |          |k    sJ d S )NMr   )r   r   )r   rp   i  )r>   rJ   )rf  rW   s     rc   test_issue_9324_simplifyrg    sG    S"b!!A	$!D'D AA;;!rb   c                  d   ddl m} m} t          ddd          }t          ddd          }t	          d t          d          D                       } | d          }|j        |z  |z  }t           ||                                          	                    ||||i                    dk    sJ d S )	Nr   )Identitytracevrq   ro   r~   c                     g | ]}|d z   S ro   ra   )rl   r[   s     rc   r  z,test_issue_9817_simplify.<locals>.<listcomp>  s    (((!A(((rb   r   )
sympy.matrices.expressionsri  rj  r>   r<   rangeTrJ   as_explicitxreplace)ri  rj  rk  r~   rO   X	quadratics          rc   test_issue_9817_simplifyru    s     ;:::::::S!QAS!QA((uQxx((())AAa!IUU9002233==qAajIIJJbPPPPPPrb   c                      t          d          } t          | t          t          d                    z             | t          t          d                    z   k    sJ d S )NrO   ro   )r   rJ   r(   r1   rf   s    rc   test_issue_13474rw    sN    sAAT!WW%&&!d477mm*;;;;;;;rb   c            
      H   t          d          \  } }t          d           G fddt                    }t           | |                                | |                     k    sJ t           | |                               | k    sJ t           | |                     d          | k    sJ t           | t	          |           dz  t          |           dz  z                       d          dk    sJ t           | | |                    d           | | |                    k    sJ t          t          t	          |                     sJ t          t          t	          |                               t          t	          |                     k    sJ t          dt          t	          d	| z                      z  d          d
| z  k    sJ t          t          t          |                               t          t          |                     k    sJ t          t          t          |                     d          | k    sJ t          t          t          |                     d          | k    sJ t          t          t          |           d          d          | t          d          z  k    sJ t          t          t          |           dd          d          | t          d          z  k    sJ d S )Nzx, yrY   c                       e Zd Zd fd	ZdS ))test_simplify_function_inverse.<locals>.fro   c                     S rj   ra   )selfargindexrY   s     rc   inversez1test_simplify_function_inverse.<locals>.f.inverse  s    Hrb   Nrm  )rC  rD  rE  r~  )rY   s   rc   rX   rz    s3        	 	 	 	 	 	 	 	rb   rX   T)r~  r^   ro   rq   rw   Fr   )
r   r   rJ   rC   r0   r/   r   r-   r&   r$   r   s      @rc   test_simplify_function_inverser    s   
 6??DAqA      H    AAaaddGG!!A$$''''!!AAaDD''""a''''AAaaddGGT***a////AAaaA	CFFAI-..//>>>!CCCCAAaa1ggJJ---11Q77;;;;T3q66"""""DQLL!!T#a&&\\1111Ad3qs88nn$d333qs::::CAKK  CAKK////CAKK...!3333CAKK...!3333CANND111Qs1vvX====CAE222DAAAQs1vvXMMMMMMrb   c                  T   ddl m}   | dt          z  dt          z  dz   z            t          dt          z  dz   z  dfk    sJ  | dt          z  dt          z  dz   z  dz
            t          dt          z  dz   z  t	          dd          fk    sJ  | dt          z  dt          z  dz   z  dz
  t                    t          dt          z  dz   z  t          dz  t	          dd          z   fk    sJ  | t          d          dz
            t          d          dfk    sJ  | dt          d          z  dz
            t          d          t          j        fk    sJ  | t          d          t                    dt          dz
  fk    sJ  | t          j        t                    t          j        t          fk    sJ  | t          j	         t                    t          j	        t           fk    sJ  | dt          j	        dz  z
  t                    t          d	t          z  dz   fk    sJ d S )
Nr   clear_coefficientsrp   rw   rq   r^   ro      r   )sympy.simplify.simplifyr  rP   rO   r   r*   r   r   r$  Pir   r  s    rc   test_clear_coefficientsr  #  s   ::::::ac1Q37m,,AaC!Ga0@@@@@ac1Q37ma/00Q!a[(1a..4QQQQQac1Q37ma/331Q37QrTHUVXYNNEZ7[[[[[d1ggk**tAwwl::::aQi!m,,a!&0AAAAAaddA&&1a!e*4444aj!,,Q????qteQ''AD1":5555a!$q&j!,,RTAX>>>>>>rb   c                  "   ddl m ddlmm ddlm ddlm t          dd          \  } }}}t          d	          t          d
          }t          d          }t          d          }t          d          }| |||||||it          d t          d ifddfd	} || |z  | z  |z  | z  |z  |z  | |z  dz  z  |z  | |z  dz  |z  dz              || |z  | |z  dz  z  | z  |z  d            || dz  |z  | z  |z  | z  |z  | |z  dz  z  | | |z  dz  z  d            ||| z  |dz  z  | z  |dz  z  | z  |dz  z  || |dz  z  dz  z              || |z  | dz  z  |z  | dz  z  |z  | dz  z  | |z  | z  dz  | dz  z              || dz  |z  | dz  z  |z  | dz  z  |z  | dz  z  | dz  |z  | dz  z  dz              || dz  |z  | dz  z  |z  | dz  z  |z  | z  | dz  || dz  z  dz  z  | dz  z              || |z  | z  |z  | |z  |z  z  | z  |z  |z  z   | |z  dz  | |z  |z  dz  z  z               || |z  | z  |z  |z  | z  |z  | z  |z  |z  | |z  dz  |z  dz              ||dz  | dz  z  | |z  dz  z  | |z              || dz  |z  |dz  z  ||dz  z  | z  dz             | dz  |z  | dz  z  |z  | dz  z  |z  | dz  z  |z  | dz  z  || dz  z  dz  z  |z  | dz  z  |z  | dz  z  }	t          d          D ]
}
|	| |z  z  }	 ||	| dz  || dz  z  dz  z  || dz  z  dz  z  | |z  dz  z              || |z  | z  |z  dz  | |z  | z  |z  dz  d            || |z  ||z  dz  z  | |z  ||z  dz  z             |dz  | dz  |dz  z  | dz  |z  |dz  z  z
  dz  z  | dz  z  }	 |	          d|z
  dz  k    sJ  ddz  z            ddz  z  k    sJ d S )Nr   )nc_simplify)MatPowri  )Pow)reduceza b c dFru   rO   r~   r   CDc                     | |z   S rj   ra   r   s     rc   r   z"test_nc_simplify.<locals>.<lambda><  s
    ac rb   c                     | |z  S rj   ra   r   s     rc   r   z"test_nc_simplify.<locals>.<lambda><  s
    AaC rb   c                 6   | v r|          S t          |           r+  | j        d                   | j        d                   S t          | t          t          f          r( | j                 fd| j        D                       S |            z  S )Nr   ro   c                 &    g | ]} |          S ra   ra   )rl   rS   
_to_matrixs     rc   r  z8test_nc_simplify.<locals>._to_matrix.<locals>.<listcomp>D  s!    +M+M+MaJJqMM+M+M+Mrb   )
isinstancerQ  r   r   func)	r   ri  r  r  r  funcsr  substrO   s	    rc   r  z$test_nc_simplify.<locals>._to_matrix>  s    5==;dC   	$6**TYq\22DIaLAAAsCj)) 	$6%	*+M+M+M+M49+M+M+MNNN##rb   Tc                      | |          |k    sJ t          |           t          |          k    sJ |r; |                              d          }  |           |          |k    sJ d S d S )NdeepF)
inv_expand)r	   doit)r   
simplifiedr  matrixm_simpr  r  s        rc   _checkz test_nc_simplify.<locals>._checkH  s    {4d+++z9999d||vj111111 	FZ
++00E0BBF;zz$//d;;;vEEEE	F 	FEErb   rq   r^   rs   ro   rt   )r  rp   r   r   rw   r  )TT)r  r  rn  r  ri  
sympy.corer  	functoolsr  r   r   r>   r   r   ro  )rS   rT   rU   rV   r~   r   r  r  r  r   _ri  r  r  r  r  r  r  r  rO   s              @@@@@@@@@rc   test_nc_simplifyr  /  s   333333;;;;;;;;      %888JAq!QsAS!QAS!QAS!QAS!QA1aAq#E//39E$ $ $ $ $ $ $ $ $ $ $ $F F F F F F F F1Q3q5719Q;q=!A#!!#qsQhqj1_555
F1Q3!by=?1a   
F1a46!8A:a<>1Q3)#Q!axZ>>>>
F1Q3q!t8A:ad?1QT!1a1fq[=111
F1Q3q!t8A:ad?1QT!AaCEA:ad?333
F1a46!Q$;q=Aa1$q!tAvad{Q&6777
F1a46!Q$;q=Aa!1a41a4!#3ArE#9:::
F1Q3q57QqSU1WQYq[]"QqS1Hq!A#a%!|$;<<<
F1Q3q5719Q;q=?1Q!A#!a000
F1b5B;!ax1%%%
F1b571b5=1QU719r/***a46!Q$;q=Aa1$Q&q!t+Qq!tVaK79!Q$>q@AED2YY  !
F4AqAvk!1QT6A+-qsRi7888
FAaCE!Ga<!A#a%'AE2222
F1Q3!ax<1acAX&&&b5!R%2+2a2-221b58D;t1r	))));qAv!AqD&((((((rb   c                  4   t          t          t          t          z  z  t          dt          f          } t          t          t          t          z  t          dt          f          z  }t          t          t          z  t                    }t          dz  t          z  dz  }t          | |z             ||z   k    sJ t          |           |k    sJ t          |          |k    sJ t          |d          t          t          t          t                    z  k    sJ d S )Nro   r^   F)r  )r   rQ   rO   rP   rS   r8   rJ   )r~   anewr   bdos       rc   test_issue_15965r  e  s    AadFQ1IASA1ay!!!D1aA
Q$q&(CAE??dSj((((A;;$A;;#AE"""aA&6666666rb   c                  B   t          t          t                    t          z            t          t                    t          z  k    sJ t          t          t                    ddt          z  z   z            t          t                    ddt          z  z   z  k    sJ d S )Nr^   rq   )rJ   r/   rO   r   ra   rb   rc   test_issue_17137r  p  st    CFFAI#a&&!)++++CFFQ1W%&&#a&&1qs7*;;;;;;;rb   c            	      |   t          dd          } t          dd          }t          t          | dz  d          t          | |                    }|                                |k    sJ t          t          | dz  d          t          | d                    }|                                t          | d          k    sJ t          t          | dz  | dz            t          | d                    }|                                t          | d          k    sJ t          t          t          |           | dz            t          | d	                    }|                                t          | d	          k    sJ t          t          | dz  | dz            t          | d                    }|                                t          j        k    sJ t          t          || dz            t          | d                    }|                                t          t          |d          t          | d                    k    sJ t          t          |dz  d          t          || dz            t          | d                    }|                                t          t          |d          t          | d                    k    sJ t          t          |dz  d          t          |d| dz  z            t          | d                    }|                                t          t          |d          t          | d                    k    sJ t          t          |dz  d          t          || dz            t          | d                    }|                                t          j        k    sJ d S )
NrO   Tr   rP   r^   rp   rq   ro   r   )r   r:   r   r   rJ   r0   r   false)rO   rP   r   s      rc   test_issue_21869r  u  s   sAsAr!Q${{Bq!HH%%D==??d""""r!Q${{Bq!HH%%D==??bAhh&&&&r!Q$1~~r!Qxx((D==??bAhh&&&&r#a&&!Q$Aq**D==??bAhh&&&&r!Q$1~~r!Qxx((D==??ag%%%%r!QT{{Bq!HH%%D==??c"Qq''2a88444444r!Q${{Bq!Q$KKAq22D==??c"Qq''2a88444444r!Q${{Bq!AqD&MM2a8844D==??c"Qq''2a88444444r!Q${{Bq!Q$KKAq22D==??ag%%%%%%rb   c                  <   t          t          t          ddf          } | dk    sJ t          |           t          j        u sJ t          t          j                  t          j        u sJ t          t          d                    } | t          j        ur| dk    sJ d S )Nro   r   r   )r8   rO   rJ   r   Zeror   )rQ   s    rc   test_issue_7971_21740r    s    Q1IA6666A;;!&    AFqv%%%%qAAF??qCxxxxxxrb   c                  $   t          dt          t          dz             dz  z                      d                    dt          dt          z  t          dt          ddt          z  z
            z   t          z             z  z   dz  dz  z  k    sJ d S )Nr^   ro   r&   rt   rp   )rJ   r,   r   rewriter   r&   r*   ra   rb   rc   test_issue_17141_slowr    s     QQqS		1_--e4455b1Q3s2AaC==L!#$L% H& H& D& ?&()>**+>, :- - - - - - -rb   c                  T   t          t          dt          t                    z  z            t          dt          dt          z  t          dt          d          z             z  z
  z  z  k    sJ t          t          t                     dz  t          t                    dz  z            t          dt          d          z             dz  t          dz  t          dt          d          z             dz  z  dz  z   t          dz  dz  z   k    sJ t          dt          t                    dz  z            dt          dt          z  t          dt          d          z             z  z
  dz  dz  z  k    sJ dt          t          dz             dz  z  } t          |           | k    sJ d S )Nro   r^   rp      )rJ   rO   r,   r   r   r&   r*   )r   s    rc   test_issue_17141r    sm   ADGG$%%QQqSQa[9I9I5I0I-J)KKKKKD!HHaKQ
*++q477{QQs1tAww;'7'7':!:1!<<r1uRxGH H H HAtAwwzM""a2!CDGG4D4D0D+Dq*H*J&KKKKK	4!99a<AA;;!rb   c                     t          d          \  } }t          t           | |                     | |          k    sJ t           d|                     d|          k    sJ t           | d                     | d          k    sJ t           d|                              t                     d|          z            dk    sJ t           d|           t	          dt          |d          fd          z              d|            d|          z   k    sJ t           d|           d|          z            dk    sJ t          dd          t           d           d          z            dk    sJ t          d	d	fd
          }t          |dz            t           d          d d          dgd d          d d          gdd d          dgddd d          gg          k    sJ t          t          d          t          d          z  t          d          z            t          dgg          k    sJ t          t          j
        t          d          z  t          d          z            t          j        u sJ d S )Nzi jr   ro   r^   rX  r\   Tr   rp   c                 2    | |k    r || z
            ndS )Nr   ra   )r[   jKr\   s     rc   r   z.test_simplify_kroneckerdelta.<locals>.<lambda>  s!    a!!AE1+++Q rb   )r   r6   rJ   r  r+   r   r   r<   r=   r   r$  NaN)r[   r  rf  r  r\   s      @@rc   test_simplify_kroneckerdeltar    s   5>>DAqAAAaGG!Q''''AAaGG!Q''''AAaGG!Q''''AAaGGOOI..1a899Q>>>>AAaGGiBq!HHyAAABBaa1ggPQPQRSUVPWPWFWWWWW AAaGGaa1gg%&&!++++sD!!!AAAaGGaa1gg%&&!++++q!>>>>>??AAqD>>Vaa1ggq!!Aq''1%=&'1a!QQq!WW%=&'AAaGGQ%7&'AqqAww%7%9 : : : : : : CFF^Aq111"1a(() * *-3aSE]]; ; ; ; AJ1!5!55"1a(() * *-.U3 3 3 3 3 3rb   c                  T   t          t          t                    t          t          dz            z            dt          t                    z  k    sJ t          dt          t          dz  dz
  t          dz
  z            z            dt          t          dz             z  k    sJ d S )Nr^   ro   r   )rJ   r_   rO   r"   ra   rb   rc   test_issue_17292r    s    CFF3q!t99$%%3q661111Ac1a4!8a!e,---..!CAJJ,>>>>>>rb   c                      t          t          t          dz
  d          t          t          d                    } t          |           t          t          d          k    sJ d S )Nr^   ro   rq   )r:   r   r\   rJ   r   s    rc   test_issue_19822r    sJ    r!A#qzz2a88$$DD>>R1XX%%%%%%rb   c                  ~   t          t          t          d          t          t          d                    } t	          |           t          t          d          k    sJ t          t          t          d          t          t          d                    } t	          |           t          t          d          k    sJ d S )Nrq   )r:   r   rO   r   rJ   r   r   s    rc   test_issue_18645r    s    r!QxxAq""DD>>R1XX%%%%r!QxxAq""DD>>R1XX%%%%%%rb   c                      t          dd          } t          dd          }t          t          | d|z            t          | d|z  dz
                      }t	          |          t
          j        k    sJ d S )Nr[   Tr   r\   r^   ro   )r   r:   r   r   rJ   r   r  )r[   r\   r   s      rc   test_issue_18642r    sp    sD!!!AsD!!!Ar!QU||R1Q36]]++DD>>QW$$$$$$rb   c                      t          dd          } t          | d          | dk    z  }t          |          t          | d          k    sJ d S )Nr\   Tr   r   ro   )r   r   rJ   r   )r\   r   s     rc   test_issue_18389r    sO    sD!!!Aa88qAvDD>>R1XX%%%%%%rb   c                      t          dd          } t          t          | dk     | dk                        t          j        k    sJ d S )NrO   Tr   ro   )r   rJ   r;   r   r(  rf   s    rc   test_issue_8373r    sG    sABq1ua1f%%&&!&000000rb   c                      t          t          t          d          t          t          d                    } t          |           t          j        k    sJ d S )Nro   r^   )r:   r   rO   rJ   r   r  r   s    rc   test_issue_7950r    s@    r!QxxAq""DD>>QW$$$$$$rb   c                  d    t           t          z  dz  t          z
  } t          |           | k    sJ d S Nr^   )r   r   r   rJ   r   s    rc   test_issue_22020r    s0    R462:DD>>T!!!!!!rb   c                  J   t          t          t                    t          t                    z            t          k    sJ t          t          t          t          dz  z             z   } t          t          t          t          dz  z             | z            t          dz  t          t          t          dz  t          z             z  z   t          z   k    sJ t          dz  t          t          dz  dz             z   } t          t          t          dz  dz             | z            t          dz  t          dz  t          t          dz  dz             z  z   dz   k    sJ t	          d          }t          t          t           |t                    dz  z             z   } t          t          t           |t                    dz  z             | z            t          t          t           |t                    dz  z             z  t          z    |t                    dz  z   k    sJ d S )Nrq   r^   ro   rX   )rJ   r#   rO   r"   r   )rW   rX   s     rc   test_issue_19484r    s   DGGc!ff$%%****	DQTNNACAqDMM!O$$1qQTAX(>(BBBBB	1tAqD1H~~AC1qMMA%&&!Q$Ac!Q$(mm1C*Ca*GGGGGA	DQQqTT1WACAAaDD!G$$q())Qs1qqttQw;/?/?-?!-CaaddAg-MMMMMMMrb   c                      t          dd          \  } }}| ||dz  z   z                                  | d|z  |z   z  dz  k    sJ d S )Nzx y zFru   r^   )r   rJ   r   s      rc   test_issue_23543r  
  sY    g5111GAq!q1Q3wK!!##q!A#'{1}444444rb   c                  >   d fdfd} t          d          \  }}t          dd          }t           | t          |           | t          |dz             z                                d	          }t           |j        t          |                              d                    }|||z  t          |          z  ||z  t          |dz             z  z
  |t          |          z  z   |t          |dz             z  z
  t          d
d          z   k    sJ d S )Nc                 R    t          dt          z  | z            | t          z  | z  z  S r  )r*   r   r   r   s    rc   rX   ztest_issue_11004.<locals>.f  s#    AbDF||qsQh&&rb   c                 >     |            | |z            |z  z  S rj   ra   )r\   rz   rX   s     rc   r{   ztest_issue_11004.<locals>.m  s&    !!A#	""rb   c                 (     | |          || z  z  S rj   ra   )r\   rz   r{   s     rc   r   ztest_issue_11004.<locals>.p  s    qAww!Q$rb   zN kz0.5rp   ro   Tr   gg?)r   r   r&   r\   r	   rJ   r   )r   Nrz   halfrQ   r   rX   r{   s         @@rc   test_issue_11004r    sN   ' ' '# # # # #          5>>DAq??DAAaGGaa1q5kk!"")))55A1""##AQs1vv
q&QU
	
s1vv+	 s1q5zz/	 	1

		     rb   c                      t          d                                          } | t          dz  z
                                  dk    sJ d S )Nzx**2r^   r   )r@   rJ   rO   )
polynomials    rc   test_issue_19161r  (  sD    f&&((Jq!tO%%''1,,,,,,rb   c                      t          dd          } dt          t          t                    t          | f          z  }|                                |k    sJ d S )NrV   Tr   r^   )r   r   r0   rO   rJ   )rV   r   s     rc   test_issue_22210r  -  sQ    sD!!!AZAA'''D==??d""""""rb   c                     t          dd          \  } }t          dd          }t          d|z  ||z  z            d|z  ||z  z  k    sJ t          | |z  ||z  z            | |z  ||z  z  k    sJ t          dd          \  } }t          | |z  |z            | |z  ||z  z  k    sJ t          | |z  ||z  z            t          | |z  |z            k    sJ d S )Nzx yTru   ZFr^   r   )r   rJ   r	   )rO   rP   r  s      rc   test_reduce_inverses_nc_powr  3  s
   5d+++DAq'''AAqD1a4K  AqD1a4K////AqD1a4K  AqD1a4K////54(((DAq1Q3(q!tad{****AqD1a4K  FAaC!8$4$4444444rb   c                      t          dd          } dt          t          dz            z  | z                                  | k    sJ dt          t          dz            z  | z                                  | k    sJ d S )Nrs  Fru   r^   rq   r   )r   r/   r   rJ   )rs  s    rc   test_nc_recursion_coeffr  <  sz    5)))ABqD		MA''))Q....#bd))Oa))++q000000rb   N)sympy.concrete.summationsr   sympy.core.addr   sympy.core.basicr   sympy.core.exprr   sympy.core.functionr   r   r	   r
   r   r   sympy.core.mulr   r   r  r   rb  r   r   r   r   r   r   r   sympy.core.relationalr   r   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   (sympy.functions.combinatorial.factorialsr    r!   $sympy.functions.elementary.complexesr"   r#   &sympy.functions.elementary.exponentialr$   r%   r&   %sympy.functions.elementary.hyperbolicr'   r(   r)   (sympy.functions.elementary.miscellaneousr*   $sympy.functions.elementary.piecewiser+   (sympy.functions.elementary.trigonometricr,   r-   r.   r/   r0   r1   r2   'sympy.functions.special.error_functionsr3   'sympy.functions.special.gamma_functionsr4   sympy.functions.special.hyperr5   (sympy.functions.special.tensor_functionsr6   sympy.geometry.polygonr7   sympy.integrals.integralsr8   r9   sympy.logic.boolalgr:   r;   sympy.matrices.denser<   r=   "sympy.matrices.expressions.matexprr>   rc  r?   r@   r  rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   sympy.solvers.solversrK   sympy.testing.pytestrL   rM   rN   rY  rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   rd   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r&  r)  r4  r<  rF  rL  rN  rT  rZ  r^  rd  rg  ru  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra   rb   rc   <module>r     sW   ) ) ) ) ) )       " " " " " " % % % % % % c c c c c c c c c c c c c c c c + + + + + + + + " " " " " " C C C C C C C C C C C C C C C C C C 6 6 6 6 6 6 6 6 6 6 6 6 6 6 " " " " " " / / / / / / / / & & & & & & J J J J J J J J < < < < < < < < H H H H H H H H H H D D D D D D D D D D 9 9 9 9 9 9 : : : : : : \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 7 7 7 7 7 7 9 9 9 9 9 9 / / / / / / C C C C C C & & & & & & ; ; ; ; ; ; ; ; ) ) ) ) ) ) ) ) . . . . . . . . ; ; ; ; ; ; 0 0 0 0 0 0 0 0 V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V ' ' ' ' ' ' ; ; ; ; ; ; ; ; ; ; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >& & &
H H H^0 ^0 ^0B	8 	8 	8* * *( % % %. . .
J 
J 
J= = =% % %
0 0 0% % %5 5 5"   >6 >6 >6B	" 	" 	"4 4 4.Aa Aa AaH$ $ $
2 2 2< < <': ': ':T  + + + :  :  :F8 8 8 ( ( ()6 )6 )6XM M M"z "z "zH, , ,  . . .
# # #7 7 7+ + +    >  
Q 
Q 
Q< < <
 N N N4
? 
? 
?4) 4) 4)l7 7 7< < <
& & &>( ( ( - - -  3 3 3:? ? ?& & &
& & & % % % & & &1 1 1
% % %
" " "N N N5 5 5  0- - -
# # #5 5 51 1 1 1 1rb   