σ
\K]c           @@ sΊ   d  d l  m Z m Z d  d l Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z d   Z d e j f d	     YZ d
 e j f d     YZ e d k rΆ e j   n  d S(   i    (   t   print_functiont   absolute_importN(   t   unittest_support(   t   HsaGUFuncVectorize(   t   HSAGenerializedUFunc(   t   guvectorizec         C@ s4   x- t  | j  D] } |  | | | | | <q Wd  S(   N(   t   ranget   size(   t   at   bt   ct   i(    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt   ufunc_add_core   s    t   TestGUFuncBuildingc           B@ s#   e  Z d    Z d   Z d   Z RS(   c         C@ s  t  t d  } | j d  | j d  | j   } |  j | t  t j d d t j } t j d d t j d } | | } | | |  } t j	 j
 | |  |  j | j | j  |  j t j t j  | j  | j d d  } | j d d  } | | } | | |  } t j	 j
 | |  |  j | j | j  |  j t j t j  | j  | j d	 d
 d  } | j d	 d
 d  } | | } | | |  } t j	 j
 | |  |  j | j | j  |  j t j t j  | j  t j d d t j } t j d d t j d } | | } | | |  } t j	 j | |  |  j | j | j  |  j t j t j  | j  | j d d  } | j d d  } | | } | | |  } t j	 j | |  |  j | j | j  |  j t j t j  | j  d  S(   Ns   (x),(x)->(x)s$   (float32[:], float32[:], float32[:])s   (intp[:], intp[:], intp[:])id   t   dtypei   i2   i   i   i
   (   R   R   t   addt   build_ufunct   assertIsInstanceR   t   npt   aranget   intpt   testingt   assert_equalt   assertEqualR   t   reshapet   float32t   assert_allclose(   t   selft   ufbldrt   ufunct   At   Bt   expectedt   got(    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt   test_gufunc_building   sP    




c         C@ s€   d   } t  | d  } | j d  | j   } t j d d t j j d d  } | |  } x< t | j d  D]' } t j	 j
 | | j   | |  qu Wd  S(	   Nc         S@ s@   d } x) t  |  j d  D] } | |  | 7} q W| | d <d  S(   Ng        i    (   R   t   shape(   t   inpt   outt   tmpR   (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt   sum_rowK   s    s   (n)->()s   void(int32[:], int32[:])i,  R   id   i   i    (   R   R   R   R   R   t   int32R   R   R#   R   R   t   sum(   R   R'   R   R   R$   R%   R   (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt"   test_gufunc_building_scalar_outputJ   s    	$c         C@ s  d   } t  | d  } | j d  | j   } t j d  } t j d d t j j d d  } t j d d t j j d d  } | | | |  } xj t d  D]\ } xS t d  D]E }	 | | | |	 f | | |	 f }
 |  j |
 | | |	 f k  qΊ Wq§ Wt j d d t j } t j d d t j } | | | |  } xN t d  D]@ } | | | | | }
 |  j |
 | | k |
 | | f  qVWt j d d t j } t j d d t j j d d  } t j d d t j j d d  } | | | |  } x t d  D]s } xj t d  D]\ }	 | | | | |	 f | | |	 f }
 |  j |
 | | |	 f k |
 | | |	 f f  q,WqWd  S(   Nc         S@ s<   x5 t  | j d  D]  } |  | | | | | | <q Wd  S(   Ni    (   R   R#   (   R   t   xt   yR%   R   (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt   axpy\   s    s   (),(t),(t)->(t)s1   void(float32, float32[:], float32[:], float32[:])i   i
   R   i   (	   R   R   R   R   R   R   R   R   t
   assertTrue(   R   R-   R   t   saxpyR   t   Xt   YR%   t   jR   t   exp(    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt   test_gufunc_scalar_input_saxpy[   s4    	$$"%($$&(   t   __name__t
   __module__R"   R*   R4   (    (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyR      s   	9	t   TestGUFuncDecorc           B@ s   e  Z d    Z RS(   c   	      C@ s  t  d g d d d d    } t j d  } t j d d t j j d	 d  } t j d d t j j d	 d  } | | | |  } xj t d	  D]\ } xS t d  D]E } | | | | f | | | f } |  j | | | | f k  qͺ Wq Wt j d d t j } t j d d t j } | | | |  } xN t d  D]@ } | | | | | } |  j | | | k | | | f  qFWt j d	 d t j } t j d d t j j d	 d  } t j d d t j j d	 d  } | | | |  } x t d	  D]s } xj t d  D]\ } | | | | | f | | | f } |  j | | | | f k | | | | f f  qWq	Wd  S(
   Ns1   void(float32, float32[:], float32[:], float32[:])s   (),(t),(t)->(t)t   targett   rocc         S@ s<   x5 t  | j d  D]  } |  | | | | | | <q Wd  S(   Ni    (   R   R#   (   R   R+   R,   R%   R   (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyR/      s    i   i
   R   i   (   R   R   R   R   R   R   R.   (	   R   R/   R   R0   R1   R%   R2   R   R3   (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt   test_gufunc_decorator   s0    	$$"%($$&(   R5   R6   R:   (    (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyR7      s   t   __main__(   t
   __future__R    R   t   numpyR   t   numbaR   t   unittestt   numba.roc.vectorizersR   t   numba.roc.dispatchR   R   R   t   TestCaseR   R7   R5   t   main(    (    (    sH   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_gufuncbuilding.pyt   <module>   s   	q%