U
    ZÊ¹jè?  ã                   @   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/bwave/python/venv/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Úp1Zp2Zp3rS   r=   rT   r,   r,   r-   Útest_prde_cancel_liouvillian    s    "6,> ".ÿrY   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s�t‚|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(<rc   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ÿþre   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    (  ÿ,þ (ÿrg   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   rd   r,   r,   r-   Útest_is_log_deriv_k_t_radicalý   s$    ÿ
$$ ÿ
ÿ  ÿ
"ÿrn   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   rk   rh   r    r   rj   r/   r%   )r   r   r   rl   rm   r   r'   r   rP   r2   r   rd   r,   r,   r-   Útest_is_deriv_k  sB    ( ÿ
&ÿ  ÿ
" ÿ
 
ÿ
ÿ
 ÿ
ÿ
 
ÿ
ro   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'   rd   r,   r,   r-   Ú&test_is_log_deriv_k_t_radical_in_field+  s(    "&ÿ&ÿ(  ÿþ
ÿ

ÿrp   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'   rd   r,   r,   r-   Útest_parametric_log_deriv>  s    ".  ÿþrq   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   rl   rm   Zt3Úkr.   r5   r9   r@   rA   rU   rY   r\   rc   re   rg   rn   ro   rp   rq   r,   r,   r,   r-   Ú<module>   s2   H
0