o
    à8Vaõ>  ã                   @   s&  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mZmZmZ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„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2d d!„ Z3d"d#„ Z4d$d%„ Z5d&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)ÚPolyÚSÚsymbolsÚRationalÚQQ)ÚxÚtÚnzt:4 kc                  C   sJ  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„J ‚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s#J ‚d S )	NÚDé   é   ©Ú	extensionúZZ(x)©ÚdomainéÿÿÿÿúZZ[x])r   r   r   r   r   )ÚDEÚfaÚfdÚG© r+   úA/usr/lib/python3/dist-packages/sympy/integrals/tests/test_prde.pyÚtest_prde_normal_denom   sF   &

<ÿÿÿÿýÿ.ÿ*ÿ6ÿ*ÿÿþÿr-   c               	   C   sT  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J ‚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ÏJ ‚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sSJ ‚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ßJ ‚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s(J ‚d S )Nr   r   é   r   r    éþÿÿÿé   r   r&   r#   )r   r   r   r   r   Út0Zdecrement_level)ÚaZbaZbdr*   r'   r+   r+   r,   Útest_prde_special_denom%   s\   
B*,ÿÿÿ($.ÿÿÿ&0H6ÿÿ
ÿ.8D:ÿÿ
ÿ,@ÿÿÿr3   c                  C   s>  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g d	¢g d
¢gtƒfksjJ ‚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ÌJ ‚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J ‚d S )Nr   r   r    r   r.   r   r   r#   )r   r   r%   )r0   r   r   úQQ[x])r   r   r   r   ÚMatrixr   ©r'   r*   r+   r+   r,   Útest_prde_linear_constraintsB   s*   Dÿ*ÿÿB .ÿÿ."0ÿr7   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 g d¢g d¢g d	¢g d
¢g|dt g d¢|dfkstJ ‚d S )Nr.   r   r   r   r   r    )r   r   r   )r   r   r   )r   r   r   )r   r   r   ©Zring)r   r   r   r   )r5   r   r   r   r   r   Ú
frac_fieldr   )ÚAÚur'   ÚRr+   r+   r,   Útest_constant_systemT   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_J ‚d S )	Nr   r   r    r%   r   r"   r#   r   )r   r   r   r   r   r   )r   r'   r+   r+   r,   Útest_prde_spdeb   s   " &þÿr>   c                  C   sD  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g d¢g d¢gtƒfks>J ‚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g d¢g d¢gtƒfkswJ ‚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g d¢g d¢g d¢gtƒfks©J ‚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g d¢ddt	ddƒdddddddg
g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
|dfksƒJ ‚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ÇJ ‚|d tt	ddƒdddddgd |dksßJ ‚t|gƒ|d dd …d d …f  d ttd d td!d
ks J ‚t|gƒ|d d d…d d …f  d tttj td!d
ks J ‚d S )"Nr   r   r    r   )r   r   r%   r   )r   r   r   r%   r.   é   ZZZr#   r   )r   r%   r   r   r0   é   é   é   iõÿÿÿr%   )
r   r   r%   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r%   r   r   r   r   )
r   r   r   r   r   r   r%   r   r   r   )
r   r   r   r   r   r   r   r%   r   r   )
r   r   r   r   r   r   r   r   r%   r   )
r   r   r   r   r   r   r   r   r   r%   r8   T©Zfieldc                 S   s4   g | ]}t d ƒD ]}tt| t|  tdd‘qqS )r.   TrC   )Úranger   r   r   )Ú.0ÚiÚjr+   r+   r,   Ú
<listcomp>’   s   4 z'test_prde_no_cancel.<locals>.<listcomp>úQQ(x))r   r   r   r	   r5   r   r   r9   r
   r   rD   Ú	nullspaceÚlenr   ÚHalf)r'   r*   r<   ÚbÚqÚhr:   ÚVr+   r+   r,   Útest_prde_no_cancell   sp   &*ÿÿÿ&6ÿÿÿ&"þþÿ&HVRþ÷	÷þ
ÿ&0BDrQ   c                  C   s„  t dtdtƒtdt tƒgid} tdtdd}ttdtd  tƒtt d tƒtdtƒgd| ƒ\}}| ¡ }|||ttd t tƒ|||||||ttd tƒttd  t tƒ||||gk | ¡ d	ksgJ ‚t|gƒ|d d d	…d d …f  ttdtd
dggƒks…J ‚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g d¢g| jƒfksÀJ ‚d S )Nr   r   r    r   TrC   r%   r   é   rI   r#   r4   r   r"   )r%   r   r   )r   r   r   r   r   rJ   Zrankr5   )r'   Zp0rO   r:   rP   r+   r+   r,   Útest_prde_cancel_liouvillianœ   s   "6P< ",ÿrS   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g d¢| jƒgksFJ ‚|d	 |d  tttd
dksWJ ‚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g d¢| jƒgks J ‚td| jƒ |d	  |d  |d  }|t|| ƒ ||  ttd dt  d td
dksÏJ ‚d S )Nr   r   r    r   TrC   r.   )r   r   r   r   r   r   r#   r0   )r.   éûÿÿÿr   rT   r   r   )r   r   r   r   rJ   r5   r   r   )r'   r2   rM   rN   rO   r:   Úpr+   r+   r,   Útest_param_poly_rischDE°   s     "ÿ&<rV   c            	      C   s>  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>J ‚dd	„ |D ƒ}| ¡ }t|ƒdksQJ ‚|d
 tg d¢| jƒks_J ‚|d
  |d  d
|d   }| t¡|td   ddt  ksJ ‚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ÎJ ‚dd	„ |D ƒ}| ¡ }t|ƒdksáJ ‚|d
 tg d¢| jƒksïJ ‚d
|d
  d
|d   d|d   d
|d   d
|d   }| t¡|tt   d
ksJ ‚d S )Nr   r   r    TrC   r   r.   c                 S   ó$   g | ]}|d    ¡ |d   ¡  ‘qS ©r   r   ©Zas_expr©rE   Úhir+   r+   r,   rH   Î   ó   $ z&test_param_rischDE.<locals>.<listcomp>r   )r%   r   r   r%   r   r   r"   r#   r   r0   c                 S   rW   rX   rY   rZ   r+   r+   r,   rH   Û   r\   )r   r   r   r   r   r   r   r@   )	r   r   r   r   rK   rJ   r5   r   Zdiff)	r'   Zp1Zpxr*   rO   r:   rU   rP   Úyr+   r+   r,   Útest_param_rischDEÈ   s*   "&<0<$r^   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sVJ ‚d S )Nr   r   r    r   r%   r&   r#   )r   r   r   r   r   ©r'   r+   r+   r,   Útest_limited_integrate_reduceã   s   "ÿÿ4ÿþr`   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sWJ ‚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ŠJ ‚d S )Nr   r   r    r0   r   r.   r   r#   é	   r   )r   r   r   r   r6   r+   r+   r,   Útest_limited_integrateë   s   ( ÿ,þ (ÿrb   c                  C   sF  t tdtƒgd gd gdœd} ttdt tƒtdtƒ| ƒd u s!J ‚t tdtƒtdt tƒtdt tƒgg d¢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saJ ‚t tdtƒtttƒtdt tƒgg d¢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s¡J ‚d S )Nr   ©r   ZextsZextargsr    r   )NÚexpÚlogr   r.   )r   r   r   r   Út1Út2r1   r   r_   r+   r+   r,   Útest_is_log_deriv_k_t_radicalö   s    
ÿ$$
ÿÿ 
ÿ"ÿrh   c                  C   sL  t tdtƒtdt tƒtdtd  tƒgg d¢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sEJ ‚t tdtƒtdt tƒtttƒgg d¢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†J ‚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s¸J ‚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ôJ ‚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s$J ‚d S )
Nr   )Nre   re   rc   r    r   )Nre   rd   r.   re   r%   )
r   r   r   rf   rg   r   r   rL   r1   r   r_   r+   r+   r,   Útest_is_deriv_k  s8   (
ÿ&ÿ 
ÿ" ÿ
ÿÿ
ÿÿ
ÿ2ri   c                  C   sp  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/J ‚ttddt  tƒtdt t tƒ| ƒdtd td  fksOJ ‚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ŠJ ‚ttdtƒttd tƒ| ƒdtfksžJ ‚ttdtƒtdtd  tƒ| ƒddt fks¶J ‚d S )Nr   r   r    r0   r   r.   r%   )r   r   r   r   r   r_   r+   r+   r,   Ú&test_is_log_deriv_k_t_radical_in_field$  s&   "&ÿ&ÿ("ÿþÿ
ÿrj   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sBJ ‚d S )Nr   r   r    r0   r   r?   r%   )r   r   r   r   r   r_   r+   r+   r,   Útest_parametric_log_deriv7  s   ".ÿþrk   N)6Ú__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   r5   Zsympyr   r   r   r   r   Z	sympy.abcr   r   r   r1   rf   rg   Zt3Úkr-   r3   r7   r=   r>   rQ   rS   rV   r^   r`   rb   rh   ri   rj   rk   r+   r+   r+   r,   Ú<module>   s,    H
0