a
    kº”hè?  ã                   @   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
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sHJ ‚d S )	NÚDé   é   ©Ú	extensionúZZ(x)©ÚdomainéÿÿÿÿúZZ[x])r   r   r   r   r   )ÚDEÚfaÚfdÚG© r+   úM/var/www/auris/lib/python3.9/site-packages/sympy/integrals/tests/test_prde.pyÚtest_prde_normal_denom   sF    &

<ÿÿÿÿýÿ
.ÿ*ÿ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þ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s¨J ‚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sRJ ‚d S )Nr   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:ÿÿÿ
,@ÿÿÿr4   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sÔJ ‚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_constraintsF   s*    Dÿ*ÿÿB .ÿÿ
."0ÿr8   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sèJ ‚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   )r6   r   r   r   r   r   Ú
frac_fieldr   )Ú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¾J ‚d S )	Nr   r   r    r%   r   r"   r#   r   )r   r   r   r   r   r   )r   r'   r+   r+   r,   Útest_prde_spdef   s    " &þÿr?   c                  C   sF  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sîJ ‚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sTJ ‚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sJ ‚|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sBJ ‚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%   r9   T©Úfieldc                 S   s4   g | ],}t d ƒD ]}tt| t|  tdd‘qqS )r.   TrD   )Úranger   r   r   )Ú.0ÚiÚjr+   r+   r,   Ú
<listcomp>–   ó    z'test_prde_no_cancel.<locals>.<listcomp>úQQ(x))r   r   r   r	   r6   r   r   r:   r
   r   rF   Ú	nullspaceÚlenr   ÚHalf)r'   r*   r=   ÚbÚqÚhr;   ÚVr+   r+   r,   Útest_prde_no_cancelp   sp    &*ÿÿÿ&6ÿÿÿ&"þþÿ
&HVRþ÷	÷þÿ
&0BrT   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ÚJ ‚| ¡ dksêJ ‚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   TrD   r"   r#   r   r%   é   rL   r5   r   )r%   r   r   )r   r   r   r   r   rM   Zrankr6   )r'   Zp0Úp1Úp2Zp3rR   r;   rS   r+   r+   r,   Útest_prde_cancel_liouvillian    s    "6,> ",ÿrX   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sŒJ ‚|d	 |d  tttd
dks®J ‚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sBJ ‚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   TrD   r.   )r   r   r   r   r   r   r#   r0   )r.   éûÿÿÿr   rY   r   r   )r   r   r   r   rM   r6   r   r   )r'   r2   rP   rQ   rR   r;   Úpr+   r+   r,   Útest_param_poly_rischDE·   s      "ÿ &r[   c            	      C   sF  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s¢J ‚|d
 tg d¢| jƒks¾J ‚|d
  |d  d
|d   }| t¡|td   ddt  ksJ ‚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sBJ ‚d S )Nr   r   r    TrD   r   r.   c                 S   s$   g | ]}|d    ¡ |d   ¡  ‘qS ©r   r   ©Zas_expr©rG   Úhir+   r+   r,   rJ   Õ   rK   z&test_param_rischDE.<locals>.<listcomp>r   )r%   r   r   r%   r   r   r"   r#   r   r0   c                 S   s$   g | ]}|d    ¡ |d   ¡  ‘qS r\   r]   r^   r+   r+   r,   rJ   â   rK   )r   r   r   r   r   r   r   rA   )	r   r   r   r   rN   rM   r6   r   Údiff)	r'   rV   Zpxr*   rR   r;   rZ   rS   Úyr+   r+   r,   Útest_param_rischDEÏ   s*    "(<0<rb   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¬J ‚d S )Nr   r   r    r   r%   r&   r#   )r   r   r   r   r   ©r'   r+   r+   r,   Útest_limited_integrate_reduceê   s    "ÿÿ4ÿþrd   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®J ‚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   r7   r+   r+   r,   Útest_limited_integrateò   s    ( ÿ,þ (ÿrf   c                  C   sH  t tdtƒgd gd gdœd} ttdt tƒtdtƒ| ƒd u sBJ ‚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sÂJ ‚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sDJ ‚d S )Nr   ©r   ÚextsZextargsr    r   )NÚexpÚlogr   r.   )r   r   r   r   Út1Út2r1   r   rc   r+   r+   r,   Útest_is_log_deriv_k_t_radicalý   s     ÿ
$$ÿ
ÿ ÿ
"ÿrm   c                  C   sR  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sŠJ ‚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stJ ‚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sNJ ‚d S )
Nr   )Nrj   rj   rg   r    r   )Nrj   ri   r.   rj   r%   )
r   r   r   rk   rl   r   r   rO   r1   r   rc   r+   r+   r,   Útest_is_deriv_k  s8    (ÿ
&ÿ ÿ
" ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
rn   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^J ‚ttddt  tƒtdt t tƒ| ƒdtd td  fksžJ ‚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srJ ‚d S )Nr   r   r    r0   r   r.   r%   )r   r   r   r   r   rc   r+   r+   r,   Ú&test_is_log_deriv_k_t_radical_in_field+  s&    "&ÿ&ÿ("ÿþ
ÿ

ÿro   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„J ‚d S )Nr   r   r    r0   r   r@   r%   )r   r   r   r   r   rc   r+   r+   r,   Útest_parametric_log_deriv>  s    ".ÿþrp   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   r6   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   r1   rk   rl   Út3Úkr-   r4   r8   r>   r?   rT   rX   r[   rb   rd   rf   rm   rn   ro   rp   r+   r+   r+   r,   Ú<module>   s2   H
0