ó
\K]c           @` si  d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l m	 Z	 m
 Z
 d  d l m Z d  d l m Z d d l m Z m Z e j	 Z e j d	 d
 e ƒj d d ƒ Z e j ƒ  Z e j d d ƒ Z e j d d
 e ƒj d d ƒ d d d … d d d … f Z d „  Z d „  Z d „  Z d „  Z e g Z d e f d „  ƒ  YZ e  d k ree j! ƒ  n  d S(   i    (   t   absolute_importt   print_functiont   divisionN(   t   unittest_support(   t   float32t   jit(   t	   Vectorize(   t   TypingErrori   (   t   tagt   TestCaseiP   t   dtypei   i
   t   ordert   Fi   i   c         C` s   |  | S(   N(    (   t   at   b(    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   add   s    c         C` s   |  | | | S(   N(    (   R   R   t   ct   d(    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   add_multiple_args   s    c         C` s>   d } x1 t  |  j d ƒ D] } | |  | | | 7} q W| S(   Ng        i    (   t   ranget   shape(   R   R   t   resultt   i(    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt
   gufunc_add   s    c         C` s-   x& t  | j ƒ D] } |  j | ƒ } q W| S(   N(   R   t   ndimt   reduce(   t   ufunct   argR   (    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   ufunc_reduce#   s    t
   TestUFuncsc           B` sb   e  Z d  „  Z d „  Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z d „  Z RS(   c         G` së   | t  | Œ } | j  t t t ƒ ƒ | j ƒ  } | | j f } |  j | | | ƒ | | d | ƒ|  j t | | ƒ t j | ƒ d | ƒ|  j | j | ƒ t j  j | ƒ d | ƒ|  j | j	 | | ƒ t j  j	 | | ƒ d | ƒd S(   s   Test ufunc attributest   msgN(
   R   R   t   build_ufuncR   t   assertPreciseEqualR   t   npt   sumt
   accumulatet   outer(   t   selft   clsR   R   t   argst
   vectorizerR   t   info(    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   _test_ufunc_attributes4   s    #(+c   	      C` sx   | t  ƒ } | j t t t t t ƒ ƒ | j ƒ  } | | j f } |  j | | | | | ƒ | | | | d | ƒd S(   s   Test multiple argsR   N(   R   R   R   R   R   R    (	   R%   R&   R   R   R   R   R(   R   R)   (    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   _test_broadcasting@   s
    t	   importantc      	   C` s°   x) t  D]! } |  j | t d t d ƒ q Wx! t  D] } |  j | t t ƒ q3 WxY t  D]Q } |  j | t d  d  … t j d  d  … f t t j d  d  … d  d  … f ƒ qW Wd  S(   Ni    (   t   vectorizersR*   R   R   R!   t   newaxis(   R%   t   v(    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   test_ufunc_attributesI   s    (c         C` s  x7 t  D]/ } |  j | t d t d t d t d ƒ q Wx' t  D] } |  j | t t t t ƒ qA Wx— t  D] } |  j | t d  d  … t j d  d  … f t t j d  d  … d  d  … f t d  d  … t j d  d  … f t t j d  d  … d  d  … f ƒ qk Wd  S(   Ni    (   R-   R+   R   R   R   R   R!   R.   (   R%   R/   (    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   test_broadcastingS   s    -Gc         C` sŽ   x‡ t  D] } | t ƒ } | j t t t ƒ ƒ | j ƒ  } t t j d  d  … t j t j d  d  … f } |  j | t | ƒ t | ƒ q Wd  S(   N(	   R-   R   R   R   R   R!   R.   R    R   (   R%   R/   R(   R   t   broadcasting_b(    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   test_implicit_broadcasting]   s    .c   	      C` sÍ   t  j d ƒ } t | j _ g  } d } | j t d t ƒ t | f ƒ | j t d t ƒ t	 d f ƒ xa | D]Y \ } } } d „  } |  j
 | ƒ  } | | ƒ | ƒ Wd  QX|  j | t | j ƒ ƒ ql Wd  S(   Ni
   s<   ufunc 'sin' called with an explicit output that is read-onlyt   nopythons   output array is read-onlyc         S` s,   t  j |  j |  j ƒ } t  j | |  ƒ d  S(   N(   R!   t   onesR   R
   t   sin(   t   xR   (    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   tests   s    (   R!   R5   t   Falset   flagst	   writeablet   appendR   t   TrueR   t
   ValueErrort   assertRaisest   assertInt   strt	   exception(	   R%   t   zt   testst   expectt   dect   excR   R8   t   raises(    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt)   test_ufunc_exception_on_write_to_readonlyh   s    
	(	   t   __name__t
   __module__R*   R+   R   R0   R1   R3   RI   (    (    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyR   2   s   			

t   __main__i@  ("   t
   __future__R    R   R   t   numpyR!   t   numbaR   t   unittestR   R   t   numba.npyufuncR   t   numba.errorsR   t   supportR   R	   R
   t   aranget   reshapeR   t   copyR   R   R   R   R   R   R   R-   R   RJ   t   main(    (    (    s>   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufunc.pyt   <module>   s&   	!=					K