o
    jgc%  ã                   @   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sWJ ‚t||tƒdksaJ ‚t||tƒdkskJ ‚t||tƒdksuJ ‚t||tƒdksJ ‚t| |tƒd	ks‰J ‚t||tƒdks“J ‚t||tƒdksJ ‚t||tƒdks§J ‚t||tƒdks±J ‚tt d	tƒt ttƒtƒtu sÁJ ‚tt td d tƒt td ƒtƒtt td tƒt dtƒtƒ  krçd
ksêJ ‚ J ‚tt d	tƒt dtƒtƒtu súJ ‚d S )Né   é   é   é   é   é
   éd   é%   r   éÿÿÿÿ)r   r   r	   r   r
   )ÚaÚbÚcÚdÚeÚp1Úp2© r*   úV/var/www/html/zoom/venv/lib/python3.10/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‹J ‚t|d d |d d |ƒt dtƒ|d fks¤J ‚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ßJ ‚t|d d |d d |tƒt dtƒ|d fksùJ ‚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s/J ‚t|d d |d d |tƒt dtƒ|d fksJJ ‚d S )Nr   é   r   r"   r   r   éþÿÿÿÚD©Ú	extensionúZZ[x]©Údomainr   éýÿÿÿ)r   r   r   r   r   r   )r#   r&   ÚDEÚrr*   r*   r+   Útest_weak_normalizer(   s"   R> ÿ
ÿ2(N4$ (: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ssJ ‚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   )Ú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sIJ ‚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s J ‚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áJ ‚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   Úunrecognized_caserC   )r   r   r   r*   r:   r*   r+   r;   _   s   . ÿz$test_special_denom.<locals>.<lambda>)r   r   r   r   r   Út0r   ÚkÚt1Údecrement_levelr   Ú
ValueErrorr*   r*   r:   r+   Útest_special_denomF   s2   .
ÿ2þ
ÿ&
ÿÿþ.ÿ ÿþrK   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sbJ ‚d S )Nr/   r   r   r0   r   r   )r   r   r   rF   r   r   r:   r*   r*   r+   Útest_bound_degree_failc   s   
ÿ0PÿþþrL   c                  C   s¤   t dtdtƒgid} ttdtƒtdt tƒtdtƒ| ƒdks!J ‚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sPJ ‚d S )Nr/   r   r0   r.   r   r   )r   r   r   r   r   r:   r*   r*   r+   Útest_bound_degreel   s   ,&<rM   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{J ‚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J ‚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sjJ ‚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ÇJ ‚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s3J ‚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sJ ‚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;   €   s   2 ztest_spde.<locals>.<lambda>r   zZZ(x)r3   r   r   zZZ(x,t0)r.   r-   ÚQQc                      sF   t ttd td d d  tƒttd td d  tƒtdtƒdˆ ƒS rN   rO   r*   r:   r*   r+   r;   ’   s   F é	   r   rA   é   r   )
r   r   r   r   r   r   r   rF   r   r   r*   r*   r:   r+   Ú	test_spde~   sp   &F(ÿ(þ2,Xÿ4ÿ
þ2ÿÿÿÿÿÿL
þ2ÿÿÿÿÿÿP
þH@
ÿdLÿrS   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s=J ‚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skJ ‚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sJ ‚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èJ ‚d S )	Nr/   r   r   r0   r   r   r   r.   )r   r   r   r   r   r   r   r   r:   r*   r*   r+   Útest_solve_poly_rde_no_cancel™   s(   &:ÿÿ&ÿ&(ÿ&,ÿ,þrT   c                      s6  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s'J ‚ttdt tƒtddt  t tƒdˆ ƒtttƒksCJ ‚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suJ ‚ttdt tƒtdt td  dt t  tƒd	ˆ ƒttd tƒks™J ‚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;   º   s    z,test_solve_poly_rde_cancel.<locals>.<lambda>r   r   )r   r   r   r   r   r   r   r   r*   r*   r:   r+   Útest_solve_poly_rde_cancel¬   s    ÿ(ÿ" ÿ4ÿrU   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sAJ ‚d S )Nr/   r   r0   r.   r   )r   r   r   r   rI   r   r:   r*   r*   r+   Útest_rischDEÄ   s   2
ÿþrV   N).Ú__doc__Úsympy.core.numbersr   r   r   Úsympy.core.symbolr   Úsympy.polys.polytoolsr   Úsympy.integrals.rischr   r   Úsympy.integrals.rder	   r
   r   r   r   r   r   r   r   r   r   r   Úsympy.testing.pytestr   Ú	sympy.abcr   r   r   r   rF   rH   Út2rG   r,   r8   r@   rK   rL   rM   rS   rT   rU   rV   r*   r*   r*   r+   Ú<module>   s&    8	