
    S3j                         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       J/DATA/.local/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   		 	 ()/?%%&( *+-	/ ()/?%%&( *+-	/ {+v_orxxH ,?  !	
 {+v_ou}}M ,?  !	
 ,+ ,+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Fr   c                 ,    | j                  |||d      S )NFrB   rG   rI   s       r   r1   z9TestHelperFuncs.test_integers_arg_check.<locals>.<lambda>O   s    JJ3TJGr   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2f"3au= 3 *(()
 &&z2fsC59 3 +(()
 &&z2f-c3q%H 3 +(()) ?> !&4 HHRYY/33HHRYY/33RYY Tz*f3au5 + 	"  !	

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

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

 z*fsCbii0 +8  !	
m 32 32 32# ?>6 +* +* +* +*s   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   s^   
 "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)J##OJ$?$3J$?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*Fr   )
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( 0MMD6!EFF$$% -
 0/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
    QXXZr   c                     | S r   r   r/   s    r   r1   zATestRandomGenerators.test_npgen_boxing_refcount.<locals>.<lambda>   s    Qr   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   sY    B
k;7!$UJ!7E:EjA--j%@ BA "8AAs   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5r   _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2r   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  7r   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 =	\\^##I/3a $ A 6	E%+GE&.5 & 7//	704eVQH7 7  , &   6
g?	E'\\*1 " 3++Iw,0%1F3 3 (  3	\\^##I/3 $ 5 7	 	!!)"N#$arxx">#&VRZZ"E	GK ^7 73 3 ^s0   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Ar   )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(*Jr   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	\\^##I/3 $ 5  K	E%+GE&.5 & 7//	704eVE7 7  , &  -	!!)fg->#'"4vrl	D ^7 7    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5r   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 >	\\^##I/3 $ 5 6	  E%+GE&.5 & 7//	704eVE7 7  , &  6	!!)fg->#'"4vqk	C! ^7 7r   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    !*@*@*Br   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"Ir   r   zigr   )r   r/   r   r   r   s           r   test_standard_exponentialz.TestRandomGenerators.test_standard_exponential  s    5
zz2::.g C	\\^##I/3 $ 5 ;	  E%+GE&.5 & 7//	704eVE7 7  , &  J	!!)-H#($

";^	M# ^7 7s    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"Ir   r   )r   r    r   r   rW   r   r   s           r   test_standard_exponential_invz2TestRandomGenerators.test_standard_exponential_inv  s    5
zz2::.gJ	E%+GE&.5 & 7//	704eVE7 7  , &  7 7s   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Ar   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@	E%+GE&.5 & 7//	704eV0AC7 7  , &  B	!!)-G#&bjj"9;K	M7 7s   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!$(*Or   r   c                 *    | j                  |||      S Nr  r-   r0   r,   r  r   s       r   r1   z2TestRandomGenerators.test_normal.<locals>.<lambda>  s    HHEH5r   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    !))!$)*Or   r   c                 *    | j                  |||      S )Nr  r  )r0   rC   rD   r   s       r   r1   z3TestRandomGenerators.test_uniform.<locals>.<lambda>  s    II#DtI4r   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-*Mr   r   c                 (    | j                  ||      S Nr&  r"  r0   r  r   s      r   r1   z7TestRandomGenerators.test_exponential.<locals>.<lambda>(  s    MMDM1r   r  r   r  r   r0   r/   r   rW   r   r   r  s         r   test_exponentialz%TestRandomGenerators.test_exponential  s     6
g :	\\^##I/3 $ 5  N	E'\\w\?++Iw,0%? @? (  
2	!!)gv->#&+V}	> ^ @?   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8r   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&*Ir   r   c                 *    | j                  |||      S )Nr8  r;  )r0   r9  r:  r   s       r   r1   z0TestRandomGenerators.test_beta.<locals>.<lambda>P  s    !qt)Dr   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#*Jr   r   c                 *    | j                  |||      S )NrA  rD  )r0   rB  rC  r   s       r   r1   z-TestRandomGenerators.test_f.<locals>.<lambda>c  s    CCe5tC4r   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    !+++*Fr   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    !*;*;*;*Fr   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 >	\\^##I/3 $ 5  G	E'\\w\?++Iw,0%? @? (   @	!!)fX#'&6(	4 ^ @?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(*Dr   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)*Er   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'*Dr   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4r   r   c                 *    | j                  |||      S r  rw  r  s       r   r1   z3TestRandomGenerators.test_laplace.<locals>.<lambda>  s    II#UI6r   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4r   r   c                 *    | j                  |||      S r  r  r  s       r   r1   z4TestRandomGenerators.test_logistic.<locals>.<lambda>  s    JJ3e$J7r   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7r   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**Jr   r   c                 (    | j                  ||      S r(  r  r)  s      r   r1   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>2  s    !**5t**Lr   r  r   r  r   r0   r/   r*  r  s         r   test_rayleighz"TestRandomGenerators.test_rayleigh  s     6
g 7	\\^##I/3 $ 5  K	E'\\w\?++Iw,0%? @? (   M	!!)gv->#&+V}	> ^ @?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    !,,!$,*Gr   r   c                 (    | j                  ||      S rP  r  rQ  s      r   r1   z6TestRandomGenerators.test_standard_t.<locals>.<lambda>E  s    q||r|'Er   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&*Pr   r   c                 *    | j                  |||      S )Nr  r  )r0   r  r  r   s       r   r1   z0TestRandomGenerators.test_wald.<locals>.<lambda>X  s    FFEF5r   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+*Hr   r   c                 (    | j                  ||      S Nr  r  r0   r  r   s      r   r1   z5TestRandomGenerators.test_geometric.<locals>.<lambda>l  s    akkADk&Ar   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&*Br   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Fr   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    !)))*Fr   r   c                 (    | j                  ||      S )Nr  r  )r0   r  r   s      r   r1   z3TestRandomGenerators.test_poisson.<locals>.<lambda>  s    		c	(Er   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6r   r   c                 *    | j                  |||      S Nr  r  r0   r  r  r   s       r   r1   z=TestRandomGenerators.test_negative_binomial.<locals>.<lambda>  s    !qt4r   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()+ IH&= IHs   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    0Dr   )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()+	 IH&= JJDE	ii##%jjhj'((*#sW- IHs   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"8r   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INE7E7;''	7(,eT; <; J
@	%
!!)-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5r   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Jr   )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INE7E7;''	7(,eT(9; <; J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  sH    6
g(	'//
LINE7E7;''	7(,eT; <; J
(	4[
!!)c6]",sFm	= ii##A&UZ'
zz),BFF#B"":.&&OO-	!	!i(	 /
 MM5s6;K;K7LM $ 	!- <; /.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  s`    
 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 99((+D99((+DYY3 3 d)C{{4(H##C2 7 \\HI 99((+D99((+DYY3 3 d)C{{4(H##C2 JI 76 JIs   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   