o
    jgę  ć                   @   s  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\ZBZCZDedZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd  ZMd!d" ZNd#d$ ZOd%d& ZPd'd( ZQd)d* ZRd+d, ZSd-d. ZTd/d0 ZUd1d2 ZVd3d4 ZWd5d6 ZXd7d8 ZYd9d: ZZd;d< Z[d=d> Z\d?d@ Z]dAdB Z^dCdD Z_dEdF Z`dGdH ZaG dIdJ dJebZcdKdL ZddMdN ZedOdP ZfdQdR ZgdSdT ZhdUdV ZidWdX ZjdYdZ Zkd[S )\z?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                   C   s  t ttd dtd   dtd   dt  d ttd td  dt  d ttd d ttd  dt  d d ttd d	td   d
t  d d fksUJ t ttd dt  d	 ttd dt  d ttd tdtddtdt d tddfksJ d S )Né   é   é   é   é   é   é   é   é   é   é
   g;±;±³?ŚQQ©Śdomaing;±;±³ægŲŲĶ?)r   r   r0   © rE   rE   śX/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/integrals/tests/test_risch.pyŚtest_gcdex_diophantine   s   0,’Dž:"’rG   c                   C   s*  t ttd t t ttttt t ttttfksJ t td t t tttt t ttttfks9J t ttd t t tttd tftttt t ttdt t tfksbJ ttdd  t tddt  tdt   dt d  ttddttd tttd tfksJ d S )Nr=   c                   S   s   t td tt t tS )Nr=   )r   r0   r   r1   rE   rE   rE   rF   Ś<lambda>)   s    ztest_frac_in.<locals>.<lambda>r8   T)r   )r   r   r0   r1   r/   Ś
ValueErrorrE   rE   rE   rF   Śtest_frac_in"   s   ’’("’2’rJ   c                   C   sv  t dt t ttttdt  ttttdt  ttfv s J t dt dtd   tttdt dtd   tttdt dtd   ttfv sLJ t dtdd t  tttdtdd  t tttdtdd  t ttfv sxJ t dtdd t  t ttttdtdd  t  ttttdtdd  t  ttfv sŖJ t tjtttdttks¹J d S )Nr8   r9   r=   r   )r   r1   r3   r   r   r
   ŚZerorE   rE   rE   rF   Śtest_as_poly_1t.   s   $
’4
’4
’<
’"rL   c                  C   sD  t dtd  td  dtd  dtd   td   dtd  dtd   td   dt dtd   dtd   td   ddt  dtd   t  d dt  t} td	t dtt td  ddt  t  ddt   tgid
}t| |t dtd  td  dtd  dtd   td   dtd  dtd   td   ttdd dtd   dtd   td   dttdd  dtd   td   ddt  dtd   dtd   dt  t  ddtd   dt   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 dt t  ddt  dtd    t|t dtd  dt td   ddt  dtd   t  ddt  dtd    tddksaJ td	t dtt dt tt ttgid
}tt tt t t|t tt tt t  t tksJ tt tt t t|ddt dt t tks®J td	t dtgid
}tt tt|t dtksÉJ ttd td  |dddddt  td   ksåJ td	t dtt ttgid
}ttd td  |dddt ddt  td   ksJ ttd |ddtks J d S )Nr7   r>   éü’’’r9   éż’’’r8   r?   r=   ŚD©Ś	extensioniģ’’’r:   r@   é   r;   é   éū’’’r<   é   rA   r   éž’’’śZZ(x)rC   T©ŚcoefficientD)Śbasic)r   r0   r1   r(   r   r   ŚdŚt1©ŚpŚDErE   rE   rF   Śtest_derivation:   sR   T&’’’’’@<’,’$ž.žż
ż 6X
’*<
’ 8< r`   c                  C   s  t dtd  td  dtd  dtd   td   dtd  dtd   td   dt dtd   dtd   td   ddt  dtd   t  d dt  td	d
} tdt dtt td  ddt  t  ddt   tgid}t| |t dtd  td  dtd  dtd   td   dtd  dtd   t  dtd   tddt td dt t  ddt  dtd    tddfksĢJ tt tt|t ttt dtfksąJ t dtd  td  dtd  td   ttd   dtd  td   dtd  td   td  ttd   td  t}tdt dtt dt tgid}t||d	dt tt td  ttd   td  tt td  dtd  td   tfksaJ t||d	dt tt td  ttd   td  tdfft td  dtd  td   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 )Nr7   r>   rM   r9   rN   r8   r?   r=   T)ŚfieldrO   rP   éų’’’rU   rW   rC   r:   rX   r   rE   )r   r0   r1   r(   r   r3   r   )r^   r_   ŚrrE   rE   rF   Śtest_splitfactorS   s@   T&’’’’’@<’
’’4
ž(~"L
’X
’*.rd   c               	   C   s  t dtdttdtd  tgid} tttt tttd t| tdtddtdtddtdtd	dftt t tddttd tffksJJ t dtdtttd d tgid} tttd
 td  td t  d tttd d d t| tdtddttd
 td  td t  d tddttd dtd   dtd   d tddftdtddtdtddffksæJ d S )NrO   r=   r8   rP   r   zZZ[x]rC   śQQ[x]ŚZZr>   r9   r:   r7   rB   )r(   r   r0   r1   r   ©r_   rE   rE   rF   Śtest_canonical_representatione   s(   &’’’’&&’4,’žžrh   c               	   C   s  t dtdtttd d tgid} tttt tttd t| tt tddtttddftdtddtdtddftt tddtdtddffksPJ t dtdtttd  tt  dtd td    tgid} tttd td  ttd	   td td
   ttd d  td   td td  t  td d	  tttd td	  td td d  td   td  td	  td d	  t| ttd  d	 tddtd	td  dtd   d	 tddftdtd  td	  t dtd
  dt   tddtdtd  td  td	  dtd   tddfttt d tddtttddffks5J t dtdttdt tgid} tdd
t  td
  dt td   dt dtd   t  td  t}tttd  d	td  td   dtd
  td	   d	td	  td
   td td   t}t||| td
td  t d
t  tddtd
td	  dt td
   dtd  td   d
td
  t  tddftdtddtdtddftdtddtdtddffksōJ tttd  dt  d tddtt td  dt t  t tdd| td
tddttd tddftdtddtdtddftdtddtttddffksHJ tttd  td  ddtd
   td	  td
   dd
td	   td   dt t  t d
td   tddttd	 td  dtd  td
   d tdd| ttd
 t td	  d tddttd
 td
  t tddftdtddtdtddftdtddttd tddffksŪJ ttdd
t  td
  dt td   dt dtd   t  td  ttttd  d	td  td   dtd
  td	   d	td	  td
   td td   t| td
td  t d
t  tddtd
td	  dt td
   dtd  td   d
td
  t  tddftdtddtdtddftdtddtdtddffksJ d S )NrO   r=   r8   rP   re   rC   r   r>   r7   r9   r:   śZZ(x,nu)rV   é’’’’rM   rW   é	   rN   )r(   r   r0   r1   r   r2   ©r_   r4   r[   rE   rE   rF   Śtest_hermite_reduces   s   &ž’@hNž<40’"ż
ż"J^
 H’ż
’(žž
żJ
’’
’’2ż>ž
üH^ž H’żżrm   c                  C   s   t dtdttdtd  tgid} ttdtt  td  t| tttttt tfks1J ttdt| tdttdtfksEJ d S )NrO   r=   r8   rP   r   )r(   r   r0   r1   r   rg   rE   rE   rF   Śtest_polynomial_reduceØ   s   &’’rn   c               	   C   s"  t dtdttdtgid} tdt}ttd td d d  t}ttd d t}d}t||||| tdtd  dtd   dt  d	 tttd
 td  dtd   dtd   t d ttdtd  dtd   tddtdtd  dtd
   d	td   tddgfksJ d S )NrO   r=   rP   é$   r8   rN   r9   r:   rU   r>   r7   rB   rC   )r(   r   r0   r1   r.   )r_   r4   r[   ŚFŚnrE   rE   rF   Śtest_laurent_series°   s   
\N’’rr   c                  C   s  t dtdtgid} tdt}ttd td d d  t}t||| dks)J t dtdttdt tgid} tdt}ttd d t}t||| dksRJ tttt ttdt| dksdJ t dtdtttd d tgid} tttttdt| dksJ d S )NrO   r=   rP   ro   r8   FT)r(   r   r1   r-   r0   rl   rE   rE   rF   Śtest_recognize_derivative»   s   
"
$&$rs   c                  C   sÖ  t dtd  dt t  dt  td t  t} t dt t ttd   t}tdt dtt ttgid}t| ||tdksBJ tdt dtt dt tgid}tt td tt tt t|dksgJ tt dtt td d t|dks{J tdt dtgid}tt dtt td d t|dksJ tt dtt td t t|dks®J tdt dtt td d tgid}tt dtt td d t|dksÕJ tt dtt td t t|dkséJ d S )Nr8   r7   rO   r=   rP   TF)r   r0   r1   r(   r,   r3   )r4   r[   r_   rE   rE   rF   Śtest_recognize_log_derivativeÉ   s   2"((((&(,rt   c               	   C   sb  t dtd  t td  t} t td td t  t}tt dtt dt tgtgdd}t| ||tddt td tdd td	d
t ddt t  dtd   dtd   dtd  td   t tt  td  dtd  td   dt td   tdd
fgdfksJ t| ||tddt td tdd td	d
t tdt t  tfgdfks±J tt dt tt td d t|tddt td d tdd
t dt t t dt  tdd
fgdfksēJ tt dt tt td d t|tdd}|t td d tdd
t tt tfgdfksJ t|d |ttdtt  tdtt  ks2J tdt dtt td  tt  dt	d td    tgid}tt dt	d  td  dtd   t dtd  t  tt td d td d  t|tt tt
j tdd
t td d td d  tdd
fgdfks¢J tdt dtt dtd  tgid}tt dt t d td  tt td dt t  d td  t|tt td tdd tt tt dt  tfgdfks÷J tdt dtt ttgid}tt ttt ttd t|tt td tdd
t ttd tfgdfks/J d S )Nr8   r9   r=   ©rO   ŚTfuncsrP   F)Śinvertr7   rW   rC   r:   zZZ(z, x)TrV   rB   zZZ(z,x)r   rj   rO   ri   )r   r1   r0   r(   r   r    r3   r   r!   r2   r
   ŚHalfr   )r4   r[   r_   ŚansrE   rE   rF   Śtest_residue_reduceŚ   sZ   &P’’’’ž’6’(<’*48@: ’,’’
ž&(’2
ž (’rz   c                  C   sj
  t ddt  td  dtd   td  dtd  t  d td  t} t dt}tt dtt dtd  tt tdtd   tgttttttgdd}t	| ||tdtt tt ttt dtd  dfksrJ t td td td   t t d t t} t	| ||ttt ttt ddfks J t tt} t dt}tt dtt dt t tgttttd gdd}t	| ||dt
ttd tdfksŚJ tt dtt ttgtgdd}t	| ||ttddfksśJ t d	td
  dtd   dtd   dtd   dtd   dt  d t} t d	td
  dtd   dtd   d t}t	| ||ddtt   dd	tdt    tdtdt   ddfksaJ tt dtt ttt tt tgttttttgdd}t	t dt td  tt dt|tdtt ddfks J tt dtt ttt t t tgtttttt gdd}t	t dtd dt td  dt t td  tt dtd td td  dt td  t t|dttt dtd ttd   ddfksJ tt dtt ttgtgdd}t	t td d t tt dt|ddt  td  tt d ddfksLJ t	t dt tt tt|tt  ddfksfJ t	t ttt td t|dt
tdtt  tdfksJ tt dtt dt tt dt t tgtttttd gdd}t	t dtd  dtd   d
td   t td  dt td  dt td
   dt td   dt td   dt td   tt  dtd   dtd
   dtd   dtd   dtd   dtd   t d td   dt td  dt td
   dt td   dt td   dt td   ttd   dt t  dtd   dtd   dtd
   dtd   dtd   dtd   d
td   t d td   dt td  dt td
   dt td   d
t td   dt td   dt td   tt  dtd   dtd   dtd   dtd
   dtd   dtd   dtd   td  dt  t  dt td   dt td
   dt td   dt td   ttd   dtd   dtd
   dtd   dtd   td  td  tt dtd  dtd   d
td   t td  dtd  dtd   dtd
   dtd   dtd   d
td   dtd   t td   dtd  dtd   dtd   dtd
   dtd   dtd   dtd   dtd   td   dtd  dtd   dtd   dtd   d
td
   dtd   td  dtd   t  dtd   dtd   d
td
   td  t|\}}}t|td tt tttd  dtd  d    ksJ ||ft
ttd ttd d  tdfks3J d S )Nr=   r8   r9   ru   rP   Tr   FrS   r:   rA   r>   r?   r7   rU   é   é#   é   rj   iå’’’rk   é¢   é   ro   é   r;   iś’’’é   é   r@   )r   r\   r1   r(   r0   r   r   r6   r   r$   r+   r   Śt0r   )r4   r[   r_   ŚelemŚnonelemŚbrE   rE   rF   Śtest_integrate_hyperexponentialł   s¤  J
’
’
0’.
’


’
’"N.
>
’ 
’@"
’’’6’,
ž""$
’
’
’(
’2V
’
’
’
’
’
’’’’’N
’
’
’
’
’
’
’
ž
žžžžż.’’’’
’
’
’
ž
ž
ž
žžžžūłųųų
ų
ų
ų
	÷
	÷	÷	÷	÷$	’’F
’’’’:
’
’
’’ž"
’
’
’’
’’ż
ü
ü
ūūū
ņ@8r   c                  C   sī  t dtd  t dtd  t  dtd  t  dtd  td   dtd  td   d	td
  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   d	td  td   dtd  td   dtd  td   td td   td td   dtd  td   dtd  td   td  td
  dtd   dtd  t dtd
  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   td td   td   td  dtd  t dtd  t  dtd  t  dtd  td   dtd  td   d	td
  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   d	td  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd   dtd
   dtd   dtd  t dtd
  td   dtd  td   dtd  td   dtd  td   dtd  td   dtd  td   td td   td   t  dtd  t dtd  t  ttd   td td   td  td  dtd  t dtd  td   dtd  td   td td   td    ttdd} tdt dtt dt tt dt t tgid}t| |tt tt td  dt dt  t  tt dt t td  td  tdfksĻJ tdt dtt ttgid}tt dt|tt dtt dtdfksõJ d S ) Niä’’’r}   r:   rU   rk   r<   r8   r?   éT   rA   é   r9   é   r7   r>   é   r;   rb   é8   éF   é   é(   rV   rM   F©ŚexpandrO   r=   rP   Tr   )r   r0   r   r\   r3   r(   r#   r]   rE   rE   rF   Ś*test_integrate_hyperexponential_polynomial<  s  D’’’’žžžžżżżżżüüüü
ü’’’’žžžžüśB’’’’žžžžżżżżüüü
ü
ü
ū6’’’’žžūłł*’’’6’’’ņš2
<’’ž’r   c                  C   s  t d\} }t| t t}t|j|j|tttt|  t|  t	t| dftdfddfks2J t| |t  t}t|j|j|tt|t t|  |t|   t	|t|  dftdfddfksfJ tt| t t}t|j|j|tt| t |  t	| dftdfddfksJ ttt| t  t}t|j|j|t| t d t| t  | d  t	| d dftd d dfddfksĘJ ttd t| t  t}t|j|j|ttd | d  d|  t  d t| t  | d  t	| d dftd d dfddfksJ ttt
 t t
}t|j|j|ttttt
 tt t	ttdft
dftdfks:J ttt
 t tdt
   t
}t|j|j|ttdtt t
 tt dtttt
  tt  dttd   t	dttd  dfdt
 dftdfksJ d S )Nza br   Tr=   r8   r9   )r   r(   r0   r$   ŚfaŚfdr   r   r   r	   r5   r3   )r4   r   r_   rE   rE   rF   Ś1test_integrate_hyperexponential_returns_piecewise[  sf   *’
’6’
’’
’:’
’@žž*’’’’’
żür   c                  C   s®   t d\} }}tdt  d| d  |dt  | dt  td| d  td  ks/J t| ||  | | d  |t| t|  t| | d  t|  ksUJ d S )Nza t sr8   r=   )r   r)   r   r   r   )r4   r1   ŚsrE   rE   rF   Śtest_issue_13947z  s   .’(’r   c                  C   s  t tdttdt tgtgdd} tttttdt| ttt ddfks*J ttttttt| dtttt tdfksDJ t tdttdt ttdtd  tgtt	t
tt
d gdd} ttttttt| dttttdt  tdfksJ t tdttdt ttdtt  tgtt	t
ttt
gdd} ttttttt| dtttttt tdfksĘJ t tdttdt tgtgdd} tttd td	  d	td  t td   d	td  dt  t  td  t tttd td
  d
td  td	   dtd  td   d
td  t  td  t| dttd  tdttd  tdfksFJ d S )Nr=   ru   rP   rj   Tr   Fr8   r9   r7   r:   )r(   r   r0   r1   r   r"   r+   r\   Śt2r   r6   r   rg   rE   rE   rF   Śtest_integrate_primitive  sT   
’.4(
’’(
’’
’4’’’’’8’’’ž&żr   c                  C   sč   t dtdtttd d tgid} tttd tt  d t| tttttd tfks1J t dtdttttd d  tgid} tttd t| tddt  td  ddt  td   ttddt  tfksrJ d S )NrO   r=   r8   rP   r>   r7   )r(   r   r0   r1   r%   r4   rg   rE   rE   rF   Ś&test_integrate_hypertangent_polynomial  s   &’*>’r   c                  C   s  t td td  ttd   td td   ttd d  td   td td  t  td d  tt td td  td td d  td   td  td  td d  t} }td}tt dtt td  tt  dtd td    tg|gdd	}t| ||td|td  td d   d d
td  ddtd   d|td     dfks¶J tt ttt dt|dksĘJ d S )Nr8   r>   r7   r9   r=   r:   Śphi_nuru   rP   rM   T)r   F)r   r0   r1   r2   r   r(   r&   r   )r4   r[   Śfr_   rE   rE   rF   Ś$test_integrate_nonlinear_no_specials¢  s.   J’’
’’L’
*’
’
T’’r   c                   C   sx   t ttd td d ttdd gtd tdftd dfttdd dfgfdtd  dtd  dfgfgks:J d S )Nr8   r=   r9   r:   r7   )r'   r0   r   rE   rE   rE   rF   Śtest_integer_powers°  s   $*žr   c                   C   s  t ttttd  tjttt ttdttdtttttdt t tgtttgttttttttd gg g d¢d ttd gfksJJ t tttdt  tjttd t 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  tjttd t ttdttdtttd tgttgttttd gg d dgd td gfksĄJ t ttttd  tttd   tjtdt t t ttdttdtttttdt t tgtttgttttttttd gg g d¢d ttd gfksJ t ttttd  tttd  d  tjtdt	j
t  t t ttdttdtttttdt t tgtttgttttttttd gg g d¢d ttd gfkssJ t ttttd  ttd td   tjttd t td  ttdttdtttd ttdt t tgtttgttttd ttttd gttd tttfgg d¢d td td gfksßJ t ttttd  ttd td  d  tjtttd d t td  ttdttdtttd ttdt t tgtttgttttd ttttd gttd tttfgg d¢d td td gfksQJ t ttttjttttdttdtttd tgttgttttd gttd tttfgd dgd td gfksJ t ttd tjttttdttdtttd tgttgttttd gg d dgd td gfksŹJ d S )Nr8   r=   ©Nr   r   r   r9   )r(   r   r0   Ś_important_attrsr   r\   r   r   r6   r
   ŚExp1r   rE   rE   rE   rF   Śtest_DifferentialExtension_exp¶  s   $’’ž’0’’.*’’*,’’ž
’.*’’ž
’.(’".ż
’20’’ż
’,:’
’,$’’r¢   c                   C   s~  t ttttd  tdtd  dt   tjtttd  ttd td  t  ttdttdttdt ttdtd  tddgtttgttttttttd gg g d¢d ttd gfkshJ t tt tt tjttt ttdttdttdt ttdt t tgtttgttttttt	tt gt	ttt tt fgg d¢d ttt gfks½J d S )Nr=   r8   Fr   )Nr   r   ©Nr   r   )
r(   r   r0   r    r   r   r\   r   r6   r   rE   rE   rE   rF   Śtest_DifferentialExtension_logÜ  s*   20’&ü’(’’ż’r¤   c                   C   s¢  t ttt tjttt ttdttdttdt tttd t tgtttgttttttt	tt gt	ttt tt fgg d¢d ttt gfksSJ t ttt
 tjtt
t ttdttdttdt tgttgttttgt
tt ttt
 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 tgttgttttgttd tttfgd dgd tgfksĻJ d S )Nr=   r£   r   r8   )r(   r   r0   r    r   r   r\   r   r6   r   r5   r   rE   rE   rE   rF   Ś!test_DifferentialExtension_symlogź  s0   ,’’’&*ž’0,ž’,,ž’r„   c                   C   s2  t tttt tddjttt ttdttdttdt 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sDJ t tttt tddjttt ttdttdtttttd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d  tt  tt t  tddjt tt  ttd  tt  tt t  tddj  krtdt ttd   t tttttdttdt ttdt t tgtttgtt	tt	tt	ttt	 gtttt tt fgg d¢d ttt gfksJ  J d S )	Nr   ©Śhandle_firstr=   r£   r   )Nr   r   r8   rj   )
r(   r   r0   r   r    r   r   r\   r   r6   rE   rE   rE   rF   Ś'test_DifferentialExtension_handle_firstś  s>   (’"ž’$’"ž’,’,’
ż$.6żürØ   c                      s²  t tttt tdd  jtttt ksJ  jtt ks#J  jtks*J  jg d¢ks3J  j	dks:J  j
dksAJ  jt  krQ j j
 ksTJ  J  jtdt t  kri j j
 kslJ  J tt fdd   ”   j
d	ksJ  jt  kr j j
 ksJ  J  jttt  kr¦ j j
 ks©J  J  j	dks°J   ”   j
d
ks»J  jt  krŃ j j
   krŃ jksŌJ  J  jtdt  krē j j
 ksźJ  J  j	dksńJ tt fdd   ”    ”   j
dks
J  jt  kr j j
 ksJ  J  jtdt t  kr6 j j
 ks9J  J  j	dksAJ   d”dgksLJ   d”dgksWJ d S )Nr   r¦   )Śbaser   Ś	primitiverŖ   rj   r=   c                      ó      ” S ©N)Śincrement_levelrE   rg   rE   rF   rH     ó    z6test_DifferentialExtension_all_attrs.<locals>.<lambda>rV   rN   r©   c                      r«   r¬   )Śdecrement_levelrE   rg   rE   rF   rH   '  r®   r   r8   )r(   r   r0   r   r   Śnewfr   r\   ŚcasesŚcaseŚlevelr1   ŚTr[   r   rO   r/   rI   rÆ   r­   ŚindicesrE   rE   rg   rF   Ś$test_DifferentialExtension_all_attrs  s:   &0&,2,*4r¶   c               
   C   s2  t tdd  tdtdttttgid} | 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s9J | jtks@J | jdksGJ | j	ddgksPJ | jtksWJ | j
dks^J ttdttttgd dgd tgd	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  d S )Nc                   S   s   t dttgidS )Nr“   rP   )r(   r0   r1   rE   rE   rE   rF   rH   5  s    z;test_DifferentialExtension_extension_flag.<locals>.<lambda>rO   r=   rP   rj   r©   r   )rO   ŚextsŚextargsc                   S   s   t  S r¬   )r(   rE   rE   rE   rF   rH   D  s    )r/   rI   r(   r   r0   r1   r    r[   r³   r±   r²   rg   rE   rE   rF   Ś)test_DifferentialExtension_extension_flag4  s$    
’
’ 
’r¹   c                   C   sr  t tttt tjtttt tddtdtddtdtddtttddgttgtt	tt	gg d dgd tgfks>J t
tdd  t dt tjttttdttdtttdt tgttgtt	tt	td gtttd dt fgd dgd ttd gfksJ t ttttd	  tjtd
t ttd	ttdttd	t tgttgtt	tt	d	 gg d gg dgtd	 gf
td
t ttdttdttdt 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s7J d S )Nz
ZZ[sin(y)]rC   r=   rf   r   c                   S   s   t tttS r¬   )r(   r   r0   rE   rE   rE   rF   rH   M  s    z1test_DifferentialExtension_misc.<locals>.<lambda>rA   r8   r9   r   r   )r(   r   r5   r   r0   r    r   r   r   r6   r/   ŚNotImplementedErrorr   r
   rK   r   r   ŚrewriterE   rE   rE   rF   Śtest_DifferentialExtension_miscG  s6     ž’04ž’0&’0’
ż,
’,’r¼   c                  C   sN  dt t d dt dt  dt td   dt t  d  t dt td  dt   } t| tjtddt  t ttddt  dtd   dtd   ttdtttttdd	t  dtd    ddt  td   t td
dgtttgttt tttt dtd  dt  gg g d¢d tdtd  dt  gfks„J d S )Nl   ½F¶3 iė¼hi ar9   i ?#r8   r=   rA   rR   zZZ(t0)rC   r   )	r   r0   r(   r    r   r   r\   r   r6   )r   rE   rE   rF   Ś$test_DifferentialExtension_Rothstein]  s>   ’
’’’
’
’
’’4’’’,ū’r½   c                   @   s   e Zd ZdZdS )Ś_TestingExceptionz"Dummy Exception class for testing.N)Ś__name__Ś
__module__Ś__qualname__Ś__doc__rE   rE   rE   rF   r¾   j  s    r¾   c               	   C   s<  t ttttd  t} | jdksJ | jtksJ | jtt	t	d  tks)J | j
dks0J t| y | jdks<J | jt	ksCJ | jtt	t	ksMJ | j
dksTJ t| ' | jdks`J | jtksgJ | jtdtksqJ | j
dksxJ W d    n1 sw   Y  | jdksJ | jt	ksJ | jtt	t	ksJ | j
dks¦J W d    n1 s°w   Y  | jdks¼J | jtksĆJ | jtt	t	d  tksŃJ | j
dksŲJ zt|  t1 sćw   Y  W td tyõ   Y nw | jdksżJ | jtksJ | jtt	t	d  tksJ | j
dksJ d S )	Nr=   rj   rŖ   rV   r   rN   r©   zDid not raise.)r(   r0   r   r   r³   r1   r\   r[   r   r   r²   r*   r¾   ŚAssertionErrorrg   rE   rE   rF   Śtest_DecrementLevelo  sJ   

üń
’ż’rÄ   c                  C   s2  t ttt tttt ksJ t tttddttt  d tt t d  ks.J t ddtd   td  dtd  tdtd    td ttd  dtd  ttd   ttd   ttttd  tttd dtd    ksJ t dtdksJ tttt d } t | t}|ttttt  d  ttd t ttt  t ks·J tt	|t|  dksÄJ tdt
 d tdt
 d  t
 tddt
  d tddt
  d  t
  }t |t
}|tdt
 tddt
   d tdt
 tddt
   d  ttt t
d  dt
 tdt
   tt  dt
d  dt
   t
 ks9J ttt	|t
| dd	dksKJ t ttt ttd tt d td d  ksgJ t ttt
 ttttt
  tt
  ksJ t tttttttt td  ksJ d S )
NT)Śrewrite_complexr8   r=   r7   r9   r   rj   )Śforce)r)   r   r   r0   r   r   r+   r   r   r   r5   r   r   r   )Śe1Śans1Śe2Śans2rE   rE   rF   Śtest_risch_integrate  s.   ":46’’*ž
@P
@D’$804rĖ   c                   C   sV   t dtt dtdt   tdt  tdtdt  dtdt   ks)J d S )NiÄ’’’g3333333@r7   g333333ĄrU   g      (@r>   )r)   r   r0   rE   rE   rE   rF   Śtest_risch_integrate_floatĆ  s   VrĢ   c                   C   sh   t tttd ttsJ t ttt tt ttsJ t ttt t t ttt”ts2J d S )Nr8   )Ś
isinstancer)   r   r0   r+   r   r   ŚsubsrE   rE   rE   rF   Śtest_NonElementaryIntegralĒ  s    ,rĻ   c                  C   s6   t tt t} | ttt tksJ t| tsJ d S r¬   )r)   r0   r+   rĶ   )r4   rE   rE   rF   Śtest_xtothexĪ  s   rŠ   c                  C   s"   t ttt } }| |ksJ d S r¬   )r(   r   r0   )ŚDE1ŚDE2rE   rE   rF   Ś#test_DifferentialExtension_equalityŌ  s   rÓ   c                  C   sN   t tdtd  tttd d  t} t| dksJ t| dks%J d S )Nr8   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)]))zĖDifferentialExtension({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   r0   r   ŚreprŚstrrg   rE   rE   rF   Ś#test_DifferentialExtension_printingŁ  s   *	rÖ   c                  C   s   dt d  dt d   dt d   dt d   d	t   tt d  d
t d  dt d   dt d   dt d   dt d   tt   dt d  dt d   dt d   dt d   d	t   tt   dt d  dt d   dt d   dt d   d	t   td  dt d   dt d   dt d   dt d   dt d   d	t d   ttt d  dt  tt   tt  td t d  t  d  dt d  dt d   dt d   dt d   dt   d tt  dt d  dt d   dt d   dt d   dt   tt   dt d   dt d   dt d   dt d   dt d   dt   ttt d  dt  tt   tt  td t d  t    t tt d  tt d  dt d  tt d  tt   t tt d   t  td t d  t d  tt d    } t d dt d   dt d   dt   d tdt   tt d  dt  tt   t  tt  tt d  td d  }t| t |ksĪJ d S )NrV   r>   r   r7   é   r9   iD  r8   i  rM   r:   r   i   i  i  r?   é   ét   é“   é6   é,   éØ   éŲ   él   r   r~   é*   ię  r;   éQ   )r0   r   r   r)   )r   rp   rE   rE   rF   Śtest_issue_23948é  s^   BB’>ž>ż
ü
ü
ü
ü
ü
ü@ūB>’
ž
ž
ž
ž
žž<żśJ
(’õ6@’rā   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.pytestr/   Ś	sympy.abcr0   r1   r2   r3   r4   r5   r   r\   r   r6   rG   rJ   rL   r`   rd   rh   rm   rn   rr   rs   rt   rz   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ā   rE   rE   rE   rF   Ś<module>   sj    h 5C	&$,(