U
    —9%eè?  ã                   @   sF  d Z ddl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mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	l m!Z! dd
l"m#Z#m$Z$m%Z% edƒ\Z&Z'Z(Z)Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2dd„ Z3dd„ Z4d d!„ Z5d"d#„ Z6d$d%„ Z7d&d'„ Z8d(d)„ Z9d*S )+z?Most of these tests come from the examples in Bronstein's book.é    )ÚDifferentialExtensionÚ
derivation)Úprde_normal_denomÚprde_special_denomÚprde_linear_constraintsÚconstant_systemÚ	prde_spdeÚprde_no_cancel_b_largeÚprde_no_cancel_b_smallÚlimited_integrate_reduceÚlimited_integrateÚ
is_deriv_kÚis_log_deriv_k_t_radicalÚparametric_log_deriv_heuÚ!is_log_deriv_k_t_radical_in_fieldÚparam_poly_rischDEÚparam_rischDEÚprde_cancel_liouvillian)Ú
PolyMatrix)ÚRational)ÚS)Úsymbols)ÚQQ)ÚPoly)ÚxÚtÚnzt:4 kc                  C   sL  t dtdtƒtdtd  tƒgid} tdtƒ}tttƒ}tttƒtdtd  tƒftdtƒttttd   tƒfg}t|||| ƒtttddtdtddtdtddfttt tddttd d tddftdtddttd d tddfgtdtddfks
t‚tttƒttd dt  d tƒfttt tƒttd dt  d tƒftttd  tƒttd dt  d tƒfg}t dtdtƒtttƒgid} ttttƒtdtƒ|| ƒttd tƒtdt t t tƒtdtddftttƒtdtƒfttt tƒtdtddftttd  tƒtdtddfgttd tƒfksHt‚d S )	NÚDé   é   ©Ú	extensionúZZ(x)©ÚdomainéÿÿÿÿúZZ[x])r   r   r   r   r   ÚAssertionError)ÚDEÚfaÚfdÚG© r,   ú^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/integrals/tests/test_prde.pyÚtest_prde_normal_denom   sH    &

<ÿÿÿÿýÿ
.ÿ*ÿ6ÿ ÿÿþÿr.   c               	   C   sV  t td tƒ} t td tƒ}t dtƒ}t ttƒt dtƒft td tƒt dtƒft td tƒt dtƒfg}tdt dtƒt ttƒgid}t| ||||ƒt td tƒt td tƒt ttƒt dtƒft td tƒt dtƒft td tƒt dtƒfgt dtƒfksþt‚t ttƒt dtƒft dtƒt ttƒfg}tt dtƒt td tƒt dtƒ||ƒt dtƒt td d tƒt td tƒt dtƒft dtƒt dtƒfgt ttƒfks t‚tdt dtƒt dt t tƒgid}| ¡  t ttƒt td tƒft dt tƒt ttƒfg}tt dt t d tƒt td dtd  t  tƒt td d tƒ||ƒt dt t d tƒt dtd	d
t ttƒt td tƒft dt tƒt ttƒfgt dtƒfks¨t‚tdt dtƒt td d d t tƒgid}t tt tƒt tt tƒft dt tƒt td tƒfg}tt dt t d tƒt td dtd  t  tƒt td tƒ||ƒt dt t d tƒt dtd	d
t tt tƒt tt tƒft dt ttƒt td ttƒfgt dtƒfksÀt‚tt td tƒt td tƒt td tƒ||ƒt td tƒt dtd	d
t tt tƒt tt tƒft dt ttƒt td ttƒfgt dtƒfksRt‚d S )Nr   r   é   r   r    éþÿÿÿé   r   r&   r#   )r   r   r   r   r   r'   Út0Zdecrement_level)ÚaÚbaZbdr+   r(   r,   r,   r-   Útest_prde_special_denom)   s^    
B* ÿÿÿ($.ÿÿÿ
&0H6ÿÿÿ
.8D:ÿÿÿ
,@ÿÿÿr5   c                  C   sD  t dtdtƒgid} tdtd  dt  d tƒttd d tƒftdtƒttd tƒftdtƒttd tƒfg}ttdtƒtdtƒ|| ƒtdt tddtdtddtdtddftddd	gd
ddggtƒfksØt‚tttƒtdtƒfttd tƒtdtƒfttd tƒtdtƒfg}t dtdtƒtttƒgid} tttd tƒttd tƒ|| ƒtttddttd tddttd tddftddg tƒfksžt‚tdt tƒtttƒftt tƒtttƒfg}t dtdtƒtdt tƒgid} ttdtƒtdtƒ|| ƒtdtddtdtddftdt t ggtƒfks@t‚d S )Nr   r   r    r   r/   r   r   r#   r%   r1   úQQ[x])r   r   r   r   ÚMatrixr'   r   ©r(   r+   r,   r,   r-   Útest_prde_linear_constraintsF   s*    Dÿ*ÿÿB .ÿÿ
."0ÿr9   c                  C   sø   t td  td  td td  dgt d td td gdtd  td  ddggtƒ} t td td  gtd gdggtƒ}tdtdtƒgid}t t¡t }t| ||ƒt dddgdddgdddgdddgg|dt ddddg|dfksôt‚d S )Nr/   r   r   r   r   r    ©Úring)	r7   r   r   r   r   r   Ú
frac_fieldr   r'   )ÚAÚur(   ÚRr,   r,   r-   Útest_constant_systemX   s(    $þþ&

ýýýÿr@   c               
   C   sÂ   t ttƒt t t tƒg} tdt dtƒt dt tƒgid}tt ttƒt dt tƒ| t|ƒt ttƒt dtddt dt tddt t tddgt td  tddt dtddgtd fks¾t‚d S )	Nr   r   r    r%   r   r"   r#   r   )r   r   r   r   r   r   r'   )r   r(   r,   r,   r-   Útest_prde_spdef   s    "   þÿrA   c                  C   sò  t dtdtƒgid} ttdtƒttd tƒtdtƒgd| ƒttd dt  d tƒtdtƒgtddddgddddggtƒfks„t‚ttdtƒttd tƒtdtƒgd| ƒttd dtd   dt  d tƒtdtƒgtddddgddddggtƒfksþt‚ttttƒttd tƒtdtƒgd| ƒtttd	d
tdtd	d
gtddddgddddgddddggtƒfkspt‚t dtdtƒttd d tƒgid} ttd tƒtttd  tƒttd tƒtttd  tƒtdt tƒg}t t¡t }t	ttt tƒ|d| ƒttd d td td   td d td   t
ddƒtd d  t  td  tƒttd td  td d td   t
ddƒtd d  t  td  tƒtttƒtdtƒtdtƒgtddddddddddg
ddt
ddƒdddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
g
|dfks´t‚t dtdtƒtdtd  tƒgid} tdtd  tdd}dd„ tdƒD ƒ}t	||d| ƒ\}}| ¡ }t t¡t }t|ƒdks<t‚|d tt
ddƒdddddgd |dkslt‚t|gƒ|d dd …d d …f  d ttd d tdd
ks®t‚t|gƒ|d d d…d d …f  d tttj tdd
ksît‚d S )Nr   r   r    r   r   r%   r/   é   ZZZr#   r1   é   é   é   iõÿÿÿr:   T©Úfieldc                 S   s4   g | ],}t d ƒD ]}tt| t|  tdd‘qqS )r/   TrF   )Úranger   r   r   )Ú.0ÚiÚjr,   r,   r-   Ú
<listcomp>–   s     
  z'test_prde_no_cancel.<locals>.<listcomp>úQQ(x))r   r   r   r	   r7   r'   r   r   r<   r
   r   rH   Ú	nullspaceÚlenr   ÚHalf)r(   r+   r?   ÚbÚqÚhr=   ÚVr,   r,   r-   Útest_prde_no_cancelp   st    &.
ÿÿÿ&:
ÿÿÿ&&

þþÿ
&HVJ  þ÷	÷þÿ
&0BrU   c                  C   s¦  t dtdtƒtdt tƒgid} tdtdd}ttd t tdd}ttd tdd}ttd	  t tdd}ttd
td  tƒtt d tƒtdtƒgd| ƒ\}}| ¡ }|||||||||||||||||gksÚt‚| ¡ dksêt‚t|gƒ|d d d…d d …f  ttdtddggƒks(t‚t dtdtƒtt tƒgid} ttdtddtdtddgd| ƒtdtddtttddgtd
ddgg| jƒfks¢t‚d S )Nr   r   r    r   TrF   r"   r#   r   r%   é   rM   r6   r   )	r   r   r   r   r   rN   r'   Zrankr7   )r(   Úp0Úp1Úp2Zp3rS   r=   rT   r,   r,   r-   Útest_prde_cancel_liouvillian    s    "6,> ".ÿrZ   c                  C   s²  t dtdtƒgid} ttd t tdd}tdtdd}tttddttd tddg}t|||d| ƒ\}}| ¡ tddddg| jƒgkst‚|d |d  tttd	d
ks²t‚ttd t tdd}ttd dt  d tdd}tdtddtttddttd tddg}t|||d| ƒ\}}| ¡ tddddddg| jƒgksNt‚td| jƒ |d  |d  |d  }|t|| ƒ ||  ttd dt  d td	d
ks®t‚d S )Nr   r   r    r   TrF   r/   r   r   r#   r1   éûÿÿÿ)	r   r   r   r   rN   r7   r   r'   r   )r(   r3   rQ   rR   rS   r=   Úpr,   r,   r-   Útest_param_poly_rischDE·   s      ""ÿ(&r]   c            	   	   C   sX  t dtdtƒgid} tdtddtttdd }}||f||f||fg}t| ttd tdd|| ƒ\}}t|ƒdks|t‚dd	„ |D ƒ}| ¡ }t|ƒdks¢t‚|d
 tddd
ddd
g| jƒksÆt‚|d
  |d  d
|d   }| 	t¡|td   ddt  kst‚t dtdtƒtttƒgid} ttt tddtdtddftd
tddtdtddfg}ttt d tddttt tdd|| ƒ\}}t|ƒdks¨t‚dd	„ |D ƒ}| ¡ }t|ƒdksÐt‚|d
 td
d
d
d
dd
d
g| jƒksøt‚d
|d
  d
|d   d|d   d
|d   d
|d   }| 	t¡|tt   d
ksTt‚d S )Nr   r   r    TrF   r   r/   c                 S   s$   g | ]}|d    ¡ |d   ¡  ‘qS ©r   r   ©Zas_expr©rI   Úhir,   r,   r-   rL   Õ   s     z&test_param_rischDE.<locals>.<listcomp>r   r%   r"   r#   r   r1   c                 S   s$   g | ]}|d    ¡ |d   ¡  ‘qS r^   r_   r`   r,   r,   r-   rL   â   s     rC   )
r   r   r   r   rO   r'   rN   r7   r   Údiff)	r(   rX   Zpxr+   rS   r=   r\   rT   Úyr,   r,   r-   Útest_param_rischDEÏ   s*    "$(<0(<rd   c                  C   s°   t dtdtƒtdt tƒgid} ttttƒttd tƒtttƒtttƒfg| ƒtttƒtdt tƒtttƒdtttƒtdtddftt t tƒtdtddfgfks¬t‚d S )Nr   r   r    r   r%   r&   r#   )r   r   r   r   r   r'   ©r(   r,   r,   r-   Útest_limited_integrate_reduceê   s    "ÿÿ4ÿþrf   c                  C   s  t dtdtƒgid} tttƒttd tƒfg}ttdt dtd   dtd    tƒtdt td  td  tƒ|| ƒttd t d tƒttd tddfdgfks®t‚tdtƒtttƒfg}ttdtd  tƒtdtƒ|| ƒtdtd  d	 tƒtdtddfd
gfkst‚d S )Nr   r   r    r1   r   r/   r   r#   é	   r   )r   r   r   r   r'   r8   r,   r,   r-   Útest_limited_integrateò   s    (  ÿ,þ (ÿrh   c                  C   sL  t tdtƒgd gd gdœd} ttdt tƒtdtƒ| ƒd ksBt‚t tdtƒtdt tƒtdt tƒgd ddgd dt tgdœd} ttttd  tƒtdtƒ| ƒtdftdfgtt ddfksÄt‚t tdtƒtttƒtdt tƒgd ddgd ttgdœd} ttttd  d tƒtdtƒ| ƒtdftdfgttd  ddfksHt‚d S )	Nr   ©r   ÚextsZextargsr    r   ÚexpÚlogr   r/   )	r   r   r   r   r'   Út1Út2r2   r   re   r,   r,   r-   Útest_is_log_deriv_k_t_radicalý   s$    ÿ
$$ ÿ
ÿ  ÿ
"ÿro   c                  C   sV  t tdtƒtdt tƒtdtd  tƒgd ddgd ttd gdœd} ttdtd  dt  tƒtdtƒ| ƒtdftdfgtt dfksŒt‚t tdtƒtdt tƒtttƒgd ddgd ttgdœd} tttd td  tƒtdtƒ| ƒtdftdfgdt dt  dfkst‚t tdtƒtdt tƒgd dgd td gdœd} ttttƒtdtƒ| ƒttjfgtd dfksxt‚t tdtƒtddt  t	ƒgd dgd td dt  d gdœd} ttdt t	ƒtdt	ƒ| ƒt	tjfgt	d dfksòt‚t tdtƒtdt t
ƒgd dgd dt gdœd} ttdt
ƒttt
ƒ| ƒt
dfgt
dfksRt‚d S )	Nr   rl   ri   r    r   rk   r/   r%   )r   r   r   rm   rn   r   r'   r   rP   r2   r   re   r,   r,   r-   Útest_is_deriv_k  sB    ( ÿ
&ÿ  ÿ
" ÿ
 
ÿ
ÿ
 ÿ
ÿ
 
ÿ
rp   c                  C   sv  t dtdtƒtdt tƒgid} ttdt d tƒtdt t tƒ| ƒdttd  fks^t‚ttddt  tƒtdt t tƒ| ƒdtd td  fksžt‚t dtdtƒtt td  tƒgid} ttddt   tƒtdtd  dtd  t  tƒ| ƒdttd  fkst‚ttdtƒttd tƒ| ƒdtfks@t‚ttdtƒtdtd  tƒ| ƒddt fksrt‚d S )Nr   r   r    r1   r   r/   r%   )r   r   r   r   r   r'   re   r,   r,   r-   Ú&test_is_log_deriv_k_t_radical_in_field+  s(    "&ÿ&ÿ(  ÿþ
ÿ

ÿrq   c                  C   sˆ   t dtdtƒtdt tƒgid} ttdtd  t d tƒtdt td  tƒtdtƒtttd  tƒ| ƒddttd  fks„t‚d S )Nr   r   r    r1   r   rB   r%   )r   r   r   r   r   r'   re   r,   r,   r-   Útest_parametric_log_deriv>  s    ".  ÿþrr   N):Ú__doc__Zsympy.integrals.rischr   r   Zsympy.integrals.prder   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Zsympy.polys.polymatrixr   r7   Zsympy.core.numbersr   Zsympy.core.singletonr   Zsympy.core.symbolr   Z!sympy.polys.domains.rationalfieldr   Zsympy.polys.polytoolsr   Z	sympy.abcr   r   r   r2   rm   rn   Út3Úkr.   r5   r9   r@   rA   rU   rZ   r]   rd   rf   rh   ro   rp   rq   rr   r,   r,   r,   r-   Ú<module>   s2   H
0