ó
¡¼™\c           @   sœ   d  d l  m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z m Z m Z m Z d „  Z d „  Z d „  Z d	 „  Z d
 S(   iÿÿÿÿ(   t   product(   t   St   symbolst   Functiont   exp(   t   range(   t   warns_deprecated_sympy(   t   apply_finite_difft   differentiate_finitet   finite_diff_weightst   as_finite_diffc          C   s  t  d ƒ \ }  } t d ƒ } t d |  | |  | g | |  | ƒ | |  | ƒ g |  ƒ | |  | ƒ | |  | ƒ d | j ƒ  d k s‘ t ‚ t d d d d g | d ƒ | d ƒ | d ƒ g d ƒ t d	 ƒ d | d ƒ d | d ƒ t d ƒ d | d ƒ j ƒ  d k st ‚ d  S(
   Ns   x ht   fi   i   i    i   i   i   i   (   R   R   R   t   simplifyt   AssertionErrorR   (   t   xt   hR   (    (    sD   lib/python2.7/site-packages/sympy/calculus/tests/test_finite_diff.pyt   test_apply_finite_diff   s    :96c          C   s  t  d d d d g d ƒ }  |  d d t d ƒ d d t d ƒ d g k sT t ‚ d d d d d	 d d
 d d g	 } t  d | t d ƒ ƒ }  xH t d ƒ D]: } |  d | t d ƒ g t d ƒ g d k sš t ‚ qš W|  d d t d ƒ g d k sÿ t ‚ |  d d t d ƒ t d ƒ d t d ƒ d g t d ƒ g d k sNt ‚ |  d d t d ƒ t d ƒ d t d ƒ d t d ƒ d t d ƒ d g t d ƒ g d k s¸t ‚ |  d d t d ƒ t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d g t d ƒ g d k s=t ‚ |  d d t d ƒ t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d g	 k sÌt ‚ x; t d ƒ D]- } |  d | t d ƒ g d k sÙt ‚ qÙW|  d d t d ƒ t d ƒ t d ƒ g t d ƒ g d k sQt ‚ |  d d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d g t d ƒ g d k sÀt ‚ |  d d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d g t d ƒ g d k sIt ‚ |  d d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d g	 k sÝt ‚ x; t d ƒ D]- } |  d | t d ƒ g d k sêt ‚ qêW|  d d t d ƒ t d ƒ t d ƒ t d ƒ d t d ƒ d g t d ƒ g d k s}t ‚ |  d d t d ƒ t d ƒ d t d ƒ d t d ƒ t d ƒ t d ƒ d t d ƒ d g t d ƒ g d k sút ‚ |  d d t d ƒ t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d  t d ƒ d  t d ƒ d! t d ƒ d! g	 k s‰t ‚ x; t d ƒ D]- } |  d | t d ƒ g d k s–t ‚ q–W|  d d t d ƒ t d ƒ t d ƒ t d ƒ t d ƒ g t d ƒ g d k s!t ‚ |  d d t d" ƒ d t d ƒ d t d ƒ d t d ƒ t d ƒ t d ƒ d t d ƒ d g t d ƒ g d k s£t ‚ |  d d t d# ƒ d t d$ ƒ d% t d$ ƒ d% t d ƒ d t d ƒ d t d ƒ d t d ƒ d t d ƒ d! t d ƒ d! g	 k s6t ‚ g  t d d ƒ D]b } g  t t | d d d d ƒ ƒ t t d | d d d ƒ ƒ D] } | t d ƒ ^ qŒ^ qF} g  t d ƒ D]< } t  i d d 6d d 6d d 6d d 6| | | d ƒ ^ q»}  |  d d d t d ƒ d t d ƒ d g k s5	t ‚ |  d d d t d ƒ d& t d ƒ d& t d ƒ d& t d ƒ d& g k s‰	t ‚ |  d d d t d ƒ d' t d( ƒ d' t d) ƒ d* t d) ƒ d* t d( ƒ d' t d ƒ d' g k s÷	t ‚ |  d d d t d ƒ d+ t d ƒ d+ t d, ƒ d+ t d- ƒ d+ t d- ƒ d+ t d, ƒ d+ t d ƒ d+ t d ƒ d+ g k s
t ‚ |  d d d t d ƒ t d ƒ g k s²
t ‚ |  d d d t d ƒ d. t d ƒ d t d ƒ d t d ƒ d. g k st ‚ |  d d d t d ƒ d/ t d( ƒ d0 t d) ƒ d1 t d) ƒ d1 t d( ƒ d0 t d ƒ d/ g k sut ‚ |  d d d t d ƒ d2 t d ƒ d3 t d, ƒ d4 t d5 ƒ d6 t d- ƒ d6 t d, ƒ d4 t d ƒ d3 t d ƒ d2 g k sþt ‚ d  S(7   Ni   i   i   i   i   i   i    iÿÿÿÿiþÿÿÿiýÿÿÿi   iüÿÿÿi   i	   i   i   i<   ii   i  i1   i   iZ   iÍ   iH   i;  i0  i   i=   i   i©   ix   i
   ið   i   i[   iz   i   i   i   i   iK   i€   i   iõ   iÉ  i   i€  i€  i@   i   i   i   i7ûÿÿi   (   R	   R   R   R   t   list(   t   dt   xlt   it   j(    (    sD   lib/python2.7/site-packages/sympy/calculus/tests/test_finite_diff.pyt   test_finite_diff_weights   sf    9!8'OjJ;JE+GoO:OE+bB;JE+ZF<NEuL8TD*EE1TE*Dc          C   sg   t  d ƒ }  t d ƒ } t ƒ  @ t | |  ƒ j |  ƒ |  d |  d |  |  d |  d g ƒ Wd  QXd  S(   NR   R   i   i   (   R   R   R   R
   t   diff(   R   R   (    (    sD   lib/python2.7/site-packages/sympy/calculus/tests/test_finite_diff.pyt   test_as_finite_diffh   s    
c          C   sE  t  d ƒ \ }  } t d ƒ } t | |  | ƒ t d ƒ |  | d t ƒ} g  t |  | g d d g ƒ D]$ \ } } | | t d ƒ d ^ qe \ } } } }	 | | | ƒ | | |	 ƒ | | |	 ƒ | | | ƒ }
 | |
 j ƒ  d k sí t ‚ t d	 ƒ } t | |  ƒ | |  ƒ d |  d t ƒ} | |  t d ƒ d ƒ | |  t d ƒ d ƒ | |  ƒ | |  t d ƒ d ƒ | |  t d ƒ d ƒ | |  ƒ } | | j ƒ  d k s¶t ‚ t | |  ƒ |  d
 d |  d |  d |  d g ƒ} | |  d ƒ |  d d
 | |  d ƒ |  d d
 d } | | j ƒ  d k sAt ‚ d  S(   Ns   x yR   i*   t   evaluateiÿÿÿÿi   i   i    t   gi   t   points(	   R   R   R   R   t   TrueR    R   R   R   (   R   t   yR   t   res0t   vt   signt   xmt   xpt   ymt   ypt   ref0R   t   res1t   ref1t   res2t   ref2(    (    sD   lib/python2.7/site-packages/sympy/calculus/tests/test_finite_diff.pyt   test_differentiate_finitep   s    +R6):>5:N(   t	   itertoolsR    t   sympyR   R   R   R   t   sympy.core.compatibilityR   t   sympy.utilities.pytestR   t   sympy.calculus.finite_diffR   R   R	   R
   R   R   R   R*   (    (    (    sD   lib/python2.7/site-packages/sympy/calculus/tests/test_finite_diff.pyt   <module>   s   ""	
	R	