
\K]c           @  sR  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l j Z d  d l m Z m Z m Z d  d l m Z d d l m Z m Z m 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   Z- d   Z. e- d  Z/ e+ d  Z0 e, d  Z1 e- d  Z2 e+ d   Z3 e, d!  Z4 d"   Z5 d#   Z6 d$   Z7 d%   Z8 d&   Z9 d' e f d(     YZ: d) e: f d*     YZ; d+ e: f d,     YZ< d- e: f d.     YZ= d/ e: f d0     YZ> d1 e: f d2     YZ? e d3 e@ d4 e@  d5    ZA d d6 >ZB e d3 e@ d4 e@  d7    ZC d8 e f d9     YZD d: eD f d;     YZE e jF e jG d< k d=  d> eD f d?     Y ZH eI d@ k rNe jJ   n  d S(A   i(   t   print_functionN(   t   jitt
   _helperlibt   types(   t   compile_isolatedi   (   t   TestCaset   compile_functiont   tagip  c           C  s
   t  j   S(   N(   R   t   rnd_get_py_state_ptr(    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   get_py_state_ptr   s    c           C  s
   t  j   S(   N(   R   t   rnd_get_np_state_ptr(    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   get_np_state_ptr   s    c         C  s   t  j j |   S(   N(   t   npt   randomt   randint(   t   a(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_randint1    s    c         C  s   t  j j |  |  S(   N(   R   R   R   (   R   t   b(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_randint2#   s    c         C  s   t  j |  |  S(   N(   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   random_randint&   s    c         C  s   t  j |   S(   N(   R   t	   randrange(   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   random_randrange1)   s    c         C  s   t  j |  |  S(   N(   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   random_randrange2,   s    c         C  s   t  j |  | |  S(   N(   R   R   (   R   R   t   c(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   random_randrange3/   s    c         C  s   t  j j |   S(   N(   R   R   t   choice(   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_choice12   s    c         C  s   t  j j |  d | S(   Nt   size(   R   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_choice25   s    c         C  s   t  j j |  d | d | S(   NR   t   replace(   R   R   R   (   R   R   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_choice38   s    c         C  s   t  j j |  |  S(   N(   R   R   t   multinomial(   t   nt   pvals(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_multinomial2;   s    c         C  s   t  j j |  d | d | S(   NR!   R   (   R   R   R   (   R    R!   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_multinomial3>   s    c         C  sW   t  j j |   t  j j | | f  } t  j j |   t  j j | |  } | | f S(   N(   R   R   t   seedt   rand(   R$   R   R   t   expectedt   got(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_check_randA   s
    c         C  sW   t  j j |   t  j j | | f  } t  j j |   t  j j | |  } | | f S(   N(   R   R   R$   t   standard_normalt   randn(   R$   R   R   R&   R'   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   numpy_check_randnH   s
    c         C  s5   d t    } t d | t    } t d t  |  S(   Ns@   def func(%(argstring)s):
        return %(name)s(%(argstring)s)
t   funct   nopython(   t   localsR   t   globalsR   t   True(   t   namet	   argstringt   codet   pyfunc(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   jit_with_argsO   s    c         C  s   t  |  d  S(   Nt    (   R5   (   R1   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   jit_nullaryV   s    c         C  s   t  |  d  S(   NR   (   R5   (   R1   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt	   jit_unaryY   s    c         C  s   t  |  d  S(   Ns   a, b(   R5   (   R1   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt
   jit_binary\   s    c         C  s   t  |  d  S(   Ns   a, b, c(   R5   (   R1   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   jit_ternary_   s    s   random.gausss   random.randoms   random.seeds   np.random.normals   np.random.randoms   np.random.seedc         C  sK   |  j    d } | d  | d } } t j | | t |  f  | | f S(   s?   
    Copy state of Python random *r* to Numba state *ptr*.
    i   i(   t   getstateR   t   rnd_set_statet   list(   t   rt   ptrt   mtt   intst   index(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _copy_py_statel   s    c         C  sR   |  j    d d !\ } } t j | | g  | D] } t |  ^ q, f  | | f S(   s>   
    Copy state of Numpy random *r* to Numba state *ptr*.
    i   i   (   t	   get_stateR   R<   t   int(   R>   R?   RA   RB   t   x(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _copy_np_stateu   s    /c         C  s   |  j    \ } } } | d } | d  } t |  d k sA t  d t j | d d | f } | d  k rx | d	 7} n | d | f 7} t j j |  d  S(
   Niip  t   MT19937t   dtypet   uint32i    g        i   (   i    g        (   R;   t   lent   AssertionErrorR   t   arrayt   NoneR   t	   set_state(   R>   t   _vert   mt_stt   _gauss_nextt   mt_post   mt_intst   np_st(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   sync_to_numpy}   s    

c         C  s   d |  j  | d d  S(   Ng       @g      ?(   t   gammavariate(   R>   t   df(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   py_chisquare   s    c         C  s"   t  |  |  | t  |  |  | S(   N(   RY   (   R>   t   numt   denom(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   py_f   s    t   BaseTestc           B  s    e  Z d  d  Z d  d  Z RS(   i   c         C  s    t  j |  } t | |  | S(   N(   R   t   RandomRC   (   t   selfR?   R$   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _follow_cpython   s    c         C  s#   t  j j |  } t | |  | S(   N(   R   R   t   RandomStateRG   (   R_   R?   R$   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _follow_numpy   s    (   t   __name__t
   __module__R`   Rb   (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR]      s   t   TestInternalsc           B  sV   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   s9   
    Test low-level internals of the implementation.
    c         C  s   t  j |  } | \ } } |  j | t  |  j | t  |  j t |  t  | d t } g  t t  D] } | d ^ ql } t  j	 | | | f  |  j t  j |  | | f  d  S(   Ni i   (
   R   t   rnd_get_statet   assertIsInstanceRE   R=   t   assertEqualRK   t   Nt   rangeR<   (   R_   R?   t   statet   iRA   t   j(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_get_set_state   s    #c         C  s   t  j   } t | |  \ } } x( t | t d d  D] } | j    q8 Wt j |  | j   d } | d  | d } } |  j t j	 |  d t
 |   d  S(   Ni   i   i(   R   R^   RC   Rj   Ri   R   t   rnd_shuffleR;   Rh   Rf   R=   (   R_   R?   R>   RA   RB   Rl   R@   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_shuffle   s    c         C  s   t  j j   } x d d d d g D] } | j t  j |   | j   } t | d  } | d } | t k sv t  t	 j
 | |  |  j t	 j |  | | f  q" Wd  S(	   Ni    i   i}   i   i    i   I       I    (   R   R   Ra   R$   RJ   RD   R=   Ri   RL   R   t   rnd_seedRh   Rf   (   R_   R?   R>   Rl   t   stRA   RB   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_init   s    
c         C  s   g  } x] t  d  D]O } t j | d  t j | t j d   | j t t j |  d   q W|  j t	 t
 |   t	 |   d  S(   Ni
   i    i   i   (   Rj   R   Rq   t   ost   urandomt   appendt   tupleRf   Rh   RK   t   set(   R_   R?   t   statesRl   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_perturb   s    $c         C  s   |  j  t    d  S(   N(   Rn   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_get_set_state   s    c         C  s   |  j  t    d  S(   N(   Rp   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_shuffle   s    c         C  s   |  j  t    d  S(   N(   Rs   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt	   test_init   s    c         C  s   |  j  t    d  S(   N(   Rz   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_perturb   s    (   Rc   Rd   t   __doc__Rn   Rp   Rs   Rz   R{   R|   R}   R~   (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyRe      s   							t
   TestRandomc           B  s  e  Z d    Z e d  d    Z e d  d    Z d   Z d   Z e d  d    Z d d d	 dM d
  Z
 d   Z e d  d    Z d   Z e d  d    Z e d  d    Z e d  d    Z d   Z d   Z d   Z dM d  Z e d  d    Z e d  d    Z d   Z e d  d    Z d   Z e d  d    Z e d  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/   Z/ d0   Z0 d1   Z1 d2   Z2 e d  d3    Z3 e d  d4    Z4 d5   Z5 d6   Z6 d7   Z7 d8   Z8 d9   Z9 e d  d:    Z: d;   Z; d<   Z< d=   Z= e d  d>    Z> d?   Z? d@   Z@ dA   ZA dB   ZB dC   ZC dD   ZD e d  dE    ZE e d  dF    ZF dG   ZG dH   ZH dI   ZI dJ   ZJ dK   ZK dL   ZL RS(N   c         C  s   t  j j   } xt d d d d g D]` } | j t  j |   | |  x7 t t d  D]% } |  j |   | j d d   qY Wq" Wd	 S(   s<   
        Check seed()- and random()-like functions.
        i    i   i}   i   i    i
   g        g      ?NI       I    (	   R   R   Ra   R$   RJ   Rj   Ri   t   assertPreciseEqualt   uniform(   R_   t   seedfunct
   randomfuncR>   Rl   Rm   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_random_seed   s    
t	   importantc         C  s   |  j  t t  d  S(   N(   R   t   random_seedt   random_random(   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_random   s    c         C  sl   |  j  t t  |  j  t t d   |  j  t t d   |  j  t t d   |  j  t t d   d  S(   Ns   np.random.random_samples   np.random.ranfs   np.random.samples   np.random.rand(   R   t
   numpy_seedt   numpy_randomR7   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_random   s
    c         C  s   d } t  d  g  t |  D] } t   ^ q } t d  g  t |  D] } t   ^ qI } t  d  t d  g  t |  D] } t   t   f ^ q } |  j g  | D] } | d ^ q |  |  j g  | D] } | d ^ q |  d  S(   Ni
   i   i   i    (   R   Rj   R   R   R   R   (   R_   Ri   Rl   t
   py_numberst
   np_numberst   pairst   p(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_independent_generators	  s    
"
"

+'c         C  s   |  j  |  } xB t d d  D]1 } | j |  } | |  } |  j | |  q W|  j t | d  |  j t | d  |  j t | d  d S(   s6   
        Check a getrandbits()-like function.
        i   iA   i iN(   R`   Rj   t   getrandbitsR   t   assertRaisest   OverflowError(   R_   R,   R?   R>   t   nbitsR&   R'   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_getrandbits  s    c         C  s   |  j  t d  t    d  S(   Ns   random.getrandbits(   R   R8   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_getrandbits$  s    i   t   doublei   c         C  s   t  |  s t  x | D] } g  t |  D] }	 | |   ^ q, }
 g  t |  D]* }	 | ro | d | |  n	 | |   ^ qQ } |  j |
 | d | d | d d | f q Wd  S(   NRI   t   prect   ulpst   msgs   for arguments %s(   RK   RL   Rj   R   (   R_   R,   R4   t   argslistt   nitersR   R   t   pydtypet   argsRl   t   resultst	   pyresults(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_dist-  s    %:c         C  s   |  j  |  } | d k	 rK |  j | | j d	 d
 d g d t d d n  | d k	 rs |  j | | j d g  n  | d k	 r |  j | | j d g  n  d S(   s0   
        Check a gauss()-like function.
        g      ?g       @g      ?g       R   i   i
   N(   g      ?g      ?(   g       @g      ?(   g       g      ?(   g      ?(    (   Rb   RN   R   t   normalRi   (   R_   t   func2t   func1t   func0R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_gauss7  s    c         C  s#   |  j  t d  d  d  t    d  S(   Ns   random.gauss(   R   R9   RN   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_gaussF  s    c         C  s#   |  j  t d  d  d  t    d  S(   Ns   random.normalvariate(   R   R9   RN   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_normalvariateJ  s    c         C  s/   |  j  t d  t d  t d  t    d  S(   Ns   np.random.normal(   R   R9   R8   R7   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_normalP  s    		c         C  s#   |  j  d  d  t d  t    d  S(   Ns   np.random.standard_normal(   R   RN   R7   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_standard_normalW  s    c         C  s#   |  j  d  d  t d  t    d  S(   Ns   np.random.randn(   R   RN   R7   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_randn\  s    c         C  s   |  j  |  } | d k	 rK |  j | | j d	 d
 d g d t d d n  | d k	 rs |  j | | j d g  n  | d k	 r |  j | | j d g  n  d S(   s9   
        Check a lognormvariate()-like function.
        g      ?g       @g      ?g       R   i   i
   N(   g      ?g      ?(   g       @g      ?(   g       g      ?(   g      ?(    (   Rb   RN   R   t	   lognormalRi   (   R_   R   R   R   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_lognormvariatea  s    c         C  s#   |  j  t d  d  d  t    d  S(   Ns   random.lognormvariate(   R   R9   RN   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_lognormvariatep  s    c         C  s/   |  j  t d  t d  t d  t    d  S(   Ns   np.random.lognormal(   R   R9   R8   R7   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_lognormalt  s    		c      	   C  s  g  } xe t  d  D]W }	 | j | d   | j | d d   | d k	 r | j | d d d   q q W|  j t |  t t |   |  t j d k r| r |  j |  j	 }
 n |  j
 |  j }
 g  d d d d d d d g D] } | | k  r | ^ q } | r%t j d k r%| n d } x | D] } |  j | |
 | f g d d d | |  j | |
 d d | f g d d d | | d k	 r2|  j | d d | d  |
 d d | d   |  j | d | d d  |
 d | d d   q2q2Wn  |  j t | d  |  j t | d  |  j t | d d  |  j t | d d  | d k	 r|  j t | d d d  |  j t | d d d  n  d S(   s4   
        Check a randrange()-like function.
        i
   i ei   i   i   i   i  i   i(   i>   i=   s   1.11.0R   R   ii   ii    ii   iN(   i   I       I       @I        (   Rj   Rv   RN   Rh   RK   Rx   t   syst   version_infoRb   R   R`   R   R   t   __version__R   R   R   t
   ValueError(   R_   R   R   t   func3R?   t	   max_widtht   is_numpyt   tpRA   Rl   t   rrt   wt   widthsR   t   width(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_randrangez  s<     %;!%!c         C  s   x t  j d f t  j d f g D]s \ } } t t | f  } t t | | f  } t t | | | f  } |  j | j | j | j t	   | t
  q Wd  S(   Ni   i?   i   l            I       (   R   t   int64t   int32R   R   R   R   R   t   entry_pointR	   t   False(   R_   R   R   t   cr1t   cr2t   cr3(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_randrange  s    +c      	   C  s   x t  j t j d f t  j t j d f g D]^ \ } } } t t | f  } t t | | f  } |  j | j | j d  t
   | t |  q+ Wd  S(   Ni   i?   i   l            I       (   R   R   R   R   R   R   R   R   R   RN   R   R0   (   R_   R   t   np_tpR   R   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_randint  s    %c         C  s  g  } x* t  d  D] } | j | d d   q W|  j t |  t t |   |  t j d k r |  j |  } xY d d d d d f g D]; } | d | k r q n  |  j | | j	 | g d d q Wn  |  j
 t | d d  |  j
 t | d d	  d S(   s2   
        Check a randint()-like function.
        i
   i   i ei   i   i   i  i   i   i>   i=   R   i   N(   i   (   i   i   (   i   i  I       @I        (   Rj   Rv   Rh   RK   Rx   R   R   R`   R   R   R   R   (   R_   R,   R?   R   RA   Rl   R>   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_randint  s    % &c         C  sa   xZ t  j d f t  j d f g D]: \ } } t t | | f  } |  j | j t   |  q Wd  S(   Ni   i?   i   l            I       (   R   R   R   R   R   R   R   R	   (   R_   R   R   t   cr(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_randint  s    +c         C  s2   |  j  |  } |  j | | j d d d g  d S(	   s2   
        Check a uniform()-like function.
        g      ?g    .Ag      g     @@N(   g      ?g    .A(   g      g     @@(   g      ?g      (   R`   R   R   (   R_   R,   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_uniform  s    c         C  s   |  j  t d  t    d  S(   Ns   random.uniform(   R   R9   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_uniform  s    c         C  s   |  j  t d  t    d  S(   Ns   np.random.uniform(   R   R9   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_uniform  s    c         C  sZ   |  j  |  } | d k	 r= |  j | | j d d d g  n  |  j | | j d	 g  d S(
   s5   
        Check a triangular()-like function.
        g      ?g      @g      g@N(   g      ?g      @(   g      g      ?(   g      ?g      ?(   g      ?g      @g@(   R`   RN   R   t
   triangular(   R_   R   R   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_triangular  s
    c         C  s&   |  j  t d  t d  t    d  S(   Ns   random.triangular(   R   R9   R:   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_triangular  s    	c           s5   t  d      f d   } |  j d  | t    d  S(   Ns   np.random.triangularc           s     |  | |  S(   N(    (   t   lR>   t   m(   R   (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   <lambda>  R6   (   R:   R   RN   R   (   R_   t   fixed_triangular(    (   R   s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_triangular  s    c         C  s  |  j  |  } | d k	 r= |  j | | j d	 d
 d g  n  | d k	 rn |  j | d  | j d d   n  | d k	 r |  j t | d d  |  j t | d d  |  j t | d d  |  j t | d d  n  | d k	 r
|  j t | d  |  j t | d  n  d S(   s7   
        Check a gammavariate()-like function.
        g      ?g      @g      ?g      ?g      @g        g      N(   g      ?g      @(   g      ?g      ?(   g      ?g      @(   R`   RN   R   RW   R   R   R   (   R_   R   R   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_gammavariate  s    %c         C  s    |  j  t d  d  t    d  S(   Ns   random.gammavariate(   R   R9   RN   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_gammavariate	  s    c         C  sB   |  j  t d  t d  t    |  j  d  t d  t    d  S(   Ns   np.random.gammas   np.random.standard_gamma(   R   R9   R8   R   RN   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_gamma  s    	
		c         C  s   |  j  |  } |  j | | j d g  |  j t | d d  |  j t | d d  |  j t | d d  |  j t | d d  d S(   s6   
        Check a betavariate()-like function.
        g      ?g      @g        g      ?g      N(   g      ?g      @(   R`   R   t   betavariateR   R   (   R_   R,   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_betavariate  s    c         C  s   |  j  t d  t    d  S(   Ns   random.betavariate(   R   R9   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_betavariate"  s    c         C  s   |  j  t d  t    d  S(   Ns   np.random.beta(   R   R9   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_beta%  s    c         C  s,   |  j  |  } |  j | | j d g  d S(   s:   
        Check a vonmisesvariate()-like function.
        g      ?g      @N(   g      ?g      @(   R`   R   t   vonmisesvariate(   R_   R,   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_vonmisesvariate(  s    c         C  s   |  j  t d  t    d  S(   Ns   random.vonmisesvariate(   R   R9   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_vonmisesvariate0  s    c         C  s   |  j  t d  t    d  S(   Ns   np.random.vonmises(   R   R9   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_vonmises4  s    c         C  sd   |  j  |  } xN d	 D]F } x= t d  D]/ } |  j | |  | j d |  d d q) Wq Wd S(
   s   
        Check a expovariate()-like function.  Note the second argument
        is inversed compared to np.random.exponential().
        g?g      ?g      ?i   i   R   R   N(   g?g      ?g      ?(   Rb   Rj   R   t   exponential(   R_   R,   R?   R>   t   lambdRl   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_expovariate8  s
    "c         C  s   |  j  t d  t    d  S(   Ns   random.expovariate(   R   R8   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_expovariateD  s    c         C  si   |  j  |  } | d k	 r= |  j | | j d d d g  n  | d k	 re |  j | | j d g  n  d S(	   s6   
        Check a exponential()-like function.
        g      ?g      ?g      ?N(   g      ?(   g      ?(   g      ?(    (   Rb   RN   R   R   (   R_   R   R   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_exponentialG  s
    "c         C  s&   |  j  t d  t d  t    d  S(   Ns   np.random.exponential(   R   R8   R7   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_exponentialR  s    	c         C  s    |  j  d  t d  t    d  S(   Ns   np.random.standard_exponential(   R   RN   R7   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_standard_exponentialW  s    		c         C  s/   |  j  |  } |  j | | j d d g  d S(   s8   
        Check a paretovariate()-like function.
        g      ?g      @N(   g      ?(   g      @(   R`   R   t   paretovariate(   R_   R,   R?   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_paretovariate\  s    c         C  s   |  j  t d  t    d  S(   Ns   random.paretovariate(   R   R8   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_paretovariated  s    c           s2   t  d      f d   } |  j | t    d  S(   Ns   np.random.paretoc           s     |   d S(   Ng      ?(    (   R   (   t   pareto(    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR   i  R6   (   R8   R   R   (   R_   t   fixed_pareto(    (   R   s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_paretog  s    c         C  s   |  j  |  } | d k	 r7 |  j | | j d g  n  | d k	 r x9 t d  D]( } |  j | d  | j d d   qP Wn  d S(   s9   
        Check a weibullvariate()-like function.
        g      ?g      @i   g      ?N(   g      ?g      @(   R`   RN   R   t   weibullvariateRj   R   (   R_   R   R   R?   R>   Rl   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_weibullvariatel  s    c         C  s    |  j  t d  d  t    d  S(   Ns   random.weibullvariate(   R   R9   RN   R	   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_weibullvariatey  s    c         C  s    |  j  d  t d  t    d  S(   Ns   np.random.weibull(   R   RN   R8   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_weibull}  s    c      
   C  s  t  d  } |  j t   d  } |  j | | j d g  xd D] } |  j | | d  d  |  j | | d	  |  x d D] } | | |  } | d k r | | } d | } n  |  j | d  |  j | |  | | } d | t j	 |  } |  j | | | | | | f  |  j | | | | | | f  q WqA W|  j
 t | d d  |  j
 t | d d  |  j
 t | d d  d  S(   Ns   np.random.binomiali    i   g      ?id   i  i'  g        g      ?g-C6?g?g?g9?g      ?g㈵ ?g?g?gH.?i   i   ii
   gg?(   i   g      ?(   id   i  i'  (	   g-C6?g?g?g9?g      ?g㈵ ?g?g?gH.?(   R9   Rb   R   R   t   binomialRh   t   assertGreaterEqualt   assertLessEqualt   matht   sqrtR   R   (   R_   R   R>   R    R   R&   t   tol(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_binomial  s(    

 (c         C  sG   t  d  } |  j t    } |  j | t j t |  d d g  d  S(   Ns   np.random.chisquareg      ?g      @(   g      ?(   g      @(   R8   R`   R   R   t	   functoolst   partialRY   (   R_   t	   chisquareR>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_chisquare  s
    	c         C  sG   t  d  } |  j t    } |  j | t j t |  d d g  d  S(   Ns   np.random.fg      ?g      ?g?(   g      ?g      ?(   g      ?g?(   R9   R`   R   R   R   R   R\   (   R_   t   fR>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_f  s    c         C  s  t  d  } |  j t | d  |  j t | d  |  j t | d  d } g  t |  D] } | d  ^ qX } |  j | d g |  g  t |  D] } | d  ^ q } | j d  } |  j | | d	  |  j | |  |  j g  | D] } | d
 k r | ^ q  g  t |  D] } | d  ^ q} |  j	 g  | D] } | d k r=| ^ q= g  t |  D] } | d  ^ qi} |  j	 g  | D] } | d k r| ^ q g  t |  D] } | d  ^ q} |  j	 g  | D] } | d k r| ^ q d  S(   Ns   np.random.geometricg      g        gjt?i   g      ?i   g?i   i  g?i   g{Gz?i2   gV瞯<i    I       (
   R8   R   R   Rj   R   t   countR   t
   assertLesst   assertFalset
   assertTrue(   R_   t   geomRi   Rl   R>   R    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_geometric  s$    %%,%,%,%c         C  s>   t  d  } |  j t    } |  j | | j d d g  d  S(   Ns   np.random.gumbelg        g      ?g      g      @(   g        g      ?(   g      g      @(   R9   Rb   R   R   t   gumbel(   R_   R  R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_gumbel  s    c         C  s  t  d  } |  j t    } |  j | | j d d g d d g  t d  D] } | d d d  ^ qM } |  j t d   | D  |  |  j t	 j
 |  d	  |  j t	 j
 |  d
  g  t d  D] } | d d d  ^ q } |  j t d   | D  |  |  j t	 j
 |  d  g  t d  D] } | d d d  ^ q.} |  j t d   | D  |  |  j t	 j
 |  d  d  S(   Ns   np.random.hypergeometrici  i  i
   R   i   id   c         s  s'   |  ] } | d  k o | d k Vq d S(   i    id   N(    (   t   .0RF   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pys	   <genexpr>  s    g      D@g      N@i c         s  s'   |  ] } | d  k o | d k Vq d S(   i    id   N(    (   R  RF   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pys	   <genexpr>  s    g      $@c         s  s'   |  ] } | d  k o | d k Vq d S(   i    id   N(    (   R  RF   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pys	   <genexpr>  s    g     V@(   i  i  i
   (   i  i  i
   (   R:   Rb   R   R   t   hypergeometricRj   R  t   allR   R   t   meanR   (   R_   t   hgR>   Rl   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_hypergeometric  s    + + + c         C  sy   |  j  t    } |  j t d  | j d d g  |  j t d  | j d d	 g  |  j t d  | j d
 g  d  S(   Ns   np.random.laplaceg        g      ?g      g      @(   g        g      ?(   g      g      @(   g        (   g      (    (   Rb   R   R   R9   t   laplaceR8   R7   (   R_   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_laplace  s    c         C  sy   |  j  t    } |  j t d  | j d d g  |  j t d  | j d d	 g  |  j t d  | j d
 g  d  S(   Ns   np.random.logisticg        g      ?g      g      @(   g        g      ?(   g      g      @(   g        (   g      (    (   Rb   R   R   R9   t   logisticR8   R7   (   R_   R>   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_logistic  s    c         C  s   |  j  t    } t d  } |  j | | j d d d g d d |  j  t   d d } |  j g  t d	  D] } | d
  ^ qn d d d d d d d d d d g
  |  j t | d  |  j t | d  |  j t | d  d  S(   Ns   np.random.logseriesg?gGz?gH.?R   i2   R$   i   i
   g{?ivxi- i   i  in i)I1`   i܀oirH i  g        gg?(   g?(   gGz?(   gH.?(	   Rb   R   R8   R   t	   logseriesRh   Rj   R   R   (   R_   R>   R  Rl   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_logseries  s    (c         C  s`   |  j  t    } t d  } |  j | | j d
 d d d d g d d |  j t | d	  d  S(   Ns   np.random.poissong        g      ?g       @g      $@g     $@R   i2   g(   g        (   g      ?(   g       @(   g      $@(   g     $@(   Rb   R   R8   R   t   poissonR   R   (   R_   R>   R  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_poisson  s    c         C  s  |  j  t   d  t d  } |  j g  t d  D] } | d d  ^ q2 d d d d d d d d d d g
  |  j g  t d  D] } | d d	  ^ q d
 d d d d d d d
 d d g
  |  j g  t d  D] } | d d	  ^ q d d d d d d d d d d g
  t j g  t d  D] } | d d	  ^ q" } |  j | d%  |  j | d&  |  j	 t
 | d d!  |  j	 t
 | d" d!  |  j	 t
 | d d#  |  j	 t
 | d d$  d  S('   Ni    s   np.random.negative_binomiali
   g?i   i   i   i   g?i7   iG   i8   i9   i"   ie   iC   i  i#  i!  iy#  iL$  i"  i#  i#  iF"  i"  i#  i2   i ʚ;g   Ј BgGz?g)\(?g      ?igg?g   | Bg   $s B(   Rb   R   R9   Rh   Rj   R   R
  t   assertGreaterR   R   R   (   R_   t   negbinRl   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_negative_binomial  s"    +%+%+	(c         C  sj   |  j  t    } t d  } |  j | | j d d	 d
 d g  |  j t | d  |  j t | d  d  S(   Ns   np.random.powerg?g      ?g?g      @g        g(   g?(   g      ?(   g?(   g      @(   Rb   R   R8   R   t   powerR   R   (   R_   R>   R  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_power  s    c         C  s   |  j  t    } t d  } t d  } |  j | | j d d	 d
 d g  |  j | | j d g  |  j t | d  |  j t | d  d  S(   Ns   np.random.rayleighg?g?g      9@g     @@g        g(   g?(   g?(   g      9@(   g     @@(    (   Rb   R   R8   R7   R   t   rayleighR   R   (   R_   R>   t	   rayleigh1t	   rayleigh0(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_rayleigh  s    c         C  s;   |  j  t    } t d  } |  j | | j d g  d  S(   Ns   np.random.standard_cauchy(    (   Rb   R   R7   R   t   standard_cauchy(   R_   R>   t   cauchy(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_standard_cauchy'  s    c         C  sf   |  j  t    } t d  } t j g  t d  D] } | d  ^ q1  } |  j t |  d  d  S(   Ns   np.random.standard_ti  i   g      ?(   R`   R   R8   R   R
  Rj   R   t   abs(   R_   R>   t
   standard_tRl   t   avg(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_standard_t,  s    .c         C  s   |  j  t    } t d  } |  j | | j d d g  |  j t | d d  |  j t | d d  |  j t | d d  |  j t | d d  d  S(	   Ns   np.random.waldg      ?g       @g      @g        g(   g      ?g      ?(   g       @g      @(   Rb   R   R9   R   t   waldR   R   (   R_   R>   R%  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_wald6  s    c         C  sh   |  j  t    } t d  } |  j | | j d
 d g d d x! d D] } |  j t | |  qG Wd  S(   Ns   np.random.zipfg      ?g      @R   id   g      ?g      ?g        g(   g      ?(   g      @(   g      ?g      ?g        g(   Rb   R   R8   R   t   zipfR   R   (   R_   R>   R'  t   val(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_zipf?  s
    "c      	   C  s  t  j d  t  j d  j d  g } t j d k r | rN |  j |  } n |  j |  } x| D]z } xq t d  D]c } | j   } | j   }	 | |  | s t	 | j
  d k rw | j |	  |  j | |	  qw qw Wqd Wn x | D] } x t d  D]r } | j   }
 | |
  |  j t  j | |
   |  j t  j t  j | d d t  j |
 d d   |
 } q Wq W| d } | j   }
 | t |
   |  j t |  t |
   |  j t |  t |
   |  j    | t d	   Wd
 QXd
 S(   s=   
        Check a shuffle()-like function for arrays.
        i   i    i   i   i   i   t   axisi    t   xyzN(   i   i   (   i   (   R   t   aranget   reshapeR   R   Rb   R`   Rj   t   copyRK   t   shapet   shuffleR   R  t   array_equalR  t   sortt
   memoryviewt   assertNotEqualR=   Rh   t   sortedt   assertTypingError(   R_   R,   R?   R   t   arrsR>   R   Rl   R'   R&   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyRp   F  s8    '


c         C  s    |  j  t d  t   t  d  S(   Ns   random.shuffle(   Rp   R8   R	   R   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_shufflem  s    c         C  s    |  j  t d  t   t  d  S(   Ns   np.random.shuffle(   Rp   R8   R   R0   (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_shuffleq  s    c   	      C  s   d t    } t   } x t d  D] } t j t j d | g d t j d t j } | j   \ } } | j	 d k r t
 d | j	 | j   f   n  | j t | j     q# W|  j t |  d |  d S(	   sI   
        Check that the state is properly randomized at startup.
        s   if 1:
            from numba.tests import test_random
            func = getattr(test_random, %(func_name)r)
            print(func(*%(func_args)r))
            i   s   -ct   stdoutt   stderri    s/   process failed with code %s: stderr follows
%s
N(   R.   Rx   Rj   t
   subprocesst   PopenR   t
   executablet   PIPEt   communicatet
   returncodeRL   t   decodet   addt   floatt   stripRh   RK   (	   R_   t	   func_namet	   func_argsR3   t   numbersRl   t   popent   outt   err(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_startup_randomnessu  s    	c         C  s   |  j  d d  d  S(   NR   (    (   RL  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_random_startup  s    c         C  s   |  j  d d  d  S(   Nt   random_gaussg      ?(   g      ?g      ?(   RL  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_random_gauss_startup  s    c         C  s   |  j  d d  d  S(   NR   (    (   RL  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_random_startup  s    c         C  s   |  j  d d  d  S(   Nt   numpy_normalg      ?(   g      ?g      ?(   RL  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_gauss_startup  s    c         C  s  t  d  } t j d k rY|  j t    } x d d d d g D]o } t j |  } | j   } |  j | |  | j	 |   |  j | |  | j	 |   |  j | |  q@ Wt j d  j
 d d  t j d  j
 d d d  t j d	  j
 d d d d  g } x| D]A } | j   } |  j | |  | j	 |   |  j | |  qWn t j d  t j d  j
 d d d  g } x | D] } d
 } xr | d k  r| |  } t j | |  s|  j t j t j | d d
 t j | d d
   | d 7} qqWqWd  S(   Ns   np.random.permutationi   i   i
   i   i   i   i   i$   i    R*  i   (   i   (   R8   R   R   Rb   R   R   R,  R.  R   t   permutationR-  R1  R  R2  (   R_   R,   R>   t   sR   R   R7  t   checked(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_random_permutation  s2    $-N(M   Rc   Rd   R   R   R   R   R   R   R   RN   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   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)  Rp   R8  R9  RL  RM  RO  RP  RR  RV  (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR      s   											'
																																							
		
				'					t   TestRandomArraysc           B  s  e  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 e d  d    Z d   Z d   Z e d  d    Z e d  d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sA   
    Test array-producing variants of np.random.* functions.
    c         C  s-   d | f } d j  d |   } t | |  S(   Ns   np.random.%ss   , t   abcd(   t   joinR5   (   R_   t   funcnamet   nargst   qualnameR2   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _compile_array_dist  s    c   
      C  s   |  j  | t |  d  } |  j t    } t | |  } x d d f D] } | | f } | |   } | |   }	 | j t j d  k r |	 j t j d  k r | j |	 j  } n  |  j | |	 d d d	 d
 qJ Wd S(   sM   
        Check returning an array according to a given distribution.
        i   i   i   i   R   R   R   R   R   i   N(   i   i   (	   R]  RK   Rb   R   t   getattrRI   R   t   astypeR   (
   R_   RZ  t   scalar_argst   cfuncR>   R4   R   R   R&   R'   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_array_dist  s    c         C  s  |  j  d d  } d
 \ } } d } | | | |  } |  j | t j  |  j | j |  |  j | j t j d  t j d  f  |  j t j	 | | k   |  j t j	 | | k    | | d } | | d	 } |  j
 | j   | |  |  j | j   | |  d  S(   NR   i   i  i'  i   R   R   i   i   (   i  i'  (   i   i   (   R]  Rg   R   t   ndarrayRh   R/  t   assertInRI   R  R	  R   R
  R   (   R_   Ra  t   lowt   highR   t   resR
  R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     s    +c         C  s  |  j  d d  } d } | |  } |  j | t j  |  j | j |  |  j | j t j d   |  j t j | d k   |  j t j | d k    |  j t j	 | d k   |  j t j	 | d k   | j
   } |  j | d	  |  j | d
  d  S(   NR   i   i   t   float64g        g      ?g?g?g?g?(   i   i   (   R]  Rg   R   Rc  Rh   R/  RI   R  R	  t   anyR
  R   R   (   R_   Ra  R   Rg  R
  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_random_random  s    c         C  s   |  j  d d  d  S(   NR   i   g      ?(   i   g      ?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     s    c         C  s   |  j  d d  d  S(   NR   g      ?(   g      ?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     s    c         C  s   |  j  d d  d  S(   NR  g      ?g      ?(   g      ?g      ?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    c         C  s   |  j  d d  d  S(   NR  g      ?g      ?(   g      ?g      ?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    c         C  s   |  j  d d  d  S(   NR  g      ?g      ?(   g      ?g      ?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    c         C  s   |  j  d d  d  S(   NR   g      ?g       @(   g      ?g       @(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     s    c         C  s   |  j  d d  d  S(   NR  g?(   g?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    R   c         C  s   |  j  d d  d  S(   NR   g      ?g       @(   g      ?g       @(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     s    c         C  s   |  j  d d  d  S(   NR  g?(   g?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    c         C  s   |  j  d d  d  S(   NR  g?(   g?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    c         C  sT   t  d t  t  } | d d d  \ } } |  j | j d  |  j | |  d  S(   NR-   i*   i   i   (   i   i   (   R   R0   R(   Rh   R/  R   (   R_   Ra  R&   R'   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_numpy_rand  s    c         C  sT   t  d t  t  } | d d d  \ } } |  j | j d  |  j | |  d  S(   NR-   i*   i   i   (   i   i   (   R   R0   R+   Rh   R/  R   (   R_   Ra  R&   R'   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     s    c         C  s   |  j  d d  d  S(   NR  g?(   g?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR  &  s    c         C  s   |  j  d d  d  S(   NR  (    (   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR   )  s    c         C  s   |  j  d d  d  S(   Nt   standard_exponential(    (   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR   ,  s    c         C  s   |  j  d d  d  S(   NR)   (    (   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR   /  s    c         C  s   |  j  d d  d  S(   NR   g?g?(   g?g?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR   2  s    c         C  s   |  j  d d  d  S(   NR%  g?g?(   g?g?(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR&  5  s    c         C  s   |  j  d d  d  S(   NR'  g      @(   g      @(   Rb  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR)  8  s    (   Rc   Rd   R   R]  Rb  R   Rj  R   R   R  R  R  R   R  R   R   R  R  Rk  R   R  R   R   R   R   R&  R)  (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyRW    s0   																			t   TestRandomChoicec           B  s   e  Z d  Z e d  Z 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 RS(   s    
    Test np.random.choice.
    c         C  s   t  |  } t  |  } |  j | |  |  j t |  t |   | rl |  j t |  t |  |  n |  j t |  t |  |  d S(   sD   
        Check basic expectations about a batch of samples.
        N(   Rx   R   R4  R5  R=   R   RK   Rh   (   R_   t   popRg  R   t   spopt   sres(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_resultsA  s    "c         C  s   |  j  t |  t |  d  t |  t |  } t j |  } x@ | D]8 } | | } |  j  | | d  |  j | | d  qL Wd S(   s5   
        Check distribution of some samples.
        id   g      ?g       @N(   R   RK   t   collectionst   CounterR   (   R_   Rn  t   samplest   expected_frequencyR   t   valueR    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR   R  s     
c         C  s=   g  } x, t  |  | k  r4 | t |   j  7} q	 W| |  S(   sk   
        Accumulate array results produced by *func* until they reach
        *nresults* elements.
        (   RK   R=   t   flat(   R_   R,   t   nresultsRg  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _accumulate_array_results`  s    c         C  s   t  d t  t  } t |  } g  t |  D] } | |  ^ q. } |  j | |  g  t | d  D] } | |  ^ qg } |  j | |  d S(   s.   
        Check choice(a) against pop.
        R-   id   N(   R   R0   R   RK   Rj   Rq  R   (   R_   R   Rn  Ra  R    Rl   Rg  t   dist(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_choice_1j  s    %)c         C  s,   d } t  t |   } |  j | |  d S(   s"   
        Test choice(int)
        i2   N(   R=   Rj   R{  (   R_   R    Rn  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_choice_scalar_1u  s    c         C  s+   t  j d  d d } |  j | |  d S(   s$   
        Test choice(array)
        i2   i   id   N(   R   R,  R{  (   R_   Rn  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_choice_array_1}  s    c         C  s[   t  |  } t |   j  } |  j | | |  |  j | | d  } |  j | |  d S(   sP   
        Check array results produced by *func* and their distribution.
        id   N(   RK   R=   Rw  Rq  Ry  R   (   R_   R,   Rn  R   R    Rg  Rz  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_array_results  s
    c           s   t  d t  t   t |  } | d d | d d f | d g } xm | D]e       } t  t  rw  n  f } |  j | j |  |  j     f d   |  qM Wd S(   s4   
        Check choice(a, size) against pop.
        R-   i
   i   i   c             s        S(   N(    (    (   R   Ra  R   (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     R6   N(	   R   R0   R   RK   t
   isinstanceRw   Rh   R/  R~  (   R_   R   Rn  R    t   sizesRg  t   expected_shape(    (   R   Ra  R   s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_choice_2  s    %c         C  s)   d } t  j |  } |  j | |  d S(   s(   
        Test choice(int, size)
        i2   N(   R   R,  R  (   R_   R    Rn  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_choice_scalar_2  s    c         C  s+   t  j d  d d } |  j | |  d S(   s*   
        Test choice(array, size)
        i2   i   id   N(   R   R,  R  (   R_   Rn  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_choice_array_2  s    c   	   	     sl  t  d t  t   t |  } | d d | d d f g } t t g } xh | D]`  xW t t g D]I }     |  } t  t  r  n  f } |  j | j |  qe WqR Wx- | D]%  |  j	     f d   |  q Wx0 | D](  |  j	     f d   | t  q WxL | d d | d d f g D],  |  j
 t       t  Wd QXq8Wd S(   s=   
        Check choice(a, size, replace) against pop.
        R-   i
   i   i   c             s       t   S(   N(   R0   (    (   R   Ra  R   (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     R6   c             s       t   S(   N(   R   (    (   R   Ra  R   (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR     R6   N(   R   R0   R   RK   R   R  Rw   Rh   R/  R~  R   R   (	   R_   R   Rn  R    R  t   replacesR   Rg  R  (    (   R   Ra  R   s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_choice_3  s     #&%c         C  s)   d } t  j |  } |  j | |  d S(   s1   
        Test choice(int, size, replace)
        i2   N(   R   R,  R  (   R_   R    Rn  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_choice_scalar_3  s    c         C  s+   t  j d  d d } |  j | |  d S(   s3   
        Test choice(array, size, replace)
        i2   i   id   N(   R   R,  R  (   R_   Rn  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_choice_array_3  s    (   Rc   Rd   R   R0   Rq  R   Ry  R{  R|  R}  R~  R  R  R  R  R  R  (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyRm  <  s   		
			
					t   TestRandomMultinomialc           B  sl   e  Z d  Z e j d d d d d d g d e j Z e e j   :Z d   Z d   Z	 d   Z
 d   Z RS(	   s%   
    Test np.random.multinomial.
    i   i   i   RI   c         C  s   |  j  | t j  |  j | j t |  f  |  j | j t j d  t j d  f  |  j | j   |  xu t	 | |  D]d \ } } |  j
 | d  |  j | |  t |  | } |  j
 | | d  |  j | | d  q Wd S(   s5   
        Check distribution of some samples.
        R   R   i    g      ?g       @N(   Rg   R   Rc  Rh   R/  RK   Rd  RI   t   sumt   zipR   R   RD  (   R_   R    R!   t   sampleR   t   nexpt   pexp(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   _check_sample  s    +c         C  s   t  d t  t  } d |  j } } | | |  } |  j | | |  t |  } | | |  } |  j | | |  d } t j d d | d d g d t j } | | j	   :} | | |  } |  j | | |  d S(	   s,   
        Test multinomial(n, pvals)
        R-   i  i@B i   i    id   RI   N(
   R   R0   R"   R!   R  R=   R   RM   Rh  R  (   R_   Ra  R    R!   Rg  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_multinomial_2  s    (c         C  s|   t  d t  t  } d |  j } } d } | | | |  } |  j | j d |  x! | D] } |  j | | |  q[ Wd S(   s7   
        Test multinomial(n, pvals, size: int)
        R-   i  i
   i    N(   R   R0   R#   R!   Rh   R/  R  (   R_   Ra  R    R!   t   kRg  R  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_multinomial_3_int  s    c         C  s   t  d t  t  } d |  j } } d } | | | |  } |  j | j d  |  x7 | j d | j d f  D] } |  j | | |  qq Wd S(   s9   
        Test multinomial(n, pvals, size: tuple)
        R-   i  i   i   iN(   i   i   (   R   R0   R#   R!   Rh   R/  R-  R  (   R_   Ra  R    R!   R  Rg  R  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_multinomial_3_tuple  s    #(   Rc   Rd   R   R   RM   Rh  R!   R  R  R  R  R  (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s   *			R-   t   nogilc         C  sM   |  d k r t  j |   n  x* t | j  D] } t  j d  | | <q, Wd  S(   Ni    i    (   R   R$   Rj   R   R   (   R$   RJ  Rl   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   py_extract_randomness"  s    i    c         C  sY   |  d k r t  j j |   n  d } x- t | j  D] } t  j j t  | | <q5 Wd  S(   Ni    (   R   R   R$   Rj   R   R   t   _randint_limit(   R$   RJ  RT  Rl   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   np_extract_randomness+  s
    t   ConcurrencyBaseTestc           B  s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   i c         C  s-   d |  j  d  f } t |   t |   d  S(   Ni*   i   (   t   _get_outputR  R  (   R_   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   setUp=  s    
c         C  s   t  j | d t  j S(   NRI   (   R   t   zerosRJ   (   R_   R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR  C  s    c         C  sa   d } d	 t  j d  } d } t  j j | j   | d | t  j j | j   | d | d S(
   s9   
        Check statistical properties of output.
        i   i   i    i   g?t   rtolNI       I       (   R   R   t   testingt   assert_allcloseR
  t   std(   R_   RJ  t   expected_avgt   expected_stdR  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   check_outputF  s
    c         C  s   x | D] } |  j  |  q W| r- d } n t |  } d   | D } d   | D } d   | D } |  j t |  | |  |  j t |  | |  |  j t |  | |  d  S(   Ni   c         S  s    h  |  ] } t  | d     q S(   i   (   Rw   (   R  RJ  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pys	   <setcomp>_  s   	 c         S  s    h  |  ] } t  | d    q S(   i(   Rw   (   R  RJ  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pys	   <setcomp>`  s   	 c         S  s   h  |  ] } | j     q S(    (   R  (   R  RJ  (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pys	   <setcomp>a  s   	 (   R  RK   Rh   (   R_   R   t   same_expectedRJ  t   expected_distinctt   headst   tailst   sums(    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   check_several_outputsQ  s    	(   Rc   Rd   t   _extract_iterationsR  R  R  R  (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR  5  s
   			t   TestThreadsc           B  sM   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   s3   
    Check the PRNG behaves well with threads.
    c           s   g  t  | d  D] } |  j |  j  ^ q      f d   } g  t  |  D]! } t j d | d | f  ^ qQ } x | D] } | j   q W| |  x | D] } | j   q W S(   so   
        Run *nthreads* threads extracting randomness with the given *seed*
        (no seeding if 0).
        i   c           s     d  d  |   d  S(   NR$   RJ  (    (   Rl   (   t   extract_randomnessR   R$   (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   targett  s    R  R   (   Rj   R  R  t	   threadingt   Threadt   startRY  (   R_   t   nthreadsR  R$   Rl   R  t   threadst   th(    (   R  R   R$   s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   extract_in_threadsl  s    ,1
c         C  s/   |  j  d | d d } |  j | d t d S(   s   
        When initializing the PRNG the same way, each thread
        should produce the same sequence of random numbers,
        using independent states, regardless of parallel
        execution.
        i   R$   i*   R  N(   R  R  R0   (   R_   R  R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   check_thread_safety  s    	c         C  s/   |  j  d | d d } |  j | d t d S(   s   
        The PRNG in new threads should be implicitly initialized with
        system entropy, if seed() wasn't called.
        i   R$   i    R  N(   R  R  R   (   R_   R  R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   check_implicit_initialization  s    c         C  s   |  j  t  d  S(   N(   R  R  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_py_thread_safety  s    c         C  s   |  j  t  d  S(   N(   R  R  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_np_thread_safety  s    c         C  s   |  j  t  d  S(   N(   R  R  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_py_implicit_initialization  s    c         C  s   |  j  t  d  S(   N(   R  R  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   test_np_implicit_initialization  s    (
   Rc   Rd   R   R  R  R  R  R  R  R  (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR  g  s   			
			t   nts(   Windows is not affected by fork() issuest   TestProcessesc           B  s8   e  Z d  Z e Z d   Z d   Z d   Z d   Z RS(   s9   
    Check the PRNG behaves well in child processes.
    c   	        s  t  j    g  }    f d      f d   } g  t |  D] } t  j d |  ^ qC } x | D] } | j   qh Wx- t |  D] } | j  j d d   q Wx | D] } | j   q W| j     x4 | D], } t | t	  r  j
 d | f  q q W| S(   s`   
        Run *nprocs* processes extracting randomness
        without explicit seeding.
        c            s)    j   j  }    d d d |   |  S(   NR$   i    RJ  (   R  R  (   RJ  (   R  R_   (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   target_inner  s    c            sD   y    }    j  |   Wn# t k
 r? }   j  |    n Xd  S(   N(   t   putt	   Exception(   RJ  t   e(   t   qR  (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    	R  t   timeouti   s   Exception in child: %s(   t   multiprocessingt   QueueRj   t   ProcessR  Rv   t   getRY  R  R  t   fail(	   R_   t   nprocsR  R   R  Rl   t   procsR   Rg  (    (   R  R  R_   R  s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   extract_in_processes  s"    
(c         C  s)   |  j  d |  } |  j | d t d S(   s   
        The PRNG in new processes should be implicitly initialized
        with system entropy, to avoid reproducing the same sequences.
        i   R  N(   R  R  R   (   R_   R  R   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    c         C  s   |  j  t  d  S(   N(   R  R  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    c         C  s   |  j  t  d  S(   N(   R  R  (   R_   (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s    (	   Rc   Rd   R   R   t   _numba_parallel_test_R  R  R  R  (    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyR    s   	+	
	t   __main__(K   t
   __future__R    Rr  R   R   R  Rt   R   R<  R   R  t   numpyR   t   numba.unittest_supportt   unittest_supportt   unittestt   numbaR   R   R   t   numba.compilerR   t   supportR   R   R   Ri   R	   R   R   R   R   R   R   R   R   R   R   R"   R#   R(   R+   R5   R7   R8   R9   R:   RN  R   R   RQ  R   R   RC   RG   RV   RY   R\   R]   Re   R   RW  Rm  R  R0   R  R  R  R  R  t   skipIfR1   R  Rc   t   main(    (    (    s6   lib/python2.7/site-packages/numba/tests/test_random.pyt   <module>   s~   																										D  E

2BF