ó
\K]c           @@ sŚ   d  d l  m Z m 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 m Z m Z 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   captured_stdoutt   override_config(   t   njitt	   vectorizet   guvectorizet   TestFastMathc           B@ s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C@ sś   d   } t  d t  |  } t  |  } |  j | d  | d   | j | j d  } | j | j d  } |  j d |  |  j d |  |  j d |  |  j d |  d  S(   Nc         S@ s   |  t  j |   S(   N(   t   matht   sin(   t   x(    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   foo   s    t   fastmathg      ŕ?i    s	   fadd fasts	   call fast(   R   t   Truet   assertEqualt   inspect_llvmt
   signaturest   assertInt   assertNotIn(   t   selfR   t   fastfoot   slowfoot   fastllvmt   slowllvm(    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   test_jit   s    	c         C@ s~   d   } t  d d d h  |  } t  d d h  |  } |  j | d t j  d  |  j t j | d t j    d  S(   Nc         S@ s   |  | | S(   N(    (   R   t   y(    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyR      s    R   t   reassoct   nszg      ŕ?(   R   R   t   npt   inft
   assertTruet   isnan(   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   test_jit_subset_behaviour   s
    	c         C@ s#  d   } t  d d d h  |  } t    |  } |  j | d  | d   | j | j d  } | j | j d  } |  j d |  |  j d |  |  j d	 |  |  j d
 |  |  j d |  |  j d |  |  j d | k pö d	 | k |  |  j d | k pd
 | k |  d  S(   Nc         S@ s   |  t  j |   S(   N(   R	   R
   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyR   #   s    R   R   R   g      ŕ?i    s	   fadd fasts	   call fasts   fadd reassoc nszs   call reassoc nszs   fadd nsz reassocs   call nsz reassoc(   R   R   R   R   R   R   (   R   R   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   test_jit_subset_code"   s(    			c      
   C@ ső   |  j  t  & } t d d h  d    d  Wd  QX|  j d t | j   |  j  t  * } t d i t d 6 d    d  Wd  QX|  j d t | j   |  j  t  # } t d d  d    d  Wd  QX|  j d	 t | j   d  S(
   NR   t   spqrc         S@ s   |  d S(   Ni   (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   <lambda>>   t    i   s   Unrecognized fastmath flags:c         S@ s   |  d S(   Ni   (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyR$   E   R%   i9  c         S@ s   |  d S(   Ni   (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyR$   L   R%   s!   Expected fastmath option(s) to be(   t   assertRaisest
   ValueErrorR   R   t   strt	   exceptiont   False(   R   t   raises(    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   test_jit_subset_errors<   s    %)"c         C@ s	  d   } t  d t  |  } t  |  } t j j d  j t j  } t d t  Y t    } | |  } Wd  QX| j   } t    } | |  }	 Wd  QX| j   }
 Wd  QXt j	 j
 | |	  |  j d |
  |  j d |
  |  j d |  |  j d |  d  S(   Nc         S@ s   |  t  j |   S(   N(   R	   R
   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyR   S   s    R   i   t   DUMP_OPTIMIZEDs	   fadd fasts	   call fast(   R   R   R   t   randomt   astypet   float32R   R   t   getvaluet   testingt   assert_almost_equalR   R   (   R   R   R   R   R   t   slow_capt   expectR   t   fast_capt   gotR   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   test_vectorizeR   s     	c         C@ s'  d   } t  j j d  j t  j  } t d t   d g } d } t   " } t | | d t |  } Wd  QX| j   } t    } t | |  |  }	 Wd  QX| j   }
 Wd  QX|	 |  } | |  } t  j	 j
 | |  |  j d |  |  j d |  |  j d |
  |  j d |
  d  S(	   Nc         S@ s   |  t  j |   | d <d  S(   Ni    (   R	   R
   (   R   t   out(    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyR   g   s    i   R-   s   (float32, float32[:])s   ()->()R   s	   fadd fasts	   call fast(   R   R.   R/   R0   R   R   R   R   R1   R2   R3   R   R   (   R   R   R   t   typest   sigR6   R   R   R4   R   R   R5   R7   (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   test_guvectorizef   s$    		!(   t   __name__t
   __module__R   R!   R"   R,   R8   R<   (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyR      s   					t   __main__(   t
   __future__R    R   R	   t   numpyR   t   numbaR   t   unittestt   numba.tests.supportR   R   R   R   R   t   TestCaseR   R=   t   main(    (    (    s8   lib/python2.7/site-packages/numba/tests/test_fastmath.pyt   <module>   s   q