U
    Ç-eć  ă                   @   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Şt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td S )Né   é   é   é   é   é   é   é   é   é   é
   g;ą;ął?ÚQQŠÚdomaing;ą;ąłżgŘŘÍ?)r   r   r0   ÚAssertionErrorŠ rF   rF   úa/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/integrals/tests/test_risch.pyÚtest_gcdex_diophantine   s    0 ˙Dţ:"˙rH   c                   C   s,  t ttd t t ttttt t ttttfks<tt td t t tttt t ttttfksrt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Ät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(td S )Nr=   c                   S   s   t td tt t tS )Nr=   )r   r0   r   r1   rF   rF   rF   rG   Ú<lambda>)   ó    ztest_frac_in.<locals>.<lambda>r8   T)r   )r   r   r0   r1   rE   r/   Ú
ValueErrorrF   rF   rF   rG   Útest_frac_in"   s    ˙˙("˙2˙rL   c                   C   sz  t dt t ttttdt  ttttdt  ttfks@t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kst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ksđt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ksVtt tjtttdttksvtd S )Nr8   r9   r=   r   )r   r1   r3   r   rE   r   r
   ÚZerorF   rF   rF   rG   Útest_as_poly_1t.   s"     ˙
 ˙
 ˙
 ˙rN   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đttt dt|t dtksttt tt||jks,t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Ät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*ttt tt t t|ddt dt t tks^ttd	t dtgid
}tt tt|t dtkstttd td  |dddddt  td   ksĚt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&tttd |ddtksBt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   rE   ÚdÚt1ŠÚpÚDErF   rF   rG   Útest_derivation:   sR    T&˙˙˙˙˙@<˙,˙$ţ.ţýý 6X˙
*<˙
 8<ra   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ttt tt|t ttt dtfksÄt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Ćt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s4ttt dt|t dtt dtfks^ttt dt|t dtdffdfkstd S )Nr7   r>   rO   r9   rP   r8   r?   r=   T)ÚfieldrQ   rR   éř˙˙˙rW   rY   rC   r:   rZ   r   rF   )r   r0   r1   r(   r   rE   r3   r   )r_   r`   ÚrrF   rF   rG   Útest_splitfactorS   sD    T&˙˙˙˙ ˙@<˙
˙ ˙4ţ*~"L˙
X˙
*re   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t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td S )NrQ   r=   r8   rR   r   zZZ[x]rC   úQQ[x]ÚZZr>   r9   r:   r7   rB   )r(   r   r0   r1   r   rE   Šr`   rF   rF   rG   Útest_canonical_representatione   s*    &˙˙˙˙&& ˙4,˙ţţri   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 t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sjt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čt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t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śt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
td S )NrQ   r=   r8   rR   rf   rC   r   r>   r7   r9   r:   úZZ(x,nu)rX   é˙˙˙˙rO   rY   é	   rP   )r(   r   r0   r1   r   rE   r2   Šr`   r4   r\   rF   rF   rG   Útest_hermite_reduces   s    &ţ˙@hL ţ<40˙"ýý
"J^
 H˙ý˙
& ţţý
J
˙˙
˙ ˙0 ý>ţü
H\ ţ H˙ýýrn   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sbtttdt| tdttdtfkstd S )NrQ   r=   r8   rR   r   )r(   r   r0   r1   r   rE   rh   rF   rF   rG   Útest_polynomial_reduce¨   s    &˙˙ro   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 td S )NrQ   r=   rR   é$   r8   rP   r9   r:   rW   r>   r7   rB   rC   )r(   r   r0   r1   r.   rE   )r`   r4   r\   ÚFÚnrF   rF   rG   Útest_laurent_series°   s    
\N˙˙rs   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sRtt dtdttdt tgid} tdt}ttd d t}t||| dks¤ttttt ttdt| dksČtt dtdtttd d tgid} tttttdt| dkstd S )NrQ   r=   rR   rp   r8   FT)r(   r   r1   r-   rE   r0   rm   rF   rF   rG   Útest_recognize_derivativeť   s    
"
$&rt   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ttdt dtt dt tgid}tt td tt tt t|dksÎttt dtt td d t|dksöttdt dtgid}tt dtt td d t|dks6ttt dtt td t t|dks`t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°ttt dtt td t t|dksÚtd S )Nr8   r7   rQ   r=   rR   TF)r   r0   r1   r(   r,   r3   rE   )r4   r\   r`   rF   rF   rG   Útest_recognize_log_derivativeÉ   s    2"((**&*ru   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tt| ||tddt td tdd td	d
t tdt t  tfgdfksft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Ôt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s2tt	|d |ttdtt  tdtt  ksjt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sJt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ôt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sdtd S )Nr8   r9   r=   ŠrQ   ZTfuncsrR   F)Úinvertr7   rY   rC   r:   zZZ(z, x)TrX   rB   zZZ(z,x)r   rk   rQ   rj   )r   r1   r0   r(   r   r    r3   r   rE   r!   r2   r
   ZHalfr   )r4   r\   r`   ZansrF   rF   rG   Útest_residue_reduceÚ   sd    &P˙˙ ˙˙ţ˙
6˙
(<˙
*48@:  ˙,˙˙ţ
&$  ˙2ţ
 (˙rx   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ät
t td td td   t t d t t} t	| ||ttt ttt ddfksBt
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¸t
tt dtt ttgtgdd}t	| ||ttddfksút
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Čt
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sFt
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,t
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t
t	t dt tt tt|tt  ddfksŇt
t	t ttt td t|dttdtt  tdfkst
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
s8t
||ftttd ttd d  tdfk
slt
d S )Nr=   r8   r9   rv   rR   Tr   FrU   r:   rA   r>   r?   r7   rW   é   é#   é   rk   iĺ˙˙˙rl   é˘   é   rp   é   r;   iú˙˙˙é   é   r@   )r   r]   r1   r(   r0   r   r   r6   r   r$   rE   r+   r   Út0r   )r4   r\   r`   ÚelemZnonelemÚbrF   rF   rG   Útest_integrate_hyperexponentialů   sŚ   J
˙˙

0˙.
˙


˙

˙
" N.
>˙
 ˙
@"˙
˙˙4 ˙,ţ
""$˙
˙
˙
(˙
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t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ętd S ) Niä˙˙˙r{   r:   rW   rl   r<   r8   r?   éT   rA   é   r9   é   r7   r>   é   r;   rc   é8   éF   é   é(   rX   rO   FŠÚexpandrQ   r=   rR   Tr   )r   r0   r   r]   r3   r(   r#   rE   r^   rF   rF   rG   Ú*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sdt
t| |t  t}t|j|j|tt|t t|  |t|   t	|t|  dftdfddfksĚt
tt| t t}t|j|j|tt| t |  t	| dftdfddfkst
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t
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t
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sxt
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t
d S )Nza br   Tr=   r8   r9   )r   r(   r0   r$   ÚfaÚfdr   r   r   r	   rE   r5   r3   )r4   r   r`   rF   rF   rG   Ú1test_integrate_hyperexponential_returns_piecewise[  s~    $ ˙ ˙
0 ˙ ˙
 ˙ ˙, ˙ ˙@ţ ţ$ ˙ ˙˙˙˙
ý ür   c                  C   sŽ   t d\} }}tdt  d| d  |dt  | dt  td| d  td  ks^tt| ||  | | d  |t| t|  t| | d  t|  ksŞtd S )Nza t sr8   r=   )r   r)   r   r   rE   r   )r4   r1   ÚsrF   rF   rG   Ú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sTtttttttt| dtttt tdfkst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t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t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td S )Nr=   rv   rR   rk   Tr   Fr8   r9   r7   r:   )r(   r   r0   r1   r   r"   rE   r+   r]   Út2r   r6   r   rh   rF   rF   rG   Ú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sbt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ätd S )NrQ   r=   r8   rR   r>   r7   )r(   r   r0   r1   r%   rE   r4   rh   rF   rF   rG   Ú&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snttt ttt dt|dkstd S )Nr8   r>   r7   r9   r=   r:   Zphi_nurv   rR   rO   T)r   F)	r   r0   r1   r2   r   r(   r&   r   rE   )r4   r\   Úfr`   rF   rF   rG   Ú$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sttd S )Nr8   r=   r9   r:   r7   )r'   r0   r   rE   rF   rF   rF   rG   Ú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 d ddgd ttd gfkst	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t	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t	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 d ddgd ttd gfks6t	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 d ddgd ttd gfksđt	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d ddgd td td gfksĘt	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d ddgd td td gfks°t	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s4t	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˘t	d S )Nr8   r=   r   r9   )r(   r   r0   Ú_important_attrsr   r]   r   r   r6   rE   r
   ZExp1r   rF   rF   rF   rG   Ú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 d ddgd ttd gfksŇt	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d ddgd ttt gfkst	d S )Nr=   r8   Fr   r   r   )r(   r   r0   r   r   r   r]   r   r6   rE   r   rF   rF   rF   rG   Útest_DifferentialExtension_logÜ  s2    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d ddgd ttt gfks¨t
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(t
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¤t
d S )Nr=   r   r   r8   )r(   r   r0   r   r   r   r]   r   r6   r   rE   r5   r   rF   rF   rF   rG   Ú!test_DifferentialExtension_symlogę  s>    ,˙˙˙   ţ˙0  ţ˙
,  ţ˙r   c                   C   s8  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 d ddgd ttgfkst
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 d ddgd ttgfkst
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d ddgd ttt gfks4n t
d S )Nr   ŠZhandle_firstr=   r   r8   rk   )r(   r   r0   r   r   r   r   r]   r   r6   rE   rF   rF   rF   rG   Ú'test_DifferentialExtension_handle_firstú  sL    (˙   ţ˙$˙   ţ˙
,˙,˙ţ
$&   ýür    c                      sź  t tttt tdd  jtttt ks4t jtt ksFt jtksTt j	dddgksht j
dksvt jdkst jt  kr˘ j j ks¨n t jtdt t  krĐ j j ksÖn ttt fdd   Ą   jd	ksţt jt  kr  j j ks&n t jttt  krN j j ksTn t j
dksdt  Ą   jd
ks|t jt  krŹ j j   krŹ jks˛n t jtdt  krÚ j j ksŕn t j
dksđttt fdd   Ą    Ą   jdks"t jt  krD j j ksJn t jtdt t  krv j j ks|n t j
dkst  dĄdgks˘t  dĄdgks¸td S )Nr   r   ÚbaseÚ	primitiverk   r=   c                      s      Ą S ŠN)Úincrement_levelrF   rh   rF   rG   rI     rJ   z6test_DifferentialExtension_all_attrs.<locals>.<lambda>rX   rP   c                      s      Ą S rŁ   )Údecrement_levelrF   rh   rF   rG   rI   '  rJ   r   r8   )r(   r   r0   r   r   rE   Znewfr   r]   ÚcasesÚcaseÚlevelr1   ÚTr\   r   rQ   r/   rK   rĽ   r¤   ÚindicesrF   rF   rh   rG   Ú$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^t| jtttksrt| jtkst| j	dkst| j
ddgks t| jtksŽt| jdksźt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"tt td
d  d S )Nc                   S   s   t dttgidS )NrŠ   rR   )r(   r0   r1   rF   rF   rF   rG   rI   5  rJ   z;test_DifferentialExtension_extension_flag.<locals>.<lambda>rQ   r=   rR   rk   rĄ   r   )rQ   ÚextsZextargsc                   S   s   t  S rŁ   )r(   rF   rF   rF   rG   rI   D  rJ   )r/   rK   r(   r   r0   r1   r   rE   r\   r¨   rŚ   r§   rh   rF   rF   rG   Ú)test_DifferentialExtension_extension_flag4  s2        ˙
 ˙
    ˙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|t
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t
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ksât
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$t
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srt
d S )Nz
ZZ[sin(y)]rC   r=   rg   r   c                   S   s   t tttS rŁ   )r(   r   r0   rF   rF   rF   rG   rI   M  rJ   z1test_DifferentialExtension_misc.<locals>.<lambda>rA   r8   r9   r   r   )r(   r   r5   r   r0   r   r   r   r   r6   rE   r/   ÚNotImplementedErrorr   r
   rM   r   r   ZrewriterF   rF   rF   rG   Útest_DifferentialExtension_miscG  sR         ţ˙0  ţ˙
0     ˙0   ˙ý,˙
,˙rŻ   c                  C   sR  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 d ddgd tdtd  dt  gfksNt	d S )Nl   ˝Fś3 iëźhi ar9   i ?#r8   r=   rA   rT   zZZ(t0)rC   r   )
r   r0   r(   r   r   r   r]   r   r6   rE   )r   rF   rF   rG   Ú$test_DifferentialExtension_Rothstein]  sD    ˙
˙˙˙
˙
˙
˙˙4˙˙ ˙*  ű˙r°   c                   @   s   e Zd ZdZdS )Ú_TestingExceptionz"Dummy Exception class for testing.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rF   rF   rF   rG   rą   j  s   rą   c               
   C   s&  t ttttd  t} | jdks(t| jtks6t| jt	t
t
d  tksRt| jdks`tt| Ü | jdksxt| jt
kst| jt	t
t
kst| jdks¨tt| D | jdksŔt| jtksÎt| jt	dtksât| jdksđtW 5 Q R X | jdks
t| jt
kst| jt	t
t
ks0t| jdks@tW 5 Q R X | jdksZt| jtksjt| jt	t
t
d  tkst| jdkstzt| 
 tW 5 Q R X W n tk
rĘ   Y n
X td| jdksät| jtksôt| jt	t
t
d  tkst| jdks"td S )	Nr=   rk   r˘   rX   r   rP   rĄ   zDid not raise.)r(   r0   r   r   r¨   rE   r1   r]   r\   r   r   r§   r*   rą   rh   rF   rF   rG   Útest_DecrementLevelo  sB    


rś   c                  C   s8  t ttt tttt ks"tt tttddttt  d tt t d  ks\t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ţtt dtdksttttt d } t | t}|ttttt  d  ttd t ttt  t ksrtt	t
|t|  dkst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sxttt	t
|t| dd	dkstt ttt ttd tt d td d  ksÔtt ttt ttttt  tt  kstt tttttttt td  ks4td S )
NT)Zrewrite_complexr8   r=   r7   r9   r   rk   )Úforce)r)   r   r   r0   rE   r   r   r+   r   r   r   r5   r   r   r   )Úe1Zans1Úe2Zans2rF   rF   rG   Ú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sRtd S )NiÄ˙˙˙g3333333@r7   g333333ŔrW   g      (@r>   )r)   r   r0   rE   rF   rF   rF   rG   Útest_risch_integrate_floatĂ  s    rť   c                   C   sh   t tttd ttstt ttt tt tts<tt ttt t t tttĄtsdtd S )Nr8   )	Ú
isinstancer)   r   r0   r+   rE   r   r   ÚsubsrF   rF   rF   rG   Útest_NonElementaryIntegralÇ  s     rž   c                  C   s6   t tt t} | ttt tks$tt| ts2td S rŁ   )r)   r0   r+   rE   rź   )r4   rF   rF   rG   Útest_xtothexÎ  s    rż   c                  C   s"   t ttt } }| |kstd S rŁ   )r(   r   r0   rE   )ZDE1ZDE2rF   rF   rG   Ú#test_DifferentialExtension_equalityÔ  s    rŔ   c                  C   sN   t tdtd  tttd d  t} t| dks:tt| dksJt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   ÚreprrE   Ústrrh   rF   rF   rG   Ú#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td S )NrX   r>   r   r7   é   r9   iD  r8   i  rO   r:   r   i   i  i  r?   é   ét   é´   é6   é,   é¨   éŘ   él   r   r|   é*   ić  r;   éQ   )r0   r   r   r)   rE   )r   rq   rF   rF   rG   Ú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   rH   rL   rN   ra   re   ri   rn   ro   rs   rt   ru   rx   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Ď   rF   rF   rF   rG   Ú<module>   sh   h 5C	&$,(