ó
¡¼™\c           @   s¤  d  Z  d d l m Z m Z 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 m Z m Z m Z m Z m  Z  m! Z! m" Z" d d l# m$ Z$ m% Z% m& Z& m' Z' e d ƒ \ Z( Z) Z* Z+ Z, d „  Z- d	 „  Z. d
 „  Z/ d „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 d „  Z5 d „  Z6 d „  Z7 d „  Z8 d „  Z9 d „  Z: d „  Z; d S(   s?   Most of these tests come from the examples in Bronstein's book.iÿÿÿÿ(   t   DifferentialExtensiont   NonElementaryIntegralt
   derivationt   risch_integrate(   t   prde_normal_denomt   prde_special_denomt   prde_linear_constraintst   constant_systemt	   prde_spdet   prde_no_cancel_b_larget   prde_no_cancel_b_smallt   limited_integrate_reducet   limited_integratet
   is_deriv_kt   is_log_deriv_k_t_radicalt   parametric_log_deriv_heut!   is_log_deriv_k_t_radical_in_fieldt   param_poly_rischDEt   param_rischDEt   prde_cancel_liouvillian(   t
   PolyMatrix(   t   Polyt   St   symbolst	   integratet   logt   It   pit   exp(   t   xt   tt   nt   ys   t:4 kc       	   C   sä  t  d i t d t ƒ t d t d t ƒ g d 6ƒ }  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 ƒ t d t ƒ t d t ƒ f t t t t ƒ t t d d t ƒ f t d t ƒ t t d d t ƒ f g t d t ƒ f k sEt ‚ 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 i t d t ƒ t t t ƒ g d 6ƒ }  t t t t ƒ t d t ƒ | |  ƒ t t d t ƒ t d t t t t ƒ t d t ƒ f t t t ƒ t d t ƒ f t t t t ƒ t d t ƒ f t t t d t ƒ t d t ƒ f g t t d t ƒ f k sàt ‚ d  S(   Nt	   extensioni   i   t   Diÿÿÿÿ(   R    R   R   R   R   t   AssertionError(   t   DEt   fat   fdt   G(    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_prde_normal_denom   s    6P7X;X.$CBc       	   C   sä  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 i t  d t ƒ t  t t ƒ g d 6ƒ } 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 snt ‚ 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 sVt ‚ t d i t  d t ƒ t  d t t t ƒ g d 6ƒ } | j ƒ  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 ƒ t  t t ƒ t  t d t ƒ f t  d t t ƒ t  t t ƒ f g t  d t ƒ f k s²t ‚ t d i t  d t ƒ t  t d d d t t ƒ g d 6ƒ } 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 ƒ 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t ‚ t t  t d t ƒ t  t d t ƒ t  t d t ƒ | | ƒ t  t d t ƒ t  d t ƒ 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àt ‚ d  S(	   Ni   i   i   R!   R"   iþÿÿÿi   i    (   R   R   R    R   R   R#   t   t0t   decrement_level(   t   at   bat   bdR'   R$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_prde_special_denom$   s4    _.;\<4?96
DXC=>LTGG<Rc          C   sþ  t  d i t d t ƒ g d 6ƒ }  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 ƒ t d t ƒ t d t ƒ f t d d d g d d d g g ƒ f k s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 i t d t ƒ t t t ƒ g d 6ƒ }  t t t d t ƒ t t d t ƒ | |  ƒ t t t ƒ t t d t ƒ t t d t ƒ f t d d g  ƒ f k s"t ‚ t d t t ƒ t t t ƒ f t t t ƒ t t t ƒ f g } t  d i t d t ƒ t d t t ƒ g d 6ƒ }  t t d t ƒ t d t ƒ | |  ƒ t d t ƒ t d t ƒ f t d t t g g ƒ f k sút ‚ d  S(	   NR!   i   R"   i   i   i    iÿÿÿÿi   (   R    R   R   R   t   MatrixR#   R   (   R$   R'   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_prde_linear_constraintsA   s    "V%$[_.,MA2$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 d t d t d d g ƒ } t d i t d t ƒ g d 6ƒ } t |  | | ƒ t  d d d g d d d g d d d g d d d g g ƒ t  d d d d g ƒ f k st ‚ d  S(   Ni   i   i   i    R!   R"   (   R/   R   R    R   R   R#   (   t   At   uR$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_constant_systemQ   s    (%%"c          C   sò   t  t t ƒ t  t t t ƒ g }  t d i t  d t ƒ t  d t t ƒ g d 6ƒ } t t  t t ƒ t  d t t ƒ |  t | ƒ t  t t ƒ t  d t ƒ t  d t t ƒ t  t t ƒ g t  t d t ƒ t  d t ƒ g t d f k sî t ‚ d  S(   NR!   i   R"   iÿÿÿÿi    i   (   R   R   R   R    R   R   R#   (   R"   R$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_prde_spde^   s
    #2+8c    	      C   sÈ  t  d i t d t ƒ g d 6ƒ }  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 d d d d g d d d d g g ƒ f k sº t ‚ 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 d d d d g d d d d g g ƒ f k s^t ‚ 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 d d d d g d d d d g d d d d g g ƒ f k st ‚ t  d i t d t ƒ t t d d t ƒ g d 6ƒ }  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 ƒ | 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 d d d d d d d d d d g
 d d t d ƒ d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 g
 ƒ f k sút ‚ t  d i t d t ƒ t d t d t ƒ g d 6ƒ }  t d t d t d t	 ƒ} g  t
 d ƒ D]: } t
 d ƒ D]' } t t | t | t d t	 ƒ^ qjqZ} t | | d |  ƒ \ } } | j ƒ  } t | ƒ d k sÙt ‚ | d t t d ƒ d d d d d d g d ƒ k st ‚ t | g ƒ | d d d  … d  d  … f d t t d d t d	 d ƒk sjt ‚ t | g ƒ | d d  d … d  d  … f d t t t d ƒ d t d	 d ƒk sÄt ‚ d  S(   NR!   i   R"   i   i    iÿÿÿÿi   i   t   domaint   ZZi   i   i   i   i   t   fields   ZZ(x)s   QQ(x)(   R    R   R   R	   R/   R#   R   R
   R   t   Truet   ranget	   nullspacet   len(	   R$   R'   t   bt   it   jt   qt   hR1   t   V(    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_prde_no_cancelg   sF    "7=$7I$79$6^__?,!!!!!!!66M=Tc          C   s  t  d i t d t ƒ t d t t ƒ g d 6ƒ }  t d t d t ƒ} t t d t d t ƒ t t d t ƒ t d t ƒ g d |  ƒ \ } } | j ƒ  } | | | t t d t t ƒ | | | | | | | t t d t ƒ t t d t t ƒ | | | | g k | j ƒ  d k st ‚ t	 | g ƒ | d d  d … d  d  … f t	 t d t d	 d
 ƒg g ƒ k srt ‚ t  d i t d t ƒ t t t ƒ g d 6ƒ }  t t d t d	 d ƒt d t d	 d
 ƒg d |  ƒ t d t d	 d ƒt t t ƒ g t	 d d d g g ƒ f k st ‚ d  S(   NR!   i   R"   i    R7   iÿÿÿÿi   i   R5   s   QQ(x)s   QQ[x]t   QQ(
   R    R   R   R   R8   R   R:   t   rankR#   R/   (   R$   t   p0R@   R1   RA   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_prde_cancel_liouvillian•   s    2IjT/3c          C   s)  t  d i t d t ƒ g d 6ƒ }  t t d t t d t ƒ} t d t d t ƒ} t t t d t ƒt t d t d t ƒg } t | | | d |  ƒ \ } } | j ƒ  t d d d d g ƒ g k sÍ t ‚ | d | d t t t ƒ k sô t ‚ t t d t t d t ƒ} t t d d t d t d t ƒ} t d t d t ƒt t t d t ƒt t d t d t ƒg } t | | | d |  ƒ \ } } | j ƒ  t d d	 d d	 d d g ƒ g k sÇt ‚ d	 | d | d | d } | t | |  ƒ | | t t d d t d t ƒ k s%t ‚ d  S(
   NR!   i   R"   i   R7   i   i    i   iûÿÿÿ(	   R    R   R   R8   R   R:   R/   R#   R   (   R$   R+   R<   R?   R@   R1   t   p(    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_param_poly_rischDE©   s    ".-'%$3c    
   	   C   sU  t  d i t d t ƒ g d 6ƒ }  t d t d t ƒt t t d t ƒ} } | | f | | f | | f g } t | t t d t d t ƒ| |  ƒ \ } } t | ƒ d k sµ t ‚ g  | D]$ } | d j ƒ  | d j ƒ  ^ q¼ } | j ƒ  } t | ƒ d k s
t ‚ | d t	 d d d d d d g ƒ k s8t ‚ | d | d d | d }	 |	 j
 t ƒ |	 t d d d t k s†t ‚ t  d i t d t ƒ t t t ƒ g d 6ƒ }  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 t ƒt t t t d t ƒ| |  ƒ \ } } t | ƒ d k sft ‚ g  | D]$ } | d j ƒ  | d j ƒ  ^ qm} | j ƒ  } t | ƒ d k s»t ‚ | d t	 d d d d d d d g ƒ k sìt ‚ d | d d | d d | d d | d d | d }	 |	 j
 t ƒ |	 t t d k sQt ‚ d  S(   NR!   i   R"   R7   i   i   i    iÿÿÿÿR5   s   ZZ(x)RC   i   i   (   R    R   R   R8   R   R;   R#   t   as_exprR:   R/   t   diffR   (
   R$   t   p1t   pxR'   R@   R1   t   hiRG   RA   R    (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_param_rischDEÁ   s*    "+!/1./.XB11>c       
   C   sñ   t  d i t d t ƒ t d t t ƒ g d 6ƒ }  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 ƒ f t t t t ƒ t d t ƒ f g f k sí t ‚ d  S(   NR!   i   R"   i   iÿÿÿÿ(   R    R   R   R   R   R#   (   R$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_limited_integrate_reduceÜ   s
    2+Fc          C   si  t  d i t d t ƒ g d 6ƒ }  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 ƒ f d g f k sÜ t ‚ 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 ƒ f d g f k set ‚ d  S(	   NR!   i   R"   i   i   i   i	   i    (   R    R   R   R   R#   (   R$   R'   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_limited_integrateä   s    "%,)@!,c          C   sî  t  d i t d t ƒ g d 6d  g d 6d  g d 6ƒ }  t t d t t ƒ t d t ƒ |  ƒ d  k sj t ‚ t  d i t d t ƒ t d t t ƒ t d t t ƒ g d 6d  d d g d 6d  d t t g d 6ƒ }  t t t t d t ƒ t d t ƒ |  ƒ t d f t d f g t t d d	 f k s*t ‚ t  d i t d t ƒ t t t ƒ t d t t	 ƒ g d 6d  d d g d 6d  t t g d 6ƒ }  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êt ‚ d  S(   NR!   i   R"   t   extst   extargsi   R   R   i    i   (
   R    R   R   t   NoneR   R#   t   t1t   t2R)   R   (   R$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_is_log_deriv_k_t_radicalï   s    &4<*)18&-c       	   C   st  t  d i t d t ƒ t d t t ƒ t d t d t ƒ g d 6d  d d g d 6d  t t d g d 6ƒ }  t t d t d d t t ƒ t d t ƒ |  ƒ t d f t d f g t t d f k sÉ t ‚ t  d i t d t ƒ t d t t ƒ t t t ƒ g d 6d  d d g d 6d  t t g d 6ƒ }  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Št ‚ t  d i t d t ƒ t d t t ƒ g d 6d  d g d 6d  t d g d 6ƒ }  t t t t ƒ t d t ƒ |  ƒ t t d ƒ d f g t d d f k s*t ‚ t  d i t d t ƒ t d d t t	 ƒ g d 6d  d g d 6d  t d d t d g d 6ƒ }  t t d t t	 ƒ t d t	 ƒ |  ƒ t	 t d ƒ d f g t	 d d f k sÞt ‚ t  d i t d t ƒ t d
 t t
 ƒ g d 6d  d g d 6d  d t g d 6ƒ }  t t d t
 ƒ t t t
 ƒ |  ƒ t
 d f g t
 d f k spt ‚ d  S(   NR!   i   R"   R   RQ   RR   i   R   i   iÿÿÿÿ(   R    R   R   RT   RU   RS   R   R#   R   R)   R   (   R$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_is_deriv_k   s&    @*1.8&-6,$!/00%/,$c          C   sè  t  d i t d t ƒ t d t t ƒ g d 6ƒ }  t t d t d t ƒ t d t t t ƒ |  ƒ d t t d f k s€ t ‚ t t d d t t ƒ t d t t t ƒ |  ƒ d t d t d f k sÒ t ‚ t  d i t d t ƒ t t t d t ƒ g d 6ƒ }  t t d d t t ƒ t d t d d t d t t ƒ |  ƒ d t t d f k sht ‚ t t d t ƒ t t d t ƒ |  ƒ d t f k s¢t ‚ t t d t ƒ t d t d t ƒ |  ƒ d d t f k sät ‚ d  S(   NR!   i   R"   i   i   i   iÿÿÿÿ(   R    R   R   R   R   R#   (   R$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt&   test_is_log_deriv_k_t_radical_in_field  s    211!7*%)c          C   s³   t  d i t d t ƒ t d t t ƒ g d 6ƒ }  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 s¯ t ‚ d  S(   NR!   i   R"   i   i   i   iÿÿÿÿ(   R    R   R   R   R   R#   (   R$   (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   test_parametric_log_deriv0  s    27&N(<   t   __doc__t   sympy.integrals.rischR    R   R   R   t   sympy.integrals.prdeR   R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   t   sympy.polys.polymatrixR   R/   t   sympyR   R   R   R   R   R   R   R   t	   sympy.abcR   R   R   R    R)   RT   RU   t   t3t   kR(   R.   R0   R3   R4   RB   RF   RH   RN   RO   RP   RV   RW   RX   RY   (    (    (    s>   lib/python2.7/site-packages/sympy/integrals/tests/test_prde.pyt   <module>   s*   "j:"							.								