ó
¡¼™\c           @   s÷  d  d l  m Z 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 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$ m% Z% m& Z& d „  Z' d „  Z( d „  Z) d „  Z* d	 „  Z+ d
 „  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 „  Z< d „  Z= d „  Z> d „  Z? d „  Z@ d „  ZA d  S(!   iÿÿÿÿ(   t   DifferentialOperatort   HolonomicFunctiont   DifferentialOperatorst
   from_hypert   from_meijergt   expr_to_holonomic(   t   RecurrenceOperatorst   HolonomicSequence(   t   symbolst   hypert   St   sqrtt   pit   expt   erft   erfct   sstrt   Symbolt   Ot   It   meijergt   sint   cost   logt   cosht   besseljt   hyperexpandt   Cit
   EulerGammat   Sit   asinht   gammat   beta(   t   ZZt   QQt   RRc          C   s>  t  d ƒ }  t t j |  ƒ d ƒ \ } } | | j k s? t ‚ | t | j j | j j	 g | ƒ k sl t ‚ |  | |  d | d t d |  |  d g | ƒ k s¨ t ‚ |  d d | |  | d t |  d d d d d d |  g | ƒ k sõ t ‚ |  | |  d d | |  d |  d d |  d	 d
 |  d | d |  d | d |  d | d k sht ‚ |  | d |  d d | d | |  d } d |  d |  d | |  d | d d |  d |  d | d d |  d d |  | d |  d d |  d | d |  d d | d	 } | | k s:t ‚ d  S(   Nt   xt   Dxi   i    i   i   i   iÐÿÿÿi   iÇÿÿÿi   iñÿÿÿi   i	   i   i   i<   i
   i   (
   R   R   R"   t   old_poly_ringt   derivative_operatort   AssertionErrorR    t   baset   zerot   one(   R$   t   RR%   t   pt   q(    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_DifferentialOperator   s    -<;'L.’c          C   s2  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | d |  |  ƒ } t d | |  | d |  ƒ } | | k sr t ‚ t |  | d |  ƒ } t | d |  ƒ } t |  d |  d d | |  d |  | d |  ƒ } | | | k sé t ‚ t |  | | d |  d d |  ƒ } t | d |  ƒ } t d |  d d |  d d	 |  d d
 |  d d |  d | d |  d d |  d d |  d | d d |  d d |  d d |  d d |  d | d |  ƒ } | | | k sèt ‚ t | d d |  ƒ } t |  d | |  ƒ } t |  d d |  d d |  d d |  d |  d d |  d |  d d |  d d |  d  d! |  d d | |  d d |  d d |  d d |  d |  d d |  d | d |  d d |  d d |  d  d! |  d d | d |  ƒ } | | | k s-t ‚ |  d d |  d" } |  d d  |  d } | | | j ƒ  } | | | j ƒ  } t | |  ƒ t | |  ƒ } t d |  d d |  d d# |  d d |  d d$ |  d | |  d d |  d d% |  d d |  d& | d |  ƒ } | | k s.t ‚ d  S('   NR$   R%   i   i   i   iÊÿÿÿi~   i–   iyÿÿÿiü   i  iŒ   iåÿÿÿi   i   i   i	   i   i&   i   i(   i   i   i-   i  i
   i'  i   iv  i   iÃ   i   iÒ   i   iüÿÿÿi>   i   iG   (   R   R   R!   R&   R   R(   t   diff(   R$   R,   R%   R-   R.   t   rt   s(    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_HolonomicFunction_addition   s:    7'kAèB=c          C   sÞ  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | |  |  | d |  ƒ } t |  | | |  | d |  ƒ } t d |  d d |  d d |  d d d |  d	 d |  d d |  | d |  d d
 |  d d |  d d | d d |  d	 d |  d d |  | d d |  d |  d | d |  ƒ } | | | k sMt ‚ t | d d |  ƒ } t | d |  ƒ } t d d | d | d |  ƒ } | | | k s°t ‚ t | d d |  | |  ƒ } t | |  d d |  ƒ } t d |  d d |  d d |  d	 d |  d d |  d d |  d d |  d d |  d d |  d	 d |  d d |  d d |  d d |  d | d |  d d |  d	 d |  d d |  d d |  d d |  d | d d |  d	 d |  d d |  d d |  d d |  | d d |  d	 d |  d |  d | d |  ƒ } | | | k sct ‚ t |  | d d |  ƒ } t | |  |  |  ƒ } t |  d d |  d | |  | d |  ƒ } | | | k sÚt ‚ d  S(   NR$   R%   i   i   i   i   i   i   i   i   i   i   iþÿÿÿi   i   i   i   i   i   i
   (   R   R   R!   R&   R   R(   (   R$   R,   R%   R-   R.   R1   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt%   test_HolonomicFunction_multiplication>   s,    #£%#ÿ a/c          C   sJ  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | d |  d d g ƒ } t | d d |  d d d g ƒ } t d | | d | d |  d d d d g ƒ } | | | k s± t ‚ t | |  | d |  d d d g ƒ } t | d |  |  d d d g ƒ } t |  d |  d d |  d t d ƒ d |  d |  d d d |  d d | d	 |  d t d
 ƒ d | d |  d d
 |  d t d ƒ d | d |  d |  d t d ƒ d | d |  d d d d d g ƒ } | | | k sót ‚ t | d d |  | |  d |  d d d g ƒ } t | d d |  d d d g ƒ } t |  d d |  d d |  d d d |  d d |  d d |  | |  d d |  d d |  d d | d d |  d d |  d d |  | d |  d d |  d d | d |  d d d d d g ƒ } | | | k s8t ‚ t | d |  |  d d d d g ƒ } t | d |  d d g ƒ } t |  d |  d |  d |  | |  d | d |  d | d |  d d d d d g ƒ } | | | k sït ‚ t t |  ƒ ƒ } t d |  d d ƒ} t |  d d |  d d |  | |  d d | d |  d d |  | d |  d t d ƒ d d t	 d ƒ t d ƒ d g ƒ } | | | k s²t ‚ t  d ƒ } t t
 |  ƒ ƒ } t t
 |  d |  ƒ ƒ } | | j ƒ  j | t d ƒ j ƒ  } | t t
 |  ƒ t
 |  d ƒ t
 |  ƒ k sFt ‚ d  S(   NR$   R%   i   i    i   i   iÿÿÿÿi   iýÿÿÿi   iþÿÿÿi   i   i$   i    i	   i
   iïÿÿÿiûÿÿÿt   x0t   C_1(   R   R   R"   R&   R   R(   R
   R   R   R   R   t   to_exprt   subsR   t   expand(   R$   R,   R%   R-   R.   R1   R6   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_addition_initial_conditionX   s@    #2'#ß3#›;&4+N7'c       
   C   s¨  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | d |  | d |  d d d g ƒ } t | d d |  d d d g ƒ } t |  d d |  d d	 d |  | |  d d
 |  d d | d d |  d d |  | d |  d d | d |  d d d d d g ƒ } | | | k st ‚ t | d |  |  d d d g ƒ } t | d |  d |  d d d d g ƒ } t |  d d |  d d d |  d d d |  d d
 d |  d d
 d |  d d d |  d d
 d |  t d ƒ d d |  d d |  d d
 d |  d d
 d |  d d
 d |  d d
 d |  d d |  d
 d | d |  d d |  d d
 d |  d d
 d |  d d d |  d d
 d |  d | d d  |  d d |  d d d |  d d d |  d d
 t d! ƒ d
 | d d |  d d" |  d d
 d |  d d
 d |  d d |  d
 t d ƒ d | d d# |  d d" |  d d
 d |  d | d |  d d" |  d d d |  d d t d ƒ d
 | d |  d d d d d$ d% d& g ƒ } | | | k s	t ‚ t | d |  d d g ƒ } t | d d |  d d d g ƒ } t d d | | d |  d d d g ƒ } | | | k s‰t ‚ t |  | d d d | |  d d d g ƒ } t |  d d  |  d | |  | d |  d d d g ƒ } | | | k s	t ‚ t | d d |  d d d g ƒ } t | d d |  d d d d g ƒ } t d | d | d d | d d | d | d |  d d d d d' d' d g ƒ } | | | k s¿t ‚ t t |  ƒ ƒ } t d |  d( d ƒ} t |  d | |  | d |  d t d ƒ t d ƒ t	 d ƒ g ƒ } | | | k sCt ‚ t t
 |  ƒ ƒ } t t
 |  d |  ƒ ƒ } | | j ƒ  } | t |  t
 |  d ƒ k s¤t ‚ d  S()   NR$   R%   i   i   i    i   i   i   i<   i	   i   i   i
   i   i%   i   i   i   i¤   i   i¸   i    i”  i(   i€   ib   i   iR   iL   iÜ   iP   iþÿÿÿiÈ   i@   iüÿÿÿiýÿÿÿiôÿÿÿièÿÿÿi   R5   (   R   R   R"   R&   R   R(   R
   R   R   R   R   R7   R   (   R$   R,   R%   R-   R.   R1   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt%   test_multiplication_initial_condition{   sB    +#Ž#*ÿ ÿ †#+/;#&WFc          C   s#  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | d |  ƒ j |  d |  ƒ } t d |  d | |  ƒ } | | k s{ t ‚ t | d d |  ƒ j |  d |  d d ƒ } t d |  d d	 |  d
 d |  d d |  d d |  d d | d |  d d |  | d |  ƒ } | | k s(t ‚ t | d |  |  |  ƒ j d |  d |  d d ƒ } t d |  d
 d |  d d |  d d |  d d |  d d |  d d |  d d |  d d |  d d |  d d |  d | d |  d d |  d |  d d |  d |  | d |  ƒ } | | k s=t ‚ t | d d |  ƒ j d |  d ƒ } t d |  d | |  | d |  ƒ } | | k sžt ‚ t | d d |  ƒ j |  d |  d d ƒ } t |  d d |  d d |  d
 d |  d d |  d d |  d d |  d d |  d d |  d d  |  d d |  d d |  d d! |  d d |  d d | |  d d |  d d |  d
 d |  d d |  d d" |  d d |  d d |  d d |  d d |  d d |  d | d |  ƒ } | | k st ‚ d  S(#   NR$   R%   i   i   iþÿÿÿi   i}   i   i–   i	   i<   i   i   i   iìÿÿÿi   iØ   iD  i´   i   i˜   ip   i$   i   i   i
   i   i0   iD   iH   io   i6   i    i   (   R   R   R!   R&   R   t   compositionR(   (   R$   R,   R%   R-   R1   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt"   test_HolonomicFunction_composition¡   s,    $0F%8‡A('0«‘c          C   s–  t  d ƒ }  t t j |  ƒ d ƒ \ } } t d d g t d ƒ d g |  d d ƒ } t d |  d |  d d | |  d d |  | d |  d d t d ƒ t d	 d
 t d ƒ t d t d ƒ d g ƒ } t	 | ƒ } | | k sò t
 ‚ t	 t d g t d ƒ d g |  d d ƒ ƒ } t |  |  d d d | |  | d |  ƒ } d } d } t | j ƒ | k szt
 ‚ | j | j k s’t
 ‚ d  S(   NR$   R%   i   i   i   i   i   i   i	   iüÿÿÿi   s?   [sqrt(pi)*exp(1/4)*erf(1/2), -sqrt(pi)*exp(1/4)*erf(1/2)/2 + 1](   R   R   R"   R&   R	   R
   R   R   R   R   R(   R   t   y0t   annihilator(   R$   R,   R%   R-   R.   R1   R5   R>   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_from_hyper»   s    -}01c       
   C   s°  t  d ƒ }  t t j |  ƒ d ƒ \ } } t t g  t d ƒ d g f t d ƒ d g t d ƒ d d g f |  ƒ ƒ } t |  d t d ƒ d |  d |  d | |  d | d |  d | d |  d d t t	 ƒ d d t t	 ƒ d d t t	 ƒ g ƒ } | | k st
 ‚ t t g  g  f d g g  f |  ƒ ƒ } t d | |  d d g ƒ } | | k sjt
 ‚ t t d g g  f t d ƒ d g d g f |  ƒ ƒ } t |  t d ƒ d | |  | d |  d t t	 ƒ t d ƒ t d ƒ g ƒ } | | k st
 ‚ t t d g d g f d g g  f d |  d ƒ ƒ } t d |  d d | |  d | d |  d t t d ƒ d ƒ d t t d ƒ d ƒ g ƒ } | | k s¬t
 ‚ d  S(	   NR$   R%   i   i   i   i   iÿÿÿÿi    (   R   R   R"   R&   R   R   R
   R   R   R   R(   R   R   (   R$   R,   R%   R-   R.   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_from_meijergÊ   s    NS8'7O5cc          C   sÚ  t  d ƒ }  t t j |  ƒ d ƒ \ } } t  d d t ƒ} t t j | ƒ d ƒ \ } } t |  d | d |  | |  ƒ j ƒ  } t d | d | d | d d	 | d
 d | d d	 | | d
 ƒ d d f g } | | k sí t	 ‚ t |  d | d |  d
 | d |  ƒ j ƒ  } t d | d d | d
 d | d d | d | d ƒ d d f g } | | k s|t	 ‚ t |  d
 | d d | d |  ƒ j ƒ  } t d | d d | d
 | d d | | | d d
 | d | d ƒ d d f g } | | k st	 ‚ t d
 |  d
 | d d |  | |  | d
 |  ƒ j ƒ  } t d | d
 | d d	 | d
 d
 | d d	 | | | d
 d
 | d d | | d ƒ d d f g } | | k sÖt	 ‚ d  S(   NR$   R%   t   nt   integert   Sni   i   i   i   i   i   i    i   iH   i£   iŒ   i   (
   R   R   R!   R&   t   TrueR   R   t   to_sequenceR   R(   (   R$   R,   R%   RB   t   _RD   R-   R.   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_to_SequenceÜ   s     )X1L-\=pc          C   sÏ  t  d ƒ }  t t j |  ƒ d ƒ \ } } t  d d t ƒ} t t j | ƒ d ƒ \ } } t | d |  d d g ƒ j ƒ  } t d | d | d ƒ d f g } | | k s² t	 ‚ t | d	 d |  d d d g ƒ j ƒ  } t d | d	 d
 | d	 | d	 d d g ƒ d f g } | | k s't	 ‚ t | d	 d |  d
 | |  d d	 d
 g ƒ j ƒ  } t | | d	 | d	 d | d | d d	 d
 d t
 d ƒ d	 t
 d ƒ d g ƒ d f g } | | k sÎt	 ‚ t |  d
 | d d | |  ƒ j ƒ  } t d | d | | d d | d
 d | | d	 ƒ d d
 f g } | | k sQt	 ‚ t  d ƒ \ } }	 }
 } t t d |  d	 ƒ ƒ } t | d	 | d	 d	 | | d	 d d |
 g ƒ d d f g } | j ƒ  | k sÛt	 ‚ | j ƒ  } t | d	 | d	 | d	 | d g ƒ d d f g } | j ƒ  | k s4t	 ‚ t t |  ƒ |  ƒ j ƒ  } t d	 | d	 d	 | | d
 d	 | d	 | d	 | d	 d d d	 t t ƒ d | g ƒ d d	 f g } | | k sËt	 ‚ d  S(   NR$   R%   RB   RC   RD   i   i    iÿÿÿÿi   i   i   i   i   i   s   C_0, C_1, C_2, C_3(   R   R   R"   R&   RE   R   R   RF   R   R(   R
   R   R   R0   R   R   R   (   R$   R,   R%   RB   RG   RD   R-   R.   t   C_0R6   t   C_2t   C_3(    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt#   test_to_Sequence_Initial_Coniditonsï   s4    "$):5`)H@5ic    	   	   C   sê  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | d d |  | |  d d d g ƒ j d d ƒ } |  |  d d |  d	 d |  d
 d |  d d t |  d ƒ } | | k s· t ‚ t | d |  ƒ j |  d d d g ƒ } t | d d |  d d d g ƒ } | | j d d ƒ } d |  d d |  d d d |  d d d |  d d t |  d ƒ } | | k swt ‚ t d |  | d | |  d d d g ƒ } | | | j d d ƒ } d |  |  d d |  d d d |  d d d |  d	 d d |  d d d |  d
 d d |  d d d |  d d t |  d ƒ } | | k s^t ‚ t d d |  d |  d d |  d |  d d |  d | d d |  d d |  d | d |  d d d g ƒ j d d
 ƒ } |  |  d d d |  d d |  d	 d  d! |  d d" t |  d
 ƒ } | | k s?t ‚ t d d |  d |  d d |  d |  d d |  d | d d |  d d |  d | d |  d d d g ƒ j d d
 ƒ } d d |  d d |  d d d	 |  d d# d |  d	 d$ d |  d d% t |  d
 ƒ } | | k s4t ‚ t	 t
 |  ƒ |  ƒ j d d ƒ } t  d& ƒ } t
 |  ƒ |  j d d ƒ } | j | d' d t t ƒ ƒ | k sªt ‚ t	 t |  d |  ƒ ƒ j d d ƒ t |  d |  ƒ j d d ƒ k söt ‚ t	 d |  d |  d t d ƒ d ƒ j ƒ  d |  d |  d t d ƒ d j ƒ  k sVt ‚ t	 t |  d |  ƒ ƒ j ƒ  t |  d |  ƒ j ƒ  k s–t ‚ t	 t |  ƒ d |  d d( i d d d) g d' 6ƒj d d ƒ t |  ƒ d |  d j d d ƒ k s t ‚ t	 t |  ƒ d |  d d* d ƒj d d ƒ t |  ƒ d |  d j d d d* d ƒ k s`t ‚ t	 t |  d ƒ d |  d d d* d d( i d d d) g d' 6ƒj d d ƒ t |  d ƒ d |  d d j d* d d d ƒ k sæt ‚ d  S(+   NR$   R%   i   i    i   RB   i
   i   i   i   i*   i	   iØ   i   i   i   i   iÐ  i³   i   i€  i   i   iá  iG   ii   i¿N  i€  i{  iH  i   i   i   iÀ  i    i(   i€  RK   iþÿÿÿR>   iÿÿÿÿR5   (   R   R   R!   R&   R   t   seriesR   R(   R<   R   R   R8   R   R   R
   R   (	   R$   R,   R%   R-   R.   R1   R2   t   tRK   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_series  sB    7D)#L+>EL>E`",L`@j`Kc       
   C   s…  t  d ƒ }  t t j |  ƒ d ƒ \ } } t d |  | d | |  d d d g ƒ } d d d d	 d
 d d d d d g
 } d } t | j | d d ƒd ƒ | k sª t ‚ d d t g } x1 t	 d ƒ D]# } | j
 | d d d t ƒ qÈ Wx1 t	 d ƒ D]# } | j
 | d d d t ƒ qü Wd } t | j | d d ƒd ƒ | k sTt ‚ t | d d |  d d d g ƒ } d } t | j | d d ƒd ƒ | k s¨t ‚ d g } x) t	 d ƒ D] } | j
 | d d ƒ q¾W| j
 t d ƒ d } t | j | d d ƒd ƒ | k st ‚ d t g } x- t	 d ƒ D] } | j
 | d d t ƒ q9Wx) t	 d ƒ D] } | j
 | d d ƒ qiW| j
 t d t ƒ x- t	 d ƒ D] } | j
 | d d t ƒ qªWd } t | j | d d ƒd ƒ | k sþt ‚ t | d d |  d d d g ƒ } d g } x) t	 d ƒ D] } | j
 | d d ƒ q7W| j
 t ƒ d } t | j | d d ƒd ƒ | k s”t ‚ d t g } x- t	 d ƒ D] } | j
 | d d t ƒ q®Wx) t	 d ƒ D] } | j
 | d d ƒ qÞWx- t	 d ƒ D] } | j
 | d d t ƒ q
Wt | d d |  d d d g ƒ j | d d ƒ} d } t | d ƒ | k st ‚ d  S(    NR$   R%   i   i   i    gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?g      à?g333333ã?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?s   0.699525841805253t   methodt   Euleriÿÿÿÿi	   i
   s'   1.07530466271334 - 0.0251200594793912*Is*   0.905546532085401 - 6.93889390390723e-18*Ii   s   1.08016557252834i   s*   0.976882381836257 - 1.65557671738537e-16*Igš™™™™™©?i=   s   -1.08140824719196i   s*   0.501421652861245 - 3.88578058618805e-16*I(   R   R   R"   R&   R   R   t   evalfR(   R   t   ranget   appendR   (   R$   R,   R%   R-   R1   R2   t   i(    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_evalf_euler/  sb    +$+!!+#+	++#	+2c       
   C   sd  t  d ƒ }  t t j |  ƒ d ƒ \ } } t d |  | d | |  d d d g ƒ } d d d d	 d
 d d d d d g
 } d } t | j | ƒ d ƒ | k s¤ t ‚ d d t g } x1 t	 d ƒ D]# } | j
 | d d d t ƒ qÂ Wx1 t	 d ƒ D]# } | j
 | d d d t ƒ qö Wd } t | j | ƒ d j d ƒ ƒ | k sQt ‚ t | d d |  d d d g ƒ } d } t | j | ƒ d ƒ | k sŸt ‚ d g } x) t	 d ƒ D] } | j
 | d d ƒ qµW| j
 t d ƒ d } t | j | ƒ d ƒ | k st ‚ d t g } x- t	 d ƒ D] } | j
 | d d t ƒ q*Wx) t	 d ƒ D] } | j
 | d d ƒ qZW| j
 t d t ƒ x- t	 d ƒ D] } | j
 | d d t ƒ q›Wd } t | j | ƒ d ƒ | k sét ‚ t | d d |  d d d g ƒ } d g } x) t	 d ƒ D] } | j
 | d d ƒ q"W| j
 t ƒ d } t | j | ƒ d ƒ | k syt ‚ d t g } x- t	 d ƒ D] } | j
 | d d t ƒ q“Wx) t	 d ƒ D] } | j
 | d d ƒ qÃWx- t	 d ƒ D] } | j
 | d d t ƒ qïWt | d d |  d d d g ƒ j | ƒ } d } t | d ƒ | k s`t ‚ d  S(   NR$   R%   i   i   i    gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?g      à?g333333ã?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?s   0.693146363174626iÿÿÿÿi	   i
   s   1.098616 + 1.36083e-7*Ii   s)   0.90929463522785 + 1.52655665885959e-16*Ii   s   0.999999895088917i   s)   1.00000003415141 + 6.11940487991086e-16*Igš™™™™™©?i=   s   -0.999999993238714i   s*   0.493152791638442 - 1.41553435639707e-15*I(   R   R   R"   R&   R   R   RR   R(   R   RS   RT   RB   R   (   R$   R,   R%   R-   R1   R2   RU   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_evalf_rk4|  sb    +$%!!.#%	%%#	%,c       
   C   s*  t  d ƒ }  t t j |  ƒ d ƒ \ } } t t |  ƒ |  d ƒ } t d |  d |  d d | d |  | d |  d | d |  d d	 d t d ƒ d g ƒ } | | k s· t ‚ t d	 d	 |  d d ƒ } t d |  |  d d	 | |  d d	 g ƒ } | | k st ‚ t t	 |  ƒ t |  ƒ |  t
 d	 |  ƒ ƒ } t d |  d d
 |  d d |  d d |  d d
 |  d d |  d d |  | d |  d d |  d d |  d d |  d d
 |  d | d d |  d d |  d d |  d d |  d |  d | d |  d d |  d |  d d |  d d |  t d ƒ d | d |  d d d	 d d g ƒ } | | k sŒt ‚ t |  t	 |  ƒ t |  ƒ d	 ƒ } t |  d | |  d | d |  d | d |  d | d |  d d d	 d	 d g ƒ } | | k st ‚ |  t	 |  ƒ t |  ƒ d	 j d d
 ƒ | j d d
 ƒ k s_t ‚ t t
 d	 |  ƒ d d	 ƒ } t | d |  d | d |  d d |  d	 | d |  d d	 d d g ƒ } | | k sÝt ‚ t t |  ƒ d |  ƒ } t d |  d d |  d d | d d |  d |  d | d |  d t d	 ƒ d | d |  d d d	 d t d g ƒ } | | k sˆt ‚ t t |  ƒ |  ƒ } t |  d d d |  | |  d | d |  d d d	 g ƒ } | | k sðt ‚ t t d |  ƒ ƒ } t |  d d |  | |  d | d |  d d d g ƒ } | | k sRt ‚ t t d |  ƒ t	 |  ƒ ƒ } t |  d |  d t d	 ƒ d |  d |  d t d ƒ d | |  d |  d d	 | d |  d |  d | d |  d d d	 t d	 ƒ d g ƒ } | | k st ‚ t t |  ƒ d |  ƒ } t d d |  | d | d |  | d |  d d d	 d g ƒ } | | k s‹t ‚ t t |  ƒ d |  d d ƒ} t d d |  | d | d |  | d |  d t d ƒ d d t d ƒ t d ƒ t d ƒ d d d t d ƒ d d t d ƒ d t d ƒ t d ƒ g ƒ } | | k sct ‚ t t
 |  ƒ d t d |  ƒ d t d ƒ d ƒ } t d | d |  | d d | d |  | d |  d t
 d ƒ d t d t d ƒ d d d	 d g ƒ } | | k st ‚ | j ƒ  } t
 |  ƒ d t d |  ƒ d t d ƒ d } | | k sgt ‚ t |  t d	 ƒ d d d	 ƒ} t |  | t d	 ƒ d |  d	 d	 g ƒ } | | k sÃt ‚ t t d	 |  d ƒ ƒ } t |  |  d d	 | |  d d	 g ƒ } | | k s	t ‚ t t |  ƒ t d |  ƒ ƒ j ƒ  t |  ƒ t d |  ƒ j ƒ  d k sh	t ‚ t d |  d t |  ƒ ƒ j ƒ  d |  d t |  ƒ k sª	t ‚ t |  d |  d d |  d d |  d |  d d d ƒ} t d |  d |  d d |  d |  d |  d d |  d d |  d d |  | |  d i d d d g d 6ƒ } | | k so
t ‚ t d	 |  d	 d d d d d	 ƒ} t d |  d	 | |  d	 i d	 d d g d 6ƒ } | | k sÖ
t ‚ t  d ƒ } t t | |  ƒ d |  ƒ} | j ƒ  t | ƒ t |  ƒ k s&t ‚ d  S(   NR$   R%   i   i   i   i   i   i    i   i
   i   i   iþÿÿÿi   i   iÿÿÿÿRB   R5   iýÿÿÿt   lenicst   a(   R   R   R"   R&   R   R   R   R
   R(   R   R   R   RM   R   R   R   R   R   R   R7   R   t   simplify(   R$   R,   R%   R-   R.   RY   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_expr_to_holonomicÊ  sŠ    D,.×a$CBNB=@;`:B Ae6860 *)#-B>I,$1c       	   C   s  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | d |  d d g ƒ j ƒ  } d t g  g  d |  ƒ } | | k sx t ‚ t t d |  | d |  d d g ƒ j ƒ  ƒ j	 ƒ  } d |  d d |  d d |  d } | | k sæ t ‚ t d |  | d | |  d d d g ƒ j ƒ  } |  d t d	 d
 |  ƒ d |  } | | k sMt ‚ t d |  | | d |  d d d t
 t ƒ g ƒ j ƒ  } d |  t t d ƒ d f t d ƒ d f |  d ƒ t
 t ƒ } | | k sÝt ‚ t t d |  | | d |  d d d t
 t ƒ g ƒ j ƒ  ƒ } t |  ƒ } | j t ƒ | k sEt ‚ t t |  d d |  | |  d | d |  d d t d ƒ d g ƒ j ƒ  ƒ } t d |  ƒ } | | k s·t ‚ t t |  | d | |  |  d d d g ƒ j ƒ  ƒ } t d |  ƒ } | | k st ‚ d  S(   NR$   R%   i   i    i   i   i   iþÿÿÿ(   i   i   i   (   i   i   (   R   R   R"   R&   R   t   to_hyperR	   R(   R   R9   R   R   R
   R   t   rewriteR   (   R$   R,   R%   R-   R.   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_to_hyper  s0    "6&1$;CA)(7c          C   s×  t  d ƒ }  t t j |  ƒ d ƒ \ } } t | d |  d d g ƒ j ƒ  } t |  ƒ } | | k sj t ‚ t | d d |  d d d g ƒ j ƒ  } t |  ƒ } | | k s± t ‚ t | d d |  d d d g ƒ j ƒ  } t	 |  ƒ } | | k sø t ‚ t d d |  d | |  d |  | d |  d d d g ƒ j ƒ  j
 ƒ  } d |  d d |  d } | | k sot ‚ t t |  ƒ d |  ƒ j |  d |  f ƒ j ƒ  } t |  ƒ d |  j |  d |  f ƒ } | | k sÙt ‚ t  d ƒ \ } } } } t t d |  d ƒ ƒ j ƒ  } | t |  d d ƒ } | | k s;t ‚ t t d |  d ƒ ƒ j ƒ  j ƒ  } | |  |  d d } | | k s‰t ‚ t t |  ƒ |  ƒ j ƒ  } d | |  d t t ƒ | t |  ƒ d |  d |  t t ƒ } | | k sût ‚ t t |  ƒ d	 d ƒj ƒ  } | t |  ƒ k s1t ‚ t t |  ƒ ƒ j ƒ  t |  ƒ k s[t ‚ t t d |  d ƒ ƒ j ƒ  } | t d |  d ƒ k s›t ‚ t d |  d d t d ƒ d ƒ j ƒ  } | d |  d d t d ƒ d k sót ‚ t t |  d d |  ƒ ƒ j ƒ  } | t |  ƒ t |  d ƒ k s?t ‚ t d
 |  d d |  t d ƒ d ƒ j ƒ  } |  t d ƒ d d
 |  d d t d ƒ d } | | k s³t ‚ t t d t d ƒ d f |  ƒ ƒ } t t d t d ƒ d f |  ƒ ƒ }	 t d ƒ }
 t d ƒ } | j ƒ  j i d | 6d |
 6ƒ |	 j ƒ  d k sNt ‚ i d g d 6d g t d ƒ d 6| _ | j ƒ  |	 k st ‚ t |  d ƒ j ƒ  |  d k s³t ‚ t d |  d d |  d ƒ j ƒ  j
 ƒ  d |  d d |  d k sÿt ‚ t  d ƒ } t d |  ƒ t | |  |  ƒ j ƒ  } d | |  d } | | k sVt ‚ t d |  ƒ t | |  |  ƒ j ƒ  } |  | d } | | k st ‚ t d |  ƒ t |  ƒ j ƒ  } | d |  k sÓt ‚ d  S(   NR$   R%   i   i    i   i   s   C_0, C_1, C_2, C_3i   R5   iþÿÿÿi   iýÿÿÿt   D_0RI   i   RY   gffffffö?g333333@(   iþÿÿÿiýÿÿÿ(   iþÿÿÿiýÿÿÿ(   R   R   R!   R&   R   R7   R   R(   R   R   R9   R   R   t	   integrateR   R0   R   R   R   R
   R   R	   R   R   R8   RZ   R>   (   R$   R,   R%   R-   R.   RI   R6   RJ   RK   R2   R_   RY   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_to_expr,  sv    "))52& &D*  ,,%'02%%9'&)#'' c          C   s†  t  d ƒ }  t t j |  ƒ d ƒ \ } } t t |  ƒ d |  d d ƒj |  d d f ƒ } d } t | ƒ | k sz t ‚ t t |  ƒ ƒ j |  d |  f ƒ j	 ƒ  } d t
 |  ƒ } | | k sÆ t ‚ t t |  ƒ ƒ j |  d d f ƒ } d t
 d ƒ } | | k st ‚ t t |  ƒ |  d d ƒj |  d d f ƒ } d	 } t | ƒ | k sXt ‚ t t |  ƒ d |  d d ƒj |  d d f ƒ } d
 } t | ƒ | k s¨t ‚ t t |  ƒ |  ƒ } | j |  ƒ j	 ƒ  t |  ƒ k såt ‚ | j |  d d f ƒ t d ƒ k st ‚ t t |  ƒ d |  ƒ } | j	 ƒ  } | j |  ƒ j	 ƒ  | j |  d |  f ƒ k sht ‚ | j |  d d f ƒ | j |  d d f ƒ k sžt ‚ t d |  d d ƒj |  ƒ j	 ƒ  t |  ƒ k sÕt ‚ t |  d d t |  ƒ d d ƒj |  ƒ j	 ƒ  } |  d d |  d d |  d t |  d ƒ d t |  ƒ } | | k s[t ‚ t t
 |  ƒ d |  d d i d d d g d 6ƒj |  ƒ j	 ƒ  } t d |  ƒ t
 |  ƒ d |  } | | k sÓt ‚ t t |  d |  ƒ ƒ j |  ƒ j	 ƒ  } |  t d ƒ d d |  d d |  d |  t |  d ƒ t t |  ƒ ƒ d |  t |  d ƒ } | | k srt ‚ t t |  d d ƒ ƒ j |  ƒ j	 ƒ  } t |  d d ƒ j |  ƒ } | | j ƒ  d k sÔt ‚ t d |  d d i d d d g d 6ƒ} t d |  d d d ƒ} | | k s*t ‚ t t
 |  ƒ d ƒ } | | j |  ƒ j	 ƒ  t d |  ƒ t
 |  ƒ d |  k s‚t ‚ d  S(   NR$   R%   i   R5   i   i   s   0.166270406994788i    s   0.659329913368450s   -0.423690480850035iÿÿÿÿi   i   i   R>   iþÿÿÿi   RX   (   R   R   R!   R&   R   R   R`   R   R(   R7   R   R   R   R   R   R
   R   RZ   (   R$   R,   R%   R-   R.   R1   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_integratej  sT    2*$.2'*3674@C#)d)*c    
      C   s  t  d ƒ \ }  } t t j |  ƒ d ƒ \ } } t |  | d d |  d d d g ƒ } | j ƒ  j ƒ  | j ƒ  j ƒ  j ƒ  k s‡ t ‚ t | d d |  d d d g ƒ } | j |  d ƒ j ƒ  | j ƒ  k sÔ t ‚ t	 t
 |  ƒ ƒ } | j ƒ  j ƒ  t |  ƒ |  k st ‚ | j | ƒ d k s)t ‚ t  d ƒ \ } } } } t
 |  ƒ }	 | j |  ƒ j ƒ  |	 j ƒ  k stt ‚ | j |  d ƒ j ƒ  j | t d ƒ d ƒ |	 j |  d ƒ j ƒ  k sÁt ‚ | j |  d ƒ j ƒ  j i t d ƒ d | 6d | 6ƒ |	 j |  d ƒ j ƒ  k st ‚ d  S(   Ns   x, yR%   i   i   i    s   C_0, C_1, C_2, C_3i   (   R   R   R!   R&   R   R0   R7   RZ   R(   R   R   R   R8   R
   RM   (
   R$   t   yR,   R%   R-   RI   R6   RJ   RK   R.   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt	   test_diff—  s    '0#*('Mc    
      C   su  t  d ƒ }  t d t d |  ƒ ƒ } | j ƒ  d t d |  ƒ k sL t ‚ t | j |  ƒ j ƒ  ƒ d k ss t ‚ t t j	 |  ƒ d ƒ \ } } t d |  ƒ } t
 d d |  | |  d i d g d	 6ƒ } | | k sÞ t ‚ | j ƒ  d |  k sú t ‚ t | j |  d	 d
 f ƒ ƒ t d |  j |  d	 d
 f ƒ ƒ k s@t ‚ t  d ƒ \ } } t t |  | | ƒ d |  ƒ} | j ƒ  t |  | | ƒ k s˜t ‚ | j |  ƒ j ƒ  t |  | | ƒ d	 | | k sÔt ‚ t t |  | | ƒ d |  ƒj |  ƒ j ƒ  } t | ƒ t |  | | ƒ | } | | k s7t ‚ t  d ƒ } t | |  |  ƒ } | j ƒ  | |  k srt ‚ | j |  ƒ j ƒ  | |  d
 d
 k sŸt ‚ t  d ƒ \ } }	 t |  ƒ t d t |  ƒ ƒ } | j ƒ  j | d ƒ } | |  d t d |  ƒ d k st ‚ t |  ƒ t d t |  ƒ ƒ } | j ƒ  j |	 d ƒ } | d |  t d |  ƒ d k sqt ‚ d  S(   NR$   g333333ó?gÍÌÌÌÌÌ@s   0.387096774193548*sin(3.1*x)R%   gÝ·:>j ò?gÝ·:>j ò¿i    i   i   s   y, zRY   s   D_2, C_1g      ð?(   R   R   R   R7   R(   R   R`   R   R#   R&   R   R   R8   (
   R$   R-   RG   R%   R.   Rc   t   zRY   t   D_2R6   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt)   test_extended_domain_in_expr_to_holonomic¨  s8    &'+F &</"- ( c          C   s  t  d ƒ }  t t t |  ƒ ƒ j ƒ  ƒ t |  ƒ k s< t ‚ t t t |  ƒ ƒ j ƒ  ƒ t |  ƒ k sl t ‚ t t t |  ƒ ƒ j ƒ  ƒ t |  ƒ k sœ t ‚ t t t |  ƒ ƒ j ƒ  ƒ j	 ƒ  t |  ƒ k sÒ t ‚ t d |  d d d ƒ j ƒ  d |  d d d k st ‚ t t t
 d |  ƒ d d ƒj ƒ  ƒ t
 d |  ƒ k sLt ‚ t t d ƒ d d f d |  ƒ } t | ƒ j ƒ  t | ƒ k s“t ‚ t t d ƒ t d ƒ f t d ƒ f |  ƒ } t t | ƒ j ƒ  ƒ t | ƒ j ƒ  d	 k sôt ‚ t t d t d ƒ d f |  ƒ ƒ } t t d t d ƒ d f |  ƒ ƒ } t d ƒ } t d ƒ } t d ƒ } t | j ƒ  ƒ j i d | 6d	 | 6ƒ | j	 ƒ  d	 k s¡t ‚ i d g d	 6d	 g t d ƒ d 6| _ t | j ƒ  ƒ | j	 ƒ  d	 k sðt ‚ t t
 t d ƒ d |  ƒ d t ƒ} | j ƒ  | t |  ƒ | t |  ƒ | t |  ƒ t |  ƒ j	 ƒ  d	 k sgt ‚ t t
 t d ƒ d |  ƒ d i t d ƒ t t ƒ t d ƒ t t ƒ g t d ƒ d 6ƒ} | j ƒ  t
 t d ƒ d |  ƒ t
 t d ƒ d |  ƒ j	 ƒ  d	 k st ‚ d  S(   NR$   i   i   i   i   RX   i   iýÿÿÿi    iþÿÿÿRI   R6   R_   t   initcondR>   iÿÿÿÿ(    (   iþÿÿÿiýÿÿÿ(   iþÿÿÿiýÿÿÿ(   R   R   R   R   t
   to_meijergR(   R   R   R   RZ   R   R	   R
   R   R9   R   R8   R>   t   FalseR7   R   R   (   R$   R-   R2   RI   R6   R_   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_to_meijergÇ  s.    0006><#$-4%%?'(%R\c    	      C   sí   t  d ƒ \ }  } t  d d t ƒ} t |  | f j ƒ  } t d ƒ t |  | d d | d ƒ d t t ƒ | } t | | d | ƒ} t | j	 | ƒ d ƒ \ } } t
 |  | d | | d d | | ƒ } | | k sé t ‚ d  S(   Ns   mu xt   sdt   positivei   t   domainR%   i   (   R   RE   R"   t	   get_fieldR   R   R   R   R   R&   R   R(   (	   t   muR$   Rl   t   Qt   et   h1RG   R%   t   h2(    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_gaussianá  s    >,c    	      C   sÚ   t  d d t ƒ\ }  } } | |  d | d | d t |  | ƒ } t |  | f j ƒ  } t | | d | ƒ} t | j | ƒ d ƒ \ } } t |  | |  | d d | d | | | ƒ } | | k sÖ t	 ‚ d  S(   Ns   a b xRm   i   Rn   R%   i   (
   R   RE   R    R"   Ro   R   R   R&   R   R(   (	   RY   t   bR$   Rr   Rq   Rs   RG   R%   Rt   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt	   test_betaî  s    ,4c    	      C   sÎ   t  d d t ƒ\ }  } } | |  | |  d t | | ƒ t |  ƒ } t |  | f j ƒ  } t | | d | ƒ} t | j | ƒ d ƒ \ } } t	 |  d | | | | | ƒ } | | k sÊ t
 ‚ d  S(   Ns   a b xRm   i   Rn   R%   (   R   RE   R   R   R"   Ro   R   R   R&   R   R(   (	   RY   Rv   R$   Rr   Rq   Rs   RG   R%   Rt   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt
   test_gammaú  s    0$c          C   s‰   t  d ƒ \ }  } t | j ƒ  } t | j |  ƒ d ƒ \ } } t d |  | |  ƒ | } t | |  | |  ƒ } | | k s… t ‚ d  S(   Ns   x nR%   iÿÿÿÿ(   R   R"   Ro   R   R&   R   R(   (   R$   RB   Rq   RG   R%   Rs   Rt   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_symbolic_power  s    c          C   sr   t  d ƒ }  t t j |  ƒ d ƒ \ } } t d |  | |  ƒ d } t d |  | |  ƒ } | | k sn t ‚ d  S(   NR$   R%   iÿÿÿÿiþÿÿÿi   (   R   R   R"   R&   R   R(   (   R$   RG   R%   Rs   Rt   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_negative_power  s
    c          C   s‘   t  d ƒ \ }  } t | j ƒ  } t | j |  ƒ d ƒ \ } } t d |  | |  ƒ | d } t | d |  | |  ƒ } | | k s t ‚ d  S(   Ns   x nR%   iÿÿÿÿi   (   R   R"   Ro   R   R&   R   R(   (   R$   RB   Rq   RG   R%   Rs   Rt   (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_expr_in_power  s    c          C   s«   t  d d t ƒ}  t t j |  ƒ d ƒ \ } } t |  d | j j | j j g | ƒ } t |  d d |  g | ƒ } | | k s‡ t ‚ | j	 d } | | k s§ t ‚ d  S(   NR$   RC   R%   i   i   i    (
   R   RE   R   R"   R&   R    R)   R*   R(   t
   listofpoly(   R$   R,   R%   t   dot   do2t   p2(    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   test_DifferentialOperatorEqPoly"  s    (N(B   t   sympy.holonomicR    R   R   R   R   R   t   sympy.holonomic.recurrenceR   R   t   sympyR   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/   R3   R4   R:   R;   R=   R@   RA   RH   RL   RO   RV   RW   R[   R^   Ra   Rb   Rd   Rg   Rk   Ru   Rw   Rx   Ry   Rz   R{   R€   (    (    (    sC   lib/python2.7/site-packages/sympy/holonomic/tests/test_holonomic.pyt   <module>   s<   . 		"		#	&						$	M	N	H		>	-							
				