U
    ZÊ¹jc%  ã                   @   s   d Z ddlmZmZmZ ddlmZ ddlm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 ddlmZ ddlmZmZmZmZ ed	ƒ\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„ Z-dS )z?Most of these tests come from the examples in Bronstein's book.é    )ÚIÚRationalÚoo)Úsymbols)ÚPoly)ÚDifferentialExtensionÚNonElementaryIntegralException)Úorder_atÚorder_at_ooÚweak_normalizerÚnormal_denomÚspecial_denomÚbound_degreeÚspdeÚsolve_poly_rdeÚno_cancel_equalÚcancel_primitiveÚ
cancel_expÚrischDE)Úraises)ÚxÚtÚzÚnzt:3 kc                  C   s  t td tƒ} t td d d t tƒ}t td d d t tƒ}t td d d td  tƒ}t td d d td  tƒ}t ttƒ}t dtd  tƒ}t| |tƒdks®t‚t||tƒdksÂt‚t||tƒdksÖt‚t||tƒdksêt‚t||tƒdksþt‚t| |tƒd	k�st‚t||tƒdk�s*t‚t||tƒdk�s@t‚t||tƒdk�sVt‚t||tƒdk�slt‚tt d	tƒt ttƒtƒtk�sŽt‚tt td d tƒt td ƒtƒtt td tƒt dtƒtƒ  k�rÜd
k�sân t‚tt d	tƒt dtƒtƒtk�st‚d S )Né   é   é   é   é   é
   éd   é%   r   éÿÿÿÿ)r   r   r	   ÚAssertionErrorr   r
   )ÚaÚbÚcÚdÚeÚp1Zp2© r*   ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/integrals/tests/test_rde.pyÚtest_order_at   s0    
" ÿ
ÿr,   c                  C   s   t dt td  dtd   ddt  td   dtd   ddt  t  tƒ} t td dtd   d tƒ}tdt dtƒt ttƒgid	�}t| ||tƒ}|t td td  dtd   dtd   dt  d td
d�t dt td  tt  td
d�t td td
d�ffk�st‚t|d d |d d |ƒt dtƒ|d fk�sLt‚tt dtd  ƒt td d tƒ|tƒ}|t td dtd   d tƒt dtd  d tƒt td d tƒffk�sÄt‚t|d d |d d |tƒt dtƒ|d fk�sút‚tdt dtƒt dtd  ƒgid	�}tt dtd  ƒt ttƒ|tƒ}|t ttƒt dtƒt dtƒffk�sft‚t|d d |d d |tƒt dtƒ|d fk�sœt‚d S )Nr   é   r   r"   r   r   éþÿÿÿÚD©Ú	extensionúZZ[x]©Údomainr   éýÿÿÿ)r   r   r   r   r   r   r#   )r$   r'   ÚDEÚrr*   r*   r+   Útest_weak_normalizer(   s"    R> ÿÿ4(P6$ (r8   c                     sê   t dtdtƒgid�‰ tt‡ fdd„ƒ ttd d tƒtdtƒ } }tdtƒttd tƒ }}t dtdtƒttd d tƒgid�‰ t| |||ˆ ƒtttƒttd td  t d tƒtdtƒftdtƒtdtƒftttƒfksæt‚d S )Nr/   r   r0   c                      s(   t tdtƒtdtƒtdtƒtttƒˆ ƒS ©Nr   )r   r   r   r*   ©r6   r*   r+   Ú<lambda><   s     ÿz#test_normal_denom.<locals>.<lambda>r   r   )r   r   r   r   r   r   r   r#   )ÚfaÚfdÚgaÚgdr*   r:   r+   Útest_normal_denom:   s    &6ÿÿÿr@   c                	      sÜ  t dtdtƒtttƒgid�‰ ttdtƒttd tƒtdtƒttd d tƒtttƒˆ ƒtdtƒttd d tƒttd d tƒtttƒfks’t‚t dtdtƒtdt t tƒttt t	 t	ƒgid�‰ ˆ  
¡  ttdtƒttt tƒtdtƒtttƒtdtƒˆ ƒtdtdd�ttt tdd�tttdd�tdtdd�fk�sBt‚ttdtƒttd tƒtdtƒttd d tƒtttƒˆ d	d
�tdttdd�ttd ttdd�ttttdd�tdtdd�fk�sÆt‚tt‡ fdd„ƒ d S )Nr/   r   r0   r   r.   ÚZZr3   z	ZZ_I[k,x]Útan©Úcaser2   c                	      s@   t tdtƒttd tƒtdtƒttd d tƒtttƒˆ dd�S )Nr   r   Zunrecognized_caserC   )r   r   r   r*   r:   r*   r+   r;   _   s   .  ÿz$test_special_denom.<locals>.<lambda>)r   r   r   r   r   r#   Út0r   ÚkÚt1Údecrement_levelr   Ú
ValueErrorr*   r*   r:   r+   Útest_special_denomF   s>    . ÿ2þÿ
& ÿ ÿþ
.  ÿ  ÿþ
rJ   c               	   C   sÈ   t dtdtƒtttd  tƒtdt tƒgid�} tttd tƒtdtd  td  dt   tƒtdt d td  tt t td   tdtd   d t td   tt  tƒ| ƒdksÄt‚d S )Nr/   r   r   r0   r   r   )r   r   r   rE   r   r   r#   r:   r*   r*   r+   Útest_bound_degree_failc   s     ÿ
0PÿþþrK   c                  C   s¤   t dtdtƒgid�} ttdtƒtdt tƒtdtƒ| ƒdksBt‚t dtdtƒttd d tƒgid�} ttttƒttd td d  tƒtdtƒ| ƒdks t‚d S )Nr/   r   r0   r.   r   r   )r   r   r   r   r#   r   r:   r*   r*   r+   Útest_bound_degreel   s    ,&rL   c                
      s$  t dtdtƒttd d tƒgid�‰ tt‡ fdd„ƒ t dtdtƒtttƒgid�‰ tttd tt d  td  tƒttd td  dt d t  tƒttd td  dt d t  tƒdˆ ƒtdtƒtdtƒdtdtƒtdtdd	�fksöt‚t dtdtƒtttd  tƒtdt tƒgid�‰ tttd tƒttd  td  dt  tƒtdt d td
  tt t td   td
td   dt  td   tt  tƒdˆ ƒtdtƒtdtƒdtdtƒtttd  d td td   td t  tdd	�fk�st‚t dtdtƒgid�‰ tttd t d tƒtdt d tƒttd d dtd
  d
  td  td  d tƒd
ˆ ƒtdtdd	�ttd t	dd
ƒ tƒdttd t d tƒttt	dd
ƒ tƒfk�sÔt‚tttd t d tƒtdt d tƒttd d dtd
  d
  td  td  d tƒt
ˆ ƒtdtdd	�ttd t	dd
ƒ tƒdt
 ttd t d tƒttt	dd
ƒ tƒfk�sŽt‚t dtdtƒtdtƒgid�‰ tt‡ fdd„ƒ t dtdtƒgid�‰ tttd t tƒtdtƒtdtd
  dtd   dtd   tƒd
ˆ ƒtdtdd	�tdtƒdtdtƒtdtd  dtd   tdd	�fk�sft‚tttd t tƒttd dt  d tƒttd td  dtd
   dtd   td  tƒdˆ ƒtdtdd	�ttd tdd	�dttd
 td  tƒttd td  tdd	�fk�s t‚d S )Nr/   r   r   r0   c                      s2   t tttƒttd td d  tƒtdtƒdˆ ƒS ©Nr   r   r   ©r   r   r   r*   r:   r*   r+   r;   €   ó    ztest_spde.<locals>.<lambda>r   zZZ(x)r3   r   r   zZZ(x,t0)r.   r-   ZQQc                      sF   t ttd td d d  tƒttd td d  tƒtdtƒdˆ ƒS rM   rN   r*   r:   r*   r+   r;   ’   rO   é	   r   rA   é   r   )r   r   r   r   r   r   r   r#   rE   r   r   r*   r*   r:   r+   Ú	test_spde~   s|    &F$  ÿ(þ2,T  ÿ4ÿþ
2ÿÿÿÿÿ ÿLþ
2ÿÿÿÿÿ ÿPþ
H@ÿ
dLÿrR   c                  C   sØ  t dtdtƒtdtd  tƒgid�} tttd d tƒttd td td   t t d tƒt| ƒttt tƒkszt‚t dtdtƒgid�} ttdtƒttd tddƒ tƒt| ƒttd d td  tƒksÖt‚t dtdtƒttd d tƒgid�} ttdtƒttd dt  d tƒd| ƒttd ttƒk�s<t‚t dtdtƒttd d tƒgid�} ttdt tƒttd td  dt t  dt  tƒt| ƒttd tƒdtddt  t dt  tƒfk�sÔt‚d S )	Nr/   r   r   r0   r   r   r   r.   )	r   r   r   r   r   r   r#   r   r   r:   r*   r*   r+   Útest_solve_poly_rde_no_cancel™   s.    &: ÿÿ&ÿ&(ÿ
&(  ÿ,þrS   c                      s8  t dtdtƒtttƒgid�‰ ttdt tƒtdt tƒdˆ ƒtdtƒksNt‚ttdt tƒtddt  t tƒdˆ ƒtttƒks†t‚t dtdtƒtdt tƒgid�‰ tt‡ fdd„ƒ ttdtƒttdt  tƒdˆ ƒtttƒksêt‚ttdt tƒtdt td  dt t  tƒd	ˆ ƒttd tƒk�s4t‚d S )
Nr/   r   r0   r   r   c                      s   t tdtƒtttƒtˆ ƒS r9   )r   r   r   r   r*   r:   r*   r+   r;   º   rO   z,test_solve_poly_rde_cancel.<locals>.<lambda>r   r   )	r   r   r   r   r   r#   r   r   r   r*   r*   r:   r+   Útest_solve_poly_rde_cancel¬   s     ÿ(ÿ" ÿ4ÿrT   c                  C   s†   t dtdtƒtttƒgid�} |  ¡  ttdt tƒtdtƒtddt  dtd   tƒtdtƒ| ƒttd tƒtdtƒfks‚t‚d S )Nr/   r   r0   r.   r   )r   r   r   r   rH   r   r#   r:   r*   r*   r+   Útest_rischDEÄ   s    2 ÿþrU   N).Ú__doc__Zsympy.core.numbersr   r   r   Zsympy.core.symbolr   Zsympy.polys.polytoolsr   Zsympy.integrals.rischr   r   Zsympy.integrals.rder	   r
   r   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   Z	sympy.abcr   r   r   r   rE   rG   Út2rF   r,   r8   r@   rJ   rK   rL   rR   rS   rT   rU   r*   r*   r*   r+   Ú<module>   s$   8	