o
    jgč?  ă                   @   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+   úW/var/www/html/zoom/venv/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   Út0Údecrement_level)ÚaÚbaÚbdr*   r'   r+   r+   r,   Útest_prde_special_denom)   s\   
B*,˙˙˙($.˙˙˙&0H6˙˙
˙.8D:˙˙
˙,@˙˙˙r6   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˙r:   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   )r8   r   r   r   r   r   Ú
frac_fieldr   )ÚAÚur'   ÚRr+   r+   r,   Útest_constant_systemX   s(   $ţţ&
ýýý˙rA   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   " &ţ˙rB   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.   é   Ú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%   r;   TŠÚfieldc                 S   s4   g | ]}t d D ]}tt| t|  tddqqS )r.   TrH   )Úranger   r   r   )Ú.0ÚiÚjr+   r+   r,   Ú
<listcomp>   s   4 z'test_prde_no_cancel.<locals>.<listcomp>úQQ(x))r   r   r   r	   r8   r   r   r=   r
   r   rJ   Ú	nullspaceÚlenr   ÚHalf)r'   r*   r@   ÚbÚqÚhr>   ÚVr+   r+   r,   Útest_prde_no_cancelp   sp   &*˙˙˙&6˙˙˙&"ţţ˙&HVRţ÷	÷ţ
˙&0BDrW   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   TrH   r"   r#   r   r%   é   rO   r7   r   )r%   r   r   )r   r   r   r   r   rP   Úrankr8   )r'   Úp0Úp1Úp2Úp3rU   r>   rV   r+   r+   r,   Útest_prde_cancel_liouvillian    s   "6,< ",˙r^   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   TrH   r.   )r   r   r   r   r   r   r#   r0   )r.   éű˙˙˙r   r_   r   r   )r   r   r   r   rP   r8   r   r   )r'   r3   rS   rT   rU   r>   Úpr+   r+   r,   Útest_param_poly_rischDEˇ   s     "˙&<ra   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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sJ d S )Nr   r   r    TrH   r   r.   c                 S   ó$   g | ]}|d    Ą |d   Ą  qS Šr   r   ŠÚas_exprŠrK   Úhir+   r+   r,   rN   Ő   ó   $ z&test_param_rischDE.<locals>.<listcomp>r   )r%   r   r   r%   r   r   r"   r#   r   r0   c                 S   rb   rc   rd   rf   r+   r+   r,   rN   â   rh   )r   r   r   r   r   r   r   rE   )	r   r   r   r   rQ   rP   r8   r   Údiff)	r'   r[   Úpxr*   rU   r>   r`   rV   Úyr+   r+   r,   Útest_param_rischDEĎ   s*   "&<0<$rl   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˙ţrn   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   r9   r+   r+   r,   Útest_limited_integrateň   s   ( ˙,ţ (˙rp   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   ÚextsÚextargsr    r   )NÚexpÚlogr   r.   )r   r   r   r   Út1Út2r1   r   rm   r+   r+   r,   Útest_is_log_deriv_k_t_radicalý   s    
˙$$
˙˙ 
˙"˙rx   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   )Nru   ru   rq   r    r   )Nru   rt   r.   ru   r%   )
r   r   r   rv   rw   r   r   rR   r1   r   rm   r+   r+   r,   Útest_is_deriv_k  s8   (
˙&˙ 
˙" ˙
˙˙
˙˙
˙2ry   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   rm   r+   r+   r,   Ú&test_is_log_deriv_k_t_radical_in_field+  s&   "&˙&˙("˙ţ˙
˙rz   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   rC   r%   )r   r   r   r   r   rm   r+   r+   r,   Útest_parametric_log_deriv>  s   ".˙ţr{   N):Ú__doc__Úsympy.integrals.rischr   r   Úsympy.integrals.prder   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Úsympy.polys.polymatrixr   r8   Úsympy.core.numbersr   Úsympy.core.singletonr   Úsympy.core.symbolr   Ú!sympy.polys.domains.rationalfieldr   Úsympy.polys.polytoolsr   Ú	sympy.abcr   r   r   r1   rv   rw   Út3Úkr-   r6   r:   rA   rB   rW   r^   ra   rl   rn   rp   rx   ry   rz   r{   r+   r+   r+   r,   Ú<module>   s4    H
0