o
    à8Va%  ã                   @   sð   d Z ddlmZmZmZmZ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.é    )ÚPolyÚsymbolsÚooÚIÚRational)Ú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ÚeZp1Zp2© r(   ú@/usr/lib/python3/dist-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$ (:r6   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   r.   c                      s(   t tdtƒtdtƒtdtƒtttƒˆ ƒS ©Nr   )r   r   r   r(   ©r4   r(   r)   Ú<lambda>:   s    ÿz#test_normal_denom.<locals>.<lambda>r   r   )r   r   r   r   r   r   r   )ÚfaÚfdÚgaÚgdr(   r8   r)   Útest_normal_denom8   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   r.   r   r,   ÚZZr1   z	ZZ_I[k,x]Ztan©Úcaser0   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_caser@   )r   r   r   r(   r8   r(   r)   r9   ]   s   . ÿz$test_special_denom.<locals>.<lambda>)r   r   r   r   r   Út0r   ÚkÚt1Údecrement_levelr   Ú
ValueErrorr(   r(   r8   r)   Útest_special_denomD   s2   .
ÿ2þ
ÿ&
ÿÿþ.ÿ ÿþrG   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   r.   r   r   )r   r   r   rB   r   r   r8   r(   r(   r)   Útest_bound_degree_faila   s   
ÿ0PÿþþrH   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   r.   r,   r   r   )r   r   r   r   r   r8   r(   r(   r)   Útest_bound_degreej   s   ,&<rI   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   r.   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(   r8   r(   r)   r9   ~   s   2 ztest_spde.<locals>.<lambda>r   zZZ(x)r1   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 rJ   rK   r(   r8   r(   r)   r9      s   F é	   r   r?   é   r   )
r   r   r   r   r   r   r   rB   r   r   r(   r(   r8   r)   Ú	test_spde|   sp   &F(ÿ(þ2,Xÿ4ÿ
þ2ÿÿÿÿÿÿL
þ2ÿÿÿÿÿÿP
þH@
ÿdLÿrN   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   r.   r   r   r   r,   )r   r   r   r   r   r   r   r   r8   r(   r(   r)   Útest_solve_poly_rde_no_cancel—   s(   &:ÿÿ&ÿ&(ÿ&,ÿ,þrO   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   r.   r   r   c                      s   t tdtƒtttƒtˆ ƒS r7   )r   r   r   r   r(   r8   r(   r)   r9   ¸   s    z,test_solve_poly_rde_cancel.<locals>.<lambda>r   r   )r   r   r   r   r   r   r   r   r(   r(   r8   r)   Útest_solve_poly_rde_cancelª   s    ÿ(ÿ" ÿ4ÿrP   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   r.   r,   r   )r   r   r   r   rE   r   r8   r(   r(   r)   Útest_rischDEÂ   s   2
ÿþrQ   N),Ú__doc__Zsympyr   r   r   r   r   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   rB   rD   Út2rC   r*   r6   r>   rG   rH   rI   rN   rO   rP   rQ   r(   r(   r(   r)   Ú<module>   s"    8	