ó
\K]c           @` sG  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l 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 „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z e j e j d k oõ e d k  oõ e j d k  d ƒ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k rCe j  ƒ  n  d S(   i    (   t   absolute_importt   print_functiont   divisionN(   t   unittest_support(   t	   vectorizet   guvectorize(   t   versioni   (   t   TestCasec         C` s#   |  d k  r t  d ƒ ‚ n  |  d S(   Ng        s   Value must be positiveg      à?(   t
   ValueError(   t   val(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   sqrt   s    c         C` sW   xP t  |  j d ƒ D]; } |  | d k  r9 t d ƒ ‚ n  |  | | d | | <q Wd  S(   Ni    s   Value must be positive(   t   ranget   shapeR   (   t   inpt   nt   outt   i(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt
   gufunc_foo   s    c         C` s   |  | S(   N(    (   t   at   b(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   truediv   s    c         C` s   |  | S(   N(    (   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   floordiv   s    c         C` s   |  | S(   N(    (   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt	   remainder"   s    c         C` s   |  | S(   N(    (   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   power%   s    t   win32i   i   i    s@   test disabled because of FPU state handling issue on Numpy < 1.8t   TestExceptionsc           B` sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s0   
    Test raising exceptions inside ufuncs.
    c      	   K` s»   t  d g |  t ƒ } t j d d d d d d g d t j ƒ} t j | ƒ } |  j t ƒ  } | | | ƒ Wd  QX|  j d	 t	 | j
 ƒ ƒ |  j t | ƒ d d
 d d d d g ƒ d  S(   Ns   float64(float64)i   i   iþÿÿÿi	   iÿÿÿÿi   t   dtypes   Value must be positivei   i    i   (   R   R
   t   npt   arrayt   float64t
   zeros_liket   assertRaisesR   t   assertInt   strt	   exceptiont   assertEqualt   list(   t   selft   vectorize_argst   ft   arrR   t   cm(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   check_ufunc_raise3   s    *c         C` s   |  j  d t ƒ d  S(   Nt   nopython(   R*   t   True(   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_ufunc_raise=   s    c         C` s   |  j  d t ƒ d  S(   Nt   forceobj(   R*   R,   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_ufunc_raise_objmode@   s    c         K` sœ   t  d g d |  t ƒ } t j d d d d g d t j ƒ} t j | ƒ } |  j t ƒ  } | | d | ƒ Wd  QX|  j t	 | ƒ d d d d g ƒ d  S(	   Ns   int32[:], int32[:], int32[:]s   (n),()->(n)i   i   iýÿÿÿi   R   i    (
   R   R   R   R   t   int32R   R   R   R#   R$   (   R%   R&   R'   R(   R   R)   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   check_gufunc_raiseC   s    $c         C` s   |  j  d t ƒ d  S(   NR+   (   R1   R,   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_gufunc_raiseM   s    c         C` s   |  j  d t ƒ d  S(   NR.   (   R1   R,   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_gufunc_raise_objmodeP   s    (	   t   __name__t
   __module__t   __doc__R*   R-   R/   R1   R2   R3   (    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyR   .   s   	
			
	t   TestFloatingPointExceptionsc           B` s˜   e  Z d  Z e j e d „ ƒ Z e d „  ƒ Z d „  Z	 d „  Z
 e d „  ƒ Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z e d „  ƒ Z d „  Z RS(   s{   
    Test floating-point exceptions inside ufuncs.

    Note the warnings emitted by Numpy reflect IEEE-754 semantics.
    c         c` s¤   t  j d t ƒ  } t  j d ƒ d  VWd  QXd } xT | D]L } xC | D]; } | t | j ƒ k rG |  j | j | ƒ | d 7} qG qG Wq: W|  j | t | ƒ ƒ d  S(   Nt   recordt   alwaysi    i   (	   t   warningst   catch_warningsR,   t   simplefilterR!   t   messageR#   t   categoryt   len(   R%   t   messagesR>   t   catcht   foundt   wt   m(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   check_warnings[   s    c         C` s½   t  d t ƒ t ƒ } t j d d d d g d | ƒ} t j d d d d g d | ƒ} t j d t d	 ƒ t d
 ƒ d g ƒ } |  j d d g ƒ $ | | | ƒ } |  j | | ƒ Wd QXd S(   s'   
        Test 1 / 0 and 0 / 0.
        R+   g      @g      @g        g       @R   g      ð?g      @t   inft   nang       @s   divide by zero encountereds   invalid value encounteredN(   R   R,   R   R   R   t   floatRE   t   assertPreciseEqual(   R%   R   R'   R   R   t   expectedt   res(    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   check_truediv_reali   s    !!'	c         C` s   |  j  t j ƒ d  S(   N(   RL   R   R   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_truediv_floatw   s    c         C` s   |  j  t j ƒ d  S(   N(   RL   R   R0   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_truediv_integerz   s    c   	      C` s“   t  d t ƒ | ƒ } t j d d d d g ƒ } t j d d d d g ƒ } t j | ƒ } |  j | ƒ $ | | | ƒ } |  j | | ƒ Wd QXd S(	   s)   
        Test 1 // 0 and 0 // 0.
        R+   g      @g      @g        g      "@g      ð?g      @N(   R   R,   R   R   RE   RI   (	   R%   t   pyfunct   valuesR@   R'   R   R   RJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   check_divmod_float}   s    c         C` s5   |  j  t d t d ƒ t d ƒ d g d d g ƒ d  S(   Ng      @RF   RG   g       @s   divide by zero encountereds   invalid value encountered(   RQ   R   RH   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_floordiv_floatŠ   s    	c         C` s2   |  j  t d t d ƒ t d ƒ d g d g ƒ d  S(   Ng        RG   g      ð?s   invalid value encountered(   RQ   R   RH   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_remainder_float   s    	c         C` s“   t  d t ƒ | ƒ } t j d d d d g ƒ } t j d d d d g ƒ } t j | ƒ } |  j g  ƒ $ | | | ƒ } |  j | | ƒ Wd QXd S(	   s'   
        Test 1 % 0 and 0 % 0.
        R+   i   i   i    i	   i   i   N(   R   R,   R   R   RE   RI   (   R%   RO   RP   R'   R   R   RJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   check_divmod_int•   s    c         C` s    |  j  t d d d d g ƒ d  S(   Ni   i    i   (   RT   R   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_floordiv_int¢   s    c         C` s    |  j  t d d d d g ƒ d  S(   Ni    i   (   RT   R   (   R%   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_remainder_int¥   s    c         C` s±   t  d t ƒ t ƒ } t j d d d d g ƒ } t j d d d d	 g ƒ } t j d t d
 ƒ t d
 ƒ d g ƒ } |  j d d g ƒ $ | | | ƒ } |  j | | ƒ Wd QXd S(   s5   
        Test 0 ** -1 and 2 ** <big number>.
        R+   g      @g        g       @g       @g      ð?g      ð¿g@Œµx¯Dg      @RF   g      °@s   divide by zero encountereds   overflow encounteredN(   R   R,   R   R   R   RH   RE   RI   (   R%   R'   R   R   RJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_power_float¨   s    '	c         C` s·   t  j } t d g d t ƒt ƒ } t  j d d d g d | ƒ} t  j d d d	 g d | ƒ} t  j d d d g d | ƒ} |  j g  ƒ $ | | | ƒ } |  j | | ƒ Wd QXd S(   s   
        Test 0 ** -1.
        Note 2 ** <big number> returns an undefined value (depending
        on the algorithm).
        s   int64(int64, int64)R+   i   i    i   R   i   iÿÿÿÿi   i?   i$   Nl            lûÿÿÿ         (   R   t   int64R   R,   R   R   RE   RI   (   R%   R   R'   R   R   RJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   test_power_integer¶   s    	(   R4   R5   R6   t
   contextlibt   contextmanagert   RuntimeWarningRE   t   skipIfFPStatusBugRL   RM   RN   RQ   RR   RS   RT   RU   RV   RW   RY   (    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyR7   T   s   							t   __main__(   i   i   I       (!   t
   __future__R    R   R   RZ   t   sysR:   t   numpyR   t   numbaR   t   unittestR   R   t   numba.numpy_supportR   t
   np_versiont   supportR   R
   R   R   R   R   R   t   skipIft   platformt   maxsizeR]   R   R7   R4   t   main(    (    (    s?   lib/python2.7/site-packages/numba/tests/npyufunc/test_errors.pyt   <module>   s*   						'	&r