
    J/Ph                         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 mZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d	Z G d
 de	          Zd Z G d de
e	          Z G d de	e          ZdS )    N)types)TestCaseMemoryLeakMixin)_get_proper_funcnext_uint32next_uint64next_double)MT19937	Generator)TypingError)run_in_new_process_cachingSerialMixini   c                        e Zd Zd Zd Zd ZdS )TestHelperFuncsc                    d }d }|                       t          ||t          j                  d                     d           |                       t          ||t          j                  d                     d           |                     t                    5 }t          ||t          j                   d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }t          ||t          j                   d d d            n# 1 swxY w Y   |                     dt          |j
                             d S )Nc                      dS )N     r       ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_np_randomgen.pytest_32bit_funczBTestHelperFuncs.test_proper_func_provider.<locals>.test_32bit_func       2r   c                      dS )N@   r   r   r   r   test_64bit_funczBTestHelperFuncs.test_proper_func_provider.<locals>.test_64bit_func   r   r   r   r   r   z1Argument dtype is not one of the expected type(s))assertEqualr   npfloat64float32assertRaisesr   int32assertInstr	exceptionr   )selfr   r   raisess       r   test_proper_func_providerz)TestHelperFuncs.test_proper_func_provider   s"   	 	 		 	 	 	 ()/?% %%&( * *+-	/ 	/ 	/ ()/?% %%&( * *+-	/ 	/ 	/ {++ 	Iv_orxHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I? !!	
 	
 	
 {++ 	Nv_ou}MMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N? !!	
 	
 	
 	
 	
s$   CC
CD88D<?D<c                    t           j                            d          }d } t          j        d          |          }|                     t                    5 } ||           d d d            n# 1 swxY w Y   d}|                     t          j	        |t          |j                            d uddt          |j                   z              d S )N   c                 .    |                      d          S )N)r   )locnormalxs    r   <lambda>z2TestHelperFuncs.test_check_types.<locals>.<lambda>6   s    AHHH.. r   TcachezArgument loc is not one of the expected type\(s\): \[<class 'numba.core.types.*.Float'>, <class 'numba.core.types.*.Integer'>, <class 'int'>, <class 'float'>\]z0Expected pattern not found in exception message.z Found )r   randomdefault_rngnumbanjitr!   r   
assertTrueresearchr$   r%   )r&   rngpy_func
numba_funcr'   expected_patterns         r   test_check_typesz TestHelperFuncs.test_check_types4   s   i##A&&..+UZd+++G44
{++ 	vJsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	0 	 	I&F,<(=(=>>dJ>-c&*++--.	
 	
 	
 	
 	
s   A33A7:A7c           	      b   t           j                            d          }d } t          j                    |          } t          j                    |          }d } t          j                    |          }t          j        t           j                  j        t          j        t           j                  j        t           j        ft          j        t           j	                  j        t          j        t           j	                  j        t           j	        ft          j        t           j
                  j        t          j        t           j
                  j        t           j
        ft          j        t           j                  j        t          j        t           j                  j        t           j        ft          j        t           j                  j        t          j        t           j                  j        t           j        ft          j        t           j                  j        t          j        t           j                  j        t           j        fg}|D ]x\  }}}	|                     |||	          5  |                     t                     5 }
 |||dz
  ||	           d d d            n# 1 swxY w Y   |                     dt%          |
j                             |                     t                     5 }
 ||||dz   |	           d d d            n# 1 swxY w Y   |                     dt%          |
j                             |                     t                     5 }
 ||||dz   |	           d d d            n# 1 swxY w Y   |                     dt%          |
j                             d d d            n# 1 swxY w Y   zt          j        t           j                  j        t          j        t           j                  j        t           j        }	}}|                     t                     5 }
 |||dz
  ||	           d d d            n# 1 swxY w Y   |                     dt%          |
j                             t          j        t           j                  j        t          j        t           j                  j        t           j        }	}}|                     t                     5 }
 ||||dz   |	           d d d            n# 1 swxY w Y   |                     dt%          |
j                             |                     t                     5 }
 ||||dz   |	           d d d            n# 1 swxY w Y   |                     dt%          |
j                             |                     t                     5 }
 ||dd	t           j                   d d d            n# 1 swxY w Y   |                     d
t%          |
j                             d S )Nr*   c                 4    |                      |||d          S )NTlowhighdtypeendpointintegersr0   rC   rD   rE   s       r   r1   z9TestHelperFuncs.test_integers_arg_check.<locals>.<lambda>J   s    JJ3TJFF r   c                 4    |                      |||d          S )NFrB   rG   rI   s       r   r1   z9TestHelperFuncs.test_integers_arg_check.<locals>.<lambda>O   s    JJ3TJGG r   rC   rD   rE   zlow is out of boundszhigh is out of bounds   i   d   z*low is greater than high in given interval)r   r4   r5   r6   r7   iinfouint8minmaxint8uint16int16uint32r"   subTestr!   
ValueErrorr#   r$   r%   uint64int64)r&   r;   r<   r=   numba_func_lownumba_func_endpoint_falsecasesrC   rD   rE   r'   s              r   test_integers_arg_checkz'TestHelperFuncs.test_integers_arg_checkH   s3   i##A&&G G!UZ\\'**
%g..H H$0EJLL$9$9! Xbh#RXbh%7%7%;RXFXbg"BHRW$5$5$927CXbi  $bhry&9&9&=ryIXbh#RXbh%7%7%;RXFXbi  $bhry&9&9&=ryIXbh#RXbh%7%7%;RXF
 !& 	 	Cu#D>>  &&z22 >f"N3au===> > > > > > > > > > > > > > > *())  
 &&z22 :fJsC5999: : : : : : : : : : : : : : : +())  
 &&z22 If--c3q%HHHI I I I I I I I I I I I I I I +())  )              2 HRY//3HRY//3RY Tz** 	6fN3au555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	" !!	
 	
 	

 HRX..2HRX..2BH Tz** 	2fJsC5111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	# !!	
 	
 	

 z** 	Af%%c3q%@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	# !!	
 	
 	

 z** 	1fJsCbi000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	18 !!	
 	
 	
 	
 	
s   =OJ6*O6J::O=J:>AOL!O!L%%O(L%)AO.N ONON+OO	O	Q""Q&)Q&TT#&T#,V

VVW<<X X N)__name__
__module____qualname__r(   r?   r^   r   r   r   r   r      sF        
 
 
4
 
 
(O
 O
 O
 O
 O
r   r   c                  *   t           j                            d          } t           j                            d          }d } t          j        d          |          }t          j        |                    d           ||                     sJ d S )Nr*   c                 ,    |                      d          S N
   r4   r/   s    r   r1   z(test_generator_caching.<locals>.<lambda>   s     r   Tr2   re   )r   r4   r5   r6   r7   allclose)nb_rngnp_rngr<   r=   s       r   test_generator_cachingrj      s    Y""1%%FY""1%%F$$G'$'''00J;v}}R((**V*<*<=======r   c                   2   e Zd Z	 	 	 d3dZd4d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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 Z/d1 Z0d2 Z1dS )5TestRandomGeneratorsN   c                 (   t          j        |          }|d}|At          j                            |          }t          j                            |          }n0t           ||                    }t           ||                    } ||||          }	|                    |||          }
t          |	t          j                  r$t          j	        |	j
        t          j                  st          |	t                    r$t          j                            |
|	||           n t          j                            |	|
           |j        j        d         }|j        j        d         }|D ]$}|                     ||         ||                    %d S )Nr*   seed)maxulprE   state)r6   r7   r   r4   r5   r   r<   
isinstancendarray
issubdtyperE   floatingfloattestingassert_array_max_ulpassert_equalbit_generatorrr   assertPreciseEqual)r&   distribution_funcbitgen_typerp   	test_size
test_dtypeulp_precnumba_rng_instancenumpy_rng_instance	numba_res	numpy_resnumba_gen_statenumpy_gen_state
_state_keys                 r   check_numpy_parityz'TestRandomGenerators.check_numpy_parity   s   
 "J'899<D!#!6!6D!6!A!A!#!6!6D!6!A!A!*;;t+<+<!=!=!*;;t+<+<!=!= &%&8&/= =	%--.@.7E E	 y"*-- 	:M)/2;77	:i//	: J++Iy3;: , O O O O J##Iy999 -:@I,:@I) 	A 	AJ##OJ$?$3J$?A A A A	A 	Ar   r*   c                 `   t           j                            |          }t           j                            |          }t          |j        j        |          } ||j        j        j                  }t          j        fd          } ||          }	| 	                    |	|           d S )Nro   c                 $     | j                   S N)r{   )r0   bitgen_funcs    r   r1   z?TestRandomGenerators._test_bitgen_func_parity.<locals>.<lambda>   s    ++ao*F*F r   )
r   r4   r5   getattrr{   ctypesrr   r6   r7   r|   )
r&   	func_namer   rp   r   r   
numpy_funcr   r=   r   s
     `       r   _test_bitgen_func_parityz-TestRandomGenerators._test_bitgen_func_parity   s    Y222==Y222==/=DiPP
J1?FLMM	Z F F F FGG
J122		955555r   c                    t           j                                        }t          |          D ]\  }}|                                }||         ||<   |g|z   }t          j        |          }	|                     t                    5 }
 |	|  d d d            n# 1 swxY w Y   | 	                    d| dt          |
j                             d S )Nz	Argument z$ is not one of the expected type(s):)r   r4   r5   	enumeratecopyr6   r7   r!   r   r#   r$   r%   )r&   	dist_funcarg_list
valid_argsinvalid_argsr;   idx_arg	curr_argsnb_dist_funcr'   s              r   _check_invalid_typesz)TestRandomGenerators._check_invalid_types   s   i##%%"8,, 
	 
	IC"))I)#.IcN	)I :i00L"";// )6i(() ) ) ) ) ) ) ) ) ) ) ) ) ) )MMFDFFFF$%%   
	 
	s   BB	B	c                    t           j                                        }t          j        d           }|                     | ||                     |                     t          |          t           ||                               d S )Nc                     | S r   r   r/   s    r   r1   zATestRandomGenerators.test_npgen_boxing_unboxing.<locals>.<lambda>   s    ! r   )r   r4   r5   r6   r7   r   id)r&   rng_instancer=   s      r   test_npgen_boxing_unboxingz/TestRandomGenerators.test_npgen_boxing_unboxing   s|    y,,..Z,,
zz,'?'?@@@L))2jj.F.F+G+GHHHHHr   c                    t           j                                        }t          j        d           }t          j        d           } ||          }t          j                     t          j        |          }~ ||           t          j                     t          j        |          }| 	                    ||dz              d S )Nc                 *    |                                  S r   rf   r/   s    r   r1   zATestRandomGenerators.test_npgen_boxing_refcount.<locals>.<lambda>   s    QXXZZ r   c                     | S r   r   r/   s    r   r1   zATestRandomGenerators.test_npgen_boxing_refcount.<locals>.<lambda>   s    Q r   r*   )
r   r4   r5   r6   r7   gccollectsysgetrefcountr   )r&   r   no_boxdo_boxyref_1ref_2s          r   test_npgen_boxing_refcountz/TestRandomGenerators.test_npgen_boxing_refcount   s    y,,..//00JJ''F<  

--|

--	*****r   c                     g d}t           t          t          g}t          ||          D ]J\  }}|                     ||          5  |                     ||           d d d            n# 1 swxY w Y   Kd S )Nr   )_func
_func_name)r   r	   r
   ziprW   r   )r&   
func_namesfuncsr   r   s        r   test_bitgen_funcsz&TestRandomGenerators.test_bitgen_funcs   s    BBB
k;7!$UJ!7!7 	A 	AE:EjAA A A--j%@@@A A A A A A A A A A A A A A A	A 	As   A((A,	/A,	c                    g d}t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        g}d t          g}d }| 
                                5  |                     |d d d           d d d            n# 1 swxY w Y   d }|D ]V}|D ]Q}|D ]L}| 
                    |||          5  |                     ||d ||d           d d d            n# 1 swxY w Y   MRWg d}d t          g}d }|D ]Z}|D ]U}| 
                    ||          5  |                     ||d |t           j        d           d d d            n# 1 swxY w Y   V[d	 }| 
                                5  |                     |d d 
           d d d            n# 1 swxY w Y   d }|                     |g ddddt           j        dgdddt           j        dg           d S )NNr   )rN   re         c                 .    |                      dd          S Nr   rN   rG   r0   sizerE   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>
  s    !**Q*<*< r   r   r   r   r   c                 4    |                      dd||          S )Nrm   re   r   rE   rG   r   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>  s    JJq"4uJ55 r   _size_dtype_bitgenc                 H    |                      dd|t          j                  S )NFTr   )rH   r   bool_r   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>  s     JJudRXJ>> r   r   r   c                 v    |                      t          j        d          t          j        d                    S r   )rH   r   rP   rZ   r   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>'  s(    JJrx{{BHSMM22 r   r   r   c                 6    |                      |||||          S )NrC   rD   r   rE   rF   rG   )r0   rC   rD   r   rE   rF   s         r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>-  s(    JJ3T"X  7 7 r   r   r*   rm   r*   Tr0   r/   )r   rZ   r"   rU   rS   rY   rV   rT   rP   r   rW   r   r   r   r   r&   
test_sizestest_dtypesbitgen_typesr   r   r   r   s           r   test_integersz"TestRandomGenerators.test_integers  s   555
x28RWy")RYBg =<	\\^^ 	A 	A##I/3a $ A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A6 6	 	H 	HE% H H+ H HGE&.5 & 7 7 H H//	704eVQH H HH H H H H H H H H H H H H H HHH 655
g? ?	 	F 	FE' F F\\*1 " 3 3 F F++Iw,0%1F F FF F F F F F F F F F F F F F FF3 3	\\^^ 	5 	5##I/3 $ 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	57 7	 	!!)"N"N"N#$arx">#&VRZ"E	G 	G 	G 	G 	GsH   ?B%%B),B)C>	>DD;%E,,E03E0F55F9<F9c           
      8   g ddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fdd	t           j        fd
d	t           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        fddt           j        f}d}|D ]V\  }| 	                    |          5  fd}| 
                    |d d ||d           d d d            n# 1 swxY w Y   Wd S )Nrm      rN   r   l   l    l    l   l   ll    l    iii  i  i  re   i  i  i            i)rL      rK   c                 6    |                      ||          S Nr   rG   )r0   r   rE   rD   rC   s      r   r1   z:TestRandomGenerators.test_integers_cases.<locals>.<lambda>k  s    JJsDt5JAA r   )r   rY   rZ   rV   r"   rT   rU   rP   rS   rW   r   )r&   r]   r   rE   r   rD   rC   s        @@r   test_integers_casesz(TestRandomGenerators.test_integers_cases6  s   /
29/
 RY/
 bi(	/

 &	2/
 "BI./
 28/
 RX/
 bh'/
 %rx0/
 !28,/
  !2BH=/
 29/
  RY!/
" 	*#/
$ 
BI&%/
( 28)/
* RX+/
, rx(-/
. 	28$//
0 BH-1/
4 295/
6 RY7/
8 
BI&9/
: 	";/
> 28?/
@ BHA/
B 	28$C/
D rx E/
F UBH%G/
J 28K/
L BHM/
N "(#O/
P bhQ/
T 27OU/
V BGW/
X !Y/
Z RW[/
\ 3 ]/
`  % 	> 	>Cu#D>> > >B B B B B	''	4(,dE1> > >> > > > > > > > > > > > > > >	> 	>s   !!JJ	J	c                    g d}t           j        t           j        g}d t          g}d }|                                 5  |                     |d d            d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|D ]K}|                     |||          5  |                     ||d ||           d d d            n# 1 swxY w Y   LQVd }|                     |ddgd	t           j        gd
dg           d S )Nr   c                 *    |                                  S r   rf   r   s      r   r1   z2TestRandomGenerators.test_random.<locals>.<lambda>v      !((** r   r   c                 0    |                      ||          S r   rf   r   s      r   r1   z2TestRandomGenerators.test_random.<locals>.<lambda>{  s    !((E(*J*J r   r   c                 0    |                      ||          S r   rf   r   s      r   r1   z2TestRandomGenerators.test_random.<locals>.<lambda>  s    HH$eH,, r   r   rE   r   r/   g        r   r    r   r   rW   r   r   r   s           r   test_randomz TestRandomGenerators.test_randomp  s   555
z2:.g 54	\\^^ 	5 	5##I/3 $ 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 KJ	 	E 	EE% E E+ E EGE&.5 & 7 7 E E//	704eVE E EE E E E E E E E E E E E E E EEE- -	!!)fg->#'"4vrl	D 	D 	D 	D 	D#   A""A&)A&B:	:B>B>c                    g d}t           j        t           j        g}d t          g}d }|                                 5  |                     |d d            d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|D ]K}|                     |||          5  |                     ||d ||           d d d            n# 1 swxY w Y   LQVd }|                     |ddgd	t           j        gd
dg           d S )Nr   c                 *    |                                  S r   standard_normalr   s      r   r1   z;TestRandomGenerators.test_standard_normal.<locals>.<lambda>      !*;*;*=*= r   r   c                 0    |                      ||          S r   r   r   s      r   r1   z;TestRandomGenerators.test_standard_normal.<locals>.<lambda>      4u55 r   r   c                 0    |                      ||          S r   r   r   s      r   r1   z;TestRandomGenerators.test_standard_normal.<locals>.<lambda>  r   r   r   rE   r   r/   r   r   r   s           r   test_standard_normalz)TestRandomGenerators.test_standard_normal  s   555
z2:.g >=	\\^^ 	5 	5##I/3 $ 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	56 6	   	E 	EE% E E+ E EGE&.5 & 7 7 E E//	704eVE E EE E E E E E E E E E E E E E EEE6 6	!!)fg->#'"4vqk	C 	C 	C 	C 	Cr   c                    g d}t           j        t           j        g}d t          g}d }|                                 5  |                     |d d            d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|D ]K}|                     |||          5  |                     ||d ||           d d d            n# 1 swxY w Y   LQVd }|                     |g ddd	t           j        gg d
           d S )Nr   c                 *    |                                  S r   standard_exponentialr   s      r   r1   z@TestRandomGenerators.test_standard_exponential.<locals>.<lambda>  s    !*@*@*B*B r   r   c                 0    |                      ||          S r   r   r   s      r   r1   z@TestRandomGenerators.test_standard_exponential.<locals>.<lambda>  s    ""E":: r   r   c                 2    |                      |||          S )Nmethodr   rE   r   )r0   r   r   rE   s       r   r1   z@TestRandomGenerators.test_standard_exponential.<locals>.<lambda>  s    ""&t5"II r   r   zigr   )r   r/   r   r   r   s           r   test_standard_exponentialz.TestRandomGenerators.test_standard_exponential  s   555
z2:.g CB	\\^^ 	5 	5##I/3 $ 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5; ;	   	E 	EE% E E+ E EGE&.5 & 7 7 E E//	704eVE E EE E E E E E E E E E E E E E EEEJ J	!!)-H-H-H#($
";^^^	M 	M 	M 	M 	Mr   c                    g d}t           j        t           j        g}d t          g}d }|D ]U}|D ]P}|D ]K}|                     |||          5  |                     ||d ||           d d d            n# 1 swxY w Y   LQVd S )Nr   c                 2    |                      ||d          S )Ninv)r   rE   r   r   r   s      r   r1   zDTestRandomGenerators.test_standard_exponential_inv.<locals>.<lambda>  s    ""E5"II r   r   )r   r    r   r   rW   r   r   s           r   test_standard_exponential_invz2TestRandomGenerators.test_standard_exponential_inv  s*   555
z2:.gJ J	 	E 	EE% E E+ E EGE&.5 & 7 7 E E//	704eVE E EE E E E E E E E E E E E E E EEE	E 	Es   A3	3A7:A7c                 j   g d}t           j        t           j        g}d t          g}d }|D ][}|D ]V}|D ]Q}|                     |||          5  |                     ||d ||t                     d d d            n# 1 swxY w Y   RW\d }|                     |g dddt           j        gg d           d S )	Nr   c                 2    |                      d||          S )N      @shaper   rE   standard_gammar   s      r   r1   z:TestRandomGenerators.test_standard_gamma.<locals>.<lambda>  s    3T?? r   r   c                 2    |                      |||          S )Nr  r  )r0   r  r   rE   s       r   r1   z:TestRandomGenerators.test_standard_gamma.<locals>.<lambda>  s    5t5AA r   r  r   r   )r0   r/   r   )r   r    r   r   rW   r   adjusted_ulp_precr   r   s           r   test_standard_gammaz(TestRandomGenerators.test_standard_gamma  sv   555
z2:.g@ @	 	C 	CE% C C+ C CGE&.5 & 7 7 C C//	704eV0AC C CC C C C C C C C C C C C C C CCCB B	!!)-G-G-G#&bj"9;K;K;K	M 	M 	M 	M 	Ms    A9	9A= A=c                    g d}d t           g}d }|                                 5  |                     |d d t                     d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d	           d S )
Nr   c                 *    |                                  S r   r-   r   s      r   r1   z2TestRandomGenerators.test_normal.<locals>.<lambda>  r   r   r   c                 2    |                      dd|          S )N      ?r   r,   scaler   r-   r   s      r   r1   z2TestRandomGenerators.test_normal.<locals>.<lambda>  s    !((s!$(*O*O r   r   c                 2    |                      |||          S Nr  r-   r0   r,   r  r   s       r   r1   z2TestRandomGenerators.test_normal.<locals>.<lambda>  s    HHEH55 r   r  r  r   r   r0   r0   r/   r   rW   r   r  r   r&   r   r   r   r   r   s         r   test_normalz TestRandomGenerators.test_normal  s    655
g 54	\\^^ 	@ 	@##I/3-> $ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
 PO	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
6 6	!!)-E-E-E"0..2D2D2D	F 	F 	F 	F 	F#   AAA= B))B-0B-c                    g d}d t           g}d }|                                 5  |                     |d d t                     d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d	           d S )
Nr   c                 *    |                                  S r   uniformr   s      r   r1   z3TestRandomGenerators.test_uniform.<locals>.<lambda>      !))++ r   r   c                 2    |                      dd|          S )Nr  r   rC   rD   r   r  r   s      r   r1   z3TestRandomGenerators.test_uniform.<locals>.<lambda>	  s    !))!$)*O*O r   r   c                 2    |                      |||          S )Nr  r  )r0   rC   rD   r   s       r   r1   z3TestRandomGenerators.test_uniform.<locals>.<lambda>  s    II#DtI44 r   r  r  r  r  r  s         r   test_uniformz!TestRandomGenerators.test_uniform  s    655
g 65	\\^^ 	@ 	@##I/3-> $ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
 PO	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
5 5	!!)-D-D-D"0..2D2D2D	F 	F 	F 	F 	Fr  c           
         g d}d t           g}d }|                                 5  |                     |d d            d d d            n# 1 swxY w Y   d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |ddgd	d
gddg           d S )Nr   c                 *    |                                  S r   exponentialr   s      r   r1   z7TestRandomGenerators.test_exponential.<locals>.<lambda>  s    !--// r   r   c                 0    |                      d|          S Nr  r  r   r"  r   s      r   r1   z7TestRandomGenerators.test_exponential.<locals>.<lambda>"  s    !--c-*M*M r   r   c                 0    |                      ||          S Nr&  r"  r0   r  r   s      r   r1   z7TestRandomGenerators.test_exponential.<locals>.<lambda>(  s    MMDM11 r   r  r   r  r   r0   r/   r   rW   r   r   r  s         r   test_exponentialz%TestRandomGenerators.test_exponential  s    655
g :9	\\^^ 	5 	5##I/3 $ 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 NM	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??2 2	!!)gv->#&+V}	> 	> 	> 	> 	>#   A

AA7BB!$B!c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d           d S )Nr   c                 2    |                      dd|          S )Nr   r  r  r  r   gammar   s      r   r1   z1TestRandomGenerators.test_gamma.<locals>.<lambda>4  s     !''37; +2 += += r   r   c                 2    |                      |||          S )Nr/  r0  )r0   r  r  r   s       r   r1   z1TestRandomGenerators.test_gamma.<locals>.<lambda><  s    GG%u4G88 r   r/  r   r  r   r  r  r  s         r   
test_gammazTestRandomGenerators.test_gamma-  s)    655
g= =	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
9 9	!!)-G-G-G"2"2"24F4F4F	H 	H 	H 	H 	H    AA #A c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d           d S )Nr   c                 2    |                      dd|          S )Nr  g      @abr   betar   s      r   r1   z0TestRandomGenerators.test_beta.<locals>.<lambda>H  s    !&&3#D&*I*I r   r   c                 2    |                      |||          S )Nr8  r;  )r0   r9  r:  r   s       r   r1   z0TestRandomGenerators.test_beta.<locals>.<lambda>P  s    !qt)D)D r   r8  r3  r  r  r  s         r   	test_betazTestRandomGenerators.test_betaA  s$    655
gII	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ED	!!)-?-?-?"2"2"24F4F4F	H 	H 	H 	H 	Hr5  c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d           d S )Nr   c                 2    |                      dd|          S )NrL   r   dfnumdfdenr   fr   s      r   r1   z-TestRandomGenerators.test_f.<locals>.<lambda>[  s    !##AQT#*J*J r   r   c                 2    |                      |||          S )NrA  rD  )r0   rB  rC  r   s       r   r1   z-TestRandomGenerators.test_f.<locals>.<lambda>c  s    CCe5tC44 r   rA  )rm   r*   r   r  r  r  s         r   test_fzTestRandomGenerators.test_fT  s#    655
gJJ	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??5 5	!!)-G-G-G".,,0B0B0B	D 	D 	D 	D 	Dr5  c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S NrL   dfr   	chisquarer   s      r   r1   z5TestRandomGenerators.test_chisquare.<locals>.<lambda>o  s    !+++*F*F r   r   c                 0    |                      ||          S NrK  rM  r0   rL  r   s      r   r1   z5TestRandomGenerators.test_chisquare.<locals>.<lambda>w  s    KK2DK)) r   rL  r   rL   r   r0   r/   r  r  s         r   test_chisquarez#TestRandomGenerators.test_chisquareh  s    655
gFF	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??* *	!!)dF^#$d)c6]	< 	< 	< 	< 	<r5  c           
         g d}d t           g}d }|                                 5  |                     |d d            d d d            n# 1 swxY w Y   d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |dgdgd	g           d S )
Nr   c                 *    |                                  S r   standard_cauchyr   s      r   r1   z;TestRandomGenerators.test_standard_cauchy.<locals>.<lambda>  r   r   r   c                 .    |                      |          S Nr   rU  r   s      r   r1   z;TestRandomGenerators.test_standard_cauchy.<locals>.<lambda>  s    !*;*;*;*F*F r   r   c                 .    |                      |          S rX  rU  )r0   r   s     r   r1   z;TestRandomGenerators.test_standard_cauchy.<locals>.<lambda>  s    1#4#4$#4#?#? r   r   r   r/   r*  r  s         r   test_standard_cauchyz)TestRandomGenerators.test_standard_cauchy|  s    655
g >=	\\^^ 	5 	5##I/3 $ 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 GF	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
 @?	!!)fX#'&6(	4 	4 	4 	4 	4r,  c           
         g d}d t           g}d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S N      ?r9  r   paretor   s      r   r1   z2TestRandomGenerators.test_pareto.<locals>.<lambda>  s    !((St(*D*D r   r   c                 0    |                      ||          S Nr`  ra  r0   r9  r   s      r   r1   z2TestRandomGenerators.test_pareto.<locals>.<lambda>  s    ahhh&>&> r   r9  r   r*   r   r0   r/   r*  r  s         r   test_paretoz TestRandomGenerators.test_pareto  s    655
gDD	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
 ?>	!!)c6]#$d)c6]	< 	< 	< 	< 	<   AAAc           
         g d}d t           g}d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S r^  weibullr   s      r   r1   z3TestRandomGenerators.test_weibull.<locals>.<lambda>  s    !))c)*E*E r   r   c                 0    |                      ||          S rd  rj  re  s      r   r1   z3TestRandomGenerators.test_weibull.<locals>.<lambda>  s    aii!$i&?&? r   r9  r   r*   r   r0   r/   r*  r  s         r   test_weibullz!TestRandomGenerators.test_weibull  s    655
gEE	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
 @?	!!)c6]#$d)c6]	< 	< 	< 	< 	<rg  c           
         g d}d t           g}d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S )N      ?r`  powerr   s      r   r1   z1TestRandomGenerators.test_power.<locals>.<lambda>  s    !''Dt'*D*D r   r   c                 0    |                      ||          S rd  rq  re  s      r   r1   z1TestRandomGenerators.test_power.<locals>.<lambda>  s    aggg&=&= r   r9  r   rp  r   r0   r/   r*  r  s         r   
test_powerzTestRandomGenerators.test_power  s    655
gDD	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
 >=	!!)c6]#',f	? 	? 	? 	? 	?rg  c                    g d}d t           g}d }|                                 5  |                     |d d t                     d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d	           d S )
Nr   c                 *    |                                  S r   laplacer   s      r   r1   z3TestRandomGenerators.test_laplace.<locals>.<lambda>  r  r   r   c                 2    |                      dd|          S Nr_  r  r  rw  r   s      r   r1   z3TestRandomGenerators.test_laplace.<locals>.<lambda>  s    II#StI44 r   r   c                 2    |                      |||          S r  rw  r  s       r   r1   z3TestRandomGenerators.test_laplace.<locals>.<lambda>  s    II#UI66 r   r  r_  r  r   r  r  r  s         r   test_laplacez!TestRandomGenerators.test_laplace  s    655
g 65	\\^^ 	@ 	@##I/3-> $ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
5 5	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??7 7	!!)-E-E-E"2"2"24F4F4F	H 	H 	H 	H 	Hr  c                    g d}d t           g}d }|                                 5  |                     |d d t                     d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d	           d S )
Nr   c                 *    |                                  S r   logisticr   s      r   r1   z4TestRandomGenerators.test_logistic.<locals>.<lambda>      !**,, r   r   c                 2    |                      dd|          S rz  r  r   s      r   r1   z4TestRandomGenerators.test_logistic.<locals>.<lambda>  s    JJ3StJ44 r   r   c                 2    |                      |||          S r  r  r  s       r   r1   z4TestRandomGenerators.test_logistic.<locals>.<lambda>  s    JJ3e$J77 r   r  r|  r  r  r  s         r   test_logisticz"TestRandomGenerators.test_logistic  s    655
g 76	\\^^ 	@ 	@##I/3-> $ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
5 5	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??8 8	!!)-E-E-E"2"2"24F4F4F	H 	H 	H 	H 	Hr  c                    g d}d t           g}d }|                                 5  |                     |d d t                     d d d            n# 1 swxY w Y   d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d	           d S )
Nr   c                 *    |                                  S r   	lognormalr   s      r   r1   z5TestRandomGenerators.test_lognormal.<locals>.<lambda>
  s    !++-- r   r   c                 2    |                      dd|          S )Nr   r  meansigmar   r  r   s      r   r1   z5TestRandomGenerators.test_lognormal.<locals>.<lambda>  s    KKS$K77 r   r   c                 2    |                      |||          S )Nr  r  )r0   r  r  r   s       r   r1   z5TestRandomGenerators.test_lognormal.<locals>.<lambda>  s    KKTTK:: r   r  r|  r  r  r  s         r   test_lognormalz#TestRandomGenerators.test_lognormal  s    655
g 87	\\^^ 	@ 	@##I/3-> $ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
8 8	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??; ;	!!)-F-F-F"2"2"24F4F4F	H 	H 	H 	H 	Hr  c           
         g d}d t           g}d }|                                 5  |                     |d d            d d d            n# 1 swxY w Y   d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |ddgd	d
gddg           d S )Nr   c                 *    |                                  S r   rayleighr   s      r   r1   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>&  r  r   r   c                 0    |                      d|          S r%  r  r   s      r   r1   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>+  s    !**3T**J*J r   r   c                 0    |                      ||          S r(  r  r)  s      r   r1   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>2  s    !**5t**L*L r   r  r   r  r   r0   r/   r*  r  s         r   test_rayleighz"TestRandomGenerators.test_rayleigh  s    655
g 76	\\^^ 	5 	5##I/3 $ 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 KJ	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
 ML	!!)gv->#&+V}	> 	> 	> 	> 	>r,  c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S rJ  
standard_tr   s      r   r1   z6TestRandomGenerators.test_standard_t.<locals>.<lambda>=  s    !,,!$,*G*G r   r   c                 0    |                      ||          S rP  r  rQ  s      r   r1   z6TestRandomGenerators.test_standard_t.<locals>.<lambda>E  s    q||r|'E'E r   rL  r   rL   r   r0   r/   r  r  s         r   test_standard_tz$TestRandomGenerators.test_standard_t6  s    655
gGG	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? FE	!!)dF^#$d)c6]	< 	< 	< 	< 	<r5  c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d           d S )Nr   c                 2    |                      dd|          S )Nr   r  r  r  r   waldr   s      r   r1   z0TestRandomGenerators.test_wald.<locals>.<lambda>P  s    !&&c4&*P*P r   r   c                 2    |                      |||          S )Nr  r  )r0   r  r  r   s       r   r1   z0TestRandomGenerators.test_wald.<locals>.<lambda>X  s    FFEF55 r   r  r|  r  r  r  s         r   	test_waldzTestRandomGenerators.test_waldI  s%    655
gPP	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??6 6	!!)-F-F-F"2"2"24F4F4F	H 	H 	H 	H 	Hr5  c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S )Nrp  pr   	geometricr   s      r   r1   z5TestRandomGenerators.test_geometric.<locals>.<lambda>d  s    !++4+*H*H r   r   c                 0    |                      ||          S Nr  r  r0   r  r   s      r   r1   z5TestRandomGenerators.test_geometric.<locals>.<lambda>l  s    akkADk&A&A r   r  r   rp  r   r0   r/   r  r  s         r   test_geometricz#TestRandomGenerators.test_geometric]  s    655
gHH	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? BA	!!)c6]#',f	? 	? 	? 	? 	?r5  c           
         g d}d t           g}d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S )Nr  r`  zipfr   s      r   r1   z0TestRandomGenerators.test_zipf.<locals>.<lambda>w  s    !&&3T&*B*B r   r   c                 0    |                      ||          S rd  r  re  s      r   r1   z0TestRandomGenerators.test_zipf.<locals>.<lambda>~  s    affqtf&<&< r   r9  r   r*   r   r0   r/   r*  r  s         r   	test_zipfzTestRandomGenerators.test_zipfp  s    655
gBB	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
 =<	!!)c6]#$d)c6]	< 	< 	< 	< 	<rg  c           
         g d}d t           g}d }|D ]O}|D ]J}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   KPd }|                     |g dg dg d           d S )Nr   c                 4    |                      ddd|          S )Nr   r   rm   leftmoderightr   
triangularr   s      r   r1   z6TestRandomGenerators.test_triangular.<locals>.<lambda>  s    LLaaqtL<< r   r   c                 4    |                      ||||          S )Nr  r  )r0   r  r  r  r   s        r   r1   z6TestRandomGenerators.test_triangular.<locals>.<lambda>  s    LLdULFF r   r  )r   r   rm   r   r0   r0   r0   r/   r*  r  s         r   test_triangularz$TestRandomGenerators.test_triangular  s&    655
g= =	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
G G	!!)-N-N-N"1//3J3J3J	L 	L 	L 	L 	Lrg  c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |ddgddgd	d
g           d S )Nr   c                 0    |                      d|          S )Nr   lamr   poissonr   s      r   r1   z3TestRandomGenerators.test_poisson.<locals>.<lambda>  s    !)))*F*F r   r   c                 0    |                      ||          S )Nr  r  )r0   r  r   s      r   r1   z3TestRandomGenerators.test_poisson.<locals>.<lambda>  s    		c	(E(E r   r  r   r   r   r0   r/   r  r  s         r   test_poissonz!TestRandomGenerators.test_poisson  s    655
gFF	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? FE	!!)eV_#%t*sFm	= 	= 	= 	= 	=r5  c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d           d S )Nr   c                 2    |                      dd|          S Nr*   皙?nr  r   negative_binomialr   s      r   r1   z=TestRandomGenerators.test_negative_binomial.<locals>.<lambda>  s    !s66 r   r   c                 2    |                      |||          S Nr  r  r0   r  r  r   s       r   r1   z=TestRandomGenerators.test_negative_binomial.<locals>.<lambda>  s    !qt44 r   r  r*   rp  r   r  r  r  s         r   test_negative_binomialz+TestRandomGenerators.test_negative_binomial  s'    655
g7 7	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??5 5	!!)-?-?-?"1//3E3E3E	G 	G 	G 	G 	Gr5  c           
          dg}d t           g}g d}t          j        |||          D ]U\  }}|                     ||          5  fd}|                     ||d |d d           d d d            n# 1 swxY w Y   Vd S )Nr   )r   r*   rL   r   r   _axisc                 b    |                      |          }|                     |           |S )NrY  axis)r4   shuffle)r0   r   rE   arrr  s       r   r   z4TestRandomGenerators.test_shuffle.<locals>.dist_func  s1    (((--CIIcI...Jr   r   )r   	itertoolsproductrW   r   )r&   r   r   axesr   r   r   r  s          @r   test_shufflez!TestRandomGenerators.test_shuffle  s   "^
gyy%.%6z7C7;&= &= 
	+ 
	+!E7E E7%HH + +     ''	7(,eT()+ + ++ + + + + + + + + + + + + + +
	+ 
	+s    A22A6	9A6	c                     t          j        g           }t          j        g           }d }t          j        |          }d }|                      | |            |           | |            |                     d S )Nc                 0    |                      |           |S r   r  r0   r  s     r   r   z:TestRandomGenerators.test_shuffle_empty.<locals>.dist_func  s    IIcNNNJr   c                  @    t           j                            d          S Nr*   r   r4   r5   r   r   r   r1   z9TestRandomGenerators.test_shuffle_empty.<locals>.<lambda>      bi++A.. r   r   arrayr6   r7   r|   r&   r9  r:  r   nb_funcr;   s         r   test_shuffle_emptyz'TestRandomGenerators.test_shuffle_empty  s    HRLLHRLL	 	 	 *Y''..		##%% 3 3WWSSUUA5F5FGGGGGr   c                    |                                   d }|                     |ddgt          j        g d          dgddg           t          j                            d          }|                     t                    5 } t          j	        |          |t          j        g d          d           d d d            n# 1 swxY w Y   | 
                    dt          |j                             d S )	Nc                 4    |                      ||           |S Nr  r  r0   r  r  s      r   r   z:TestRandomGenerators.test_shuffle_check.<locals>.dist_func  s    IIcI%%%Jr   r0   r  r      rm   r   r*   rL   )Axis is out of bounds for the given arraydisable_leak_checkr   r   r  r4   r5   r!   
IndexErrorr6   r7   r#   r$   r%   r&   r   r;   r'   s       r   test_shuffle_checkz'TestRandomGenerators.test_shuffle_check  s>   !!!	 	 	 	!!)c6]#%8GGG#4#4a"83*	F 	F 	F i##A&&z** 	=f!EJy!!#rx'8'8!<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=7 !!	
 	
 	
 	
 	
s   4CC
Cc           
         dg}d t           g}g d}t          j        |||          D ]S\  }}}|                     |||          5  d }|                     ||d |d d           d d d            n# 1 swxY w Y   Tt          j        d           }t          j        	                                }|                    d          }	|	
                                }
 |||	           |                     |	|
           d S )	Nr   )r   r*   rL   r  c                 \    |                      |          }|                     |d          S )NrY  r*   r  )r4   permutation)r0   r   rE   r  s       r   r   z8TestRandomGenerators.test_permutation.<locals>.dist_func  s+    (((--C==1=555r   r   c                 ,    |                      |          S r   r  )r;   r  s     r   r1   z7TestRandomGenerators.test_permutation.<locals>.<lambda>  s    0D0D r   )re   r   rY  )r   r  r  rW   r   r6   r7   r   r4   r5   r   r|   )r&   r   r   r  r   r   r  r   r;   r  arr_cpys              r   test_permutationz%TestRandomGenerators.test_permutation  se   "^
g   %.%6z7C7;&= &= 		+ 		+!E7E E7%HH + +6 6 6 ''	7(,eT()+ + +	+ + + + + + + + + + + + + + + JDDEE	i##%%jjhj''((**	#sW-----s   A//A3	6A3	c                 
   |                                   d }|                     |ddgt          j        g d          dgddg           t          j                            d          }|                     t                    5 } t          j	        |          |t          j        g d          d           d d d            n# 1 swxY w Y   | 
                    dt          |j                             |                     t                    5 } t          j	        |          |t          j        g d          d	           d d d            n# 1 swxY w Y   | 
                    dt          |j                             d S )
Nc                 0    |                      ||          S r  r  r  s      r   r   zBTestRandomGenerators.test_permutation_exception.<locals>.dist_func  s    ==4=000r   r0   r  r  r   r*   rL   r  r  r  r  s       r   test_permutation_exceptionz/TestRandomGenerators.test_permutation_exception  s   !!!	1 	1 	1 	!!)c6]#%8GGG#4#4a"83*	F 	F 	F i##A&&z** 	=f!EJy!!#rx'8'8!<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=7 !!	
 	
 	
 z** 	>f!EJy!!#rx'8'8"===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>7 !!	
 	
 	
 	
 	
s$   4CC
C4EEEc                     t          j        g           }t          j        g           }d }t          j        |          }d }|                      | |            |           | |            |                     d S )Nc                 ,    |                      |          S r   r  r  s     r   r   z>TestRandomGenerators.test_permutation_empty.<locals>.dist_func'  s    ==%%%r   c                  @    t           j                            d          S r  r  r   r   r   r1   z=TestRandomGenerators.test_permutation_empty.<locals>.<lambda>+  r  r   r  r  s         r   test_permutation_emptyz+TestRandomGenerators.test_permutation_empty#  s    HRLLHRLL	& 	& 	& *Y''..		##%% 3 3WWSSUUA5F5FGGGGGr   c           	         g d}d t           g}d }t          j        ||          D ]M\  }}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   Nd }g d}|                     |g d|g d           t          j                                        }|g|z   }t          j
        |          }|                     t                    5 }	|                                }
d|
d	<    ||
  d d d            n# 1 swxY w Y   |                     d
t          |	j                             |                     t                    5 }	|                                }
d|
d<    ||
  d d d            n# 1 swxY w Y   |                     dt          |	j                             |                                  d S )Nr   c                 2    |                      dd|          S N      @g      4@rY  noncentral_chisquarer   s      r   r1   z@TestRandomGenerators.test_noncentral_chisquare.<locals>.<lambda>6  s    ""34"88 r   r   c                 2    |                      |||          S )NrL  noncr   r  )r0   rL  r  r   s       r   r1   z@TestRandomGenerators.test_noncentral_chisquare.<locals>.<lambda>=  s    ""bt$"?? r   )r  r   r   r  r  r   r*   zdf <= 0r  rL   nonc < 0)r   r  r  rW   r   r   r   r4   r5   r6   r7   r!   rX   r   r#   r$   r%   r  r&   r   r   r   r   r   r   r;   r   r'   r   s              r   test_noncentral_chisquarez.TestRandomGenerators.test_noncentral_chisquare/  s    655
g9 9	'/
LII 	; 	;NE7E7;; ; ;''	7(,eT; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;@ @	%%%
!!)-C-C-C",.@.@.@	B 	B 	B i##%%UZ'
z),,z** 	%f"))IIaLL)$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 	iV%5!6!6777z** 	%f"))IIaLL)$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 	j#f&6"7"7888!!!!!s6   A((A,	/A,	)DDD!FFFc           
         g d}d t           g}d }t          j        ||          D ]S\  }}|                     ||          5  |                     ||d |d t
                     d d d            n# 1 swxY w Y   Td }g d}|                     |g d|g d           t          j        	                                }|g|z   }t          j        |          }|                     t                    5 }	|                                }
d|
d	<    ||
  d d d            n# 1 swxY w Y   |                     d
t!          |	j                             |                     t                    5 }	|                                }
d|
d<    ||
  d d d            n# 1 swxY w Y   |                     dt!          |	j                             |                     t                    5 }	|                                }
d|
d<    ||
  d d d            n# 1 swxY w Y   |                     dt!          |	j                             |                                  d S )Nr   c                 4    |                      ddd|          S r  noncentral_fr   s      r   r1   z8TestRandomGenerators.test_noncentral_f.<locals>.<lambda>]  s    NN3cN55 r   r   c                 4    |                      ||||          S )NrB  rC  r  r   r  )r0   rB  rC  r  r   s        r   r1   z8TestRandomGenerators.test_noncentral_f.<locals>.<lambda>e  s    NNe$TNJJ r   )r  r   r  r   r  r  r   r*   z
dfnum <= 0rL   z
dfden <= 0r  r   r  )r   r  r  rW   r   r  r   r   r4   r5   r6   r7   r!   rX   r   r#   r$   r%   r  r  s              r   test_noncentral_fz&TestRandomGenerators.test_noncentral_fV  sm    655
g6 6	'/
LII 	; 	;NE7E7;; ; ;''	7(,eT(9; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
K K	***
!!)-O-O-O",.E.E.E	G 	G 	G i##%%UZ'
z),,z** 	%f"))IIaLL)$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 	lC(8$9$9:::z** 	%f"))IIaLL)$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 	lC(8$9$9:::z** 	%f"))IIaLL)$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 	j#f&6"7"7888!!!!!sH    A..A2	5A2	/DD!D'FFFH

HHc           	         g d}d t           g}d }t          j        ||          D ]M\  }}|                     ||          5  |                     ||d |d            d d d            n# 1 swxY w Y   Nd }ddg}|                     |ddg|d	d
g           t          j                            d          }|g|z   }t          j
        |          }ddt          j        fD ]z}	|                     t                    5 }
|                                }|	|d<    ||  d d d            n# 1 swxY w Y   |                     dt!          |
j                             {|                                  d S )Nr   c                 0    |                      d|          S )N333333?rY  	logseriesr   s      r   r1   z5TestRandomGenerators.test_logseries.<locals>.<lambda>  s    KK$K'' r   r   c                 0    |                      ||          S r  r  r  s      r   r1   z5TestRandomGenerators.test_logseries.<locals>.<lambda>  s    KK!$K'' r   r  r   r  r   r0   r/   r*   gzp < 0, p >= 1 or p is NaN)r   r  r  rW   r   r   r   r4   r5   r6   r7   nanr!   rX   r   r#   r$   r%   r  )r&   r   r   r   r   r   r   r;   r   _pr'   r   s               r   test_logseriesz#TestRandomGenerators.test_logseries  s%    655
g( (	'/
LII 	; 	;NE7E7;; ; ;''	7(,eT; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;( (	4[
!!)c6]",sFm	= 	= 	= i##A&&UZ'
z),,BF# 	N 	NB"":.. )&&OO--	!	!i((	) ) ) ) ) ) ) ) ) ) ) ) ) ) )
 MM5s6;K7L7LMMMM!!!!!s$   A((A,	/A,	;D&&D*	-D*	c                    g d}d t           g}d }|D ]U}|D ]P}|                     ||          5  |                     ||d |d t                     d d d            n# 1 swxY w Y   QVd }|                     |g dg dg d           d S )Nr   c                 2    |                      dd|          S r  binomialr   s      r   r1   z4TestRandomGenerators.test_binomial.<locals>.<lambda>  s    JJcJ-- r   r   c                 2    |                      |||          S r  r'  r  s       r   r1   z4TestRandomGenerators.test_binomial.<locals>.<lambda>  s    JJadJ++ r   r  r  r  r  r  s         r   test_binomialz"TestRandomGenerators.test_binomial  s'    655
g. .	 	? 	?E' ? ?\\w\?? ? ?++Iw,0%,=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??, ,	!!)-?-?-?"1//3E3E3E	G 	G 	G 	G 	Gr5  c           
          g d}d }|D ]T\  |                                5  fd}|                     |d d |d d           d d d            n# 1 swxY w Y   Ud S )N))r*   r  )2   ?)rN   g?)rN   r-  )r  r  c                 4    |                      |          S rX  r'  )r0   r   rE   r  r  s      r   r1   z:TestRandomGenerators.test_binomial_cases.<locals>.<lambda>  s    JJq!$J// r   r   )rW   r   )r&   r]   r   r   r  r  s       @@r   test_binomial_casesz(TestRandomGenerators.test_binomial_cases  s    
 
 
  	= 	=DAqQ'' = =0 0 0 0 0	''	4(,dD!= = == = = = = = = = = = = = = = =	= 	=s   !AA	A	c                    |                      d          5  t          j                            d          }t          j                            d          }t          j        d             } ||          }|                    |          }|                     ||           d d d            n# 1 swxY w Y   |                      d          5  t          j                            d          }t          j                            d          }t          j        d             } ||          }|                    |          }|                     ||           d d d            d S # 1 swxY w Y   d S )Nzinfinite loop issue #9493r   c                 0    |                      ddd          S )Ni  r  rN   r'  gens    r   fooz?TestRandomGenerators.test_binomial_specific_issues.<locals>.foo      ||Cc222r   z,issue with midrange value branch #9493/#9734c                 0    |                      ddd          S )Ni-  r  rN   r'  r2  s    r   r4  z?TestRandomGenerators.test_binomial_specific_issues.<locals>.foo  r5  r   )rW   r   r4   r5   r6   jitr<   r|   )r&   gen1gen2r4  gotexpecteds         r   test_binomial_specific_issuesz2TestRandomGenerators.test_binomial_specific_issues  s   
 \\566 	3 	3 9((++D9((++DY3 3 Y3 #d))C{{4((H##C222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 \\HII 	3 	3 9((++D9((++DY3 3 Y3 #d))C{{4((H##C222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s%   B
B,,B03B0B
E##E'*E')NNNNrm   r   )2r_   r`   ra   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r+  r4  r>  rG  rR  r[  rf  rm  rt  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   rl   rl      s4       266:$%&A &A &A &AP
6 
6 
6 
6  I I I+ + +A A A0G 0G 0Gf8> 8> 8>tD D D2C C C4M M M6E E EM M M(F F F4F F F4> > >0H H H(H H H&D D D(< < <(4 4 40< < <$< < <$? ? ?$H H H8H H H8H H H8> > >0< < <&H H H(? ? ?&< < <$L L L(= = =&G G G0+ + +"H H H
 
 
*. . .0
 
 
.
H 
H 
H%" %" %"N," ," ,"\ "  "  "DG G G*= = =  3  3  3  3  3r   rl   c                       e Zd Zd ZdS )TestGeneratorCachingc                    t           j                            d          }t           j                            d          }t          j        d d          }|                     |                    d           ||                     |                     |                    d           ||                     t          t                    }|                     |d         d           d S )Nr*   c                 ,    |                      d          S rd   rf   r/   s    r   r1   z=TestGeneratorCaching.test_randomgen_caching.<locals>.<lambda>  s    !((2,, r   Tr2   re   exitcoder   )	r   r4   r5   r6   r7   r|   r   rj   r   )r&   rh   ri   r=   ress        r   test_randomgen_cachingz+TestGeneratorCaching.test_randomgen_caching  s    &&q))&&q))Z 6 6dCCC
b 1 1::f3E3EFFFb 1 1::f3E3EFFF()?@@Z!,,,,,r   N)r_   r`   ra   rC  r   r   r   r>  r>    s#        
- 
- 
- 
- 
-r   r>  )r6   numpyr   r   r  r   r9   r   numba.tests.supportr   r   !numba.np.random.generator_methodsr   numba.np.random.generator_corer   r	   r
   numpy.randomr   r   numba.core.errorsr   r   r   r  r   rj   rl   r>  r   r   r   <module>rJ     s        



     				 				       9 9 9 9 9 9 9 9 > > > > > > P P P P P P P P P P + + + + + + + + ) ) ) ) ) ) G G G G G G G G  ~
 ~
 ~
 ~
 ~
h ~
 ~
 ~
B> > >I3 I3 I3 I3 I3?H I3 I3 I3X"- - - - -8[ - - - - -r   