ó
î&]\c           @` sÝ  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l 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 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$ m% Z% m& Z& m' Z' m( Z( d  d l) m* Z* d	 „  Z+ d
 „  Z, d  d „ Z- d  d  d  d „ Z. d „  Z/ d „  Z0 d e1 f d „  ƒ  YZ2 d e1 f d „  ƒ  YZ3 d e1 f d „  ƒ  YZ4 d e1 f d „  ƒ  YZ5 d „  Z6 d „  Z7 d „  Z8 d S(   i    (   t   divisiont   print_functiont   absolute_importN(   t   assert_equalt   assert_allcloset   assert_t   assert_almost_equalt   assert_array_almost_equal(   t   raises(
   t   arrayt   asarrayt   pit   sint   cost   aranget   dott   ravelt   sqrtt   round(   t   interpolate(   t   splrept   splevt   bisplrept   bisplevt   sproott   splprept   splintt   spaldet   spldert
   splantidert   insertt   dblint(   t   regrid_smthc         C` s.   t  j j t  j j t  j j t ƒ ƒ d |  ƒ S(   Nt   data(   t   ost   patht   joint   abspatht   dirnamet   __file__(   t   basename(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt	   data_file   s    $c         C` s   t  t |  j |  ƒ ƒ S(   N(   R   R   t   T(   t   x(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   norm2   s    c         C` sŽ   | d  k r d S|  d  k r  d S| d d k r: t |  ƒ S| d d k rT t |  ƒ S| d d k ro t |  ƒ S| d d k rŠ t |  ƒ Sd  S(   NR   s   sin(x)i   i    i   i   i   (   t   NoneR   R   (   R+   t   d(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   f1   s    

c         C` s˜   |  d  k r d S| | } | d d k r8 t |  | ƒ S| d d k rV t |  | ƒ S| d d k ru t |  | ƒ S| d d k r” t |  | ƒ Sd  S(   Ns   sin(x+y)i   i    i   i   i   (   R-   R   R   (   R+   t   yt   dxt   dyR.   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   f2)   s    
c         C` sE   t  g  t |  ƒ D]% } t | ƒ D] } | | g ^ q  q ƒ } | j S(   s7   Helper function to create an array of pairs of x and y.(   R	   R
   R*   (   R+   R0   t   at   bt   xy(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt	   makepairs7   s    >c          G` sO   d d l  } t | j d d ƒ rK | j j d j t t |  ƒ ƒ d ƒ n  d S(   s(   Produce some output if file run directlyi    Nt   __main__t   __put_printst    s   
(   t   syst   hasattrt   modulest   stderrt   writeR$   t   mapt   str(   R4   R;   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   put>   s    t   TestSmokeTestsc           B` s4  e  Z d  Z e d d d d e d d d d d „	 Z e d d d d e d d d d d e d e d „ Z e d d d d e d d d d d e d e d „ Z e d d d d e d d d d d e d e d „ Z	 e
 d	 d	 d d e d d e d d d d
 „
 Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sj   
    Smoke tests (with a few asserts) for fitpack routines -- mostly
    check that they are runnable
    i    i   i   c
         ` s¶  | d  k r | } n  |	 d  k r* | }	 n  | | | t ˆ  d d t ƒt ˆ  ƒ }
 | | | t d ˆ  d t ƒt ˆ  d ƒ } | |
 ƒ | | ƒ } } g  } ‡  ‡ f d †  } xt d d ƒ D]õ } t |
 | d ˆ d | d | d |	 ƒ} | r| d	 | | !} n | } g  } x‘ t | d ƒ D] } | | | ƒ } t | | | ƒ t | | | ƒ ƒ t | | | ƒ ƒ } t | | k  | | | | f ƒ | j | | f ƒ q+W| j | ƒ qÆ Wt	 d
 | d  ƒ t
 t | d ƒ ƒ t
 t |	 d ƒ ƒ t
 t | d ƒ ƒ t
 t | d ƒ ƒ f ƒ | r-d } n d } t	 d | t
 ˆ ƒ | f ƒ t	 d ƒ d } xO | D]G } t	 d | ƒ x | D] } t	 d | ƒ q‚Wt	 d ƒ | d } qgWd  S(   Ni   t   dtypec         ` sG   d t  ˆ  ƒ } d | d |  | } ˆ d k rC | d ˆ 7} n  | S(   Ng      ð?i   g      è?i    g     jø@(   t   float(   t   kR.   t   ht   tol(   t   Nt   s(    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   err_estU   s
    i   RJ   t   perRF   t   xei    s/   
f = %s  s=S_k(x;t,c)  x in [%s, %s] > [%s, %s]i   s   at knotss   at the middle of nodess    per=%d s=%s Evaluation %ss6    k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''s    %d : s    %.1e  %.1es   
(   R-   R   RE   t   rangeR   R,   R   R   t   appendRB   t   reprR   (   t   selft   fRL   RJ   R4   R5   RI   t   att   xbRM   R+   t   x1t   vt   v1t   nkRK   RF   t   tckt   tt   ndR.   RH   t   errRA   t   lt   r(    (   RI   RJ   sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   check_1K   sH    		,/'8$,	

gš™™™™™É?c         ` s³  | d  k r | } n  | d  k r* | } n  | | | t ˆ  d d t ƒt ˆ  ƒ } | | ƒ } ‡  ‡ f d †  } g  } xf t d d ƒ D]U } t | | d ˆ d | d | d | ƒ} | j t |	 |
 | ƒ t | | ƒ g ƒ qŠ Wt d	 | d  ƒ t	 t
 | d
 ƒ ƒ t	 t
 | d
 ƒ ƒ t	 t
 | d
 ƒ ƒ t	 t
 | d
 ƒ ƒ f ƒ t d | t	 ˆ ƒ ˆ  t	 t
 |	 d
 ƒ ƒ t	 t
 |
 d
 ƒ ƒ t	 t
 | d
 ƒ ƒ f ƒ t d ƒ d } x| D]ÿ } | d d k  rËd } n d } t d | | t | d ƒ t | d | |
 d ƒ | |	 d ƒ ƒ f ƒ d } xu | d D]i } t d | | | | ƒ ƒ } | | | ƒ } t | | k  | | f ƒ t d | | f ƒ | d } q*Wt d ƒ | d } q¬Wd  S(   Ni   RD   c         ` sG   d t  ˆ  ƒ } d | d |  | } ˆ d k rC | d ˆ 7} n  | S(   Ng      ð?i   g      è?i    g     jø@(   RE   (   RF   R.   RG   RH   (   RI   RJ   (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyRK   „   s
    i   RJ   RL   RF   RM   s/   
f = %s  s=S_k(x;t,c)  x in [%s, %s] > [%s, %s]i   s*    per=%d s=%s N=%d [a, b] = [%s, %s]  dx=%ssC    k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., ki    t   -t    s    %d   %s%.8f   %.1e iÿÿÿÿs
    %.1e %.1es   
(   R-   R   RE   RN   R   RO   R   R   RB   RP   R   t   absR   (   RQ   RR   RL   RJ   R4   R5   RI   RT   RM   t   iat   ibR1   R+   RV   RK   RX   RF   RY   R^   t   srR.   t   drR\   RH   (    (   RI   RJ   sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   check_2{   s@    		,',$,S
	/
c         C` sx  | d  k r | } n  | d  k r* | } n  | | | t | d d t ƒt | ƒ } | | ƒ } t d | d  ƒ t t | d ƒ ƒ t t | d ƒ ƒ f ƒ xÔ t d d ƒ D]Ã } t | | d | d | d | d	 | ƒ} | d k r`t | ƒ } t	 t
 | | ƒ d
 d d d d ƒt	 | t t d d d d g ƒ d d ƒt d | t | j ƒ  ƒ f ƒ q­ t t t | ƒ q­ Wd  S(   Ni   RD   s1     k  :     Roots of s(x) approx %s  x in [%s,%s]:i   i   RJ   RL   RF   RM   i    t   atolg»½×Ùß|Û=t   rtoli   i   gü©ñÒMbP?s
     %d  : %s(   R-   R   RE   RB   RP   R   RN   R   R   R   R   R   R	   t   tolistt   assert_raisest
   ValueError(   RQ   RR   RL   RJ   R4   R5   RI   RT   RM   Rc   Rd   R1   R+   RV   RF   RY   t   roots(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   check_3§   s     		,5'")#c         C` s  | d  k r | } n  | d  k r* | } n  | | | t | d d t ƒt | ƒ } | | | t d | d t ƒt | d ƒ } | | ƒ | | ƒ } } t d t t | d ƒ ƒ | f ƒ t d | d d  ƒ ƒ xt d d ƒ D]} t | | g d | d	 | d
 | d d ƒ\ } } t | | d | d	 | d
 | ƒ} t	 | | ƒ } t
 | d | | d ƒ ƒ } t
 t	 | d | ƒ | | d ƒ ƒ } t | d k  ƒ t | d k  ƒ t d | t g  | D] } t | d ƒ ^ qÆƒ | | f ƒ qè Wt d ƒ d } t | | g d | d	 | d
 | d d ƒ\ } } xE t d | d ƒ D]0 } t	 | | | ƒ } t d t | d ƒ ƒ qGWd  S(   Ni   RD   s    u = %s   N = %di   s<     k  :  [x(u), %s(x(u))]  Error of splprep  Error of splrep i    i   RJ   RL   RF   t   nestiÿÿÿÿg{®Gáz„?s"     %d  :  %s    %.1e           %.1es=   Derivatives of parametric cubic spline at u (first function):s    %s (   R-   R   RE   RB   RP   R   RN   R   R   R   Rb   R   (   RQ   RR   RL   RJ   R4   R5   RI   RT   RM   Rc   Rd   R1   R+   RU   RV   RW   RF   t   tckpt   uRY   t   uvt   err1t   err2t   zR.   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   check_4»   s6    		,/#0!'(
0i   c      
   C` sj  | | | t  | d d t ƒt | ƒ } | | | t  |	 d d t ƒt |	 ƒ } t | | ƒ } t | d | d | | d | d ƒ d |
 d | d | ƒ} | d | | !| d | | !g } t | d | d ƒ } t | d | d | ƒ } t | d | d ƒ } t | d ƒ t | d ƒ f | _ t t	 | | ƒ ƒ } t
 | d k  | ƒ t | ƒ d  S(   Ni   RD   i    RJ   t   kxt   kyg{®Gáz„?(   R   RE   R7   R   R   R3   t   lent   shapeR,   R   R   RB   (   RQ   RR   Rw   Rx   RT   RM   t   ybt   yet   Nxt   NyRJ   R+   R0   R6   RY   t   ttt   t2RW   t   v2R\   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   check_5Ù   s    ,,=$#c      	   C` sœ   t  d ƒ |  j d d ƒ |  j ƒ  |  j d d ƒ |  j d d ƒ |  j d d d d ƒ |  j d d t ƒ |  j d d t d	 d
 t d d d d ƒ d  S(   Ns   ***************** splrep/splevRJ   gíµ ÷Æ°>RS   i   RL   R5   g      ø?RM   i   gš™™™™™¹?(   RB   R_   R   (   RQ   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_smoke_splrep_splevç   s    

c         C` sb   t  d ƒ |  j ƒ  |  j d d ƒ |  j d d t d t ƒ |  j d d t d t d d ƒ d  S(	   Ns   ***************** splint/spaldeRL   i   Rc   gš™™™™™É?Rd   RI   i2   (   RB   Rg   R   (   RQ   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_smoke_splint_spaldeñ   s
    

c         C` s$   t  d ƒ |  j d d d d ƒ d  S(   Ns   ***************** sprootR4   gš™™™™™¹?R5   i   (   RB   Rn   (   RQ   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_smoke_sprootø   s    
c         C` s(   t  d ƒ |  j ƒ  |  j d d ƒ d  S(   Ns&   ***************** splprep/splrep/splevRI   i2   (   RB   Rv   (   RQ   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_smoke_splprep_splrep_splevü   s    

c         C` s   t  d ƒ |  j ƒ  d  S(   Ns   ***************** bisplev(   RB   R‚   (   RQ   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_smoke_bisplrep_bisplev  s    
N(   t   __name__t
   __module__t   __doc__R/   R   R-   R_   Rg   Rn   Rv   R3   R‚   Rƒ   R„   R…   R†   R‡   (    (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyRC   E   s   (0+/	
			t	   TestSplevc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` s~   d d d d d g } d d d d d g } t  | | ƒ } t d g | ƒ } t | j d	 ƒ t d | ƒ } t | j d
 ƒ d  S(   Ni   i   i   i   i   i   i   i   (   i   (    (   R   R   R   Rz   (   RQ   R+   R0   RY   Ru   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_1d_shape  s    c         C` s»   d d d d d g } d d d d d g } t  | | ƒ } t j d	 d
 d d g d d d d g g ƒ } t | | ƒ } t | d | ƒ } t | d | ƒ } t | t j | | f ƒ ƒ d  S(   Ni   i   i   i   i   i   i   i   g      ð?g      ø?g       @g      @g      @g      @g      @g      @i    (   R   t   npR	   R   R   t	   row_stack(   RQ   R+   R0   RY   RZ   Ru   t   z0t   z1(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_2d_shape  s    c         C` s±   d d d g } d d d g } t  | | d d ƒ} d d g d d g d  d d g g } x4 d
 D], } t t d d g | d	 | ƒ| | ƒ q^ Wt t t d d g | d	 d ƒd  S(   Ni   i   i   i    i   RF   iþÿÿÿi   t   ext(   i    i   i   (   R   R-   R   R   Rk   Rl   (   RQ   R+   R0   RY   t   rstlR’   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_extrapolation_modes  s    $*(   Rˆ   R‰   RŒ   R‘   R”   (    (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyR‹     s   			t
   TestSplderc           B` sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` sh   t  j d d d ƒ d } t  j d | ƒ } t | | ƒ |  _ t t  j |  j d ƒ j ƒ  d k ƒ d  S(   Ni    i   id   i   i   (   R   t   linspaceR   R   t   splR   t   difft   ptp(   RQ   R+   R0   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   setup_method-  s    c         C` s„   x} t  d ƒ D]o } t |  j | ƒ } t | | ƒ } t |  j d | d ƒ t |  j d | d ƒ t |  j d | d ƒ q Wd  S(   Ni   i    i   i   (   RN   R   R—   R   R   R   (   RQ   t   nt   spl2t   spl3(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_inverse6  s    c         C` s¾   x· t  d	 ƒ D]© } t j d d d ƒ } | d k rQ | | d k | d k @} n  t | |  j | ƒ } t |  j | ƒ } t | | ƒ } | d k r© t | | d d ƒq t | | ƒ q Wd  S(
   Ni   i   iÿÿÿÿi   iÐ  i    Ri   gíµ ÷ÆÀ>i   (   RN   R   R–   R   R—   R   R   (   RQ   R›   t   xxR2   Rœ   t   dy2(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_splder_vs_splev?  s    c         C` sˆ   t  |  j ƒ } t j d d d ƒ } x] | D]U } xL | D]D } t | | |  j ƒ } t | | ƒ t | | ƒ } t | | ƒ q8 Wq+ Wd  S(   Ni    i   i   (   R   R—   R   R–   R   R   R   (   RQ   Rœ   RŸ   RU   t   x2t   y1t   y2(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_splantider_vs_splintR  s    c         C` s   t  t t |  j d ƒ d  S(   Ni   (   Rk   Rl   R   R—   (   RQ   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_order0_diff`  s    c         C` sŸ   t  d |  j d d ƒ} t | d ƒ t t t | d ƒ t  d |  j d d ƒ} t | d ƒ t t t | d ƒ t  d |  j d d ƒ} t t t | d ƒ d  S(   Ng      à?t   mi   i   i   i   (   R   R—   R   Rk   Rl   (   RQ   Rœ   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt	   test_kinkc  s    c         C` s²   x« t  d ƒ D] } |  j \ } } } t j | | | f } t j | | f ƒ } t | | | f | ƒ } t | | ƒ } t | | d ƒ t | | d ƒ t | | d ƒ q Wd  S(   Ni   i    i   i   (	   RN   R—   R   t   c_t   dstackR   R   R   R   (   RQ   R›   RZ   t   cRF   t   c2Rœ   R   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_multidimq  s    (	   Rˆ   R‰   Rš   Rž   R¡   R¥   R¦   R¨   R­   (    (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyR•   ,  s   								t   TestBisplrepc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s‰   t  j d d d ƒ } t  j d d d ƒ } t  j | | ƒ \ } } t  j j | j Œ  } t t t | j	 ƒ  | j	 ƒ  | j	 ƒ  d d ƒd  S(   Ni    i   il  RJ   (
   R   R–   t   meshgridt   randomt   randRz   Rk   t   OverflowErrorR   R   (   RQ   R4   R5   R+   R0   Ru   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_overflow  s
    c         C` su   t  j t d ƒ ƒ d } t | d  d  … d f | d  d  … d f | d  d  … d f d d d d d	 d d
 t ƒd  S(   Ns   bug-1310.npzR!   i    i   i   Rw   i   Rx   RJ   t   full_output(   R   t   loadR)   R   t   True(   RQ   R!   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_regression_1310ˆ  s    Q(   Rˆ   R‰   R³   R·   (    (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyR®   €  s   	c          C` sø   t  j d d ƒ }  t  j d d ƒ } t  j |  | ƒ \ } } t j |  | d | | ƒ } t | j ƒ } | j | j ƒ t	 t
 d d d d | ƒ d ƒ t	 t
 d d d d | ƒ d ƒ t	 t
 d d d d | ƒ d ƒ t	 t
 d d d d | ƒ d ƒ d  S(	   Ni    i   i   g      à?g      Ð?g      è?iœÿÿÿid   (   R   R–   R¯   R   t   RectBivariateSplinet   listRY   t   extendt   degreesR   R   (   R+   R0   RŸ   t   yyt   rectRY   (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_dblint”  s    c          C` s~  t  j d d d d g ƒ t  j d d d d g ƒ d f }  |  \ } } } t  j d d d d g ƒ } t t | |  ƒ | d | d | d | | d	 ƒ t t | |  d ƒ | d | d | d	 ƒ t  j j d
 ƒ t  j t  j j d ƒ ƒ } t  j j d ƒ } t | | ƒ \ } } } | d d | d d g } t | | | f | ƒ } t t | | | | f | ƒ t | | ƒ ƒ d  S(   Ng        g      @g®g¥œù¿g~„'	…@i   iýÿÿÿi    i   i   iÒ  i   g      ð?iÿÿÿÿ(	   R   R	   R   R   R°   t   seedt   sortR   R   (   RY   RZ   R«   RF   R+   R0   t   tck2(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_splev_der_k¤  s    	6-c          C` s  t  j j d ƒ t  j d d d ƒ }  |  } t  j j d d ƒ j ƒ  } d } d } t |  | | d  d  d  d  d | d | d d ƒ\ } } } } }	 }
 } | |  | |  |	 | | d | | d  | | f } t  j d g ƒ } t  j d g ƒ } t	 t
 t f t | | | ƒ d  S(	   Ni   i    i   Rw   Rx   RJ   g        i  ( (   R   R°   R¿   R–   t   randnR   R    R-   t   zerosRk   t   RuntimeErrort   MemoryErrorR   (   R+   R0   Ru   Rw   Rx   t   nxt   txt   nyt   tyR«   t   fpt   ierRY   t   xpt   yp(    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   test_bisplev_integer_overflow¾  s    B5(9   t
   __future__R    R   R   R"   t   numpyR   t   numpy.testingR   R   R   R   R   t   pytestR   Rk   R	   R
   R   R   R   R   R   R   R   R   t   scipyR   t   scipy.interpolate.fitpackR   R   R   R   R   R   R   R   R   R   R   R   t   scipy.interpolate.dfitpackR    R)   R,   R/   R3   R7   RB   t   objectRC   R‹   R•   R®   R¾   RÂ   RÏ   (    (    (    sC   lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyt   <module>   s*   (FR				Á&T		