a
    kşhć  ă                   @   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sŞJ 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   úN/var/www/auris/lib/python3.9/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srJ 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sÄJ 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>)   ó    ztest_frac_in.<locals>.<lambda>r8   T)r   )r   r   r0   r1   r/   Ú
ValueErrorrE   rE   rE   rF   Útest_frac_in"   s    ˙˙("˙2˙rK   c                   C   sz  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 sJ 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 sđJ 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 sVJ t tjtttdttksvJ d S )Nr8   r9   r=   r   )r   r1   r3   r   r   r
   ÚZerorE   rE   rE   rF   Útest_as_poly_1t.   s    $˙
4˙
4˙
<˙rM   c                  C   sF  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sÄJ 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sBJ d S )Nr7   r>   éü˙˙˙r9   éý˙˙˙r8   r?   r=   ÚDŠÚ	extensioniě˙˙˙r:   r@   é   r;   é   éű˙˙˙r<   é   rA   r   éţ˙˙˙úZZ(x)rC   TŠZ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sĆJ 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s4J 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>   rN   r9   rO   r8   r?   r=   T)ÚfieldrP   rQ   éř˙˙˙rV   rX   rC   r:   rY   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sJ 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 )NrP   r=   r8   rQ   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s J 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sjJ 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sJ 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 )NrP   r=   r8   rQ   re   rC   r   r>   r7   r9   r:   úZZ(x,nu)rW   é˙˙˙˙rN   rX   é	   rO   )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sbJ ttdt| tdttdtfksJ d S )NrP   r=   r8   rQ   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 )NrP   r=   rQ   é$   r8   rO   r9   r:   rV   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sRJ t dtdttdt tgid} tdt}ttd d t}t||| dks¤J tttt ttdt| dksČJ 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 )NrP   r=   rQ   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sJ tdt dtt dt tgid}tt td tt tt t|dksÎJ 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s6J 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   rP   r=   rQ   TF)r   r0   r1   r(   r,   r3   )r4   r[   r_   rE   rE   rF   Útest_recognize_log_derivativeÉ   s    2"((**&*rt   c               	   C   sh  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sfJ 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s2J t|d |ttdtt  tdtt  ksjJ 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sJJ 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sdJ d S )Nr8   r9   r=   ŠrP   ZTfuncsrQ   F)Úinvertr7   rX   rC   r:   zZZ(z, x)TrW   rB   zZZ(z,x)r   rj   rP   ri   )r   r1   r0   r(   r   r    r3   r   r!   r2   r
   ZHalfr   )r4   r[   r_   ZansrE   rE   rF   Útest_residue_reduceÚ   sZ    &P˙˙˙˙ţ˙
6˙
(<˙
*48@: ˙,˙˙ţ
&(˙2ţ
 (˙rw   c                  C   sp
  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säJ t td td td   t t d t t} t	| ||ttt ttt ddfksBJ 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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 td  tt dt|tdtt ddfksFJ 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sJ t	t dt tt tt|tt  ddfksŇJ 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
s8J ||ft
ttd ttd d  tdfk
slJ d S )Nr=   r8   r9   ru   rQ   Tr   FrT   r:   rA   r>   r?   r7   rV   é   é#   é   rj   iĺ˙˙˙rk   é˘   é   ro   é   r;   iú˙˙˙é   é   r@   )r   r\   r1   r(   r0   r   r   r6   r   r$   r+   r   Út0r   )r4   r[   r_   ÚelemZnonelemÚbrE   rE   rF   Útest_integrate_hyperexponentialů   s¤   J
˙˙

0˙.
˙


˙

˙
" N.
>˙
 ˙
@"˙
˙˙6˙,ţ
""$˙
˙
˙
(˙
2V
˙
˙
˙
˙
˙
˙˙˙˙˙N
˙
˙
˙
˙
˙
˙
˙
ţ
ţţţţý.˙˙˙˙
˙
˙
˙
ţ
ţ
ţ
ţţţţűůřřř
ř
ř
ř	
÷	
÷	÷	÷	÷	$˙˙F
˙˙˙˙:
˙
˙
˙˙ţ"
˙
˙
˙˙
˙˙ý
ü
ü
űűűň
@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ä˙˙˙rz   r:   rV   rk   r<   r8   r?   éT   rA   é   r9   é   r7   r>   é   r;   rb   é8   éF   é   é(   rW   rN   FŠÚexpandrP   r=   rQ   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sdJ t| |t  t}t|j|j|tt|t t|  |t|   t	|t|  dftdfddfksĚJ 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sxJ 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sŞJ 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sTJ ttttttt| dtttt tdfksJ 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sJ d S )Nr=   ru   rQ   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sbJ 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säJ d S )NrP   r=   r8   rQ   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snJ tt ttt dt|dksJ d S )Nr8   r>   r7   r9   r=   r:   Zphi_nuru   rQ   rN   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stJ 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sJ 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s2J 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sęJ 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sŚJ 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
   Z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sĐJ 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sŚJ 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sJ 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.n J d S )	Nr   ŠZ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s4J  jtt ksFJ  jtksTJ  jg d˘ksfJ  j	dkstJ  j
dksJ  jt  kr  j j
 ksŚn J  jtdt t  krÎ j j
 ksÔn J tt fdd   Ą   j
d	ksüJ  jt  kr j j
 ks$n J  jttt  krL j j
 ksRn J  j	dksbJ   Ą   j
d
kszJ  jt  krŞ j j
   krŞ jks°n J  jtdt  krŘ j j
 ksŢn J  j	dksîJ tt fdd   Ą    Ą   j
dks J  jt  krB j j
 ksHn J  jtdt t  krt j j
 kszn J  j	dksJ   dĄdgks J   dĄdgksśJ d S )Nr   r    )Úbaser   Ú	primitiverŁ   rj   r=   c                      s      Ą S ŠN)Úincrement_levelrE   rg   rE   rF   rH     rI   z6test_DifferentialExtension_all_attrs.<locals>.<lambda>rW   rO   r˘   c                      s      Ą S r¤   )Údecrement_levelrE   rg   rE   rF   rH   '  rI   r   r8   )r(   r   r0   r   r   Znewfr   r\   ÚcasesÚcaseÚlevelr1   ÚTr[   r   rP   r/   rJ   rŚ   rĽ   ÚindicesrE   rE   rg   rF   Ú$test_DifferentialExtension_all_attrs  s:    $.(.6.(2rŹ   c               
   C   s4  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srJ | 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	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Ş   rQ   )r(   r0   r1   rE   rE   rE   rF   rH   5  rI   z;test_DifferentialExtension_extension_flag.<locals>.<lambda>rP   r=   rQ   rj   r˘   r   )rP   ÚextsZextargsc                   S   s   t  S r¤   )r(   rE   rE   rE   rF   rH   D  rI   )r/   rJ   r(   r   r0   r1   r   r[   rŠ   r§   r¨   rg   rE   rE   rF   Ú)test_DifferentialExtension_extension_flag4  s$     ˙
˙
 ˙rŽ   c                   C   sv  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srJ 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  rI   z1test_DifferentialExtension_misc.<locals>.<lambda>rA   r8   r9   r   r   )r(   r   r5   r   r0   r   r   r   r   r6   r/   ÚNotImplementedErrorr   r
   rL   r   r   ZrewriterE   rE   rE   rF   Útest_DifferentialExtension_miscG  s6      ţ˙04ţ˙
0&˙0˙ý,˙
,˙r°   c                  C   sP  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sLJ d S )Nl   ˝Fś3 iëźhi ar9   i ?#r8   r=   rA   rS   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   sf  t ttttd  t} | jdks(J | jtks6J | jtt	t	d  tksRJ | j
dks`J t| ü | jdksxJ | jt	ksJ | jtt	t	ksJ | j
dks¨J t| N | jdksŔJ | jtksÎJ | jtdtksâJ | j
dksđJ W d    n1 s0    Y  | jdks J | jt	ks0J | jtt	t	ksFJ | j
dksVJ W d    n1 sl0    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 z2t|  tW d    n1 sę0    Y  W n ty
   Y n
0 td| jdks$J | jtks4J | jtt	t	d  tksRJ | j
dksbJ d S )	Nr=   rj   rŁ   rW   r   rO   r˘   zDid not raise.)r(   r0   r   r   rŠ   r1   r\   r[   r   r   r¨   r*   r˛   ÚAssertionErrorrg   rE   rE   rF   Útest_DecrementLevelo  sB    

.0
(r¸   c                  C   s8  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srJ 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sxJ ttt	|t
| dd	dksJ t ttt ttd tt d td d  ksÔJ 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s4J d S )
NT)Zrewrite_complexr8   r=   r7   r9   r   rj   )Úforce)r)   r   r   r0   r   r   r+   r   r   r   r5   r   r   r   )Úe1Zans1Úe2Zans2rE   rE   rF   Útest_risch_integrate  s.    ":46˙˙*ţ
BP
@D˙$80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sRJ d S )NiÄ˙˙˙g3333333@r7   g333333ŔrV   g      (@r>   )r)   r   r0   rE   rE   rE   rF   Útest_risch_integrate_floatĂ  s    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sdJ 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s2J 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   )ZDE1Z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sJJ 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 )NrW   r>   r   r7   é   r9   iD  r8   i  rN   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ś   Zsympy.core.functionr   r   r   r   Zsympy.core.numbersr   r   r   Zsympy.core.relationalr	   Zsympy.core.singletonr
   Zsympy.core.symbolr   r   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.piecewiser   Z(sympy.functions.elementary.trigonometricr   r   r   Zsympy.polys.polytoolsr   r   r   Z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.   Zsympy.testing.pytestr/   Z	sympy.abcr0   r1   r2   r3   r4   r5   r   r\   r   r6   rG   rK   rM   r`   rd   rh   rm   rn   rr   rs   rt   rw   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>   sh   h 5C	&$,(