σ
\K]c           @` s  d  d l  m Z m Z m Z d  d l Z d  d l j j Z	 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 m Z d   Z d	   Z d
 e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ e d k re j   n  d S(   i    (   t   absolute_importt   print_functiont   divisionN(   t   unittest_support(   t   voidt   float32t   jitt   guvectorize(   t   GUVectorizei   (   t   tagt   TestCasec   	   
   C` s₯   |  j  \ } } | j  \ } } x t |  D]r } xi t |  D][ } d | | | f <xB t |  D]4 } | | | f c |  | | f | | | f 7<qa Wq> Wq+ Wd  S(   Ni    (   t   shapet   range(	   t   At   Bt   Ct   mt   nt   pt   it   jt   k(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt
   matmulcore   s    c         C` s   |  | | | d <d  S(   Ni    (    (   t   at   xt   yt   out(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   axpy   s    t
   TestGUFuncc           B` sJ   e  Z d  Z d   Z e d  d    Z e d  d    Z d   Z RS(   t   cpuc         C` s¨   d } t  j | d d d t  j j | d d  } t  j | d d d t  j j | d d  } | | |  } t j | |  } t  j j | | d d d d	 d  S(
   Niι  i   i   t   dtypei   t   rtolgρhγ΅ψδ>t   atolg:0βyE>(   t   npt   arangeR   t   reshapet   utt   matrix_multiplyt   testingt   assert_allclose(   t   selft   gufunct	   matrix_ctR   R   R   t   Gold(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   check_matmul_gufunc   s    //t	   importantc         C` s   t  t d d |  j } | j t d  d   d  d   f t d  d   d  d   f t d  d   d  d   f f  | j   } |  j |  d  S(   Ns   (m,n),(n,p)->(m,p)t   target(   R   R   R.   t   addR   t   build_ufuncR,   (   R(   R)   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   test_gufunc'   s
    Xc         C` s   t  t t d  d   d  d   f t d  d   d  d   f t d  d   d  d   f  g d d |  j t  } |  j |  d  S(   Ns   (m,n),(n,p)->(m,p)R.   (   R   R   R   R.   R   R,   (   R(   R)   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   test_guvectorize_decor0   s    Wc         C` sz   t  t d d |  j } | j d  | j   } t j d d t j } | | | |  } t j j	 | | | |  d  S(   Ns   (), (), () -> ()R.   s   (intp, intp, intp, intp[:])i
   R   (
   R   R   R.   R/   R0   R!   R"   t   intpR&   t   assert_equal(   R(   R)   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   test_ufunc_like8   s    (   t   __name__t
   __module__R.   R,   R	   R1   R2   R5   (    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyR      s
   	
	t   TestGUFuncParallelc           B` s   e  Z e Z d  Z RS(   t   parallel(   R6   R7   t   Falset   _numba_parallel_test_R.   (    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyR8   F   s   t   TestGUVectorizeScalarc           B` sY   e  Z d  Z d Z e d  d    Z e d  d    Z d   Z d   Z d   Z	 RS(   s<   
    Nothing keeps user from out-of-bound memory access
    R   R-   c         C` s   t  d g d d |  j d t d    } t j d d t j j d d	  } | |  } x; t | j d
  D]& } | | | | j	   k sn t
  qn Wd S(   sw   
        Note that scalar output is a 0-dimension array that acts as
        a pointer to the output location.
        s   void(int32[:], int32[:])s   (n)->()R.   t   nopythonc         S` s@   d } x) t  |  j d  D] } | |  | 7} q W| | d <d  S(   Ng        i    (    (   R   R   (   t   inpR   t   tmpR   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   sum_rowX   s    i0u  R   i'  i   i    N(   R   R.   t   TrueR!   R"   t   int32R#   R   R   t   sumt   AssertionError(   R(   R@   R>   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   test_scalar_outputQ   s    $c         C` su   t  d g d d |  j d t d    } t j d
 d t j j d d  } | | d	  } |  j | d	 |  d  S(   Ns   int32[:], int32[:], int32[:]s   (n),()->(n)R.   R=   c         S` s8   x1 t  |  j d  D] } |  | | d | | <q Wd  S(   Ni    (   R   R   (   R>   R   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   foon   s    i   i
   R   i   i   (   R   R.   RA   R!   R"   RB   R#   t   assertPreciseEqual(   R(   RF   R>   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   test_scalar_inputk   s
    $c         C` s  d   } t  d g d d |  j |  } t j d  j t j  } | | d  } t j |  } | | d |  t j j | |  t j d  j t j  j	 d d  } | | d  } t j |  } x3 t
 | j d  D] } | | | d | |  qί Wt j j | |  d  S(	   Nc         S` s4   x- t  |  j  D] } | |  | d | | <q Wd  S(   Ni   (   R   t   size(   R>   R   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   pyfunc|   s    s   int32[:], int32, int32[:]s   (n),()->(n)R.   i
   i   i   i    (   R   R.   R!   R"   t   astypeRB   t
   zeros_likeR&   R4   R#   R   R   (   R(   RJ   t	   my_gufunct   arrt   gott   expectedt   ax(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   test_scalar_input_core_type{   s    		'c      	   C` sY   |  j  t  + } t d g d d |  j d    } Wd  QX|  j d t | j   d  S(   Ns   int32[:], int32, int32[:]s   (n),(n)->(n)R.   c         S` s   d  S(   N(    (   R   t   bt   c(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyRJ      s    s2   scalar type int32 given for non scalar argument #2(   t   assertRaisest	   TypeErrorR   R.   t   assertEqualt   strt	   exception(   R(   t   raisesRJ   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt!   test_scalar_input_core_type_error   s
    	c      	   C` sY   |  j  t  + } t d g d d |  j d    } Wd  QX|  j d t | j   d  S(   Ns   int32[:], int32[:]s
   (m,n)->(n)R.   c         S` s   d  S(   N(    (   R   RS   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyRJ   ’   s    s,   type and shape signature mismatch for arg #1(   RU   RV   R   R.   RW   RX   RY   (   R(   RZ   RJ   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   test_ndim_mismatch    s
    	(
   R6   R7   t   __doc__R.   R	   RE   RH   RR   R[   R\   (    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyR<   K   s   			t   TestGUVectorizeScalarParallelc           B` s   e  Z e Z d  Z RS(   R9   (   R6   R7   R:   R;   R.   (    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyR^   ͺ   s   t   __main__(   t
   __future__R    R   R   t   numpyR!   t   numpy.core.umath_testst   coret   umath_testsR$   t   numbaR   t   unittestR   R   R   R   t   numba.npyufuncR   t   supportR	   R
   R   R   R   R8   R<   R^   R6   t   main(    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_gufunc.pyt   <module>   s   "	
	,_