
    .|h                         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y)    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y)TestHelperFuncsc                    d }d }| j                   t        ||t        j                        d          d       | j                   t        ||t        j                        d          d       | j                  t              5 }t        ||t        j                         d d d        | j                  dt        j                               | j                  t              5 }t        ||t        j                         d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nc                       y)N     r       \/var/www/html/test/engine/venv/lib/python3.12/site-packages/numba/tests/test_np_randomgen.pytest_32bit_funczBTestHelperFuncs.test_proper_func_provider.<locals>.test_32bit_func       r   c                       y)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_orxxH	I?  !	
 {+ 	Nv_ou}}M	N?  !	
	I 	I	N 	Ns   D* D6*D36D?c                    t         j                  j                  d      }d } t        j                  d      |      }| j                  t              5 } ||       d d d        d}| j                  t        j                  |t        j                              d uddt        |j                         z          y # 1 sw Y   `xY w)N   c                 &    | j                  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    ii##A&.+UZZd+G4
{+ 	vsO	0 	 	II&F,<,<(=>dJ>c&**+,-.	
	 	s   	B<<Cc           	         t         j                  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 ]  \  }}}	| j                  |||	      5  | j                  t               5 }
 |||dz
  ||	       d d d        | j#                  dt%        
j&                               | j                  t               5 }
 ||||dz   |	       d d d        | j#                  dt%        |
j&                               | j                  t               5 }
 ||||dz   |	       d d d        | j#                  dt%        |
j&                               d d d         t        j
                  t         j(                        j                  t        j
                  t         j(                        j                  t         j(                  }	}}| j                  t               5 }
 |||dz
  ||	       d d d        | j#                  dt%        
j&                               t        j
                  t         j*                        j                  t        j
                  t         j*                        j                  t         j*                  }	}}| j                  t               5 }
 ||||dz   |	       d d d        | j#                  dt%        |
j&                               | j                  t               5 }
 ||||dz   |	       d d d        | j#                  dt%        |
j&                               | j                  t               5 }
 ||dd	t         j                         d d d        | j#                  d
t%        |
j&                               y # 1 sw Y    xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   pxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr*   c                 ,    | j                  |||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 r   c                 ,    | j                  |||d      S )NFrB   rG   rI   s       r   r1   z9TestHelperFuncs.test_integers_arg_check.<locals>.<lambda>O   s    JJ3TJ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   s   ii##A&G!UZZ\'*
%g.H$0EJJL$9! XXbhh##RXXbhh%7%;%;RXXFXXbgg""BHHRWW$5$9$9277CXXbii $$bhhryy&9&=&=ryyIXXbhh##RXXbhh%7%;%;RXXFXXbii $$bhhryy&9&=&=ryyIXXbhh##RXXbhh%7%;%;RXXF
 !& 	Cu#D> &&z2 >f"3au=> *(()
 &&z2 :fsC59: +(()
 &&z2 If-c3q%HI +(()) 	4 HHRYY/33HHRYY/33RYY Tz* 	6f3au5	6 	"  !	

 HHRXX.22HHRXX.22BHH Tz* 	2fsC51	2 	#  !	

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

 z* 	1fsCbii0	18  !	
m> >: :I I# 6	6 	6	2 	2	A 	A	1 	1s   YX')AY+X4:AY<Y-YY=Y(Y5Z'X1,Y4X>9YYYY	Y%(Y25Y>Z
N)__name__
__module____qualname__r(   r?   r^   r   r   r   r   r      s    
4
(O
r   r   c                     t         j                  j                  d      } t         j                  j                  d      }d } t        j                  d      |      }t        j
                  |j                  d       ||             sJ y )Nr*   c                 $    | j                  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      sf    YY""1%FYY""1%F$G'$'0J;;v}}R(*V*<===r   c                   0   e Zd Z	 	 	 d1dZd2d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.d. Z/d/ Z0d0 Z1y)3TestRandomGeneratorsNc                    t        j                  |      }|d}|At        j                  j	                  |      }t        j                  j	                  |      }n"t         ||            }t         ||            } ||||      }	|j                  |||      }
t        |	t        j                        r.t        j                  |	j                  t        j                        st        |	t              r$t        j                  j                  |
|	||       n t        j                  j                  |	|
       |j                   j"                  d   }|j                   j"                  d   }|D ]  }| j%                  ||   ||           y )Nr*   seed)maxulprE   state)r6   r7   r   r4   r5   r   r<   
isinstancendarray
issubdtyperE   floatingfloattestingassert_array_max_ulpassert_equalbit_generatorrq   assertPreciseEqual)r&   distribution_funcbitgen_typero   	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   se   
 "JJ'89<D!#!6!6D!6!A!#!6!6D!6!A!*;t+<!=!*;t+<!= &&8&/=	%--.@.7E	 y"**-MM)//2;;7i/JJ++Iy3;: , O JJ##Iy9 -::@@I,::@@I) 	AJ##OJ$?$3J$?A	Ar   c                 v   t         j                  j                  |      }t         j                  j                  |      }t        |j                  j
                  |      } ||j                  j
                  j                        }t        j                  fd      } ||      }	| j                  |	|       y )Nrn   c                 (     | j                         S N)rz   )r0   bitgen_funcs    r   r1   z?TestRandomGenerators._test_bitgen_func_parity.<locals>.<lambda>   s    +aoo*F r   )
r   r4   r5   getattrrz   ctypesrq   r6   r7   r{   )
r&   	func_namer   ro   r   r   
numpy_funcr   r=   r   s
     `       r   _test_bitgen_func_parityz-TestRandomGenerators._test_bitgen_func_parity   s    YY222=YY222=/==DDiP
1??FFLLM	ZZ FG
12		95r   c                 |   t         j                  j                         }t        |      D ]  \  }}|j	                         }||   ||<   |g|z   }t        j                  |      }	| j                  t              5 }
 |	|  d d d        | j                  d| dt        
j                                y # 1 sw Y   5xY w)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    ii##%"8, 
	IC")I)#.IcN	)I ::i0L"";/ )6i()MMD6!EFF$$%
	
) )s   8B22B;	c                     t         j                  j                         }t        j                  d       }| j                  | ||             | j                  t        |      t         ||                   y )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   sV    yy,,.ZZ,
z,'?@L)2j.F+GHr   c                    t         j                  j                         }t        j                  d       }t        j                  d       } ||      }t        j                          t        j                  |      }~ ||       t        j                          t        j                  |      }| j                  ||dz          y )Nc                 "    | j                         S r   rf   r/   s    r   r1   zATestRandomGenerators.test_npgen_boxing_refcount.<locals>.<lambda>   s    QXXZ 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    yy,,./0J'< 


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


-	*r   c                     g d}t         t        t        g}t        ||      D ]3  \  }}| j	                  ||      5  | j                  ||       d d d        5 y # 1 sw Y   @xY w)Nr   )_func
_func_name)r   r	   r
   ziprW   r   )r&   
func_namesfuncsr   r   s        r   test_bitgen_funcsz&TestRandomGenerators.test_bitgen_funcs   so    B
k;7!$UJ!7 	AE:EjA A--j%@A A	AA As   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 }| j                         5  | j                  |d d d       d d d        d }|D ]C  }|D ]<  }|D ]5  }| j                  |||      5  | j                  ||d ||d       d d d        7 > E g d}d t        g}d }|D ]I  }|D ]B  }| j                  ||      5  | j                  ||d |t         j                  d       d d d        D K d	 }| j                         5  | j                  |d d 
       d d d        d }| j                  |g ddddt         j                  dgdddt         j                  dg       y # 1 sw Y   "xY w# 1 sw Y    xY w# 1 sw Y   xY w# 1 sw Y   oxY w)NNr   )rN   re         c                 &    | j                  dd      S Nr   rN   rG   r0   sizerE   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>
  s    !**Q*< r   r   r~   r   r   c                 ,    | j                  dd||      S )N   re   r   rE   rG   r   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>  s    JJq"4uJ5 r   _size_dtype_bitgenc                 H    | j                  dd|t        j                        S )NFTr   )rH   r   bool_r   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>  s    JJudRXXJ> r   r   r   c                 r    | j                  t        j                  d      t        j                  d            S r   )rH   r   rP   rZ   r   s      r   r1   z4TestRandomGenerators.test_integers.<locals>.<lambda>'  s%    JJrxx{BHHSM2 r   r~   r   c                 .    | j                  |||||      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 r   r   r*   r   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
xx288RWWyy"))RYYBg =	\\^ 	A##I/3a $ A	A6	 	HE% H+ HGE&.5 & 7 H//	704eVQHH HHH	H 6
g?	 	FE' F\\*1 " 3 F++Iw,0%1FF FF	F3	\\^ 	5##I/3 $ 5	57	 	!!)"N#$arxx">#&VRZZ"E	GK	A 	AH HF F	5 	5s0   GG	/%G*3G6GG'*G36G?c           
      T   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 ]?  \  }| j                  |      5  fd}| j                  |d d ||d       d d d        A y # 1 sw Y   LxY w)Nr      rN   r   l   l    l    l   l   ll    l    iii  i  i  re   i  i  i            i)rL      rK   c                 .    | j                  ||      S Nr   rG   )r0   r   rE   rD   rC   s      r   r1   z:TestRandomGenerators.test_integers_cases.<locals>.<lambda>k  s    JJsDt5J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   /
299/
 RYY/
 bii(	/

 &		2/
 "BII./
 288/
 RXX/
 bhh'/
 %rxx0/
 !288,/
  !2BHH=/
 299/
  RYY!/
" 		*#/
$ 
BII&%/
( 288)/
* RXX+/
, rxx(-/
. 	288$//
0 BHH-1/
4 2995/
6 RYY7/
8 
BII&9/
: 		";/
> 288?/
@ BHHA/
B 	288$C/
D rxx E/
F UBHH%G/
J 288K/
L BHHM/
N "((#O/
P bhhQ/
T 277OU/
V BGGW/
X !Y/
Z RWW[/
\ 3 ]/
`  % 	>Cu#D> >B	''	4(,dE1>> >	>> >s   6LL'	c                    g d}t         j                  t         j                  g}d t        g}d }| j	                         5  | j                  |d d        d d d        d }|D ]B  }|D ];  }|D ]4  }| j	                  |||      5  | j                  ||d ||       d d d        6 = D d }| j                  |ddgd	t         j                  gd
dg       y # 1 sw Y   xY w# 1 sw Y   |xY w)Nr   c                 "    | j                         S r   rf   r   s      r   r1   z2TestRandomGenerators.test_random.<locals>.<lambda>v      !((* r   r   c                 (    | j                  ||      S r   rf   r   s      r   r1   z2TestRandomGenerators.test_random.<locals>.<lambda>{  s    !((E(*J r   r   c                 (    | j                  ||      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
zz2::.g 5	\\^ 	5##I/3 $ 5	5 K	 	EE% E+ EGE&.5 & 7 E//	704eVEE EEE	E-	!!)fg->#'"4vrl	D	5 	5E E    CC	CC(c                    g d}t         j                  t         j                  g}d t        g}d }| j	                         5  | j                  |d d        d d d        d }|D ]B  }|D ];  }|D ]4  }| j	                  |||      5  | j                  ||d ||       d d d        6 = D d }| j                  |ddgd	t         j                  gd
dg       y # 1 sw Y   xY w# 1 sw Y   |xY w)Nr   c                 "    | j                         S r   standard_normalr   s      r   r1   z;TestRandomGenerators.test_standard_normal.<locals>.<lambda>      !*;*;*= r   r   c                 (    | j                  ||      S r   r   r   s      r   r1   z;TestRandomGenerators.test_standard_normal.<locals>.<lambda>      4u5 r   r   c                 (    | j                  ||      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
zz2::.g >	\\^ 	5##I/3 $ 5	56	   	EE% E+ EGE&.5 & 7 E//	704eVEE EEE	E6	!!)fg->#'"4vqk	C!	5 	5E Er   c                    g d}t         j                  t         j                  g}d t        g}d }| j	                         5  | j                  |d d        d d d        d }|D ]B  }|D ];  }|D ]4  }| j	                  |||      5  | j                  ||d ||       d d d        6 = D d }| j                  |g ddd	t         j                  gg d
       y # 1 sw Y   xY w# 1 sw Y   }xY w)Nr   c                 "    | j                         S r   standard_exponentialr   s      r   r1   z@TestRandomGenerators.test_standard_exponential.<locals>.<lambda>  s    !*@*@*B r   r   c                 (    | j                  ||      S r   r   r   s      r   r1   z@TestRandomGenerators.test_standard_exponential.<locals>.<lambda>  s    ""E": r   r   c                 *    | j                  |||      S )Nmethodr   rE   r   )r0   r   r   rE   s       r   r1   z@TestRandomGenerators.test_standard_exponential.<locals>.<lambda>  s    ""&t5"I r   r   zigr   )r   r/   r   r   r   s           r   test_standard_exponentialz.TestRandomGenerators.test_standard_exponential  s   5
zz2::.g C	\\^ 	5##I/3 $ 5	5;	   	EE% E+ EGE&.5 & 7 E//	704eVEE EEE	EJ	!!)-H#($

";^	M#	5 	5E Es    CC 	C C)c                    g d}t         j                  t         j                  g}d t        g}d }|D ]B  }|D ];  }|D ]4  }| j	                  |||      5  | j                  ||d ||       d d d        6 = D y # 1 sw Y   ExY w)Nr   c                 *    | j                  ||d      S )Ninv)r   rE   r   r   r   s      r   r1   zDTestRandomGenerators.test_standard_exponential_inv.<locals>.<lambda>  s    ""E5"I r   r   )r   r    r   r   rW   r   r   s           r   test_standard_exponential_invz2TestRandomGenerators.test_standard_exponential_inv  s    5
zz2::.gJ	 	EE% E+ EGE&.5 & 7 E//	704eVEE EEE	EE Es   A8	8Bc                 j   g d}t         j                  t         j                  g}d t        g}d }|D ]G  }|D ]@  }|D ]9  }| j	                  |||      5  | j                  ||d ||t               d d d        ; B I d }| j                  |g dddt         j                  gg d       y # 1 sw Y   vxY w)	Nr   c                 *    | j                  d||      S )N      @shaper   rE   standard_gammar   s      r   r1   z:TestRandomGenerators.test_standard_gamma.<locals>.<lambda>  s    3T? r   r   c                 *    | j                  |||      S )Nr  r  )r0   r  r   rE   s       r   r1   z:TestRandomGenerators.test_standard_gamma.<locals>.<lambda>  s    5t5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  s    5
zz2::.g@	 	CE% C+ CGE&.5 & 7 C//	704eV0ACC CCC	CB	!!)-G#&bjj"9;K	MC Cs   B)	)B2c                 ~   g d}d t         g}d }| j                         5  | j                  |d d t               d d d        d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d	       y # 1 sw Y   nxY w# 1 sw Y   pxY w)
Nr   c                 "    | j                         S r   r-   r   s      r   r1   z2TestRandomGenerators.test_normal.<locals>.<lambda>  r   r   r   c                 *    | j                  dd|      S )N      ?r   r,   scaler   r-   r   s      r   r1   z2TestRandomGenerators.test_normal.<locals>.<lambda>  s    !((s!$(*O r   r   c                 *    | j                  |||      S Nr  r-   r0   r,   r  r   s       r   r1   z2TestRandomGenerators.test_normal.<locals>.<lambda>  s    HHEH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
g 5	\\^ 	@##I/3-> $ @	@
 P	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?6	!!)-E"02D	F	@ 	@? ?   B'"B3'B03B<c                 ~   g d}d t         g}d }| j                         5  | j                  |d d t               d d d        d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d	       y # 1 sw Y   nxY w# 1 sw Y   pxY w)
Nr   c                 "    | j                         S r   uniformr   s      r   r1   z3TestRandomGenerators.test_uniform.<locals>.<lambda>      !))+ r   r   c                 *    | j                  dd|      S )Nr  r   rC   rD   r   r  r   s      r   r1   z3TestRandomGenerators.test_uniform.<locals>.<lambda>	  s    !))!$)*O r   r   c                 *    | j                  |||      S )Nr  r  )r0   rC   rD   r   s       r   r1   z3TestRandomGenerators.test_uniform.<locals>.<lambda>  s    II#DtI4 r   r  r  r  r  r  s         r   test_uniformz!TestRandomGenerators.test_uniform  s     6
g 6	\\^ 	@##I/3-> $ @	@
 P	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?5	!!)-D"02D	F	@ 	@? ?r  c           
      j   g d}d t         g}d }| j                         5  | j                  |d d        d d d        d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |ddgd	d
gddg       y # 1 sw Y   ixY w# 1 sw Y   kxY w)Nr   c                 "    | j                         S r   exponentialr   s      r   r1   z7TestRandomGenerators.test_exponential.<locals>.<lambda>  s    !--/ r   r   c                 (    | j                  d|      S Nr  r  r   r"  r   s      r   r1   z7TestRandomGenerators.test_exponential.<locals>.<lambda>"  s    !--c-*M r   r   c                 (    | j                  ||      S Nr&  r"  r0   r  r   s      r   r1   z7TestRandomGenerators.test_exponential.<locals>.<lambda>(  s    MMDM1 r   r  r   r  r   r0   r/   r   rW   r   r   r  s         r   test_exponentialz%TestRandomGenerators.test_exponential  s     6
g :	\\^ 	5##I/3 $ 5	5 N	 	?E' ?\\w\? ?++Iw,0%?? ??	?
2	!!)gv->#&+V}	>	5 	5? ?   BB)B&)B2c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d       y # 1 sw Y   dxY w)Nr   c                 *    | j                  dd|      S )Nr   r  r  r  r   gammar   s      r   r1   z1TestRandomGenerators.test_gamma.<locals>.<lambda>4  s    !''37; +2 += r   r   c                 *    | j                  |||      S )Nr/  r0  )r0   r  r  r   s       r   r1   z1TestRandomGenerators.test_gamma.<locals>.<lambda><  s    GG%u4G8 r   r/  r   r  r   r  r  r  s         r   
test_gammazTestRandomGenerators.test_gamma-  s     6
g=	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?9	!!)-G"24F	H? ?   A22A;c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d       y # 1 sw Y   dxY w)Nr   c                 *    | j                  dd|      S )Nr  g      @abr   betar   s      r   r1   z0TestRandomGenerators.test_beta.<locals>.<lambda>H  s    !&&3#D&*I r   r   c                 *    | j                  |||      S )Nr8  r;  )r0   r9  r:  r   s       r   r1   z0TestRandomGenerators.test_beta.<locals>.<lambda>P  s    !qt)D r   r8  r3  r  r  r  s         r   	test_betazTestRandomGenerators.test_betaA  s     6
gI	 	?E' ?\\w\? ?++Iw,0%,=?? ??	? E	!!)-?"24F	H? ?r5  c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d       y # 1 sw Y   dxY w)Nr   c                 *    | j                  dd|      S )NrL   r   dfnumdfdenr   fr   s      r   r1   z-TestRandomGenerators.test_f.<locals>.<lambda>[  s    !##AQT#*J r   r   c                 *    | j                  |||      S )NrA  rD  )r0   rB  rC  r   s       r   r1   z-TestRandomGenerators.test_f.<locals>.<lambda>c  s    CCe5tC4 r   rA  )r   r*   r   r  r  r  s         r   test_fzTestRandomGenerators.test_fT  s     6
gJ	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?5	!!)-G".0B	D? ?r5  c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |ddgddgd	d
g       y # 1 sw Y   dxY w)Nr   c                 (    | j                  d|      S NrL   dfr   	chisquarer   s      r   r1   z5TestRandomGenerators.test_chisquare.<locals>.<lambda>o  s    !+++*F r   r   c                 (    | j                  ||      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
gF	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?*	!!)dF^#$d)c6]	<? ?r5  c           
      d   g d}d t         g}d }| j                         5  | j                  |d d        d d d        d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |dgdgd	g       y # 1 sw Y   fxY w# 1 sw Y   hxY w)
Nr   c                 "    | j                         S r   standard_cauchyr   s      r   r1   z;TestRandomGenerators.test_standard_cauchy.<locals>.<lambda>  r   r   r   c                 &    | j                  |      S Nr   rU  r   s      r   r1   z;TestRandomGenerators.test_standard_cauchy.<locals>.<lambda>  s    !*;*;*;*F r   r   c                 &    | j                  |      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
g >	\\^ 	5##I/3 $ 5	5 G	 	?E' ?\\w\? ?++Iw,0%?? ??	? @	!!)fX#'&6(	4	5 	5? ?s   BB&B#&B/c           
          g d}d t         g}d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |ddgddgd	d
g       y # 1 sw Y   _xY w)Nr   c                 (    | j                  d|      S N      ?r9  r   paretor   s      r   r1   z2TestRandomGenerators.test_pareto.<locals>.<lambda>  s    !((St(*D r   r   c                 (    | j                  ||      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
gD	 	?E' ?\\w\? ?++Iw,0%?? ??	? ?	!!)c6]#$d)c6]	<? ?   A--A6c           
          g d}d t         g}d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |ddgddgd	d
g       y # 1 sw Y   _xY w)Nr   c                 (    | j                  d|      S r^  weibullr   s      r   r1   z3TestRandomGenerators.test_weibull.<locals>.<lambda>  s    !))c)*E r   r   c                 (    | j                  ||      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
gE	 	?E' ?\\w\? ?++Iw,0%?? ??	? @	!!)c6]#$d)c6]	<? ?rg  c           
          g d}d t         g}d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |ddgddgd	d
g       y # 1 sw Y   _xY w)Nr   c                 (    | j                  d|      S )N      ?r`  powerr   s      r   r1   z1TestRandomGenerators.test_power.<locals>.<lambda>  s    !''Dt'*D r   r   c                 (    | j                  ||      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
gD	 	?E' ?\\w\? ?++Iw,0%?? ??	? >	!!)c6]#',f	?? ?rg  c                 ~   g d}d t         g}d }| j                         5  | j                  |d d t               d d d        d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d	       y # 1 sw Y   nxY w# 1 sw Y   pxY w)
Nr   c                 "    | j                         S r   laplacer   s      r   r1   z3TestRandomGenerators.test_laplace.<locals>.<lambda>  r  r   r   c                 *    | j                  dd|      S Nr_  r  r  rw  r   s      r   r1   z3TestRandomGenerators.test_laplace.<locals>.<lambda>  s    II#StI4 r   r   c                 *    | j                  |||      S r  rw  r  s       r   r1   z3TestRandomGenerators.test_laplace.<locals>.<lambda>  s    II#UI6 r   r  r_  r  r   r  r  r  s         r   test_laplacez!TestRandomGenerators.test_laplace  s     6
g 6	\\^ 	@##I/3-> $ @	@
5	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?7	!!)-E"24F	H!	@ 	@? ?r  c                 ~   g d}d t         g}d }| j                         5  | j                  |d d t               d d d        d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d	       y # 1 sw Y   nxY w# 1 sw Y   pxY w)
Nr   c                 "    | j                         S r   logisticr   s      r   r1   z4TestRandomGenerators.test_logistic.<locals>.<lambda>      !**, r   r   c                 *    | j                  dd|      S rz  r  r   s      r   r1   z4TestRandomGenerators.test_logistic.<locals>.<lambda>  s    JJ3StJ4 r   r   c                 *    | j                  |||      S r  r  r  s       r   r1   z4TestRandomGenerators.test_logistic.<locals>.<lambda>  s    JJ3e$J7 r   r  r|  r  r  r  s         r   test_logisticz"TestRandomGenerators.test_logistic  s     6
g 7	\\^ 	@##I/3-> $ @	@
5	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?8	!!)-E"24F	H!	@ 	@? ?r  c                 ~   g d}d t         g}d }| j                         5  | j                  |d d t               d d d        d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d	       y # 1 sw Y   nxY w# 1 sw Y   pxY w)
Nr   c                 "    | j                         S r   	lognormalr   s      r   r1   z5TestRandomGenerators.test_lognormal.<locals>.<lambda>
  s    !++- r   r   c                 *    | j                  dd|      S )Nr   r  meansigmar   r  r   s      r   r1   z5TestRandomGenerators.test_lognormal.<locals>.<lambda>  s    KKS$K7 r   r   c                 *    | j                  |||      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
g 8	\\^ 	@##I/3-> $ @	@
8	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?;	!!)-F"24F	H!	@ 	@? ?r  c           
      j   g d}d t         g}d }| j                         5  | j                  |d d        d d d        d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |ddgd	d
gddg       y # 1 sw Y   ixY w# 1 sw Y   kxY w)Nr   c                 "    | j                         S r   rayleighr   s      r   r1   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>&  r  r   r   c                 (    | j                  d|      S r%  r  r   s      r   r1   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>+  s    !**3T**J r   r   c                 (    | j                  ||      S r(  r  r)  s      r   r1   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>2  s    !**5t**L r   r  r   r  r   r0   r/   r*  r  s         r   test_rayleighz"TestRandomGenerators.test_rayleigh  s     6
g 7	\\^ 	5##I/3 $ 5	5 K	 	?E' ?\\w\? ?++Iw,0%?? ??	? M	!!)gv->#&+V}	>	5 	5? ?r,  c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |ddgddgd	d
g       y # 1 sw Y   dxY w)Nr   c                 (    | j                  d|      S rJ  
standard_tr   s      r   r1   z6TestRandomGenerators.test_standard_t.<locals>.<lambda>=  s    !,,!$,*G r   r   c                 (    | j                  ||      S rP  r  rQ  s      r   r1   z6TestRandomGenerators.test_standard_t.<locals>.<lambda>E  s    q||r|'E r   rL  r   rL   r   r0   r/   r  r  s         r   test_standard_tz$TestRandomGenerators.test_standard_t6  s     6
gG	 	?E' ?\\w\? ?++Iw,0%,=?? ??	? F	!!)dF^#$d)c6]	<? ?r5  c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d       y # 1 sw Y   dxY w)Nr   c                 *    | j                  dd|      S )Nr   r  r  r  r   waldr   s      r   r1   z0TestRandomGenerators.test_wald.<locals>.<lambda>P  s    !&&c4&*P r   r   c                 *    | j                  |||      S )Nr  r  )r0   r  r  r   s       r   r1   z0TestRandomGenerators.test_wald.<locals>.<lambda>X  s    FFEF5 r   r  r|  r  r  r  s         r   	test_waldzTestRandomGenerators.test_waldI  s     6
gP	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?6	!!)-F"24F	H? ?r5  c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |ddgddgd	d
g       y # 1 sw Y   dxY w)Nr   c                 (    | j                  d|      S )Nrp  pr   	geometricr   s      r   r1   z5TestRandomGenerators.test_geometric.<locals>.<lambda>d  s    !++4+*H r   r   c                 (    | j                  ||      S Nr  r  r0   r  r   s      r   r1   z5TestRandomGenerators.test_geometric.<locals>.<lambda>l  s    akkADk&A r   r  r   rp  r   r0   r/   r  r  s         r   test_geometricz#TestRandomGenerators.test_geometric]  s     6
gH	 	?E' ?\\w\? ?++Iw,0%,=?? ??	? B	!!)c6]#',f	?? ?r5  c           
          g d}d t         g}d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |ddgddgd	d
g       y # 1 sw Y   _xY w)Nr   c                 (    | j                  d|      S )Nr  r`  zipfr   s      r   r1   z0TestRandomGenerators.test_zipf.<locals>.<lambda>w  s    !&&3T&*B r   r   c                 (    | j                  ||      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
gB	 	?E' ?\\w\? ?++Iw,0%?? ??	? =	!!)c6]#$d)c6]	<? ?rg  c           
          g d}d t         g}d }|D ]:  }|D ]3  }| j                  ||      5  | j                  ||d |d        d d d        5 < d }| j                  |g dg dg d       y # 1 sw Y   _xY w)Nr   c                 ,    | j                  ddd|      S )Nr   r   r   leftmoderightr   
triangularr   s      r   r1   z6TestRandomGenerators.test_triangular.<locals>.<lambda>  s    LLaaqtL< r   r   c                 ,    | j                  ||||      S )Nr  r  )r0   r  r  r  r   s        r   r1   z6TestRandomGenerators.test_triangular.<locals>.<lambda>  s    LLdULF r   r  )r   r   r   r   r0   r0   r0   r/   r*  r  s         r   test_triangularz$TestRandomGenerators.test_triangular  s     6
g=	 	?E' ?\\w\? ?++Iw,0%?? ??	?G	!!)-N"13J	L? ?rg  c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |ddgddgd	d
g       y # 1 sw Y   dxY w)Nr   c                 (    | j                  d|      S )Nr   lamr   poissonr   s      r   r1   z3TestRandomGenerators.test_poisson.<locals>.<lambda>  s    !)))*F r   r   c                 (    | j                  ||      S )Nr  r  )r0   r  r   s      r   r1   z3TestRandomGenerators.test_poisson.<locals>.<lambda>  s    		c	(E r   r  r   r   r   r0   r/   r  r  s         r   test_poissonz!TestRandomGenerators.test_poisson  s     6
gF	 	?E' ?\\w\? ?++Iw,0%,=?? ??	? F	!!)eV_#%t*sFm	=? ?r5  c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d       y # 1 sw Y   dxY w)Nr   c                 *    | j                  dd|      S Nr*   皙?nr  r   negative_binomialr   s      r   r1   z=TestRandomGenerators.test_negative_binomial.<locals>.<lambda>  s    !s6 r   r   c                 *    | j                  |||      S Nr  r  r0   r  r  r   s       r   r1   z=TestRandomGenerators.test_negative_binomial.<locals>.<lambda>  s    !qt4 r   r  r*   rp  r   r  r  r  s         r   test_negative_binomialz+TestRandomGenerators.test_negative_binomial  s     6
g7	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?5	!!)-?"13E	G? ?r5  c           
          dg}d t         g}g d}t        j                  |||      D ]>  \  }}| j                  ||      5  fd}| j	                  ||d |d d       d d d        @ y # 1 sw Y   KxY w)Nr   )r   r*   rL   r   r   _axisc                 R    | j                  |      }| j                  |       |S )NrY  axis)r4   shuffle)r0   r   rE   arrr  s       r   r   z4TestRandomGenerators.test_shuffle.<locals>.dist_func  s(    (((-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%.%6%6z7C7;&= 
	+!E7E E7%H + ''	7(,eT()++ +
	++ +s   A**A3	c                     t        j                  g       }t        j                  g       }d }t        j                  |      }d }| j	                   | |       |       | |       |             y )Nc                 (    | j                  |       |S r   r  r0   r  s     r   r   z:TestRandomGenerators.test_shuffle_empty.<locals>.dist_func  s    IIcNJr   c                  @    t         j                  j                  d      S Nr*   r   r4   r5   r   r   r   r1   z9TestRandomGenerators.test_shuffle_empty.<locals>.<lambda>      bii++A. r   r   arrayr6   r7   r{   r&   r9  r:  r   nb_funcr;   s         r   test_shuffle_emptyz'TestRandomGenerators.test_shuffle_empty  sX    HHRLHHRL	 **Y'.	#% 3WSUA5FGr   c                    | j                          d }| j                  |ddgt        j                  g d      dgddg       t        j                  j                  d      }| j                  t              5 } t        j                  |      |t        j                  g d      d       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)	Nc                 ,    | j                  ||       |S Nr  r  r0   r  r  s      r   r   z:TestRandomGenerators.test_shuffle_check.<locals>.dist_func  s    IIcI%Jr   r0   r  r      r   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]#%88G#4a"83*	F ii##A&z* 	=f!EJJy!#rxx'8!<	=7  !	
	= 	=s   73CC!c           
         dg}d t         g}g d}t        j                  |||      D ]<  \  }}}| j                  |||      5  d }| j	                  ||d |d d       d d d        > t        j                  d       }t        j                  j                         }|j                  d      }	|	j                         }
 |||	       | j                  |	|
       y # 1 sw Y   xY w)	Nr   )r   r*   rL   r  c                 L    | j                  |      }| j                  |d      S )NrY  r*   r  )r4   permutation)r0   r   rE   r  s       r   r   z8TestRandomGenerators.test_permutation.<locals>.dist_func  s%    (((-C==1=55r   r   c                 $    | j                  |      S r   r  )r;   r  s     r   r1   z7TestRandomGenerators.test_permutation.<locals>.<lambda>  s    0D 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  s    "^
g %.%6%6z7C7;&= 		+!E7E E7%H +6 ''	7(,eT()+	+ +		+ JJDE	ii##%jjhj'((*#sW-+ +s   CC!	c                    | j                          d }| j                  |ddgt        j                  g d      dgddg       t        j                  j                  d      }| j                  t              5 } t        j                  |      |t        j                  g d      d       d d d        | j                  dt        j                               | j                  t              5 } t        j                  |      |t        j                  g d      d	       d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   ;xY w)
Nc                 (    | j                  ||      S r  r  r  s      r   r   zBTestRandomGenerators.test_permutation_exception.<locals>.dist_func  s    ==4=00r   r0   r  r  r   r*   rL   r  r  r  r  s       r   test_permutation_exceptionz/TestRandomGenerators.test_permutation_exception  s   !	1 	!!)c6]#%88G#4a"83*	F ii##A&z* 	=f!EJJy!#rxx'8!<	=7  !	
 z* 	>f!EJJy!#rxx'8"=	>7  !	
	= 	=	> 	>s   73E,3EEE"c                     t        j                  g       }t        j                  g       }d }t        j                  |      }d }| j	                   | |       |       | |       |             y )Nc                 $    | j                  |      S r   r  r  s     r   r   z>TestRandomGenerators.test_permutation_empty.<locals>.dist_func'  s    ==%%r   c                  @    t         j                  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#  sX    HHRLHHRL	& **Y'.	#% 3WSUA5FGr   c           	      N   g d}d t         g}d }t        j                  ||      D ]6  \  }}| j                  ||      5  | j	                  ||d |d        d d d        8 d }g d}| j                  |g d|g d       t        j                  j                         }|g|z   }t        j                  |      }| j                  t              5 }	|j                         }
d|
d	<    ||
  d d d        | j                  d
t        	j                                | j                  t              5 }	|j                         }
d|
d<    ||
  d d d        | j                  dt        |	j                                | j#                          y # 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   XxY w)Nr   c                 *    | j                  dd|      S N      @g      4@rY  noncentral_chisquarer   s      r   r1   z@TestRandomGenerators.test_noncentral_chisquare.<locals>.<lambda>6  s    ""34"8 r   r   c                 *    | j                  |||      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
g9	'//
LI 	;NE7E7; ;''	7(,eT;; ;	;
@	%
!!)-C",.@	B ii##%UZ'
zz),z* 	%f")IIaL)$		%
 	iV%5%5!67z* 	%f")IIaL)$		%
 	j#f&6&6"78!7; ;	% 	%	% 	%s#   FF)FF	FF$c           
      ,   g d}d t         g}d }t        j                  ||      D ];  \  }}| j                  ||      5  | j	                  ||d |d t
               d d d        = d }g d}| j                  |g d|g d       t        j                  j                         }|g|z   }t        j                  |      }| j                  t              5 }	|j                         }
d|
d	<    ||
  d d d        | j                  d
t!        	j"                               | j                  t              5 }	|j                         }
d|
d<    ||
  d d d        | j                  dt!        |	j"                               | j                  t              5 }	|j                         }
d|
d<    ||
  d d d        | j                  dt!        |	j"                               | j%                          y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w)Nr   c                 ,    | j                  ddd|      S r  noncentral_fr   s      r   r1   z8TestRandomGenerators.test_noncentral_f.<locals>.<lambda>]  s    NN3cN5 r   r   c                 ,    | j                  ||||      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 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  s    6
g6	'//
LI 	;NE7E7; ;''	7(,eT(9;; ;	;K	*
!!)-O",.E	G ii##%UZ'
zz),z* 	%f")IIaL)$		%
 	lC(8(8$9:z* 	%f")IIaL)$		%
 	lC(8(8$9:z* 	%f")IIaL)$		%
 	j#f&6&6"78!E; ;	% 	%	% 	%	% 	%s/   G$G1.G>H
$G.	1G;>H
Hc           	         g d}d t         g}d }t        j                  ||      D ]6  \  }}| j                  ||      5  | j	                  ||d |d        d d d        8 d }ddg}| j                  |ddg|d	d
g       t        j                  j                  d      }|g|z   }t        j                  |      }ddt        j                  fD ]_  }	| j                  t              5 }
|j                         }|	|d<    ||  d d d        | j                  dt!        
j"                               a | j%                          y # 1 sw Y   "xY w# 1 sw Y   NxY w)Nr   c                 (    | j                  d|      S )N333333?rY  	logseriesr   s      r   r1   z5TestRandomGenerators.test_logseries.<locals>.<lambda>  s    KK$K' r   r   c                 (    | j                  ||      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  sc    6
g(	'//
LI 	;NE7E7; ;''	7(,eT;; ;	;
(	4[
!!)c6]",sFm	= ii##A&UZ'
zz),BFF# 	NB"":. )&&OO-	!	!i(	)
 MM5s6;K;K7LM	N 	!-; ;) )s   D>#E>E	E	c                     g d}d t         g}d }|D ]?  }|D ]8  }| j                  ||      5  | j                  ||d |d t               d d d        : A d }| j	                  |g dg dg d       y # 1 sw Y   dxY w)Nr   c                 *    | j                  dd|      S r  binomialr   s      r   r1   z4TestRandomGenerators.test_binomial.<locals>.<lambda>  s    JJcJ- r   r   c                 *    | j                  |||      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
g.	 	?E' ?\\w\? ?++Iw,0%,=?? ??	?,	!!)-?"13E	G? ?r5  c           
          g d}d }|D ]=  \  | j                        5  fd}| j                  |d d |d d       d d d        ? y # 1 sw Y   JxY w)N))r*   r  )2   ?)rN   g?)rN   r-  )r  r  c                 ,    | j                  |      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  sp    
  	=DAqQ' =0	''	4(,dD!== =	== =s   AA	c                    | j                  d      5  t        j                  j                  d      }t        j                  j                  d      }t        j
                  d        } ||      }|j                  |      }| j                  ||       d d d        | j                  d      5  t        j                  j                  d      }t        j                  j                  d      }t        j
                  d        } ||      }|j                  |      }| j                  ||       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nzinfinite loop issue #9493r   c                 (    | j                  ddd      S )Ni  r  rN   r'  gens    r   fooz?TestRandomGenerators.test_binomial_specific_issues.<locals>.foo      ||Cc22r   z,issue with midrange value branch #9493/#9734c                 (    | j                  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 	3 99((+D99((+DYY3 3 d)C{{4(H##C2	3 \\HI 	3 99((+D99((+DYY3 3 d)C{{4(H##C2	3 	3	3 	3	3 	3s   B D4+B E 4D= E	)NNNNr   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      s   266:$%&AP
6I+A0Gf8>tD2C4M6EM(F4F4>0H(H&D(<(40<$<$?$H8H8H8>0<&H(?&<$L(=&G0+"H
*.0
.
H%"N,"\ "DG*=  3r   rl   c                       e Zd Zd Zy)TestGeneratorCachingc                    t         j                  j                  d      }t         j                  j                  d      }t        j                  d d      }| j                  |j                  d       ||             | j                  |j                  d       ||             t        t              }| j                  |d   d       y )Nr*   c                 $    | j                  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)ZZ 6dC
b 1:f3EFb 1:f3E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     sj      
  	 	  9 > P P + ) G  ~
h ~
B>I3?H I3X"-8[ -r   