
    sg                     V   d Z ddlmZmZmZmZ ddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZmZ ddlmZmZmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA  ed      \  ZBZCZD ed      ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd ZTd  ZUd! ZVd" ZWd# ZXd$ ZYd% ZZd& Z[d' Z\d( Z]d) Z^d* Z_d+ Z`d, Za G d- d.eb      Zcd/ Zdd0 Zed1 Zfd2 Zgd3 Zhd4 Zid5 Zjd6 Zky7)8z?Most of these tests come from the examples in Bronstein's book.    )FunctionLambdadiff
expand_log)IRationalpi)Ne)S)Symbolsymbols)explog)sqrt)	Piecewise)atansintan)Polycancelfactor)gcdex_diophantinefrac_in
as_poly_1t
derivationsplitfactorsplitfactor_sqfcanonical_representationhermite_reducepolynomial_reduceresidue_reduceresidue_reduce_to_basicintegrate_primitive%integrate_hyperexponential_polynomialintegrate_hyperexponential!integrate_hypertangent_polynomialintegrate_nonlinear_no_specialsinteger_powersDifferentialExtensionrisch_integrateDecrementLevelNonElementaryIntegralrecognize_log_derivativerecognize_derivativelaurent_series)raises)xtnuzayzt:3ic                     t        t        t        dz  dt        dz  z  z
  dt        dz  z  z
  dt        z  z   dz         t        t        dz  t        dz  z   dt        z  z
  dz
        t        t        dz  dz
              t        t        dz   dt        z  z   dz
  dz        t        t        dz  d	t        dz  z  z
  d
t        z  z   dz
  dz        fk(  sJ t        t        t        dz  dt        z  z   d	z         t        t        dz  dt        z  z   dz         t        t        dz               t        dt        d      t        dt        z  dz   t        d      fk(  sJ y )N                              
   g;;?QQdomaing;;g؉؉?)r   r   r1        S/var/www/html/venv/lib/python3.12/site-packages/sympy/integrals/tests/test_risch.pytest_gcdex_diophantinerJ      s?   T!Q$1a4-!AqD&"82a4"?""DEA1qs	Q	adQh1	1uqs{Q!	"D!Q$1a4-"Q$*>*CQ)F$GHI I I T!Q$1*q.141qs
Q3GaRSeU	dAd	#T%'D.!D%IJK K KrH   c                     t        t        t        dz   t        z  t        z  t              t              t        t        t        z  t        z   t              t        t        t              fk(  sJ t        t        dz   t        z  t        z  t              t        t        t        z  t        z   t              t        t        t              fk(  sJ t        t        t        dz   t        z  t        z  t              t        t        dz   t              ft              t        t        t        z  t        z   t              t        dt        z   t        z  t              fk(  sJ t	        t
        d        t        t        ddt        z  z   t        dt        z   z  z   dt        z   dz  z  t              t        d      t        t        dz   t              t        t        dz   t              fk(  sJ y )Nr?   c                  ^    t        t        dz   t        t              z  t        z  t              S )Nr?   )r   r1   r   r2   rG   rH   rI   <lambda>ztest_frac_in.<locals>.<lambda>)   s    wAs1v~a'7; rH   r:   T)r   )r   r   r1   r2   r0   
ValueErrorrG   rH   rI   test_frac_inrO   "   sY   4Q	!Q'+	acAgq	41:&' ' 'AE19Q;"	acAgq	41:&' ' 'D!a%1a($q1ua.91=	acAgq	4Q	1-./ / /
:;<4QqS1a!e9,q1uqj8!<aM	a!eQa!eQ() ) )rH   c            	         t        dt        z  t        z   t        t              t        t        dt        z  z   t        t              t        t        dt        z  z   t        t              fv sJ t        dt        z  dt        dz  z  z   t        t              t        dt        z  dt        dz  z  z   t        t              t        dt        z  dt        dz  z  z   t        t              fv sJ t        dt	        d      dz   t        z  z  t        t              t        dt	        d      dz   z  t        z  t        t              t        dt	        d      dz   z  t        z  t        t              fv sJ t        dt	        d      dz   t        z  z  t        z   t        t              t        t        dt	        d      dz   z  t        z  z   t        t              t        t        dt	        d      dz   z  t        z  z   t        t              fv sJ t        t
        j                  t        t              t        dt        t              k(  sJ y )Nr:   r;   r?   r   )r   r2   r4   r   r   r   ZerorG   rH   rI   test_as_poly_1trR   .   s   acAgq!$Q1WaT!ac'1a0)2 2 2 2acAadFlAq)QqS1QT6\1a $qsQq!tV|Q":.< < < <a#a&1*a(!Q/QA
^Aq!$d1c!fqj>!+;Q&B4D D D Da#a&1*a(1,a3QCFQJ!!1a($q1c!fqj>!3C/CQ*J8L L L Laffa#tAq!}444rH   c            
      
   t        dt        dz  z  t        dz  z  dt        dz  z  dt        dz  z  z
  t        dz  z  z   dt        dz  z  dt        dz  z  z   t        dz  z  z   dt        z  dt        dz  z  z   dt        dz  z  z   t        dz  z  z   ddt        z  z
  dt        dz  z  z
  t        z  z   dz
  dt        z  z   t              } t        d	t        dt              t        t        dz   ddt        z  z  t        z  z
  ddt        z  z  z   t              gi
      }t	        | |      t        dt        dz  z  t        dz  z  dt        dz  z  dt        dz  z  z   t        dz  z  z   dt        dz  z  dt        dz  z  z   t        dz  z  z   t        t        dd      z  dt        dz  z  z
  dt        dz  z  z
  t        dz  z  z   dt        t        dd      z  z
  dt        dz  z  z   t        dz  z  z   ddt        z  z
  dt        dz  z  z
  dt        dz  z  z
  dt        z  z  t        z  z
  ddt        dz  z  z
  dt        z  z  z   t              k(  sJ t	        t        dt              |      t        dt              k(  sJ t	        t        t        t              |      |j                  k(  sJ t	        t        t        dz  dt        z  t        z  z   ddt        z  z
  dt        dz  z  z  z   t              |      t        dt        dz  z  dt        z  t        dz  z  z
  ddt        z  z
  dt        dz  z  z  t        z  z
  ddt        z  z
  dt        dz  z  z  z
  t        d      k(  sJ t        d	t        dt              t        dt        z  t              t        t        t              gi
      }t	        t        t        t        z  t        z  t              |      t        t        t        z  t        t        z  t        z  z   t        z   t              k(  sJ t	        t        t        t        z  t        z  t              |d      t        dt        z   t        z  t              k(  sJ t        d	t        dt              gi
      }t	        t        t        t              |      t        dt              k(  sJ t	        t        dz   t        dz
  z  |d      dddt        z  z
  t        dz  z   z  k(  sJ t        d	t        dt              t        t        t              gi
      }t	        t        dz   t        dz
  z  |d      dt        z  ddt        z  z
  t        dz  z   z  k(  sJ t	        t        dz   |d      t        k(  sJ y )Nr9   r@   r;   r:   rA   r?   D	extensionir<   rB      r=      r>      rC   r   ZZ(x)rE   TcoefficientD)basic)r   r1   r2   r)   r   r   dt1pDEs     rI   test_derivationrg   :   s   Qq!tVAqD[Bq!tGa1f,ad22bAg!Q$6F15LL	
1qAv!Q$	1$%()AaC!AqD&(8!';<>?@BCA#FGH	JA	#Q
D!Q$AaCQRARUVXYZ[X[U\A\^_<`/a)b	cBaSAXad]a1fr!Q$w6F15L%L	AqD2ad7	AqD &!$%hq!n$4r!Q$w$>AqD$H!Q$#N&O	aQ	!AqD&	(!Q$.&/23ac'Bq!tG2Ca1f2LqQRs1STU1U&V 
Qq!tVac& !    d1aj"%a333d1aj"%---d1a4!A#a%<1qs7Qq!tV*<<a@"ER1Wqs1a4x1qs7Qq!tV"4Q"66!ac'AadF9KKQW^_` ` `	#Q
D1bM4PQST:/V)W	XBd1Q3r61or*d1R4!A#b&=13Da.HHHHd1Q3r61or=a"faZ  	#Q
|)<	=Bd1aj"%a333q1uq1uor6"a!A#g1n:MMMM	#Q
DAJ/G)H	IBq1uq1uor6"Q$AaC!Q$:OOOOa!eRt,111rH   c            
         t        dt        dz  z  t        dz  z  dt        dz  z  dt        dz  z  z
  t        dz  z  z   dt        dz  z  dt        dz  z  z   t        dz  z  z   dt        z  dt        dz  z  z   dt        dz  z  z   t        dz  z  z   ddt        z  z
  dt        dz  z  z
  t        z  z   dz
  dt        z  z   t        d	
      } t        dt        dt              t        t        dz   ddt        z  z  t        z  z
  ddt        z  z  z   t              gi      }t	        | |      t        dt        dz  z  t        dz  z  dt        dz  z  dt        dz  z  z
  t        dz  z  z   dt        dz  z  dt        dz  z  z   t        z  z   dt        dz  z  z
  t        d      t        t        dz  dt        z  t        z  z   ddt        z  z
  dt        dz  z  z  z   t        d      fk(  sJ t	        t        t        t              |      t        t        t              t        dt              fk(  sJ t        dt        dz  z  t
        dz  z  dt        dz  z  t
        dz  z  z   t
        t        dz  z  z
  dt        dz  z  t
        dz  z  z
  dt        dz  z  t
        dz  z  z   t        dz  z   t
        t        dz  z  z   t        dz  z
  t              }t        dt        dt              t        dt        z  t              gi      }t	        ||d	      t        t        t
        z  t        dz  z
  t
        t        dz  z  z
  t        dz  z   t              t        t        dz   dt        dz  z  t
        dz  z  z   t              fk(  sJ t        ||d	      t        t        t
        z  t        dz  z
  t
        t        dz  z  z
  t        dz  z   t              dfft        t        dz   dt        dz  z  t
        dz  z  z   t              dfffk(  sJ t	        t        dt              |      t        dt              t        dt              fk(  sJ t        t        dt              |      t        dt              dffdfk(  sJ y )Nr9   r@   rT   r;   rU   r:   rA   r?   T)fieldrV   rW   r\   r^   rE   r<   r_   r   rG   )r   r1   r2   r)   r   r4   r   )re   rf   rs      rI   test_splitfactorrl   S   s   Qq!tVAqD[Bq!tGa1f,ad22bAg!Q$6F15LL	
1qAv!Q$	1$%()AaC!AqD&(8!';<>?@BCA#FGHPT	VA	#Q
D!Q$AaCQRARUVXYZ[X[U\A\^_<`/a)b	cBq"$qAvad{bAg!Q$6F15L'L	
1a4!AqD&!(1f(%&'#9QTAaCE\Q1WqAv..'B"D D D D tAqz2&41:tAqz*BBBBR1WQT\AadF1a4K'!AqD&01QT6!Q$;>1a41LqRStSVWXY[\X\V\\_`bc_ccefgA	#Q
D1aL/I)J	KBq"40	acAqDj1QT6!AqD(!	,dAqD51QT6!Q$;3F.JKL L L1bt4!ad
Qq!tV#ad*A.
2	4adUQq!tVAqD[=PRS8TVW7X6Z[\ \ \tAqz2&41:tAqz*BBBB41:r*aQ/A2.FFFFrH   c            	      ,   t        dt        dt              t        dt        dz  z   t              gi      } t	        t        t        t        z
  t              t        t        dz  t              |       t        dt        d      t        dt        d      t        dt        d	      ft        t         t        z   t        d      t        t        dz  t              ffk(  sJ t        dt        dt              t        t        dz  dz   t              gi      } t	        t        t        d
z  t        dz  z   t        dz  t        z  z   dz   t              t        t        dz  dz   dz  t              |       t        dt        d      t        t        d
z  t        dz  z   t        dz  t        z  z   dz   t        d      t        t        dz  dt        dz  z  z   dt        dz  z  z   dz   t        d      ft        dt        d      t        dt        d      ffk(  sJ y )NrV   r?   r:   rW   r   zZZ[x]rE   QQ[x]ZZr@   r;   r<   r9   rD   )r)   r   r1   r2   r   rf   s    rI   test_canonical_representationrq   e   s   	#Q
DQT1<M/N)O	PB#DQNDAqM2F	a7	#d1a&@Q$&!#'Q'#BQT1#	   
#Q
DA1<M/N)O	PB#DA1q!tAv)=)A1$E!Q$(QB 	a7	#d1a4!Q$;Aa+?!+CQw&W	adQq!tVma1f$q(!D	9&;	a7	#T!Qt%<=	?? ? ?rH   c                  h   t        dt        dt              t        t        dz  dz   t              gi      } t	        t        t        t        z
  t              t        t        dz  t              |       t        t         t        d      t        t        t        d      ft        dt        d      t        dt        d      ft        t         t        d      t        dt        d      ffk(  sJ t        dt        dt              t        t        dz   t        t        z  z
  dt
        dz  t        dz  z  z
  z
  t              gi      } t	        t        t        dz  t        dz  z  t        t        d	z  z  z   t
        dz  t        d
z  z  z
  t        t        dz  dz   z  t        dz  z  z
  t        dz  t
        dz  z
  t        z  z
  t        dz  d	z  z
  t              t        t        dz  t        d	z  z  t        dz  t        dz  dz   z  t        dz  z  z   t        dz  z   t        d	z  z   t        dz  d	z  z   t              |       t        t        dz   d	z
  t        d      t        d	t        dz  z  dt        dz  z  z   d	z   t        d      ft        dt
        dz  z  t        d	z  z
  t        z  dt        d
z  z  dt        z  z   z
  t        d      t        dt        dz  z  t        dz  z  t        d	z  z   dt        dz  z  z   t        d      ft        t        t        z  dz   t        d      t        t        t        d      ffk(  sJ t        dt        dt              t        dt        z  t              gi      } t        dd
t        z  z   t        d
z  z  dt        z   t        dz  z  z   dt        z  dt        dz  z  z   t        z  z   t        dz  z   t              }t        t        t        dz  z  d	t        dz  z  t        dz  z  z
  dt        d
z  z  t        d	z  z  z   d	t        d	z  z  t        d
z  z  z
  t        dz  t        dz  z  z   t              }t	        |||       t        d
t        dz  z  t        z   d
t        z  z   t        d      t        d
t        d	z  z  dt        z  t        d
z  z  z
  dt        dz  z  t        dz  z  z   d
t        d
z  z  t        z  z
  t        d      ft        dt        d      t        dt        d      ft        dt        d      t        dt        d      ffk(  sJ t	        t        t        dz   dt        z  z   dz   t        d      t        t         t        dz  z  dt        z  t        z  z   t        z
  t        d      |       t        d
t        d      t        t        dz
  t        d      ft        dt        d      t        dt        d      ft        dt        d      t        t        t        d      ffk(  sJ t	        t        t        dz   t        dz  z  ddt        d
z  z  z
  t        d	z  z   t        d
z  z  z   dd
t        d	z  z  z
  t        dz  z  z   dt        z  t        z  z
  t        z
  d
t        dz  z  z
  t        d      t        t        d	z  t        dz  z  dt        dz  z  t        d
z  z  z
  dz   t        d      |       t        t        d
z  t        z  t        d	z  z   dz   t        d      t        t        d
z  t        d
z  z  t        z
  t        d      ft        dt        d      t        dt        d      ft        dt        d      t        t        dz  t        d      ffk(  sJ t	        t        dd
t        z  z   t        d
z  z  dt        z   t        dz  z  z   dt        z  dt        dz  z  z   t        z  z   t        dz  z   t              t        t        t        dz  z  d	t        dz  z  t        dz  z  z
  dt        d
z  z  t        d	z  z  z   d	t        d	z  z  t        d
z  z  z
  t        dz  t        dz  z  z   t              |       t        d
t        dz  z  t        z   d
t        z  z   t        d      t        d
t        d	z  z  dt        z  t        d
z  z  z
  dt        dz  z  t        dz  z  z   d
t        d
z  z  t        z  z
  t        d      ft        dt        d      t        dt        d      ft        dt        d      t        dt        d      ffk(  sJ y )NrV   r?   r:   rW   rn   rE   r   r@   r9   r;   r<   ZZ(x,nu)r]   rT   r^   	   rU   )r)   r   r1   r2   r   r3   rf   r5   rb   s      rI   test_hermite_reducerw   s   s   	#Q
DA1<M/N)O	PB$q1ua.$q!tQ-<
r1W
%tAq'A	B
q!G
$d1a&@	A
r1W
%tAq'A	B	DD D D
 
#Q
D!Q$1PQTVXYTYZ[]^Z^T^P^A_ab<c/d)e	fBAadQq!tV#b!eAqDj01adQh<13DD1rSTuVWGWWZ[]^Z^_`Z``bcdAadQT1a4!8_QT11AqD81a4?!Q$q&H!LbR 1uqy!J
/a1fqAvo6I1U_1`	a
2q51a4"a1fqsl3Qz
J
qAvad{QT!AadF*Aj
A
C
qsQw*
-tAq/L	M	OO O O 
#Q
D1aL/I)J	KBb1Q3h1_Q1},1qAvq/@@1a4GKAQq!tVa1fQTk!AadF1a4K/!AqD&A+=1QT	I1MA!Q#
qAvzAaC7
3
qAv!AqD 1QT6!Q$;.1a491W
M
O
q!G
$d1a&@	A
q!G
$d1a&@	A	CC C C !Q$1q!G4!AqD1Q3q51$a8"> q!G
$d1q5!G&D	E
q!G
$d1a&@	A
q!G
$d1a&@	A	CC C C !Q$q!trAadF{QT11a4772!Q$;1:LL!AadF#$%g7AadQq!tVAqD[(1,a@"F q!tAv1}q !G
4d1a419q=!T[6\	]
q!G
$d1a&@	A
r1W
%tAqD!G'D	E	G	G G G "qs(AqDBFAqD=0BqD1QT6M13DDq!tKQO1a4!AqD&A+%!Q$q!t3a1fQTkAAqDAIMqQSUW qAvzAaC7
3
qAv!AqD 1QT6!Q$;.1a491W
M
O
q!G
$d1a&@	A
q!G
$d1a&@	A	CC C CrH   c            	         t        dt        dt              t        dt        dz  z   t              gi      } t	        t        dt        t        z  z   t        dz  z   t              |       t        t        t              t        t        t        z  t              fk(  sJ t	        t        dt              |       t        dt              t        dt              fk(  sJ y )NrV   r?   r:   rW   r   )r)   r   r1   r2   r    rp   s    rI   test_polynomial_reducery      s    	#Q
DQT1<M/N)O	PBT!ac'AqD.!4b9	aT!A#q\"# # #T!QZ,	aT!QZ ! ! !rH   c            
         t        dt        dt              t        dt              gi      } t        dt              }t        t        dz
  t        dz  dz
  dz  z  t              }t        t        dz  dz
  t              }d}t	        |||||       t        dt        dz  z  dt        dz  z  z   dt        z  z
  d	z
  t              t        t        d
z  t        dz  z   dt        dz  z  z
  dt        dz  z  z
  t        z   dz   t              t        dt        dz  z  dt        dz  z  z
  t        d      t        dt        dz  z  dt        d
z  z  z   d	t        dz  z  z
  t        d      gfk(  sJ y )NrV   r?   rW   $   r:   rU   r;   r<   r\   r@   r9   rD   rE   )r)   r   r1   r2   r/   )rf   r5   rb   Fns        rI   test_laurent_seriesr~      sJ   	#Q
DAJ/G)H	IBRAa!eadQh]"A&AQTAXqA	A!Q1b)	bAg!Q$1$q(!	,d1a4!Q$;1a43G!AqD&3PST3TWX3XZ[.\	bAg!Q$$	/a1fqAvo!Q$6NPQZ^1_`	bb b brH   c                     t        dt        dt              gi      } t        dt              }t        t        dz
  t        dz  dz
  dz  z  t              }t        |||       dk(  sJ t        dt        dt              t        dt        z  t              gi      } t        dt              }t        t        dz  dz
  t              }t        |||       dk(  sJ t        t        t        t        z  t              t        dt              |       dk(  sJ t        dt        dt              t        t        dz  dz   t              gi      } t        t        t        t              t        dt              |       dk(  sJ y )NrV   r?   rW   r{   r:   FT)r)   r   r2   r.   r1   rv   s      rI   test_recognize_derivativer      s)   	#Q
|)<	=BRAa!eadQh]"A&A1b)U222	#Q
D1aL/I)J	KBQ
AQTAXqA1b)U222QqS!d1aj"=EEE	#Q
DA1<M/N)O	PBQ
DAJ;tCCCrH   c                  H   t        dt        dz  z  dt        z  t        z  z   dt        z  z
  t        dz  t        z  z
  t              } t        dt        z  t        z   t        t        dz  z   z  t              }t        dt        dt              t        t        t              gi      }t	        | ||t
              dk(  sJ t        dt        dt              t        dt        z  t              gi      }t	        t        t        dz   t              t        t        t        z   t              |      dk(  sJ t	        t        dt              t        t        dz  dz
  t              |      dk(  sJ t        dt        dt              gi      }t	        t        dt              t        t        dz  dz
  t              |      dk(  sJ t	        t        dt              t        t        dz  t        z   t              |      dk(  sJ t        dt        dt              t        t        dz  dz   t              gi      }t	        t        dt              t        t        dz  dz
  t              |      dk(  sJ t	        t        dt              t        t        dz  t        z   t              |      dk(  sJ y )Nr:   r9   rV   r?   rW   TF)r   r1   r2   r)   r-   r4   )r5   rb   rf   s      rI   test_recognize_log_derivativer      s   Qq!tVac!e^ac!AqDF*A.AacAgAqD!1%A	#Q
DAJ/G)H	IB#Aq"a0D888	#Q
D1aL/I)J	KB#DQNDQNBG4OOO#DAJQTAXq0A2F$NNN	#Q
|)<	=B#DAJQTAXq0A2F%OOO#DAJQTAXq0A2F$NNN	#Q
DA1<M/N)O	PB#DAJQTAXq0A2F%OOO#DAJQTAXq0A2F%OOOrH   c                     t        dt        dz  z  t        z
  t        dz  z
  t              } t        t        dz  t        dz  t        z  z
  t              }t        t        dt              t        dt        z  t              gt        gd      }t        | ||t        d      t        t        dz  t        dd      z
  t        d	
      t        ddt        z  t        z  z   dt        dz  z  z
  dt        dz  z  z
  dt        dz  z  t        dz  z  z   t        z  t        t        z  z
  t        dz  z   dt        dz  z  t        dz  z  z   dt        z  t        dz  z  z
  t        d
      fgdfk(  sJ t        | ||t        d      t        t        dz  t        dd      z
  t        d	
      t        t        dt        z  t        z  z   t              fgdfk(  sJ t        t        dt        z  t              t        t        dz  dz
  t              |t        d      t        t        dz  dz
  t        d
      t        dt        z  t        z  t        z  dt        z  z
  t        d
      fgdfk(  sJ t        t        dt        z  t              t        t        dz  dz
  t              |t        d      }|t        t        dz  dz
  t        d
      t        t        t        z   t              fgdfk(  sJ t        |d   |t              t	        dt	        t              z          t	        dt	        t              z         z   k(  sJ t        dt        dt              t        t        dz   t        t        z  z
  dt        dz  t        dz  z  z
  z
  t              gi      }t        t        dt        dz  z  t        dz  z
  dt        dz  z  z  t        z  dt        dz  z   t        z  z
  t              t        t        dz  dz   t        dz  dz  z   t              |t              t        t        t        j                  z   t        d
      t        t        dz  dz   t        dz  dz  z   t        d
      fgdfk(  sJ t        dt        dt              t        dt        dz  z   t              gi      }t        t        dt        z  t        z  dz   t        dz  z
  t              t        t        dz  dt        z  t        z  z   dz   t        dz  z   t              |t              t        t        dz  t        dd      z   t              t        t        t        z   dt        z  z   t              fgdfk(  sJ t        dt        dt              t        t        t              gi      }t        t        t        t              t        t        t        d      z   t              |t              t        t        dz
  t        d
      t        t        t        d      z   t              fgdfk(  sJ y )Nr:   r;   r?   rV   TfuncsrW   F)invertr9   r^   rE   r<   zZZ(z, x)Tr]   rD   zZZ(z,x)r   rt   rV   rs   )r   r2   r1   r)   r   r!   r4   r   r"   r3   r   Halfr   )r5   rb   rf   anss       rI   test_residue_reducer      s   Qq!tVaZ!Q$"AQTAqDF]AA	Q
D1aL/IVYUZ)[	\B!QAe41x1~%q9
AaCE	AadF"Qq!tV+a1fQTk91<qsBQTI1fQTkaC1H%&'
<= 
>?D	FF F F !QAd31x1~%q94AaCE	1;M
N	OQVWX X X$r!tQ-adQh);R5Q1q!D)41Qq1Q3)+T
U	VX\]^ ^ ^
bdAQTAXq(92q
NCT!Q$(Ad3T!a%^DEtLLLL"3q62q1c"s1v+6F5FQQTUVQWZ5XXXX	#Q
D!Q$1PQTVXYTYZ[]^Z^T^P^A_ab<c/d)e	fB$2q51a4!AqD&9!;q1a4xlJANAAqDF	AA'AFF
Ad+T!Q$(QT!V2CQ.   
!"&	(( ( ( 
#Q
DQT1<M/N)O	PB$r!tAvzAqD0!4A!A	AqD	 !$b!-1x1~%q)4A!Q+?
@	A4HI I I 
#Q
DAJ/G)H	IB$q!*d1tAw;&:BBAq&Qa[!(<
=	>EF F FrH   c                     t        ddt        z  z   t        dz  z   dt        dz  z  z   t        dz  z  dt        dz  z   t        z  z   dz   t        dz  z   t              } t        dt              }t        t        dt              t        dt        dz  z   t              t        t        dt        dz  z   z  t              gt
        t        t        t        t        t                          gd      }t        | ||      t        dt        t              z        t        t              z  t        t        t                    z   dt        dz  z   dfk(  sJ t        t        dz  t        dz   t        dz  z  z   t        z   t        z   dz   t        z  t              } t        | ||      t        t        t              z   t        t        t                    z  ddfk(  sJ t        t        t              } t        dt              }t        t        dt              t        dt        z  t        z  t              gt        t        t        t        dz              gd      }t        | ||      dt        t        t        dz        t              dfk(  sJ t        t        dt              t        t        t              gt        gd      }t        | ||      t        t              ddfk(  sJ t        d	t        d
z  z  dt        dz  z  z
  dt        dz  z  z   dt        dz  z  z
  dt        dz  z  z   dt        z  z   dz
  t              } t        d	t        d
z  z  dt        dz  z  z   dt        dz  z  z   dz   t              }t        | ||      ddt        t              z  z
   dd	t        dt        z        z  z   z  t        dt        dt        z        z         z   ddfk(  sJ t        t        dt              t        t        t              t        t        t        z  t              gt        t        t        t        t        t                          gd      }t        t        dt        z  t        dz  z  t              t        dt              |      t        dt        t              z        ddfk(  sJ t        t        dt              t        t        t              t        t         t        z  t              gt        t        t        t        t        t                           gd      }t        t        dt        d      z  dt        z  t        d      z  z
  dt        z  t        z  t        d      z  z   t              t        dt        d      z  t        dz  t        d      z  z   dt        z  t        d      z  z
  t        z  t              |      dt        t        t                    z  dt        d      z  t        t        d      z  z   z  ddfk(  sJ t        t        dt              t        t        t              gt        gd      }t        t        t        dz  dz  t        z  t              t        dt              |      ddt        z  z
  t        dz  z   t        t              z  dz  ddfk(  sJ t        t        dt        z   t              t        t        t              |      t        t                ddfk(  sJ t        t        t        t              t        t        dz   t              |      dt        t        dt        t              z   z  t              dfk(  sJ t        t        dt              t        dt        z  t              t        dt        z  t        z  t              gt        t        t        t        t        dz              gd      }t        t        dt        dz  z  dt        dz  z  z
  d
t        dz  z  z   t        z
  t        dz  z  dt        z  t        dz  z  dt        z  t        d
z  z  z
  dt        z  t        dz  z  z
  dt        z  t        dz  z  z   dt        z  t        dz  z  z   t        t        z  z
  dt        dz  z  z   dt        d
z  z  z
  dt        dz  z  z
  dt        dz  z  z   dt        dz  z  z   dt        dz  z  z
  t        z
  dz   t        dz  z  z   dt        z  t        dz  z  dt        z  t        d
z  z  z
  dt        z  t        dz  z  z
  dt        z  t        dz  z  z
  dt        z  t        dz  z  z   t        t        dz  z  z   dt        z  t        z  z
  dt        dz  z  z   dt        dz  z  z
  dt        d
z  z  z
  dt        dz  z  z   dt        dz  z  z   dt        dz  z  z
  d
t        dz  z  z
  t        z   dz   t        dz  z  z   dt        z  t        dz  z  dt        z  t        d
z  z  z
  dt        z  t        dz  z  z
  d
t        z  t        dz  z  z   dt        z  t        dz  z  z   dt        z  t        dz  z  z
  t        t        z  z
  dt        dz  z  z   dt        dz  z  z
  dt        dz  z  z
  dt        d
z  z  z   dt        dz  z  z   dt        dz  z  z   dt        dz  z  z
  t        dz  z
  dt        z  z   t        z  z   dt        z  t        dz  z  z   dt        z  t        d
z  z  z
  dt        z  t        dz  z  z
  dt        z  t        dz  z  z   t        t        dz  z  z
  dt        dz  z  z
  dt        d
z  z  z   dt        dz  z  z   dt        dz  z  z
  t        dz  z
  t        dz  z   t              t        dt        dz  z  dt        dz  z  z
  d
t        dz  z  z   t        z
  t        dz  z  dt        dz  z  dt        dz  z  z   dt        d
z  z  z
  dt        dz  z  z
  dt        dz  z  z   d
t        dz  z  z   dt        dz  z  z
  t        z
  t        dz  z  z   dt        dz  z  dt        dz  z  z   dt        dz  z  z
  dt        d
z  z  z
  dt        dz  z  z   dt        dz  z  z   dt        dz  z  z
  dt        dz  z  z
  t        dz  z  z   dt        dz  z  dt        dz  z  z   dt        dz  z  z
  dt        dz  z  z
  d
t        d
z  z  z   dt        dz  z  z   t        dz  z
  dt        dz  z  z
  t        z  z   dt        dz  z  z   dt        dz  z  z
  d
t        d
z  z  z   t        dz  z
  t              |      \  }}}t        |      t        dz
  t        t              z  t        t        t        dz        z   dt        dz  z  dz
  z  z   k(  sJ ||ft        t        t        dz        t        t        dz        dz   z  t              dfk(  sJ y )Nr?   r:   r;   r   rW   Tr   FrZ   r<   rC   r@   rA   r9   r\      #      rt   iru         r{      r=   i      rB   )r   rc   r2   r)   r1   r   r   r7   r   r%   r,   r   t0r   )r5   rb   rf   elemnonelembs         rI   test_integrate_hyperexponentialr      s   a!B$hQ2q5(!Q$.!b!e)Q>BRUJANAQ
A	Q
DRUB<OQBE	]A0 ,/3s1v;1G+H*J 
KB%aB/	Qs1vXs1v	CF	+QQY=> > >b!eq1ub!em#b(1,q0!3Q7A%aB/
c!f*c#a&k	!1d+, , , 	Q
AQ
A	Q
D1QN/K!SAY'(** 
+B &aB/	
!#ad)Q/78 8 8 
Q
DAJ/GTWSX)Y	ZB%aB/CFAt3DDDDR1Wr!Q$w1a4'!AqD&02ad7:QqS@1DaHAR1Wr!Q$wAqD(1,a0A%aB/3q6	>	A3qs8O	,s1s1Q3x</@	@"dKL L L	Q
DRL$rRStUV-/Xq#c!f+./*1 
2B%d1R419a&8$q!*bIcRSTWXYTZRZm]^`dMeeee	Q
DRL$PRsSTuVW./Yq#s1vg,/0*2 
3B%d3s1v:Bs1v+EqDGCFN,'bRj1a4B<7"Q$s2w,FI1MrS	CAKCFQs1vX-	.489 9 9 
Q
DAJ/GTWSX)Y	ZB%d1a46!8Q&7aRH
ac'AqD.#a&	 	"At,- - -%d1q5!nd1aj"E
qb'1d  %d1aj$q1ua."E	
!!QQZ.!4e<= = = 
Q
D1bM4PQRSPSTVPVXZK[/\q#ad),-*/ 
0B 2$!Q$AqD8H1QPQT68QTU8UWY[\W\7\	
2adQrT!Q$Y	2ad	*QrT!Q$Y	62ad	BRT	I
1a4
QT'
adF
#%'1W
-/0Av
689!Q$
?AB
CEF
GHJA	N8N R419qtAqDy 2b5A:-"QT	9BrE!Q$JF
1a4B$q&ad7#%'1W-/0Av68:1a4@BDQT'J	!Q$1a4 !#Q'8'
 +,B$q!t)ad1a4i*?"R%1**L	"QT	+rE!Q$J+!"2ad++-/T+245aeG+<>@Ag+FHI!Q$+O
AqD&+ad7+q!tV+$&'1f+-/0!t+467c+:;=*>8> AB"QT	8J 	2ad
8 rT!Q$Y8 "#2ad8+ .01W85 89Av8> AB!Q$8G 	
!Q$	8 1a4	8 Q$	8 "#A	8& (*	3+ -1!AqD&2ad72BQq!tV2K	3
q52q!tGa1f$r!Q$w.AqD82ad7BQq!tVK	!Q$E21Wr!Q$w.AqD82ad7BR1WL
1a4AqD&QT6"#%q5)2) -.aeGbAg,=1a4,G
1a4-AqD&-ad7-#%&T-*,-adF-346,727 :;1b5	2A DFad7	2K
 	
!Q$2
 A2
 -
  D'1  $<a!eSV^a#ad)ma1fqj-IJKKKKQ<1#ad)SAY]2KQOQVWWWWrH   c            	         t        dt        dz  z  t        z  dt        dz  z  t        z  z
  dt        dz  z  t        z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   d	t        d
z  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z   d	t        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   t        dz  t        dz  z  z   t        dz  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  t        dz  z   t        d
z  z
  dt        dz  z  z   dt        dz  z  t        z  dt        d
z  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  t        dz  t        dz  z  z   t        dz  z   z  t        dz  z  dt        dz  z  t        z  dt        dz  z  t        z  z
  dt        dz  z  t        z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   d	t        d
z  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z   d	t        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  z   dt        d
z  z  z
  dt        dz  z  z   dt        dz  z  t        z  dt        d
z  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  t        dz  t        dz  z  z   t        dz  z   z  t        z  z   dt        dz  z  t        z  dt        dz  z  t        z  z   t        t        dz  z  z   t        dz  t        dz  z  z
  t        dz  z   t        dz  z
  dt        dz  z  t        z  dt        dz  z  t        dz  z  z   dt        dz  z  t        dz  z  z
  t        dz  t        dz  z  z   t        dz  z   z  z   t        t        d      } t        dt        dt              t        dt        z  t              t        dt        z  t        z  t              gi      }t        | |t              t        t        t        z
  t        dz  z  dt        z  dt        z  z   t        z  z   t              t        dt        z  t        z  t        dz  z   t        dz  z   t              dfk(  sJ t        dt        dt              t        t        t              gi      }t        t        dt              |t              t        dt              t        dt              dfk(  sJ y ) Nir   r<   r\   ru   r>   r:   rA   T   rC      r;      r9   r@      r=   rj   8   F      (   r]   rT   FexpandrV   r?   rW   Tr   )r   r1   r   rc   r4   r)   r$   rd   s     rI   *test_integrate_hyperexponential_polynomialr   <  sv    	c!R%ilQq!tVBY&1a42R1WRU]B
1a4A1b5Q'),QT"a%8:<QT'"a%-H
1a4A1a4A&(*1a4A68;AqDQG 	1a4A !Q$r1u% ()Avb!e|4 78d2q5jA DEa4A:N 	1a4A	 !Q$r1u	% ()!t	, /0e	4 782g	> AC1b5
1b5QAAqDQA')+AqDQA79;AqDQAG
1a4AA!Q$r1uA%'(!tBEzA245rEA:	; <>q5A 
QU21a4
	"R1WRZ	/"QT'"a%-	?
1a4A
1b5Q
'),QT"a%
8:<QT'"a%-
H
1a4A
1a4A
&(*1a4A
68;AqDQ
G 	1a4A
 1a4A
& )+1a4A
6 9:!Q$r1u
E 	
!Q$r1u	
 !Q$wr1u}	
% ()Avb!e|	
4 781f	
= @ABw	
G
 	
!R%

 QU(2+1b5Q.AqDQ>
1a4A1a4A&(*1a4A689!Q$r1uE	1RU
U	 	 #%QT'"*qAvby"81RU7"B	1RU
#T#qD#!#%ad72:!Q$r1u#<qAvb!e|#K	1RU
$T$"  %!	1A" 
#Q
D1bM4PQRSPSTVPVXZK[/\)]	^B0B:a"fb!e^r"uqs{B..3T"Q$r'AqD.
A;6?    
#tAqz4B<.H)I	JB0ab!DQT!R[$I( ( ( (rH   c            
      <	   t        d      \  } }t        | t        z  t              }t        |j                  |j
                  |      t        t        t        t        |       z        t        |       z  t        t        |       d      ft        df      ddfk(  sJ t        | |t        z  z  t              }t        |j                  |j
                  |      t        t        |t        z  t        |       z        |t        |       z  z  t        |t        |       z  d      ft        df      ddfk(  sJ t        t        | t        z        t              }t        |j                  |j
                  |      t        t        | t        z        | z  t        | d      ft        df      ddfk(  sJ t        t        t        | t        z        z  t              }t        |j                  |j
                  |      t        | t        z  dz
  t        | t        z        z  | dz  z  t        | dz  d      ft        dz  dz  df      ddfk(  sJ t        t        dz  t        | t        z        z  t              }t        |j                  |j
                  |      t        t        dz  | dz  z  d| z  t        z  z
  dz   t        | t        z        z  | dz  z  t        | dz  d      ft        dz  dz  df      ddfk(  sJ t        t        t        z  t        z   t              }t        |j                  |j
                  |      t        t        t        t              t        z        t        t              z  t        t        t              d      ft        df      t        dfk(  sJ t        t        t        z  t        z   t        dt        z  z  z   t              }t        |j                  |j
                  |      t        t        dt        t              z  t        z        t        t              z  dt        t        t              t        z        z  t        t              z  z   dt        t              dz  z  z  t        dt        t              dz  z  d      fdt        z  df      t        dfk(  sJ y )Nza br   Tr?   r:   r;   )r   r)   r1   r%   fafdr   r   r   r
   r6   r4   )r5   r   rf   s      rI   1test_integrate_hyperexponential_returns_piecewiser   [  s   5>DAq	q!tQ	'B%beeRUUB7I	Qs1vXs1v	r#a&!}-4y=:;<d<D D D D	q1Q3x	+B%beeRUUB7I	QqSQZ!CF(	#R#a&!_54y=BCDd<L L L L	s1Q3x	+B%beeRUUB7I	QqS!R1XD	=+,-t<5 5 5 5	qQqSz1	-B%beeRUUB7I
A#'3qs8	AqD	 "QT1+.Aa=@ABD<J J J J	q!tC!H}a	0B%beeRUUB7I
Q$q!t)ac!e
a
QqS	)!Q$	.1a4<	
Aa=D<" " " " 
q!tax	+B%beeRUUB7I	SVAXs1v	r#a&!}-4y=:;<d<D D D D	q!tax!ac(2A	6B%beeRUUB7I
aAhqj/#a&
 c#a&(mOCF"#%&s1vqy[
235aA	k13E	GqS$K=
 d	<   rH   c                  v   t        d      \  } }}t        dt         z  d|z  dz   z  |      dt         z  |z  dt         z  t        d|z  dz         z  t        d      z  z
  k(  sJ t        | ||z
  z  | |z  dz   z  |      t	        | t        |       z        t        | |z  dz         z  t        |       z  k(  sJ y )Nza t sr:   r?   )r   r*   r	   r   r   )r5   r2   ss      rI   test_issue_13947r   z  s    gGAq!1s8QTAX.2	RC
Q"Xc!Q$(m+CF223 3 31q1u:q!tax0!4QBs1vIs1a4!8}$SV+, , ,rH   c                     t        t        dt              t        dt        z  t              gt        gd      } t        t        t        t              t        dt              |       t        t	        t              z  ddfk(  sJ t        t        t        t              t        t        t              |       dt        t        t	        t              z  t              dfk(  sJ t        t        dt              t        dt        z  t              t        dt        dz   z  t              gt        t        t        t	        t        dz               gd      } t        t        t        t              t        t        t              |       dt        t	        t              t	        dt        z         z  t              dfk(  sJ t        t        dt              t        dt        z  t              t        dt        t        z  z  t              gt        t        t        t	        t	        t                          gd      } t        t        t        t              t        t        t              |       dt        t	        t	        t                    t	        t              z  t              dfk(  sJ t        t        dt              t        dt        z  t              gt        gd      } t        t        t        dz  t        d	z  z  d	t        dz  z  t        z   t        dz  z  z   d	t        dz  z  dt        z  z   t        z  z   t        dz  z   t        z   t              t        t        dz  t        d
z  z  d
t        dz  z  t        d	z  z  z   dt        dz  z  t        dz  z  z   d
t        dz  z  t        z  z   t        dz  z   t              |       dt	        t              dz   z  t        dt	        t              dz   z  t              dfk(  sJ y )Nr?   r   rW   rt   Tr   Fr:   r;   r9   r<   )r)   r   r1   r2   r   r#   r,   rc   t2r   r7   r   rp   s    rI   test_integrate_primitiver     s(   	Q
D1aL/I%* 
BtAqz41:r:qQxT>RRRRtAqz41:r:qBWXYZ]^_Z`X`bcBdfk>llll	Q
D1bM4PQSTWXSXPY[]K^/_q#a!e*-.*0 
1BtB|T"b\2>	
!#a&QU"3Q7?@ @ @ 
Q
D1bM4PQSTUWSWPXZ\K]/^q#c!f+./*1 
2BtB|T"b\2>	
!#c!f+c!f"4a8%@A A A 
Q
D1bM/J%* 
BtAqDQJ!AqD&1*b!e1C$CqAvcH
G %1%% #AqDQJ1a4A$=!Q$r1u$LadF2I%1%  
SVaZ/3q6A:BEJK K KrH   c            	         t        dt        dt              t        t        dz  dz   t              gi      } t	        t        t        dz  t        t        z  z   dz   t              |       t        t        t              t        t        dz  t              fk(  sJ t        dt        dt              t        t
        t        dz  dz   z  t              gi      } t	        t        t        dz  t              |       t        ddt
        z  z  t        dz  z  ddt
        z  z  t        dz  z  z
  t              t        ddt
        z  z  t              fk(  sJ y )NrV   r?   r:   rW   r@   r9   )r)   r   r1   r2   r&   r5   rp   s    rI   &test_integrate_hypertangent_polynomialr     s	   	#Q
DA1<M/N)O	PB,T!Q$1*q.!-DbI	aT!A#q\"# # #	#Q
DAqD1Hq<Q/R)S	TB,T!Q$]B?	a1gadlQ!WQT\)1	-tAqsGQ/?@A A ArH   c            
         t        t        dz  t        dz  z  t        t        dz  z  z   t        dz  t        dz  z  z
  t        t        dz  dz   z  t        dz  z  z
  t        dz  t        dz  z
  t        z  z
  t        dz  dz  z
  t              t        t        dz  t        dz  z  t        dz  t        dz  dz   z  t        dz  z  z   t        dz  z   t        dz  z   t        dz  dz  z   t              }} t	        d      }t        t        dt              t        t        dz   t        t        z  z
  dt        dz  t        dz  z  z
  z
  t              g|gd	      }t        | ||      t        d |t              dz  z   t        dz  dz  z          dz  d
t        dz  z
  ddt        dz  z  z   d |t              dz  z  z   z  z   dfk(  sJ t        t        t        t              t        dt              |      dk(  sJ y )Nr:   r@   r9   r;   r?   r<   phi_nur   rW   rT   T)r   F)r   r1   r2   r3   r   r)   r'   r   )r5   rb   frf   s       rI   $test_integrate_nonlinear_no_specialsr     s   AadQq!tV#b!eAqDj01adQh<13DD1EI
H !tAv1QT	AqD!Q$(OAqD,@ @1a4 G!Q$ NQRTUQUVWQW WYZ[ 	A 	A	Q
adUQqS[AAad
N+Q/01=>C*A 
BB*1a4
a!A$'kAqDF"
#	#A	%q!ta!AqD&j1QqT1W96L(M	MtTU U U*41:tAqz2F  rH   c            
      
   t        t        t        dz  t        dz  dz   t        t        dd      z  g      t        dz  t        dft        dz  dft        t        dd      z  dfgfdt        dz  z   dt        dz  z   dfgfgk(  sJ y )Nr:   r?   r;   r<   r9   )r(   r1   r   rG   rH   rI   test_integer_powersr     s    1ac1a4!8Qx1~-=>?qSAq6AaC8aA&6%:;<AXQT1'D) ) ) )rH   c                     t        t        t              t        t        dz        z   t              j                  t	        t
        t        z   t
              t	        dt
              t	        dt              t	        t        t              t	        dt        z  t
        z  t
              gt        t        t
        gt        t        t        t                    t        t        t        t        dz              gg g dd t        t        dz  gfk(  sJ t        t        t              t        dt        z        z   t              j                  t	        t        dz  t        z   t              t	        dt              t	        dt              t	        t        t              gt        t        gt        t        t        t                    gg d dgd t        gfk(  sJ t        t        t              t        t        dz        z   t              j                  t	        t        dz  t        z   t              t	        dt              t	        dt              t	        t        dz  t              gt        t        gt        t        t        t        dz              gg d dgd t        dz  gfk(  sJ t        t        t              t        t        dz        z   t        t        t        dz  z         z   t              j                  t	        dt        z   t
        z  t        z   t
              t	        dt
              t	        dt              t	        t        t              t	        dt        z  t
        z  t
              gt        t        t
        gt        t        t        t                    t        t        t        t        dz              gg g dd t        t        dz  gfk(  sJ t        t        t              t        t        dz        z   t        t        t        dz  z   dz         z   t              j                  t	        dt        j                  t        z  z   t
        z  t        z   t
              t	        dt
              t	        dt              t	        t        t              t	        dt        z  t
        z  t
              gt        t        t
        gt        t        t        t                    t        t        t        t        dz              gg g dd t        t        dz  gfk(  sJ t        t        t              t        t        dz        z   t        t        dz  t        dz  z         z   t              j                  t	        t        dz   t
        z  t        dz  z   t
              t	        dt
              t	        dt              t	        t        dz  t              t	        dt        z  t
        z  t
              gt        t        t
        gt        t        t        t        dz              t        t        t        t        dz              gt        t        dz        t        t        t                    fgg dd t        dz  t        dz  gfk(  sJ t        t        t              t        t        dz        z   t        t        dz  t        dz  z   dz         z   t              j                  t	        t        t        d      z  dz   t
        z  t        dz  z   t
              t	        dt
              t	        dt              t	        t        dz  t              t	        dt        z  t
        z  t
              gt        t        t
        gt        t        t        t        dz              t        t        t        t        dz              gt        t        dz        t        t        t                    fgg dd t        dz  t        dz  gfk(  sJ t        t        t        t                    t              j                  t	        t        t              t	        dt              t	        dt              t	        t        dz  t              gt        t        gt        t        t        t        dz              gt        t        dz        t        t        t                    fgd dgd t        dz  gfk(  sJ t        t        t        dz        t              j                  t	        t        t              t	        dt              t	        dt              t	        t        dz  t              gt        t        gt        t        t        t        dz              gg d dgd t        dz  gfk(  sJ y )Nr:   r?   Nr   r   r   r;   )r)   r   r1   _important_attrsr   rc   r   r   r7   r   Exp1r   rG   rH   rI   test_DifferentialExtension_expr     s    Q#ad)!3Q7HH	b2gr	DBK$q!+tB|QqSVR*r2;3q6):q#ad))!#7$1a4	JJ J J !Q#ac(!2A6GG	b!ebj"	tAr{T!QZb",FB	3q6	R$q		;; ; ; !Q#ac(!2A6GG	b!ebj"	tAr{T!QZbdB,H	
B&C!H%&T5MD!A#;	HH H H !Q#ad)!3c!ad(m!CQGXX	q2vrkB	#T!R[41:tB|QqSVR3r2;3q6):q#ad))!#7$1a4	JJ J J !Q#ad)!3c!ad(Q,6G!GK\\	q166"9}b 2%r	*DBK$q!*Rd1Q3r62&:(*+RvaQ7Hq#ad)7!#7$1a4	JJ J J !Q#ad)!3c!A#1*o!EqIZZ	rAvrkBE!2	&Qd1ajRT2QqSVR(6*,-r2;	3qs8	fQAqD	23
ac(DQL	!"$841ad:K	MM M M
 !Q#ad)!3c!A#1*q.6I!I1M^^	r#a&y1}b 2q5("	-tAr{T!QZRT2QqSVR(=*,-r2;3qs89Lq#ad)9!$QqS4A< 89;O	qsAqD	  
 !c!fq1BB	b"tAr{T!QZbdB$@1b'	3qs8	QqS4A< 89D%=4QRSTQT+	WW W W !QqS1->>	b"tAr{T!QZbdB$@1b'	3qs8	rD%=41+	?? ? ?rH   c                     t        t        t              t        t        dz         z  t        dt        dz  z  dt        z  z         z  t              j                  t	        t
        t        dz  z  t
        t        d      z  t
        dz  z   t        z  z   t              t	        dt              t	        dt              t	        dt        z  t
              t	        dt        dz   z  t        d      gt        t
        t        gt        t        t        t                    t        t        t        t        dz               gg g dd t        t        dz   gfk(  sJ t        t        t        z  t        t              z  t              j                  t	        t
        t        z  t              t	        dt              t	        dt              t	        dt        z  t
              t	        dt
        z   t        z  t              gt        t
        t        gt        t        t        t                    t        t        t        t
        t        z              gt        t        t        t              z        t        t        z  fgg dd t        t
        t        z  gfk(  sJ y )Nr?   r:   Fr   )Nr   r   Nr   r   )
r)   r   r1   r   r   r   rc   r   r7   r   rG   rH   rI   test_DifferentialExtension_logr     s    QAE
!23qAv!|3D!DaHYY	bQh"SV)b!e+R//	4d1bk	aT!A#r]QAY5)	+-.BK	3q6	F1c!a%j12B8L	q!a%		   !Ac!fa0AA	beR$q"+Q
D1bMa"fb["(!"BfQA.?q#bd).!$Qs1vX1 568L	q"Q$	  rH   c                     t        t        t        t        z        t              j                  t	        t
        t        z  t              t	        dt              t	        dt              t	        dt        z  t
              t	        t
        dz   t        z  t              gt        t
        t        gt        t        t        t                    t        t        t        t        t
        z              gt        t        t        t              z        t        t        z  fgg dd t        t
        t        z  gfk(  sJ t        t        t        t        z        t              j                  t	        t        t
        z  t
              t	        dt
              t	        dt              t	        dt        z  t
              gt        t
        gt        t        t        t                    gt        t        t              z  t        t        t        z        fgd dgd t        gfk(  sJ t        t        t        t                    t              j                  t	        t
        t
              t	        dt
              t	        dt              t	        dt        z  t
              gt        t
        gt        t        t        t                    gt        t              dz  t        t        t                    fgd dgd t        gfk(  sJ y )Nr?   r   r   r:   )r)   r   r1   r   r   r   rc   r   r7   r   r6   r   rG   rH   rI   !test_DifferentialExtension_symlogr     s    QTA.??	bdBatAqz4!R=$IHC 'RvaQ'8&C"I:N&O!CF(mQT"#%9D!RT?	LL L L !QTA.??	adBatAqz4!R=&AAr7	3q6	qQxQT34tUm	q		   !T!Wq1BB	b"tAr{T!QZac2$?!R	3q6	s1vaxT!W67$	q		  rH   c                     t        t        t              t        t              z  t        d      j                  t        t        t        z  t              t        dt              t        dt              t        dt        z  t              t        t        t              gt        t        t        gt        t        t        t                    t        t        t        t                    gg g dd t        t        gfk(  sJ t        t        t              t        t              z  t        d      j                  t        t        t        z  t              t        dt              t        dt              t        t        t              t        dt        z  t              gt        t        t        gt        t        t        t                    t        t        t        t                    gg g dd t        t        gfk(  sJ t        t        t        z   t        t              dz  z  t        t        z  z   t        t        z  t        z  z
  t        d      j                  t        t        t        z   t        t              dz  z  t        t        z  z   t        t        z  t        z  z
  t        d      j                  cxk(  rt        dt        z   t        t        dz  z  z
  t        z  t              t        t        t              t        dt              t        dt        z  t              t        dt        z   t        z  t              gt        t        t        gt        t        t        t                    t        t        t        t        t        z              gt        t        t        t              z        t        t        z  fgg dd t        t        t        z  gfk(  sJ  J y )	Nr   handle_firstr?   r   r   )Nr   r   r:   rt   )
r)   r   r1   r   r   r   r   rc   r   r7   rG   rH   rI   'test_DifferentialExtension_handle_firstr     s    QAFWW	beR$q"+Q
D1bMR(2r{VAs1v%6q#a&8I$J
 4A,	00 0 0 !QAFWW	beR$q"+Q
DRLQqS"(BfQA&73q69J%K
 4A,	00 0 0 !!Q$s1vqy1a4!7!Q$q&!@!((q!teCFAIo14q!tAv=q	,,3 
rAv"a%#R	($q"+!QZac2a"fb["(=>BAs1vq#bd) 45Qs1vX18M7N 4BqD/	3	3 3 3 3 3rH   c                  d    t        t        t              t        t              z  t        d        j                  t        t              t        t              z  k(  sJ  j
                  t        t        z  k(  sJ  j                  t        k(  sJ  j                  g dk(  sJ  j                  dk(  sJ  j                  dk(  sJ  j                  t        cxk(  r j                   j                     k(  sJ  J  j                  t        dt        z  t              cxk(  r j                   j                     k(  sJ  J t!        t"         fd        j%                           j                  dk(  sJ  j                  t        cxk(  r j                   j                     k(  sJ  J  j                  t        t        t              cxk(  r j                   j                     k(  sJ  J  j                  dk(  sJ  j%                           j                  d	k(  sJ  j                  t        cxk(  r- j                   j                     cxk(  r j                  k(  sJ  J  j                  t        dt              cxk(  r j                   j                     k(  sJ  J  j                  d
k(  sJ t!        t"         fd        j'                           j'                           j                  dk(  sJ  j                  t        cxk(  r j                   j                     k(  sJ  J  j                  t        dt        z  t              cxk(  r j                   j                     k(  sJ  J  j                  dk(  sJ  j)                  d      dgk(  sJ  j)                  d      dgk(  sJ y )Nr   r   )baser   	primitiver   rt   r?   c                  $     j                         S N)increment_levelrp   s   rI   rM   z6test_DifferentialExtension_all_attrs.<locals>.<lambda>      r113 rH   r]   rU   r   c                  $     j                         S r   )decrement_levelrp   s   rI   rM   z6test_DifferentialExtension_all_attrs.<locals>.<lambda>'  r   rH   r   r:   )r)   r   r1   r   r   newfr   rc   casescaselevelr2   Trb   r   rV   r0   rN   r   r   indicesrp   s   @rI   $test_DifferentialExtension_all_attrsr     s   	s1vc!f}ae	DB443q6#a&=   77be4419988333377k!!!88r>>442'bhh'''''444!R=2BDDN22222
:3488r>>442'bhh'''''444B<1244>1111177e88r>>441.RXX."$$.....4441:/bhh/////77f
:3488r>>442'bhh'''''444!R=2BDDN2222277k!!! ::e###::e###rH   c            
      D   t        t        d        t        dt        dt              t        t
        t
              gi      } | j                  d d t        dt              t        t
        t
              gt        t
        gd d d d fk(  sJ | j                  t        t
        t
              k(  sJ | j
                  t
        k(  sJ | j                  dk(  sJ | j                  ddgk(  sJ | j                  t        k(  sJ | j                  dk(  sJ t        t        dt              t        t
        t
              gd dgd t        gd      } | j                  d d t        dt              t        t
        t
              gt        t
        gd d d dgd t        gfk(  sJ t        t        d	        y )
Nc                  2    t        dt        t        gi      S )Nr   rW   )r)   r1   r2   rG   rH   rI   rM   z;test_DifferentialExtension_extension_flag.<locals>.<lambda>5  s    4aV}M rH   rV   r?   rW   rt   r   r   )rV   extsextargsc                      t               S r   )r)   rG   rH   rI   rM   z;test_DifferentialExtension_extension_flag.<locals>.<lambda>D  s
    46 rH   )r0   rN   r)   r   r1   r2   r   rb   r   r   r   rp   s    rI   )test_DifferentialExtension_extension_flagr   4  se   
:MN	#Q
DAJ/G)H	IB4Q
DAJ/G!QdD$#       4441:4419988r>>88&&&4419977e	Q
DAJ/Gu4)*5 
6B4Q
DAJ/G!QdT5MD!9#. . . .
:67rH   c                     t        t        t              t        t              z  t              j
                  t        t        t              t        z  t        d      t        dt        d      t        dt        d      t        t        t        d      gt        t        gt        t        t        t                    gg d dgd t        gfk(  sJ t        t        d        t        dt        z  t              j
                  t        t        t              t        dt              t        dt              t        t        d      t        z  t              gt        t        gt        t        t        t        t        d      z              gt        t        t        d      z        dt        z  fgd dgd t        t        d      z  gfk(  sJ t        t        t              t        t        dz        z   t              j
                  t        d	t        z  t              t        dt              t        dt              t        dt        z  t              gt        t        gt        t        t        t        dz              gg d gg dgt        dz  gf
t        d	t        z  t              t        dt              t        dt              t        dt        z  t              gt        t        gt        t        t        t                    gg d d
gd t        gffv sJ t        t        j                  t              j
                  t        dt              t        dt              t        dt              gt        gg g d gd gfk(  sJ t        t        t!        t              j#                  t                    t              j
                  t        t        t              t        dt              t        dt              gt        gg g d gd gfk(  sJ y )Nz
ZZ[sin(y)]rE   r?   ro   r   c                  <    t        t        t              t              S r   )r)   r   r1   rG   rH   rI   rM   z1test_DifferentialExtension_misc.<locals>.<lambda>M  s    (=c!fa(H rH   rC   r:   r;   r   r   )r)   r   r6   r   r1   r   r   r   r   r7   r0   NotImplementedErrorr   r   rQ   r   r   rewriterG   rH   rI   test_DifferentialExtension_miscr   G  s    QA2CC	c!fRiL	142d3K	a4	 $r2d";<q"g	3q6	R$q		;; ; ;  HI Q*;;	b"tAr{T!QZc"gbj"1E$FB	3qRy>	"#s1SW9~r1u&=%>u	qRy	   !Q#ad)!3Q7HH	adBatAqz4!R=&AAr7	3q!t9	THb1#1v	?	adBatAqz4!R=&AAr7	3q6	R$q		;M< < < <
 !+<<	aT!QZ$q!*sBTFTFKL L L T!W__S%9!:A>OO	aT!QZ$q!*sBTFTFKL L LrH   c                     dt        t              z  dz   dt        dt        z        z  dt        t              dz  z  z   dt        t              z  z   dz   z  t        dt        t              dz   z  dt        z  z
        z  } t        | t              j                  t	        ddt
        z  z   t        z  t              t	        ddt
        z  z   dt
        dz  z  z   dt
        dz  z  z   t              t	        dt              t	        t
        t
              t	        dd	t
        z  z   dt
        dz  z  z    ddt
        z  z   t
        dz  z   z  t        z  t        d
      gt        t
        t        gt        t        t        t                    t        t        t        dt
        dz   z  dt        z  z
              gg g dd t        dt
        dz   z  dt        z  z
  gfk(  sJ y )Nl   F3 ihi ar;   i ?#r:   r?   rC   rY   zZZ(t0)rE   r   )	r   r1   r)   r   r   r   rc   r   r7   )r   s    rI   $test_DifferentialExtension_Rothsteinr   ]  s   	CF	Z	'(3qs8*;c!fai+#CF*++-5+6 	77:1c!fqj>BqD;P7Q	RA A&77	zJrM)2-r	2D": Q:')1"a%:89;5=	aT"b\4"r"u*r"a%x*?(@!ad(
AC ))h$( 	)+,b"+	3q6	F1c!R!V*r!t*;&<=>tQ26
RT(9:	<< < <rH   c                       e Zd ZdZy)_TestingExceptionz"Dummy Exception class for testing.N)__name__
__module____qualname____doc__rG   rH   rI   r   r   j  s    ,rH   r   c                     t        t        t        t        t              dz         z  t              } | j                  dk(  sJ | j
                  t        k(  sJ | j                  t        t        t        dz   z  t              k(  sJ | j                  dk(  sJ t        |       5  | j                  dk(  sJ | j
                  t        k(  sJ | j                  t        t        t              k(  sJ | j                  dk(  sJ t        |       5  | j                  dk(  sJ | j
                  t        k(  sJ | j                  t        dt              k(  sJ | j                  dk(  sJ 	 d d d        | j                  dk(  sJ | j
                  t        k(  sJ | j                  t        t        t              k(  sJ | j                  dk(  sJ 	 d d d        | j                  dk(  sJ | j
                  t        k(  sJ | j                  t        t        t        dz   z  t              k(  sJ | j                  dk(  sJ 	 t        |       5  t        # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w	 t        d      # t        $ r Y nw xY w| j                  dk(  sJ | j
                  t        k(  sJ | j                  t        t        t        dz   z  t              k(  sJ | j                  dk(  sJ y )	Nr?   rt   r   r]   r   rU   r   zDid not raise.)r)   r1   r   r   r   r2   rc   rb   r   r   r   r+   r   AssertionErrorrp   s    rI   test_DecrementLevelr   o  s   	qSVaZ0!	4B88r>>442::444BFR((((77k!!!		  xx2~~ttrzztttB|###ww%B 	%88r>!>441994441:%%%77f$$$		% xx2~~ttrzztttB|###ww% " 88r>>442::444BFR((((77k!!!/B 	$##'	% 	%   0	$ 	$ 	$
 -..  
 88r>>442::444BFR((((77k!!!sK    A&IAI A"I.I0 9I I		III!I0 0	I<;I<c            
      @	   t        t        t        t              z  t              t        t        t              z  k(  sJ t        t	        t              t        d      t        t
        t        z         dz  t        t
         t        z        dz  z
  k(  sJ t        ddt        dz  z  z   t        dz  z   dt        dz  z  t        dt        dz  z        z  z   t        dz  t        t        dz        z  dt        dz  z  t        t        dz        z  z   t        t        dz        z   z  t              t        t        t        dz         t              t        t        dz        dt        dz  z   z  z   k(  sJ t        dt              dk(  sJ t        t        t        t              z  dz         } t        | t              }|t        t        t        t        t               z  dz         z  t        t        dz  t        z
  t        t        t              z   z  t              z   k(  sJ t        t        |t              | z
        dk(  sJ t        dt        z        dz  t        dt        z        dz  z
  t        z  t        ddt        z  z
        dz  t        ddt        z  z         dz  z
  t        z  z
  }t        |t              }|t        dt        z        t        ddt        z  z
        z  dz  t        dt        z        t        ddt        z  z         z  dz  z
  t        t
        t        z  t        dz  z  dt        z  t        dt        z        z  z
  t
        t        z  z
  dt        dz  z  dt        z  z
  z  t              z   k(  sJ t        t        t        |t              |z
        d	      dk(  sJ t        t        t        t        z        t              t        dz  t        t              z  dz  t        dz  dz  z
  k(  sJ t        t        t        t        z        t              t        t        t        t        z        z  t        t        z  z
  k(  sJ t        t        t        t                    t              t        t        t        t                    z  t        dz  z
  k(  sJ y )
NT)rewrite_complexr:   r?   r9   r;   r   rt   )force)r*   r   r   r1   r   r   r,   r   r   r   r6   r	   r   r   )e1ans1e2ans2s       rI   test_risch_integrater     s   2c!f9a(Bs1vI5553q61d;AaCy{SRSQSTUQUYWX[?XXXX A!Q$JA-!Q$s1QT6{0BBT#ad)^a1fSAY&&QT24568c1a4%j!,s1a4y!ad(/CCD D D
 1a A%%% 
Qs1vX\	B2q!DAc!CG)a-((+@!Q$(QQTUVQWZAXZ[+\\]]]$tQ-"$%*** bd)A+AaC

"A	%Q1Wa#a!A#g,q.)H!(K	KB2q!D3qs8CAaCL(*S1Xc!ac'l-B1-DD!1R419qs3qs8|#;ad#BQq!tVaPQc\"RTUVW W W WfT$]R/0=BBB 3q!t9a(AqDQKMAqDF,BBBB3q!t9a(Ac!Q$iK!A#,====3tAw<+qT!W~!/CCCCrH   c                      t        dt        t              z  dt        dt        z        z  z
  t        dt        z        z  t              dt        dt        z        z  dt        dt        z        z  z
  k(  sJ y )Nig3333333@r9   g333333r\   g      (@r@   )r*   r   r1   rG   rH   rI   test_risch_integrate_floatr     sd    CAJc!A#h6AaC@!DSQRSTQTXX\]`abcdad]eXeHeeeerH   c                     t        t        t        t        dz        t              t              sJ t        t        t        t        z  t        t              z  t              t              sJ t        t	        t        t        z  t        z  t              j                  t        t        t                    t              sJ y )Nr:   )
isinstancer*   r   r1   r,   r   r   subsrG   rH   rI   test_NonElementaryIntegralr     sx    oc!Q$i35JKKKoad3q6k157LMMM+AqDGQ7<<RQHJ_```rH   c                      t        t        t        z  t              } | t        t        t        z  t              k(  sJ t        | t              sJ y r   )r*   r1   r,   r   )r5   s    rI   test_xtothexr     s=    1a A%adA....a.///rH   c                  P    t        t        t              t              x} }| |k(  sJ y r   )r)   r   r1   )DE1DE2s     rI   #test_DifferentialExtension_equalityr     s#    %c!fa00C##::rH   c            	          t        t        dt        dz  z        t        t        t        dz        dz         z   t              } t	        |       dk(  sJ t        |       dk(  sJ y )Nr:   r?   ao  DifferentialExtension(dict([('f', exp(2*x**2) + log(exp(x**2) + 1)), ('x', x), ('T', [x, t0, t1]), ('D', [Poly(1, x, domain='ZZ'), Poly(2*x*t0, t0, domain='ZZ[x]'), Poly(2*t0*x/(t0 + 1), t1, domain='ZZ(x,t0)')]), ('fa', Poly(t1 + t0**2, t1, domain='ZZ[t0]')), ('fd', Poly(1, t1, domain='ZZ')), ('Tfuncs', [Lambda(i, exp(i**2)), Lambda(i, log(t0 + 1))]), ('backsubs', []), ('exts', [None, 'exp', 'log']), ('extargs', [None, x**2, t0 + 1]), ('cases', ['base', 'exp', 'primitive']), ('case', 'primitive'), ('t', t1), ('d', Poly(2*t0*x/(t0 + 1), t1, domain='ZZ(x,t0)')), ('newf', t0**2 + t1), ('level', -1), ('dummy', False)]))zDifferentialExtension({fa=Poly(t1 + t0**2, t1, domain='ZZ[t0]'), fd=Poly(1, t1, domain='ZZ'), D=[Poly(1, x, domain='ZZ'), Poly(2*x*t0, t0, domain='ZZ[x]'), Poly(2*t0*x/(t0 + 1), t1, domain='ZZ(x,t0)')]}))r)   r   r1   r   reprstrrp   s    rI   #test_DifferentialExtension_printingr    sh    	s1QT6{SQTQ-??	CB8     r7 : ; ; ;rH   c            	      ^	   dt         dz  z  dt         dz  z  z   dt         dz  z  z
  dt         dz  z  z   d	t         z  z
  t        t               dz  z  d
t         dz  z  dt         dz  z  z   dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z
  t        t               z  z   dt         dz  z  dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z
  d	t         z  z   t        t               z  z   dt         dz  z  dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z
  d	t         z  z   t        d      z  z   dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z   d	t         dz  z  z
  t        t        t               dz   dt         z  t        t               z  z
  t        t               z   t        d      z   t         dz  z
  t         z
        dz  z  dt         dz  z  dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z
  dt         z  z
  dz   t        t               z  dt         dz  z  dt         dz  z  z   dt         dz  z  z
  dt         dz  z  z   dt         z  z
  t        t               z  z   dt         dz  z  z   dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z
  dt         dz  z  z
  dt         z  z   t        t        t               dz   dt         z  t        t               z  z
  t        t               z   t        d      z   t         dz  z
  t         z
        z  z   t         t        t               dz  z  t        t               dz  z  dt         dz  z  t        t               dz  z  t        t               z  z   t         t        t               dz  z  z
  t          t        d      z  t         dz  z   t         dz  z   t        t               dz  z  z   z  } t         dz  dt         dz  z  z
  dt         dz  z  z   dt         z  z
  dz   t        dt         z        z  t        t         dz   dt         z  t        t               z  z
  t         z
  t        t               z   t        t               dz  z
  t        d      z         dz  z  }t        | t               |k(  sJ y )Nr]   r@   r   r9      r;   iD  r:   i  rT   r<   r   i   i  i  rA      t      6   ,         l   r   r   *   i  r=   Q   )r1   r   r   r*   )r   r|   s     rI   test_issue_23948r    s]   ad7R1Ws1a4x'#ad(2SU:CFAI
Ead7R1Ws1a4x'#ad(2SAX=s1v
EFQT6Bq!tGc!Q$h&QT1CE93q6
AB QT6Bq!tGc!Q$h&QT1CE93q6
AB AqD&	 ad7	 !AX	& ),AqD	1 46ad7	; >AAX	F
 s1vqyj1Q3s1v:%A.Q7!Q$>B
CQ
F	G QT6Bq!tGc!Q$h&QT1CE9C?Q
Gad7R1Ws1a4x'#ad(2SU:CF
BC
AqD&ad7 AX&(+AqD136q!t8<>A!eD s1vqyj1Q3s1v:%A.Q7!Q$>B
C	D		D 	Q{3q619qAvc!fai/A663q619D
CFQT	AqD	 #a&!)+,	-A Q$AqD.2ad7
"SU
*R
/RT	:	adUQqSQZ!#c!f,s1vqy83q6A	BA	E
FA 1a A%%%rH   N)lr   sympy.core.functionr   r   r   r   sympy.core.numbersr   r   r	   sympy.core.relationalr
   sympy.core.singletonr   sympy.core.symbolr   r   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   r   sympy.polys.polytoolsr   r   r   sympy.integrals.rischr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   sympy.testing.pytestr0   	sympy.abcr1   r2   r3   r4   r5   r6   r   rc   r   r7   rJ   rO   rR   rg   rl   rq   rw   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	Exceptionr   r   r   r   r   r   r   r  r  rG   rH   rI   <module>r     sM   E D D 0 0 $ " / = 9 : E E 8 8* * * * * * * ( ' 'U^
B
3KK	)	522G$?2Cj!bDP"F>AXF(>>,K.A)#?L 3,!$H8&L,
<		 	
)"X%DPfa0
; &rH   