o
    GZŽ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   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+   úN/var/www/auris/lib/python3.10/site-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)Ú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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_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stJ ‚d S )Nr.   r   r   r   r   r    )r   r   r   )r   r   r   )r   r   r   )r   r   r   ©Ú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   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%   r9   T©Úfieldc                 S   s4   g | ]}t d ƒD ]}tt| t|  tdd‘qqS )r.   TrE   )Úranger   r   r   )Ú.0ÚiÚjr+   r+   r,   Ú
<listcomp>–   s   4 z'test_prde_no_cancel.<locals>.<listcomp>úQQ(x))r   r   r   r	   r6   r   r   r;   r
   r   rG   Ú	nullspaceÚlenr   ÚHalf)r'   r*   r>   ÚbÚqÚhr<   ÚVr+   r+   r,   Útest_prde_no_cancelp   sp   &*ÿÿÿ&6ÿÿÿ&"þþÿ&HVRþ÷	÷þ
ÿ&0BD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smJ ‚| ¡ dksuJ ‚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   TrE   r"   r#   r   r%   é   rL   r5   r   )r%   r   r   )r   r   r   r   r   rM   Zrankr6   )r'   Úp0Úp1Úp2Zp3rR   r<   rS   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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   TrE   r.   )r   r   r   r   r   r   r#   r0   )r.   éûÿÿÿr   rZ   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   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    TrE   r   r.   c                 S   ó$   g | ]}|d    ¡ |d   ¡  ‘qS ©r   r   ©Zas_expr©rH   Úhir+   r+   r,   rK   Õ   ó   $ z&test_param_rischDE.<locals>.<listcomp>r   )r%   r   r   r%   r   r   r"   r#   r   r0   c                 S   r]   r^   r_   r`   r+   r+   r,   rK   â   rb   )r   r   r   r   r   r   r   rB   )	r   r   r   r   rN   rM   r6   r   Údiff)	r'   rW   Zpxr*   rR   r<   r[   rS   Úyr+   r+   r,   Útest_param_rischDEÏ   s*   "&<0<$re   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ÿþrg   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   r7   r+   r+   r,   Útest_limited_integrateò   s   ( ÿ,þ (ÿri   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   ÚextsZextargsr    r   )NÚexpÚlogr   r.   )r   r   r   r   Út1Út2r1   r   rf   r+   r+   r,   Útest_is_log_deriv_k_t_radicalý   s    
ÿ$$
ÿÿ 
ÿ"ÿrp   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   )Nrm   rm   rj   r    r   )Nrm   rl   r.   rm   r%   )
r   r   r   rn   ro   r   r   rO   r1   r   rf   r+   r+   r,   Útest_is_deriv_k  s8   (
ÿ&ÿ 
ÿ" ÿ
ÿÿ
ÿÿ
ÿ2rq   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   rf   r+   r+   r,   Ú&test_is_log_deriv_k_t_radical_in_field+  s&   "&ÿ&ÿ("ÿþÿ
ÿrr   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   rA   r%   )r   r   r   r   r   rf   r+   r+   r,   Útest_parametric_log_deriv>  s   ".ÿþrs   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   rn   ro   Út3Úkr-   r4   r8   r?   r@   rT   rY   r\   re   rg   ri   rp   rq   rr   rs   r+   r+   r+   r,   Ú<module>   s4    H
0