ó
\K]c           @` s,  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 m Z d  d l m Z d d l m Z m Z d d l Te ƒ  Z e j d	 ƒ e ƒ  Z d
 e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ e d k r(e
 j ƒ  n  d S(   i    (   t   print_functiont   absolute_importt   divisionN(   t   unittest_support(   t   compile_isolatedt   Flagst   utils(   t   typesi   (   t   TestCaset   tag(   t   *t   enable_pyobjectt   BaseComplexTestc           B` sD   e  Z d  „  Z d „  Z d „  Z d d e d „ Z d e d „ Z RS(   c      	   C` sƒ   d d 
d d d 
d t  d ƒ t  d ƒ g } t j d	 k rQ | t  d
 ƒ g 7} n  g  t j | | ƒ D] \ } } t | | ƒ ^ qd S(   Ng       €g        i   iÿÿÿÿg      ø?g      Às   -infs   +inft   win32t   nan(   t   floatt   syst   platformt	   itertoolst   productt   complex(   t   selft   realst   xt   y(    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   basic_values   s
    c      	   C` sŠ   d d 
d d t  j t  j 
t d ƒ t d ƒ g } t j d k rX | t d ƒ g 7} n  g  t j | | ƒ D] \ } } t | | ƒ ^ qk S(	   Ng       €g        i   iÿÿÿÿs   -infs   +infR   R   (   t   matht   piR   R   R   R   R   R   (   R   R   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   more_values   s
    c      	   C` se   d d 
d d t  j t  j 
t d ƒ t d ƒ g } g  t j | | ƒ D] \ } } t | | ƒ ^ qF S(   Ng       €g        i   iÿÿÿÿt   infs   -inf(   R   R   R   R   R   R   (   R   R   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   non_nan_values$   s    i   c         C` sî   xç | D]ß } t  | | g d | ƒ} | j }	 | t j t j f k rL d n d }
 x‘ | D]‰ } y | | ƒ } Wn, t k
 r } |  j d t | ƒ ƒ qY n X|	 | ƒ } d | |
 f } |  j | | d |
 d | d | d	 | ƒqY Wq Wd  S(
   Nt   flagst   singlet   doubles   math domain errors   for input %r with prec %rt   prect   ulpst   abs_tolt   msg(	   R   t   entry_pointR   t   float32t	   complex64t
   ValueErrort   assertInt   strt   assertPreciseEqual(   R   t   pyfunct   x_typest   x_valuesR#   R$   R   t   txt   crt   cfuncR"   t   vxt   expectedt   et   gotR%   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   run_unary)   s    	$c         C` s&  x| D]\ } } t  | | | g d | ƒ} | j }	 t | | g ƒ t t j t j g ƒ @re d n d }
 x° | D]¨ \ } } y | | | ƒ } Wn? t k
 r¿ } |  j d t | ƒ ƒ qr n t	 k
 rÒ qr n X|	 | | ƒ } d | | f |
 f } |  j
 | | d |
 d | d | ƒqr Wq Wd  S(	   NR   R    R!   s   math domain errors   for input %r with prec %rR"   R#   R%   (   R   R&   t   setR   R'   R(   R)   R*   R+   t   ZeroDivisionErrorR,   (   R   R-   t   value_typest   valuesR#   R   R0   t   tyR1   R2   R"   R3   t   vyR4   R5   R6   R%   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   run_binary:   s"    	.N(	   t   __name__t
   __module__R   R   R   t   Nonet   enable_pyobj_flagsR7   R>   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyR      s   			t   TestComplexc           B` sh   e  Z e d  „ Z d „  Z e d „ Z d „  Z e d „ Z d „  Z e d „ Z	 e
 d ƒ d „  ƒ Z RS(	   c         C` sˆ   |  j  t t j t j g |  j ƒ  d | ƒ|  j  t t j t j g d d d g d | ƒ|  j  t t j t j	 g d d g d | ƒd  S(   NR   i   i    iýÿÿÿg      ø?g      à¿(
   R7   t   real_usecaseR   R(   t
   complex128R   t   int8t   int64R'   t   float64(   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_realR   s    c         C` s   |  j  d t ƒ d  S(   NR   (   RI   t   no_pyobj_flags(   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_real_npmZ   s    c         C` sˆ   |  j  t t j t j g |  j ƒ  d | ƒ|  j  t t j t j g d d d g d | ƒ|  j  t t j t j	 g d d g d | ƒd  S(   NR   i   i    iýÿÿÿg      ø?g      à¿(
   R7   t   imag_usecaseR   R(   RE   R   RF   RG   R'   RH   (   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_imag]   s    c         C` s   |  j  d t ƒ d  S(   NR   (   RM   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_imag_npme   s    c         C` sˆ   |  j  t t j t j g |  j ƒ  d | ƒ|  j  t t j t j g d d d g d | ƒ|  j  t t j t j	 g d d g d | ƒd  S(   NR   i   i    iýÿÿÿg      ø?g      à¿(
   R7   t   conjugate_usecaseR   R(   RE   R   RF   RG   R'   RH   (   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_conjugateh   s    c         C` s   |  j  d t ƒ d  S(   NR   (   RP   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_conjugate_npmp   s    c         C` se   t  t j |  j ƒ  |  j ƒ  ƒ ƒ } t j t j f t j t j f g } |  j t | | d | ƒd S(   sN   
        Test complex.__div__ implementation with non-trivial values.
        R   N(	   t   listR   R   R   R   RE   R(   R>   t   div_usecase(   R   R   R;   R:   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_divs   s    $t	   importantc         C` s   |  j  d t ƒ d  S(   NR   (   RT   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_div_npm}   s    (   R?   R@   RB   RI   RK   RM   RN   RP   RQ   RT   R	   RV   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyRC   P   s   			
t	   TestCMathc           B` s$  e  Z d  Z d „  Z d d6 d6 d „ Z d „  Z d „  Z d „  Z d „  Z	 e
 d „ Z d	 „  Z e
 d
 „ Z e d ƒ d „  ƒ Z e
 d „ Z e d ƒ d „  ƒ Z e j e j d7 k  d ƒ e
 d „ ƒ Z e j e j d8 k  d ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z e
 d „ Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d  „  Z$ d! „  Z% d" „  Z& d# „  Z' d$ „  Z( d% „  Z) d& „  Z* d' „  Z+ d( „  Z, d) „  Z- d* „  Z. d+ „  Z/ d, „  Z0 d- „  Z1 d. „  Z2 d/ „  Z3 d0 „  Z4 d1 „  Z5 d2 „  Z6 d3 „  Z7 d4 „  Z8 d5 „  Z9 RS(9   s)   
    Tests for cmath module support.
    c         C` s/   |  j  | t j t j g |  j ƒ  d | ƒd  S(   NR   (   R7   R   RE   R(   R   (   R   R-   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   check_predicate_func‡   s    i   c      
   C` sr   |  j  | t j g | p! |  j ƒ  d | d | d | ƒ|  j  | t j g | pX |  j ƒ  d | d | d | ƒd  S(   NR   R#   R$   (   R7   R   RE   R   R(   R   (   R   R-   R   R#   R$   R;   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   check_unary_func‹   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   t   phase_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_phase—   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   RZ   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_phase_npmš   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   t   polar_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_polar   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   R]   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_polar_npm    s    c         ` sB   ‡  ‡ f d †  } | t  j ˆ j ƒ  ƒ | t  j ˆ j ƒ  ƒ d  S(   Nc         ` sm   g  | D]: } t  j | j ƒ s/ | j d k r | j | j f ^ q } ˆ j t |  |  f g | d ˆ  ƒd  S(   Ni    R   (   R   t   isinft   imagt   realR>   t   rect_usecase(   t   tpt   seed_valuest   zR;   (   R   R   (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   do_test¤   s    :(   R   RH   R   R'   R   (   R   R   Rg   (    (   R   R   s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_rect£   s    c         C` s   |  j  d t ƒ d  S(   NR   (   Rh   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_rect_npm¬   s    c         C` s   |  j  t t ƒ d  S(   N(   RX   t   isnan_usecaseRB   (   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_isnan±   s    RU   c         C` s   |  j  t t ƒ d  S(   N(   RX   Rj   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_isnan_npm´   s    c         C` s   |  j  t t ƒ d  S(   N(   RX   t   isinf_usecaseRB   (   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_isinf¸   s    c         C` s   |  j  t t ƒ d  S(   N(   RX   Rm   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_isinf_npm»   s    i   i   s   needs Python 3.2+c         C` s   |  j  t t ƒ d  S(   N(   RX   t   isfinite_usecaseRB   (   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_isfinite¿   s    c         C` s   |  j  t t ƒ d  S(   N(   RX   Rp   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_isfinite_npmÃ   s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   exp_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_expÉ   s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   Rs   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_exp_npmÌ   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   t   log_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_logÒ   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   Rv   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_log_npmÕ   s    c         C` sk   t  t j |  j ƒ  |  j ƒ  ƒ ƒ } t j t j f t j t j f g } |  j t | | d | d d ƒd  S(   NR   R#   i   (	   RR   R   R   R   R   RE   R(   R>   t   log_base_usecase(   R   R   R;   R:   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_log_baseØ   s
    $c         C` s   |  j  d t ƒ d  S(   NR   (   Rz   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_log_base_npmß   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   t   log10_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_log10â   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   R|   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_log10_npmå   s    c         C` s   |  j  t t ƒ d  S(   N(   RY   t   sqrt_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_sqrtè   s    c         C` sZ   |  j  t t ƒ g  t d d ƒ D] } d | ^ q  } |  j t t j g | d t ƒd  S(   Ni$   i)   i
   R   (   RY   R   RJ   t   rangeR7   R   RE   (   R   t   iR;   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_sqrt_npmë   s    'c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   acos_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_acosõ   s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   R„   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_acos_npmø   s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   asin_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_asinû   s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   R‡   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_asin_npmþ   s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   atan_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_atan  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   RŠ   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_atan_npm  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   cos_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_cos  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   R   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_cos_npm
  s    c         C` s   |  j  t t d d ƒd  S(   NR$   t   eps(   RY   t   sin_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_sin  s    c         C` s   |  j  t t d d ƒd  S(   NR$   R   (   RY   R‘   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_sin_npm  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   tan_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_tan  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   R”   RB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_tan_npm  s    c         C` s   |  j  t t ƒ d  S(   N(   RY   t   acosh_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_acosh  s    c         C` s   |  j  t t ƒ d  S(   N(   RY   R—   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_acosh_npm  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   asinh_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_asinh"  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   Rš   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_asinh_npm%  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   atanh_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt
   test_atanh(  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   R   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_atanh_npm+  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   cosh_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_cosh.  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   R    RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_cosh_npm1  s    c         C` s   |  j  t t d d ƒd  S(   NR$   R   (   RY   t   sinh_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_sinh4  s    c         C` s   |  j  t t d d ƒd  S(   NR$   R   (   RY   R£   RJ   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_sinh_npm7  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   t   tanh_usecaseRB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt	   test_tanh:  s    c         C` s   |  j  t t d d ƒd  S(   NR#   i   (   RY   R¦   RB   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   test_tanh_npm=  s    N(   i   i   (   i   i   (:   R?   R@   t   __doc__RX   RA   RY   R[   R\   R^   R_   RB   Rh   Ri   Rk   R	   Rl   Rn   Ro   t   unittestt   skipIfR   t	   PYVERSIONRq   Rr   Rt   Ru   Rw   Rx   Rz   R{   R}   R~   R€   Rƒ   R…   R†   Rˆ   R‰   R‹   RŒ   RŽ   R   R’   R“   R•   R–   R˜   R™   R›   Rœ   Rž   RŸ   R¡   R¢   R¤   R¥   R§   R¨   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyRW   ‚   sf   							$									
																							t   __main__(   t
   __future__R    R   R   t   cmathR   R   R   t   numbaR   Rª   t   numba.compilerR   R   R   R   t   supportR   R	   t   complex_usecasesRB   R8   RJ   t   objectR   RC   RW   R?   t   main(    (    (    s7   lib/python2.7/site-packages/numba/tests/test_complex.pyt   <module>   s"   
		<2¿