
    g                     j   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 Zkd7S )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                  J   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 d S )N                              
   g;;?QQdomaing;;g؉؉?)r   r   r1        \/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/integrals/tests/test_risch.pytest_gcdex_diophantinerJ      s   T!Q$1a4-!AqD&"82a4"?""DEEA1qs	Q	adQh1 1	1uqs{Q!	"	"D!Q$1a4-"Q$*>*CQ)F$G$GHI I I I T!Q$1*q.1141qs
Q3G3GaRSeUU	dAd	#	#	#T%'D.!D%I%I%IJK K K 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 d S )Nr?   c                  v    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s1vv~a'7;; rH   r:   T)r   )r   r   r1   r2   r0   
ValueErrorrG   rH   rI   test_frac_inrO   "   s   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M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 d S )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0)2 2 2 2 2acAadFlAq))QqS1QT6\1a  $qsQq!tV|Q":":.< < < < <a#a&&1*a(!Q//QA
^Aq!$$d1c!ffqj>!+;Q&B&B4D D D D Da#a&&1*a(1,a33QCFFQJ!!1a(($q1c!ffqj>!3C/CQ*J*J8L L L L Lafa##tAq!}}444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 d S )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 	JA	#Q

D!Q$AaCQRARUVXYZ[X[U\A\^_<`<`/a)b	c	c	cBaSAXad]a1fr!Q$w6F15L%L	AqD2ad7	AqD &!$%hq!nn$4r!Q$w$>AqD$H!Q$#N&O	aQ	!AqD&	(!Q$.&/23ac'Bq!tG2Ca1f2LqQRs1STU1U&V 
Qq!tVac& ! !     d1ajj"%%a3333d1ajj"%%----d1a4!A#a%<1qs7Qq!tV*<<a@@"EER1Wqs1a4x1qs7Qq!tV"4Q"66!ac'AadF9KKQW^___` ` ` `	#Q

D1bMM4PQST::/V)W	X	X	XBd1Q3r61oor**d1R4!A#b&=13Da.H.HHHHHd1Q3r61oor===a"faZ   	#Q

|)<	=	=	=Bd1ajj"%%a3333q1uq1uor666"a!A#g1n:MMMMM	#Q

DAJJ/G)H	I	I	IBq1uq1uor666"Q$AaC!Q$:OOOOOa!eRt,,,111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 d S )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 	V 	VA	#Q

D!Q$AaCQRARUVXYZ[X[U\A\^_<`<`/a)b	c	c	cBq"$qAvad{bAg!Q$6F15L'L	
1a4!AqD&!(1f(%&'#9 #9 #9QTAaCE\Q1WqAv..'BBB"D D D D D tAqzz2&&41::tAqzz*BBBBBR1WQT\AadF1a4K'!AqD&01QT6!Q$;>1a41LqRStSVWXY[\X\V\\_`bc_ccefggA	#Q

D1aLL/I)J	K	K	KBq"4000	acAqDj1QT6!AqD(!	,	,dAqD51QT6!Q$;3F.J.JKL L L L1bt444!ad
Qq!tV#ad*A..
2	4adUQq!tVAqD[=PRS8T8TVW7X6Z[\ \ \ \tAqzz2&&41::tAqzz*BBBBB41::r**aQ/A2.FFF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 d S )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<M/N)O	P	P	PB#DQNNDAqMM2FF	a7	#	#	#d1a&@&@&@Q$&!#'Q'#B#B#BQT1#	    
#Q

DA1<M<M/N)O	P	P	PB#DA1q!tAv)=)A1$E$E!Q$(QB   	a7	#	#	#d1a4!Q$;Aa+?!+CQw&W&W&W	adQq!tVma1f$q(!D	9	9	9&;	a7	#	#	#T!Qt%<%<%<=	?? ? ? ? ? ?rH   c                     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 d S )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   sm	   	#Q

DA1<M<M/N)O	P	P	PB$q1ua..$q!tQ--<<
r1W
%
%
%tAq'A'A'A	B
q!G
$
$
$d1a&@&@&@	A
r1W
%
%
%tAq'A'A'A	B	DD D D D
 
#Q

D!Q$1PQTVXYTYZ[]^Z^T^P^A_ab<c<c/d)e	f	f	fBAadQq!tV#b!eAqDj01adQh<13DD1rSTuVWGWWZ[]^Z^_`Z``bcddAadQT1a4!8_QT11AqD81a4?!Q$q&H!LLbR R 1uqy!J
/
/
/a1fqAvo6I1U_1`1`1`	a
2q51a4"a1fqsl3Qz
J
J
J
qAvad{QT!AadF*Aj
A
A
A
C
qsQw*
-
-
-tAq/L/L/L	M	OO O O O 
#Q

D1aLL/I)J	K	K	KBb1Q3h1_Q1},1qAvq/@@1a4GKKAQq!tVa1fQTk!AadF1a4K/!AqD&A+=1QT	I1MMA!Q##
qAvzAaC7
3
3
3
qAv!AqD 1QT6!Q$;.1a491W
M
M
M
O
q!G
$
$
$d1a&@&@&@	A
q!G
$
$
$d1a&@&@&@	A	CC C C C !Q$1q!G444!AqD1Q3q51$a888"> > q!G
$
$
$d1q5!G&D&D&D	E
q!G
$
$
$d1a&@&@&@	A
q!G
$
$
$d1a&@&@&@	A	CC C C C !Q$q!trAadF{QT11a4772!Q$;1:LL!AadF#$%g7 7 7AadQq!tVAqD[(1,a@@@"F F q!tAv1}q !G
4
4
4d1a419q=!T[6\6\6\	]
q!G
$
$
$d1a&@&@&@	A
r1W
%
%
%tAqD!G'D'D'D	E	G	G G G G "qs(AqDBFAqD=0BqD1QT6M13DDq!tKQOO1a4!AqD&A+%!Q$q!t3a1fQTkAAqDAIMqQQSUW W qAvzAaC7
3
3
3
qAv!AqD 1QT6!Q$;.1a491W
M
M
M
O
q!G
$
$
$d1a&@&@&@	A
q!G
$
$
$d1a&@&@&@	A	CC C 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 d S )NrV   r?   r:   rW   r   )r)   r   r1   r2   r    rp   s    rI   test_polynomial_reducery      s    	#Q

DQT1<M<M/N)O	P	P	PBT!ac'AqD.!44b99	aT!A#q\\"# # # #T!QZZ,,	aT!QZZ ! ! ! ! ! !rH   c            
      b   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 d S )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~      s   	#Q

DAJJ/G)H	I	I	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_1_1_`	bb b 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 d S )NrV   r?   rW   r{   r:   FT)r)   r   r2   r.   r1   rv   s      rI   test_recognize_derivativer      sv   	#Q

|)<	=	=	=BRAa!eadQh]"A&&A1b))U2222	#Q

D1aLL/I)J	K	K	KBQ

AQTAXqA1b))U2222QqS!d1ajj"==EEEE	#Q

DA1<M<M/N)O	P	P	PBQ

DAJJ;;tCCCCCCrH   c                     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 d S )Nr:   r9   rV   r?   rW   TF)r   r1   r2   r)   r-   r4   )r5   rb   rf   s      rI   test_recognize_log_derivativer      sw   Qq!tVac!e^ac!AqDF*A..AacAgAqD!1%%A	#Q

DAJJ/G)H	I	I	IB#Aq"a00D8888	#Q

D1aLL/I)J	K	K	KB#DQNNDQNNBGG4OOOO#DAJJQTAXq0A0A2FF$NNNN	#Q

|)<	=	=	=B#DAJJQTAXq0A0A2FF%OOOO#DAJJQTAXq0A0A2FF$NNNN	#Q

DA1<M<M/N)O	P	P	PB#DAJJQTAXq0A0A2FF%OOOO#DAJJQTAXq0A0A2FF%OOO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 d S )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aLL/IVYUZ)[)[	\	\	\B!QAe4441x1~~%q99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 F !QAd3331x1~~%q9994AaCE	1;M;M
N	OQVWX X X X$r!tQ--adQh););R5QQQ1q!D)))41Qq1Q3)+T+T+T
U	VX\]^ ^ ^ ^
bdAQTAXq(9(92q
N
N
NCT!Q$(Ad333T!a%^^DEtLLLLL"3q62q11c"s1vv+6F6F5FQQTUVQWQWZ5XXXXX	#Q

D!Q$1PQTVXYTYZ[]^Z^T^P^A_ab<c<c/d)e	f	f	fB$2q51a4!AqD&9!;q1a4xlJANNAAqDF	AA' 'AF
Ad+++T!Q$(QT!V2CQ. . .   
!"&	(( ( ( ( 
#Q

DQT1<M<M/N)O	P	P	PB$r!tAvzAqD0!44A!A	AqD	 !$$b!- -1x1~~%q))4A!Q+?+?
@	A4HI I I I 
#Q

DAJJ/G)H	I	I	IB$q!**d1tAww;&:&:BBBAq&&&Qa[!(<(<
=	>EF F F 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 d S )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      sm   a!B$hQ2q5(!Q$.!b!e)Q>BRUJANNAQ

A	Q

DRUB<O<OQBE	]A0 ,/3s1vv;;1G1G+H*J *J 
K 
K 
KB%aB//	Qs1vvXs1vv	CFF	+QQY=> > > >b!eq1ub!em#b(1,q0!3Q77A%aB//
c!ff*c#a&&kk	!1d+, , , , 	Q

AQ

A	Q

D1QNN/K!SAYY''(** ** 
+ 
+ 
+B &aB//	
!#ad))Q//78 8 8 8 
Q

DAJJ/GTWSX)Y)Y	Z	Z	ZB%aB//CFFAt3DDDDDR1Wr!Q$w1a4'!AqD&02ad7:QqS@1DaHHAR1Wr!Q$wAqD(1,a00A%aB//3q66	>	A3qs88O	,s1s1Q3xx</@/@	@"dKL L L L	Q

DRLL$rRStUV--/Xq#c!ff++../*1 *1 
2 
2 
2B%d1R419a&8&8$q!**bIIcRSTWXYTZTZRZmm]^`dMeeeee	Q

DRLL$PRsSTuVW../Yq#s1vvg,,//0*2 *2 
3 
3 
3B%d3s1vv:Bs1vv+EqDGCFFN,' 'bRj1a4B<7"Q$s2ww,FI1MMrS S	CAKKCFFQs1vvX-	.489 9 9 9 
Q

DAJJ/GTWSX)Y)Y	Z	Z	ZB%d1a46!8Q&7&7aRHH
ac'AqD.#a&&	 	"At,- - - -%d1q5!nnd1ajj"EE
qb''1d   %d1ajj$q1ua.."EE	
!!QQZ.!44e<= = = = 
Q

D1bMM4PQRSPSTVPVXZK[K[/\q#ad)),,-*/ */ 
0 
0 
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+ 	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VV^a#ad))ma1fqj-IJKKKKKQ<1#ad))SAYY]2KQOOQVWWWWWWWrH   c            	      P   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 d S ) 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   <  s    	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$"  %!	1 	1 	1A" 
#Q

D1bMM4PQRSPSTVPVXZK[K[/\)]	^	^	^B0B::a"fb!e^r"uqs{B..33T"Q$r'AqD.
A;6 6?     
#tAqzz4B<<.H)I	J	J	JB0ab!D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 d S )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%beRUB77I	Qs1vvXs1vv	r#a&&!}}-4y=: =:;<d<D D D D D	q1Q3x	+	+B%beRUB77I	QqSQZ!CFF(	#R#a&&!__54y=B =BCDd<L L L L L	s1Q3xx	+	+B%beRUB77I	QqS!R1XXD	=+ =+,-t<5 5 5 5 5	qQqSz1	-	-B%beRUB77I
A#'3qs88	AqD	 "QT1++.Aa=@ =@ABD<J J J J J	q!tC!HH}a	0	0B%beRUB77I
Q$q!t)ac!e
a
QqS	)!Q$	.1a4<	
Aa= =D<" " " " " 
q!tax	+	+B%beRUB77I	SVVAXs1vv	r#a&&!}}-4y=: =:;<d<D D D D D	q!tax!ac(2A	6	6B%beRUB77I
aAhqj//#a&&
 c#a&&(mmOCFF"#%&s1vvqy[
235aA	k13E3E	GqS$K=
 =
 d	<      rH   c                     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 d S )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2	RC
Q"Xc!Q$(mm+CFF223 3 3 31q1u:q!tax0!44QBs1vvIs1a4!8}}$SVV+, , , , , ,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 d S )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aLL/I%* * 
 
 
BtAqzz41::r::qQxT>RRRRRtAqzz41::r::qBWXYZ]^_Z`Z`X`bcBdBdfk>lllll	Q

D1bMM4PQSTWXSXPY[]K^K^/_q#a!e**--.*0 *0 
1 
1 
1BtB||T"b\\2>>	
!#a&&QU"3Q77?@ @ @ @ 
Q

D1bMM4PQSTUWSWPXZ\K]K]/^q#c!ff++../*1 *1 
2 
2 
2BtB||T"b\\2>>	
!#c!ff++c!ff"4a88%@A A A A 
Q

D1bMM/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VVaZ/3q66A:BBEJK K K K K KrH   c            	      B   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 d S )NrV   r?   r:   rW   r@   r9   )r)   r   r1   r2   r&   r5   rp   s    rI   &test_integrate_hypertangent_polynomialr     sK   	#Q

DA1<M<M/N)O	P	P	PB,T!Q$1*q.!-D-DbII	aT!A#q\\"# # # #	#Q

DAqD1Hq<Q<Q/R)S	T	T	TB,T!Q$]]B??	a1gadlQ!WQT\)1	-	-tAqsGQ/?/?@A A A 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 d S )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     s1   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 *A 
B 
B 
BB*1a44
a!!A$$'kAqDF"
#
#	#A	%q!ta!AqD&j1QQqTT1W96L(M	MtTU U U U*41::tAqzz2F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 d S )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                  N   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 d S )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7H	b2gr		DBKK$q!++tB||QqSVR*r2;3q66):):q#ad)))!#7#7#7$1a4	JJ J J J !Q#ac((!2A66G	b!ebj"		tAr{{T!QZZb",FB	3q66		R$q		;; ; ; ; !Q#ac((!2A66G	b!ebj"		tAr{{T!QZZbdB,H	
B&C!HH%%&T5MD!A#;	HH H H H !Q#ad))!3c!ad(mm!CQGGX	q2vrkB	#	#T!R[[41::tB||QqSVR3r2;3q66):):q#ad)))!#7#7#7$1a4	JJ J J J !Q#ad))!3c!ad(Q,6G6G!GKK\	q16"9}b 2%r	*	*DBKK$q!**Rd1Q3r62&&:(*+RvaQ7H7Hq#ad))7!#7#7#7$1a4	JJ J J J !Q#ad))!3c!A#1*oo!EqIIZ	rAvrkBE!2	&	&Qd1ajjRT2QqSVR((6*,-r2;	3qs88		fQAqD		223
ac((DQLL	!"$8$8$841ad:K	MM M M M
 !Q#ad))!3c!A#1*q.6I6I!I1MM^	r#a&&y1}b 2q5("	-	-tAr{{T!QZZRT2QqSVR((=*,-r2;3qs889L9Lq#ad))9!$QqS4A<< 89;O;O;O	qsAqD	   
 !c!ffq11B	b"tAr{{T!QZZbdB$@1b'	3qs88		QqS4A<< 89D%=4QRSTQT+	WW W W W !QqS1-->	b"tAr{{T!QZZbdB$@1b'	3qs88		rD%=41+	?? ? ? ? ? ?rH   c                  J   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 d S )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!|3D3D!DaHHY	bQh"SVV)b!e+R//	4	4d1bkk	aT!A#r]]QAY5)))	+-.BK	3q66		F1c!a%jj112B8L8L8L	q!a%		    !Ac!ffa00A	beR$q"++Q

D1bMMa"fb["(!"BfQA.?.?q#bd)).!$Qs1vvX1 568L8L8L	q"Q$	     rH   c                  V   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 d S )Nr?   r   r   r:   )r)   r   r1   r   r   r   rc   r   r7   r   r6   r   rG   rH   rI   !test_DifferentialExtension_symlogr     sg    QTA..?	bdBatAqzz4!R==$IHC C 'RvaQ'8'8&C"II:N:N&O!CFF(mmQT"#%9%9%9D!RT?	LL L L L !QTA..?	adBatAqzz4!R==&AAr7	3q66		qQxQT34tUm	q		    !T!WWq11B	b"tAr{{T!QZZac2$?!R	3q66		s1vvaxT!WW67$	q		     rH   c                  n	   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    rdt          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n J d S )	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FFW	beR$q"++Q

D1bMMR(2r{VAs1vv%6%6q#a&&8I8I$J
   4A,	00 0 0 0 !QAFFFW	beR$q"++Q

DRLLQqS"(BfQA&7&73q669J9J%K
   4A,	00 0 0 0 !!Q$s1vvqy1a4!7!Q$q&!@!  (q!teCFFAIo14q!tAv=q	 	 	,3 3 3 3 
rAv"a%#R	(	($q"++!QZZac2a"fb["(=(=>BAs1vvq#bd)) 4 45Qs1vvX18M7N   4BqD/	3	3 3 3 3 3 3 3 3rH   c                      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n J  j        t          dt          z  t                    cxk    r j         j
                 k    sn J t!          t"           fd                                              j
        dk    sJ  j        t          cxk    r j         j
                 k    sn J  j        t          t          t                    cxk    r j         j
                 k    sn J  j	        dk    sJ                                    j
        d	k    sJ  j        t          cxk    r" j         j
                 cxk    r j        k    sn J  j        t          dt                    cxk    r j         j
                 k    sn J  j	        d
k    sJ t!          t"           fd                                                                                j
        dk    sJ  j        t          cxk    r j         j
                 k    sn J  j        t          dt          z  t                    cxk    r j         j
                 k    sn J  j	        dk    sJ                      d          dgk    sJ                      d          dgk    sJ d S )Nr   r   )baser   	primitiver   rt   r?   c                  ,                                      S N)increment_levelrp   s   rI   rM   z6test_DifferentialExtension_all_attrs.<locals>.<lambda>      r1133 rH   r]   rU   r   c                  ,                                      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   	s1vvc!ff}ae	D	D	DB43q66#a&&=    7be419999833333337k!!!!8r>>>>42''''bh''''''44!R==2222BDN222222
:33334448r>>>>42''''bh''''''44B<<111124>1111117e8r>>>>41....RX...."$......441::////bh//////7f
:33334448r>>>>42''''bh''''''44!R==2222BDN2222227k!!!! ::e####::e######rH   c            
         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	            d S )
Nc                  >    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M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6 rH   )r0   rN   r)   r   r1   r2   r   rb   r   r   r   rp   s    rI   )test_DifferentialExtension_extension_flagr   4  s   
:MMNNN	#Q

DAJJ/G)H	I	I	IB4Q

DAJJ/G!QdD$#         441::4199998r>>>>8&&&&4199997e	Q

DAJJ/Gu4)*5 *5 
6 
6 
6B4Q

DAJJ/G!QdT5MD!9#. . . . .
:667777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                                        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 d S )Nz
ZZ[sin(y)]rE   r?   ro   r   c                  P    t          t          t                    t                    S r   )r)   r   r1   rG   rH   rI   rM   z1test_DifferentialExtension_misc.<locals>.<lambda>M  s    (=c!ffa(H(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2C	c!ffRiL	1	1	142d3K3K3K	a4	 	 	 $r2d";";";<q"g	3q66		R$q		;; ; ; ;  H HIII Q**;	b"tAr{{T!QZZc"ggbj"1E1E$FB	3qRy>>	"	"#s1SWW9~~r1u&=%>u	qRy	    !Q#ad))!3Q77H	adBatAqzz4!R==&AAr7	3q!t99		THb1#1v	?	adBatAqzz4!R==&AAr7	3q66		R$q		;M< < < < <
 !++<	aT!QZZ$q!**sBTFTFKL L L L T!WW__S%9%9!:!:A>>O	aT!QZZ$q!**sBTFTFKL L L L L LrH   c                  l   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 d S )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FF	Z	'(3qs88*;c!ffai+#CFF*++-5+6 	77:1c!ffqj>BqD;P7Q7Q	RA A&&7	zJrM)2-r	2	2D": Q:')1"a%:89;5= 5=	aT"b\\4"r"u*r"a%x*?(@!ad(
AC ))h$( $( $( 	)+,b"+	3q66		F1c!R!V*r!t*;&<&<==>tQ26
RT(9:	<< < < < < <rH   c                       e Zd ZdZdS )_TestingExceptionz"Dummy Exception class for testing.N)__name__
__module____qualname____doc__rG   rH   rI   r   r   j  s        ,,DrH   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            n# 1 swxY w Y   | 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            n# 1 swxY w Y   | 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xY w Y   	 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 d S )	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  sg   	qSVVaZ0!	4	4B8r>>>>42::::44BFR((((((7k!!!!			    x2~~~~trzzzzttB||####w%B 	% 	%8r>>>>419999441::%%%%7f$$$$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% x2~~~~trzzzzttB||####w%                             " 8r>>>>42::::44BFR((((((7k!!!!/B 	$ 	$##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 -...    
 8r>>>>42::::44BFR((((((7k!!!!!!si   +A!GAE&G&E*	*G-E*	.AGGG7I) III) II) )
I65I6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 d S )
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     sK   2c!ff9a((Bs1vvI55553q661d;;;AaCy{SRSQSTUQUYYWX[?XXXXX A!Q$JA-!Q$s1QT6{{0BBT#ad))^a1fSAYY&&QT24568 8c1a4%jj!,,s1a4yy!ad(/CCD D D D
 1a  A%%%% 
Qs1vvX\		B2q!!DAc!CGG)a-(((+@!Q$(QQTUVQWQWZAXZ[+\+\\]]]]$tQ--"$%%**** bd))A+AaC

"A	%Q1Wa#a!A#g,,q.)H!(K	KB2q!!D3qs88CAaCLL(*S1XXc!ac'll-B1-DD!1R419qs3qs88|#;ad#BQq!tVaPQc\"RTUVVW W W W WfT$]]R/00===BBBB 3q!t99a((AqDQKMAqDF,BBBBB3q!t99a((Ac!Q$iiK!A#,=====3tAww<<++qT!WW~!/CCCCCCCrH   c                  2   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 d S )Nig3333333@r9   g333333r\   g      (@r@   )r*   r   r1   rG   rH   rI   test_risch_integrate_floatr     s{    CAJc!A#hh6AaC@!DDSQRSTQTXXX\]`abcdad]e]eXeHeeee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                                        t          t          t                              t                    sJ d S )Nr:   )
isinstancer*   r   r1   r,   r   r   subsrG   rH   rI   test_NonElementaryIntegralr     s    oc!Q$ii335JKKKKKoad3q66k1557LMMMMM+AqDGQ77<<RQHHJ_```````rH   c                      t          t          t          z  t                    } | t          t          t          z  t                    k    sJ t          | t                    sJ d S r   )r*   r1   r,   r   )r5   s    rI   test_xtothexr     sR    1a  A%adA......a.///////rH   c                  h    t          t          t                    t                    x} }| |k    sJ d S r   )r)   r   r1   )DE1DE2s     rI   #test_DifferentialExtension_equalityr     s-    %c!ffa0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 d S )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    s    	s1QT6{{SQTQ-?-??	C	CB88      r77 : ; ; ; ; ; ;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 d S )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FFAI
Ead7R1Ws1a4x'#ad(2SAX=s1vv
EFQT6Bq!tGc!Q$h&QT1CE93q66
AB QT6Bq!tGc!Q$h&QT1CE93q66
AB AqD&	 ad7	 !AX	& ),AqD	1 46ad7	; >AAX	F
 s1vvqyj1Q3s1vv:%A.Q7!Q$>B
C
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FF
BC
AqD&ad7 AX&(+AqD136q!t8<>A!eD s1vvqyj1Q3s1vv:%A.Q7!Q$>B
C
C	D		D 	Q{3q6619qAvc!ffai/A663q6619D
CFFQT	AqD	 #a&&!)+,	-A Q$AqD.2ad7
"SU
*R
/RT	:	adUQqSQZ!#c!ff,s1vvqy83q66A	B	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     s   E E D D D D D D D D D D D D 0 0 0 0 0 0 0 0 0 0 $ $ $ $ $ $ " " " " " " / / / / / / / / = = = = = = = = 9 9 9 9 9 9 : : : : : : E E E E E E E E E E 8 8 8 8 8 8 8 8 8 8* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ( ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'WU^^
B
F3KKK K K	) 	) 	)	5 	5 	52 2 22G G G$? ? ?2C 2C 2Cj! ! !b b bD D DP P P"F F F>AX AX AXF( ( (>  >, , ,K K K.A A A  ) ) )#? #? #?L     3 3 3,!$ !$ !$H8 8 8&L L L,
< 
< 
<	 	 	 	 		 	 	 	
)" )" )"X%D %D %DPf f fa a a0 0 0  
; ; ; & & & & &rH   