
\K]c           @  s   d  d l  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 e j d    Z d e e j f d	     YZ e d
 k r e j   n  d S(   i(   t   print_functionN(   t   cuda(   t   unittest_support(   t   ENABLE_CUDASIM(   t   SerialMixinc         C  s   |  | S(   N(    (   t   at   b(    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   <lambda>	   t    t   TestReductionc           B  sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C  sH   t  j | d t  j d } | j   } t |  } |  j | |  d  S(   Nt   dtypei   (   t   npt   aranget   float64t   sumt
   sum_reducet   assertEqual(   t   selft   nt   At   expectt   got(    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   _sum_reduce   s    c         C  sj   t  r d d g } n3 d d d d d d d d d	 d
 d d d d d g } x | D] } |  j |  qO Wd  S(   Ni   i   i   i   i   i   i   i  i   i  i   i   i  i i  (   R   R   (   R   t
   test_sizesR   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   test_sum_reduce   s    c         C  sH   t  j d d t  j d } | j   } t |  } |  j | |  d  S(   Ni    R
   i   (   R   R   R   R   R   R   (   R   R   R   R   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   test_empty_array_host!   s    c         C  sW   t  j d d t  j d } t j |  } | j   } t |  } |  j | |  d  S(   Ni    R
   i   (   R   R   R   R   t	   to_deviceR   R   R   (   R   R   t   dAR   R   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   test_empty_array_device'   s
    c         C  si   t  j d    } t j d d t j d } | j   } | | d d } |  j t j | |   d  S(   Nc         S  s   |  | S(   N(    (   R   R   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyR   /   R   i@   R
   i   t   init(   R   t   reduceR   R   R   t   prodt
   assertTruet   allclose(   R   t   prod_reduceR   R   R   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   test_prod_reduce.   s
    c         C  s`   t  j d    } t j d d t j d } | j   } | | d d } |  j | |  d  S(   Nc         S  s   t  |  |  S(   N(   t   max(   R   R   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyR   6   R   i  R
   i   R   i    (   R   t   ReduceR   R   R   R$   R   (   R   t
   max_reduceR   R   R   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   test_max_reduce5   s
    c         C  sX   d } t  j d d t  j d } | j   | } t | d | } |  j | |  d  S(   Ni   i
   R
   i   R   (   R   R   R   R   R   R   (   R   R   R   R   R   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   test_non_identity_init<   s
    c         C  s   t  j d d t  j d } t j t  j d d t  j  } | j   } t | d | } |  j |  |  j	 | | d  d  S(   Ni
   R
   i   t   resi    (
   R   R   R   R   R   t   zerosR   R   t   assertIsNoneR   (   R   R   R   R   R)   (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   test_result_on_deviceC   s    !(
   t   __name__t
   __module__R   R   R   R   R#   R'   R(   R,   (    (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyR	      s   							t   __main__(   t
   __future__R    t   numpyR   t   numbaR   R   t   unittestt   numba.configR   t   numba.cuda.testingR   R%   R   t   TestCaseR	   R-   t   main(    (    (    sE   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_reduction.pyt   <module>   s   @