
    sh>                       S r SSKrSSKrSSKrSSKJr  SSKJrJ	r	  SSK
JrJrJr  SSKJrJrJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  \" S5      r\R8                  r\R:                  " S5      r\R:                  " S5      rS r \RB                  " 5       r"Sr#\RH                  " \\#5      r%\RL                  " \\RN                  " \\#5      \\"\/5      r(\RR                  " \(5      r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4S r5S r6\" \Rn                  5      S 5       r8\" \R                  Rn                  5      S 5       r8S r9\" \R                  5      S 5       r:\" \R                  R                  5      \" \R                  Rv                  5      \" \R                  Rx                  5      \" \R                  Rz                  5      S  5       5       5       5       r>\" \R                  R                  5      \" \R                  Rv                  5      \" \R                  Rx                  5      \" \R                  Rz                  5      SS! j5       5       5       5       r?\" \R                  5      \" \R                  5      S" 5       5       rB\" \R                  R                  5      \" \R                  R                  5      S# 5       5       rE\" \R                  R                  5      S$ 5       rF\" \R                  R                  5      S% 5       rG\" \R                  R                  5      S& 5       rH\" \R                  R                  5      S' 5       rIS( rJS) rKS* rL\" \R                  5      S+ 5       rNS, rO\" \R                  5      S- 5       rQ\" \R                  5      S. 5       rRS/ rS\" \R                  5      S0 5       rT\" \R                  5      S1 5       rV\" \R                  R                  5      S2 5       rW\" \R                  R                  5      S3 5       rX\" \R                  R                  5      S4 5       rY\" \R                  R                  5      S5 5       r[\" \R                  5      S6 5       r\\" \R                  R                  5      S7 5       r]S8 r^\" \R                  R                  5      S9 5       r_\" \R                  5      S: 5       ra\" \R                  5      S; 5       rb\" \R                  R                  5      S< 5       rb\" \R                  R                  5      SS= j5       rc\" \R                  5      S> 5       re\" \R                  R                  5      \" \R                  R                  5      S? 5       5       rh\" \R                  R                  5      S@ 5       riSA rj\" \R                  R                  5      SB 5       rk\" \R                  R                  5      SC 5       rl\" \R                  5      SD 5       rn\" \R                  R                  5      SE 5       rpSF rq\" \R                  R                  5      SG 5       rr\" \R                  5      SH 5       rt\" \R                  R                  5      SI 5       rv\" \R                  R                  5      SJ 5       rv\" \R                  R                  5      \" \R                  R                  5      SK 5       5       rv\" \R                  R                  5      SL 5       rx\" \R                  R                  5      SM 5       rz\" \R                  R                  5      SN 5       r{\" \R                  R                  5      SO 5       r|\" \R                  R                  5      SP 5       r}\" \R                  5      SQ 5       rSR r\" \GR                  5      SS 5       r\" \R                  GR                  5      ST 5       r\" \R                  GR                  5      SU 5       r\" \GR
                  5      SV 5       r\" \R                  GR                  5      SW 5       r\" \R                  GR                  5      SX 5       r\" \GR                  5      SY 5       r\" \R                  GR                  5      SZ 5       rS[ r\" \R                  GR                  5      S\ 5       r\" \R                  GR                  5      S] 5       r\" \R                  GR                  5      S^ 5       r\" \R                  GR"                  5      S_ 5       r\" \R                  GR"                  5      S` 5       r\" \R                  GR(                  5      Sa 5       r\" \R                  GR(                  5      Sb 5       r\" \R                  GR,                  5      Sc 5       r\" \R                  GR,                  5      Sd 5       r\" \R                  GR0                  5      Se 5       r\" \R                  GR0                  5      Sf 5       r\" \R                  GR6                  5      Sg 5       r\" \R                  GR6                  5      Sh 5       r\" \R                  GR:                  5      Si 5       r\" \R                  GR:                  5      Sj 5       r\" \R                  GR:                  5      Sk 5       r\" \R                  GR:                  5      Sl 5       rSm r\" \R                  GRF                  5      Sn 5       r\" \R                  GRF                  5      So 5       r\" \R                  GRF                  5      Sp 5       r\" \R                  GRF                  5      Sq 5       rSr rSs r\" \R                  GRT                  5      St 5       r\" \R                  GRT                  5      Su 5       r\" \R                  GRX                  5      Sv 5       r\" \R                  GR\                  5      Sw 5       r\" \R                  GR\                  5      Sx 5       r\" \R                  GR\                  5      Sy 5       r\" \R                  GRd                  5      Sz 5       r\" \R                  GRd                  5      S{ 5       r\" \R                  GRh                  5      S| 5       r\" \R                  GRh                  5      S} 5       r\" \R                  GRh                  5      S~ 5       r\" \R                  GRp                  5      S 5       r\" \R                  GRp                  5      S 5       r\" \R                  GRv                  5      S 5       r\" \R                  GRv                  5      S 5       r\" \R                  GR|                  5      S 5       r\" \R                  GR|                  5      S 5       r\" \R                  GR                  5      S 5       r\" \R                  GR                  5      S 5       rS r\" \GR                  5      S 5       r\" \R                  GR                  5      S 5       r\" \R                  GR                  5      S 5       r\" \R                  GR                  5      S 5       r\" \R                  GR                  5      S 5       r\" \R                  GR                  5      SS j5       r\" \R                  GR                  5      SS j5       r\" \R                  GR                  5      S 5       r\" \R                  GR                  5      SS j5       r\S 5       r\" \R                  GR                  5      S 5       r\" \R                  GR                  5      SS j5       r\S 5       r\S 5       rg)z6
Implement the random and np.random module functions.
    N)ir)is_nonelikeis_empty_tuple)	intrinsicoverloadregister_jitable)Registryimpl_ret_untrackedimpl_ret_new_ref	signature)typescgutils)NumbaTypeError)LONG_MAX
randomimpl    @   c                 8    [         R                  " [        U 5      $ N)r   Constantint32_txs    l/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cpython/randomimpl.py	const_intr      s    ;;w""    ip  c                 $   US;   d   eSU-  n[         R                  " [        S5      n[        R                  " UR
                  XC5      nUR                  R                  S5        UR                  R                  S5        UR                  US5      $ )z
Get a pointer to the given thread-local random state
(depending on *name*: "py" or "np").
If the state isn't initialized, it is lazily initialized with
system entropy.
)pynpinternalznumba_get_%s_random_state readnonenounwind)	r   FunctionTypernd_state_ptr_tr   get_or_insert_functionmodule
attributesaddcall)contextbuildername	func_namefntyfns         r   get_state_ptrr2   3   sz     +++++d2I???B/D		'	'	HB MMj!MMj!<<Br   c                     [        XS5      $ )z8
Get a pointer to the thread-local Python random state.
r   r2   r,   r-   s     r   get_py_state_ptrr6   D        400r   c                     [        XS5      $ )z7
Get a pointer to the thread-local Numpy random state.
r    r4   r5   s     r   get_np_state_ptrr9   J   r7   r   c                     [        XS5      $ )z:
Get a pointer to the thread-local internal random state.
r!   r4   r5   s     r   get_internal_state_ptrr;   P   s     :66r   c                 2    [         R                  " XSS5      $ Nr   r   gep_inboundsr-   	state_ptrs     r   get_index_ptrrB   W       Aq99r   c                 2    [         R                  " XSS5      $ Nr      r>   r@   s     r   get_array_ptrrG   Z   rC   r   c                 2    [         R                  " XSS5      $ )Nr      r>   r@   s     r   get_has_gauss_ptrrJ   ]   rC   r   c                 2    [         R                  " XSS5      $ )Nr      r>   r@   s     r   get_gauss_ptrrM   `   rC   r   c                     [         R                  " [         R                  " 5       [        45      n[        R
                  " U R                  R                  US5      nUR                  S   R                  S5        U$ )z4
Get the internal function to shuffle the MT taste.
numba_rnd_shuffler   	nocapture)
r   r%   VoidTyper&   r   r'   functionr(   argsadd_attribute)r-   r0   r1   s      r   get_rnd_shufflerU   c   s[     ??2;;=?*<=D		'	'(8(8(?(?(;
=BGGAJ[)Ir   c                    [        X5      nUR                  U5      nUR                  SU[        5      n[        R
                  " X5         [        U5      nUR                  Xb45        UR                  [        S5      U5        SSS5        UR                  U5      n[        X5      nUR                  [        R                  " XSU5      5      nUR                  U[        S5      5      nUR                  XC5        UR                  XR                  U[        S5      5      5      nUR                  XR                  UR!                  U[        S5      5      [        S5      5      5      nUR                  XR                  UR!                  U[        S5      5      [        S	5      5      5      nUR                  XR                  U[        S
5      5      5      nU$ ! , (       d  f       GNZ= f)z:
Get the next int32 generated by the PRNG at *state_ptr*.
>=r   NrF         l   VX:    l     _    )rB   loadicmp_unsignedN_constr   if_unlikelyrU   r+   storer   rG   r?   r*   xorlshrand_shl)	r,   r-   rA   idxptridxneed_reshuffler1   	array_ptrys	            r   get_next_int32rj   n   sp    7.F
,,v
C**4g>N			W	5W%R&ilF+ 
6 ,,v
Cg1IW))'aEFA
++c9Q<
(CMM#A||Ay}56AA||GKK9Q<$@$-j$9; 	<AA||GKK9R=$A$-j$9; 	<AA||Ay}56AH! 
6	5s   
9G
G%c                    UR                  [        XU5      [        S5      5      nUR                  [        XU5      [        S5      5      nUR                  U[        5      nUR                  U[        5      nUR                  UR                  XAR                  U[        R                  " [        S5      5      5      [        R                  " [        S5      5      $ )z;
Get the next double generated by the PRNG at *state_ptr*.
      g      Ag      @C)
rb   rj   r   uitofpdoublefdivfaddfmulr   r   )r,   r-   rA   abs        r   get_next_doubleru      s    
 	^Gi@)A,OA^Gi@)A,OA 	q&!Aq&!A<<QQFJ(GHI
F./1 1r   c                   ^ ^^^^ [         R                  " UR                  S5      mUUU UU4S jn[        R                  " T[         R                  " [
        S5      5      nTR                  SUT5      nTR                  U5       u  pU   U" U5      n
TR                  TR                  U
[
        5      U5        SSS5        U	   T(       a  U" TR                  UT5      5      n[        T TT5      n
T(       d  U" TR                  UT5      5      nTR                  TR                  U
[
        5      TR                  TR                  W[
        5      [         R                  " [
        S5      5      5      nTR                  X5        SSS5        SSS5        TR                  U5      $ ! , (       d  f       N= f! , (       d  f       N8= f! , (       d  f       NA= f)z*
Get the next integer with width *nbits*.
r   c                 <  > TR                  TU 5      n[        TTT5      nU R                  R                  UR                  R                  :  a  TR	                  XR                  5      nOIU R                  R                  UR                  R                  :  a  TR                  XR                  5      nT(       aR  TR                  [        R                  " UR                  S5      5      nTR                  X15      nTR                  X#5      $ TR                  X!5      $ r=   )subrj   typewidthzexttruncnot_r   r   rb   rc   )	nbitsshiftri   maskr-   c32r,   is_numpyrA   s	       r   get_shifted_int%get_next_int.<locals>.get_shifted_int   s    C'7GY7 ::affll*LL/EZZ,MM%0E<<AFFA 67D<<,D<<(( <<))r   r   <=N)r   r   ry   r   alloca_once_valueint64_tr]   if_elser`   r{   rx   rj   r*   rd   r\   )r,   r-   rA   r~   r   r   retis_32bifsmalliflargelowhightotalr   s   ``` `        @r   get_next_intr      sZ    ++ejj"
%C* *& 
#
#GR[[!-D
EC""44F		 $6W!%(CMM',,sG4c:  &w{{5#'>? '9=C&w{{5#'>?KKS'*GLLw7KK467E MM%% 	 
!& <<% W W	 
!	 s=   G
/F$9
GC F5G$
F2	.G5
G	?G
Gc                 |   ^ [        U [        R                  5      (       a  [        [	        S5      5      mU4S jnU$ g )Nr   c                    > T" U 5      $ r   r"   )rs   r1   s    r   implseed_impl.<locals>.impl   s    a5Lr   )
isinstancer   Integerr   
_seed_impl)rs   r   r1   s     @r   	seed_implr      s2    !U]]##j./		 $r   c                 X    [        U [        R                  5      (       a  [        S5      $ g Nr    )r   r   r   r   )seeds    r   r   r      s#    $&&$ 'r   c                 0   ^ ^ [         U 4S j5       mU4S j$ )Nc                 d   > U4S jn[        [        R                  [        R                  5      U4$ )Nc                 H  > Uu  n[         R                  " [         R                  " 5       [        [        45      n[
        R                  " UR                  R                  US5      nUR                  U[        XT5      U45        U R                  [        R                  S 5      $ )Nnumba_rnd_init)r   r%   rQ   r&   r   r   r'   rR   r(   r+   r2   get_constantr   none)r,   r-   sigrS   
seed_valuer0   r1   
state_types          r   codegen*_seed_impl.<locals>._impl.<locals>.codegen   s    KJ??2;;=?G2LMD//0@0@0G0G0@BBLLmGjI(* +''

D99r   )r   r   voiduint32)typingcontextr   r   r   s      r   _impl_seed_impl.<locals>._impl   s$    	: U\\2G;;r   c                    > T" U 5      $ r   r"   )r   r   s    r   <lambda>_seed_impl.<locals>.<lambda>   s	    dr   r   )r   r   s   `@r   r   r      s    	< 	< $#r   c                  (   ^  [         S 5       m U 4S j$ )Nc                 >    S n[        [        R                  5      U4$ )Nc                 2    [        XS5      n[        XU5      $ Nr   r2   ru   r,   r-   r   rS   rA   s        r   r   +random_impl.<locals>._impl.<locals>.codegen       %g=I"7Y??r   )r   r   ro   r   r   s     r   r   random_impl.<locals>._impl   s    	@ &//r   c                     > T " 5       $ r   r"   r   s   r   r   random_impl.<locals>.<lambda>       57r   r   r   s   @r   random_implr      s    0 0
 r   c                  (   ^  [         S 5       m U 4S j$ )Nc                 >    S n[        [        R                  5      U4$ )Nc                 2    [        XS5      n[        XU5      $ r   r   r   s        r   r   ,random_impl0.<locals>._impl.<locals>.codegen   r   r   )r   r   float64r   s     r   r   random_impl0.<locals>._impl   s    	@ '00r   c                     > T " 5       $ r   r"   r   s   r   r   random_impl0.<locals>.<lambda>   r   r   r   r   s   @r   random_impl0r      s    
 1 1
 r   c                 6   [        U 5      (       a  SS j$ [        U 5      (       a  SS j$ [        U [        R                  5      (       dH  [        U [        R
                  5      (       a1  [        U R                  [        R                  5      (       a  SS jnU$ g g )Nc                 >    [         R                  R                  5       $ r   r    randomsizes    r   r   random_impl1.<locals>.<lambda>  s    !1!1!3r   c                 f    [         R                  " [         R                  R                  5       5      $ r   )r    arrayr   r   s    r   r   r     s    "))*:*:*<!=r   c                     [         R                  " U 5      nUR                  n[        UR                  5       H#  n[         R
                  R                  5       X#'   M%     U$ r   )r    emptyflatranger   r   r   outout_flatrf   s       r   r   random_impl1.<locals>._impl  sC    ((4.CxxHSXX "		 0 0 2 'Jr   r   r   r   r   r   r   UniTupledtyper   r   s     r   random_impl1r      s{    
 433d==$&&:dENN+K+K/9$**:?--0I 0I	 0I ,Lr   c                    ^ [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [        S 5       mU4S j$ g g )Nc                 z    [        U5      n[        U5      n[        [        R                  X5      [	        SX45      4$ r   _double_preprocessorr   r   r   _gauss_impl)r   musigmaloc_preprocessorscale_preprocessors        r   r   gauss_impl.<locals>._impl  s=    3B7!5e!<U]]B6t%5JK Kr   c                    > T" X5      $ r   r"   r   r   r   s     r   r   gauss_impl.<locals>.<lambda>  s
    r!1r   r   r   Floatr   r   r   s     @r   
gauss_implr     sa     "u{{EMM233
EKK/91 91		K 
	K
 21913r   c                      S $ )Nc                  B    [         R                  R                  SS5      $ N              ?r    r   normalr"   r   r   r    np_gauss_impl0.<locals>.<lambda>%  s    299##C-r   r"   r"   r   r   np_gauss_impl0r   "  s
     .-r   c                 h    [        U [        R                  [        R                  45      (       a  S $ g )Nc                 B    [         R                  R                  U S5      $ Nr   r   locs    r   r    np_gauss_impl1.<locals>.<lambda>+  s    299++C5r   r   r   r   r   r   s    r   np_gauss_impl1r   (  s'    #U]]34455 5r   c                    ^ [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [        S 5       mU4S j$ g g )Nc                 z    [        U5      n[        U5      n[        [        R                  X5      [	        SX45      4$ r   r   )r   r   scaler   r   s        r   r   np_gauss_impl2.<locals>._impl2  s=    3C8!5e!<U]]C7t%5JK Kr   c                    > T" X5      $ r   r"   r   r  r   s     r   r    np_gauss_impl2.<locals>.<lambda>8  s
    %"3r   r   r  s     @r   np_gauss_impl2r  .  s_    #U]]344EKK/:1 :1		K 
	K
 43:14r   c                 *   [        U 5      (       a  S $ [        U 5      (       a  S $ [        U [        R                  5      (       dH  [        U [        R
                  5      (       a/  [        U R                  [        R                  5      (       a  S nU$ g g )Nc                 >    [         R                  R                  5       $ r   r    r   standard_normalr   s    r   r   'standard_normal_impl1.<locals>.<lambda>>      BII557r   c                 f    [         R                  " [         R                  R                  5       5      $ r   )r    r   r   r
  r   s    r   r   r  A      BHHRYY%>%>%@Ar   c                     [         R                  " U 5      nUR                  n[        UR                  5       H#  n[         R
                  R                  5       X#'   M%     U$ r   )r    r   r   r   r   r   r
  r   s       r   r   $standard_normal_impl1.<locals>._implE  C    ((4.CxxHSXX "		 9 9 ; 'Jr   r   r   s     r   standard_normal_impl1r  ;  sy    477dAA$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                 b   [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [	        U5      (       a  S $ [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [        U5      (       a  S $ [        U [        R                  [        R                  45      (       a  [        U[        R                  [        R                  45      (       an  [        U[        R                  5      (       dH  [        U[        R                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g g g )Nc                 @    [         R                  R                  X5      $ r   r   r   r  r   s      r   r    np_gauss_impl3.<locals>.<lambda>S      		(8(8(Dr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r   r  s      r   r   r  X      1A1A#1M(Nr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r   r   r  r   r   r   rf   s         r   r   np_gauss_impl3.<locals>._impl^  E    ((4.CxxHSXX "		 0 0 < 'Jr   r   r   r   r   r   r   r   r   r   r  r   r   s       r   np_gauss_impl3r   N  s)   3emm455*EKK/;1 ;14DD3emm455*EKK/;1 ;1dNN3emm455*EKK/;1 ;14''JtU^^,L,L0:4::;@==1J 1J	 1J -M;15r   c                    ^  U 4S jnU$ )Nc                     >  ST" 5       -  S-
  n ST" 5       -  S-
  nX -  X-  -   nUS:  a  US:w  a  OM2  [         R                  " S[         R                  " U5      -  U-  5      nX0-  X1-  4$ )z7
Compute a pair of numbers on the normal distribution.
       @r   r          )mathsqrtlog)x1x2r2f_randoms       r   compute_gauss_pair,_gauss_pair_impl.<locals>.compute_gauss_pairh  sz     wy3&Bwy3&BBCxB#I  IIdTXXb\)B./vqv~r   r"   )r,  r-  s   ` r   _gauss_pair_implr/  g  s     r   c                    ^ ^^ UUU 4S jnU$ )Nc                 B  > UR                   nU R                  U5      n[        R                  [        R                  R                  S.T   n[	        XT5      n[
        R                  " XSS9n[        X5      n	[        X5      n
[
        R                  " XR                  U
5      5      nUR                  U5       u  pU   UR                  UR                  U	5      U5        UR                  [        S5      U
5        S S S 5        U   U R                  U[        U5      [!        ["        R$                  " US5      5      S5      n[
        R&                  " XS5      u  nnUR                  X5        UR                  UU5        UR                  [        S5      U
5        S S S 5        S S S 5        Uu  nnUR)                  T" UU5      UR+                  T" UU5      UR                  U5      5      5      $ ! , (       d  f       N= f! , (       d  f       Nk= f! , (       d  f       Nt= f)N)r   r    resultr.   r   rI   r"   rF   )return_typeget_data_typer   r    r2   r   alloca_oncerM   rJ   is_truer\   r   r`   r   compile_internalr/  r   r   r   unpack_tuplerq   rr   )r,   r-   r   rS   tylltyr,  rA   r   	gauss_ptrhas_gauss_ptr	has_gaussthen	otherwisepairfirstsecondr   r   r   r   states                      r   r   _gauss_impl.<locals>._implz  s   __$$R())++02 "'E:	!!'h?!'5	)'=OOG\\--HI	__Y'+<Dgll95s;ilM:   //0@0I09%..Q:O0P024
 !( 4 4WA Fve/fc*ilM:  ($ 	E||,Wb9#LL);GU)K)0c):<= 	=%   ('s=   :H?=G.<
HBG?H.
G<	8H?
H		H
Hr"   )rD  r   r   r   s   ``` r   r   r   y  s    #=H Lr   c                 D  ^ [         R                  R                  5       m[        U [        R                  5      (       a  U R
                  (       a  U4S j$ U4S j$ [        U [        R                  5      (       a  U R                  S:w  a  U4S j$ S $ [        SU -  5      e)Nc                 (   > U R                  UT5      $ r   )sitofpr-   vr:  s     r   r   &_double_preprocessor.<locals>.<lambda>      gnnQ&;r   c                 (   > U R                  UT5      $ r   )rn   rI  s     r   r   rK    rL  r   r   c                 (   > U R                  UT5      $ r   )fpextrI  s     r   r   rK    s    gmmAr&:r   c                     U$ r   r"   )_builderrJ  s     r   r   rK    s    qr   z(Cannot convert {} to floating point type)	r   r   
DoubleTyper   r   signedr   bitwidthr   )valuer:  s    @r   r   r     ss    				B%''<<;;;;	E5;;	'	'>>R::((G%OPPr   c                 h   ^ [        U [        R                  5      (       a  [        S 5       mU4S j$ g )Nc                 @    S n[        [        R                  U5      U4$ )Nc                 t   Uu  nUR                  SU[        S5      5      nUR                  SU[        S5      5      n[        R                  " XR	                  UU5      5         SnU R
                  R                  U[        U45        S S S 5        [        XS5      n[        XXS5      $ ! , (       d  f       N'= f)NrW   A   ==r   z getrandbits() limited to 64 bitsr   F)
r]   r   r   r_   or_	call_convreturn_user_excOverflowErrorr2   r   )	r,   r-   r   rS   r~   	too_large	too_smallmsgrA   s	            r   r   0getrandbits_impl.<locals>._impl.<locals>.codegen  s    #11$y}M	#11$y|L	((++i>G3I J<C%%55g}7:f>J
 *'DA	#GiNNJ Js   #%B))
B7)r   r   uint64)r   kr   s      r   r   getrandbits_impl.<locals>._impl  s     O U\\1-w66r   c                    > T" U 5      $ r   r"   rd  r   s    r   r   "getrandbits_impl.<locals>.<lambda>  s	    qr   )r   r   r   r   rg  s    @r   getrandbits_implri    s3    !U]]##		7 
	7 "!! $r   c                   ^ ^^^^^^^ [        T TT5      m[        R                  " TS5      n[        R                  " TS5      n	[        R                  " TTSS9n
TR                  TR                  X25      U
5        TR                  TR                  SXH5      5         TR                  TR                  TR                  U
5      U5      U	5      nTR                  X5      mTR                  TU
5        S S S 5        TR                  TR                  SXI5      5         TR                  TR                  TR                  U
5      U5      U	5      nTR                  X5      mTR                  TU
5        S S S 5        TR                  U
5      m[        R                  " TTR                  STU5      5         SnT R                  R                  T[        U45        S S S 5        [        R                   " TT[        R"                  R$                  /5      n[        R&                  " TR(                  R*                  US	T-  5      nTS
:X  a  TR                  TU	5      OTnTR-                  TR/                  X[        R"                  /5      [0        5      mTR                  [        R                  " [0        TR2                  5      T5      m[        R                  " TTSS9mUU UUUUUU4S jnTS
:X  a^  TR5                  TR                  STU	5      5       u  nnU   TR                  UT5        S S S 5        U   U" 5         S S S 5        S S S 5        OU" 5         TR                  UTR7                  TR                  T5      U5      5      $ ! , (       d  f       GN= f! , (       d  f       GN*= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   rF   nr3  <>r   zempty range for randrange()zllvm.ctlz.%sr    rc                  f  > TR                  S5      n TR                  S5      nTR                  U 5        TR                  U 5        [        TTT
TT	S:H  5      nTR	                  UT5      nTR                  SUT5      nTR                  X0U5        TR                  U5        TR                  UT5        g )Nwhilez	while.endr    rW   )append_basic_blockbranchposition_at_endr   r|   icmp_signedcbranchr`   )bbwhilebbendrn  r_  r-   r,   rk  r~   rptrrD  rA   r:  s       r   get_num _randrange_impl.<locals>.get_num  s    ,,W5**;7w('9eUd]KMM!R ''a3		E2&ar   rZ  )r2   r   r   r   r6  r`   rx   if_thenrt  r*   r\   sdivr_   r\  r]  
ValueErrorr%   true_bitry   r'   rR   r(   r|   r+   r   rz   r   mul)r,   r-   startstopstepr:  rS  rD  zeroonenptrwra  r0   r1   nm1ry  is_one
is_not_onerk  r~   rx  rA   s   ``   ` `           @@@@r   _randrange_implr    s   gw6I;;r1D
++b!
Cw5D MM'++d*D1	,,S$=	>KKGLL$6=sCLL!a	 
?
 
,,S$<	=KKGLL$6=sCLL!a	 
> 	TA			Wg&9&9$4&H	I+))':vF 
J
 ??2G$4$4$9$9:;D		'	'(8(8(?(?(6(;
=B "'$'++a
ACMM',,r1A1A+BCWMEKKGRXX6>Ew5D  }__W00q#>?CWFJdD) 	  @? 		;;ugkk',,t*<dCDDu 
?	>
 
>	= 
J	IN  @?sb   AN AN0%N$ON6%
O/O7O 
N
N!$
N36
O	 O
O	O
O&c                 H    [        U [        R                  5      (       a  S $ g )Nc                 2    [         R                  " SU S5      $ rE   r   	randranger  s    r   r   "randrange_impl_1.<locals>.<lambda>  s    V--a:r   r   r   r   r  s    r   randrange_impl_1r    s    %'':: (r   c                     [        U [        R                  5      (       a#  [        U[        R                  5      (       a  S $ g g )Nc                 0    [         R                  " XS5      $ NrF   r  r  r  s     r   r   "randrange_impl_2.<locals>.<lambda>  s    6#3#3E#Cr   r  r  s     r   randrange_impl_2r    s2    %''JtU]],K,KCC -L'r   c                     UR                   U :w  aE  UR                  (       a  [        R                  R                  $ [        R                  R
                  $ S $ )Nc                     U$ r   r"   )rQ  rJ  _tys      r   r   )_randrange_preprocessor.<locals>.<lambda>  s    r   )rT  rS  r   	IRBuildersextr{   )rT  r:  s     r   _randrange_preprocessorr    s@    	{{h%'YY!! 	(\\&&	( *)r   c                 `  ^^^^^^	^
 [        U [        R                  5      (       Ga  [        U[        R                  5      (       a  [        U[        R                  5      (       a  [        U R                  UR                  UR                  5      m[        U R
                  UR
                  UR
                  5      n[        R                  R                  UT5      m[        R                  " U5      m[        X05      m[        X15      m
[        X25      m	[        UUUUU	U
4S j5       mU4S j$ g g g )Nc                 6   > UUUU	U
4S jn[        TXU5      U4$ )Nc           
      d   > Uu  pEnT	" XT5      nT" XT5      nT
" XT5      n[        XXEUTTS5      $ r   )r  )r,   r-   r   rS   r  r  r  	llvm_typerS  start_preprocessorstep_preprocessorstop_preprocessors          r   r   0randrange_impl_3.<locals>._impl.<locals>.codegen0  sM    $(!T*79E(	B(	B&wd'0&$@ @r   r   )r   r  r  r  r   int_tyr  rS  r  r  r  s        r   r   randrange_impl_3.<locals>._impl.  s%    @ @ VU$7@@r   c                    > T" XU5      $ r   r"   )r  r  r  r   s      r   r   "randrange_impl_3.<locals>.<lambda>9  s    uD)Ar   r   r   r   maxrS  rT  from_bitwidthr   IntTyper  r   )r  r  r  rT  r   r  r  rS  r  r  r  s       @@@@@@@r   randrange_impl_3r  !  s    5%--((Zemm-L-L$&&U\\4;;<u~~t}}dmmD,,Xv>JJx(	4XE3HC3HC			A 		A 
		A BA+ ' .M(r   c                     [        U [        R                  5      (       a#  [        U[        R                  5      (       a  S $ g g )Nc                 6    [         R                  " XS-   S5      $ r  r  rs   rt   s     r   r    randint_impl_1.<locals>.<lambda>?  s    F,,QAq9r   r  r  s     r   randint_impl_1r  <  s2    !U]]##
1emm(D(D99 )E#r   c                 H    [        U [        R                  5      (       a  S $ g )Nc                 B    [         R                  R                  SU 5      $ r=   r    r   randintr   s    r   r   #np_randint_impl_1.<locals>.<lambda>E  s    299,,Q4r   r  r  s    r   np_randint_impl_1r  B  s    #u}}%%44 &r   c                   ^^^^^^ [        U [        R                  5      (       a  [        U[        R                  5      (       a  [        U R                  UR                  5      m[        U R
                  UR
                  5      n[        R                  R                  UT5      m[        R                  " U5      m[        X 5      m[        X!5      m[        UUUUU4S j5       mU4S j$ g g )Nc                 2   > UUUU4S jn[        TX5      U4$ )Nc           
      ~   > Uu  pET	" XT5      nT
" XT5      n[         R                  " TS5      n[        XXEUTTS5      $ )NrF   r    )r   r   r  )r,   r-   r   rS   r  r  r  r  rS  r  r  s          r   r   1np_randint_impl_2.<locals>._impl.<locals>.codegenU  sN    "*79E(	B{{9a0&wd'0&$@ @r   r   )	r   r   r   r   r  r  rS  r  r  s	       r   r    np_randint_impl_2.<locals>._implS  s#    @ @ VS/88r   c                    > T" X5      $ r   r"   r   r   r   s     r   r   #np_randint_impl_2.<locals>.<lambda>^  
    s!1r   r  )	r   r   rT  r   r  r  rS  r  r  s	      @@@@@@r   np_randint_impl_2r  H  s    #u}}%%*T5==*I*ISZZ-s||T]]3,,Xv>JJx(	4XC3HC			9 		9 
		9 21) +J%r   c                   ^ [        U [        R                  5      (       a2  [        U[        R                  5      (       a  [        U5      (       a  S $ [        U [        R                  5      (       a2  [        U[        R                  5      (       a  [	        U5      (       a  S $ [        U [        R                  5      (       a  [        U[        R                  5      (       a  [        U[        R                  5      (       dH  [        U[        R
                  5      (       ae  [        UR                  [        R                  5      (       a;  [        U R                  UR                  5      n[        [        SU 35      mU4S jnU$ g g g g )Nc                 @    [         R                  R                  X5      $ r   r  r   r   r   s      r   r   #np_randint_impl_3.<locals>.<lambda>e      ryy'8'8'Cr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r  r  s      r   r   r  i      rxx		0A0A#0L'Mr   intc                    > [         R                  " UTS9nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ N)r   )r    r   r   r   r   r   r  )r   r   r   r   r   rf   result_types         r   r    np_randint_impl_3.<locals>._implq  sI    ((4{3CxxHSXX "		 1 1# < 'Jr   )r   r   r   r   r   r   r   r  rT  getattrr    )r   r   r   rT  r   r  s        @r   np_randint_impl_3r  a  s   3&&:dEMM+J+J4CC3&&:dEMM+J+JdMM3&&:dEMM+J+J4''JtU^^,L,L0:4::;@==1J 1Js||T]]3bCz"23	 1J -M ,K&r   c                      S $ )Nc                  B    [         R                  R                  SS5      $ r   r    r   uniformr"   r   r   r   "np_uniform_impl0.<locals>.<lambda>|      299$$S#.r   r"   r"   r   r   np_uniform_impl0r  z      ..r   c                    ^ [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [        S 5       mU4S j$ g g )Nc                 z    [        U5      n[        U5      n[        [        R                  X5      [	        SX45      4$ r   r   r   r   r   uniform_impl)r   rs   rt   low_preprocessorhigh_preprocessors        r   r   uniform_impl2.<locals>._impl  s=    3A6 4Q 7U]]A1<&4; ; ;r   c                    > T" X5      $ r   r"   rs   rt   r   s     r   r   uniform_impl2.<locals>.<lambda>  s	    E!Kr   r   r  s     @r   uniform_impl2r    s]    !ekk5==122zU]]+8- 8-		; 
	;
 ('8-2r   c                    ^ [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [        S 5       mU4S j$ g g )Nc                 z    [        U5      n[        U5      n[        [        R                  X5      [	        SX45      4$ r   r  )r   r   r   r  r  s        r   r   np_uniform_impl2.<locals>._impl  s=    3C8 4T :U]]C6&9; ; ;r   c                    > T" X5      $ r   r"   r  s     r   r   "np_uniform_impl2.<locals>.<lambda>  r  r   r   r  s     @r   np_uniform_impl2r    s]    #U]]3445;;.:0 :0		; 
	;
 21:04r   c                    ^ ^^ UUU 4S jnU$ )Nc                    > [        XT5      nUu  pVT	" X5      nT
" X5      nUR                  Xe5      n[        XU5      nUR                  XQR	                  Xx5      5      $ r   )r2   fsubru   rq   rr   )r,   r-   r   rS   rA   rs   rt   rz   rn  a_preprocessorb_preprocessorrD  s            r   r   uniform_impl.<locals>.impl  s\    !'E:	7&7&Q"Gi8||A||E566r   r"   )rD  r  r  r   s   ``` r   r  r    s    7 Kr   c                 b   [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [	        U5      (       a  S $ [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [        U5      (       a  S $ [        U [        R                  [        R                  45      (       a  [        U[        R                  [        R                  45      (       an  [        U[        R                  5      (       dH  [        U[        R                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g g g )Nc                 @    [         R                  R                  X5      $ r   r  r  s      r   r   "np_uniform_impl3.<locals>.<lambda>  r  r   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r  r  s      r   r   r    r  r   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r  )r   r   r   r   r   rf   s         r   r   np_uniform_impl3.<locals>._impl  sE    ((4.CxxHSXX "		 1 1# < 'Jr   r  )r   r   r   r   s       r   np_uniform_impl3r    s,   3emm455*5;;.;0 ;04CC3emm455*5;;.;0 ;0d NM3emm455*5;;.;0 ;04''JtU^^,L,L0:4::;@==1J 1J	 1J -M;05r   c                     S n[        U [        R                  [        R                  45      (       a2  [        U[        R                  [        R                  45      (       a  U$ g g )Nc                     [         R                   " 5       nSnX#:  a  SU-
  nXpXU -
  [        R                  " X#-  5      -  -   $ )N      ?r   r   r%  r&  )r   r   ucs       r   r    triangular_impl_2.<locals>._impl  sB    MMO5aASjDIIae$4444r   r   r  s      r   triangular_impl_2r    sN    5 #U]]3445;;.:0 :0:04r   c                 ,   [        U [        R                  [        R                  45      (       ae  [        U[        R                  [        R                  45      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g g )Nc                     X:X  a  U $ [         R                   " 5       nX -
  X-
  -  nX4:  a  SU-
  nSU-
  nXpXU -
  [        R                  " X4-  5      -  -   $ r   r  )r   r   moder  r   s        r   r    triangular_impl_3.<locals>._impl  s^    {
A
+Au!G!G T*		!%(8888r   r   )r   r   r  r   s       r   triangular_impl_3r    sm    3emm455*5;;.;0 ;0$emm455		9  6;05r   c                 ,   [        U [        R                  [        R                  45      (       ae  [        U[        R                  [        R                  45      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g g )Nc                     X :X  a  U $ [         R                  R                  5       nX-
  X -
  -  nX4:  a  SU-
  nSU-
  nX p XU -
  [        R                  " X4-  5      -  -   $ r   )r    r   r%  r&  )leftr  rightr  r   s        r   r   r    se    }		  "A.Au!G!G#e4<499QU+;;;;r   r   )r
  r  r  r   s       r   r  r    sm    4%++u}}566:5;;.<0 <0uu{{EMM:;;		<  <<06r   c                 6   [        U5      (       a  SS j$ [        U5      (       a  SS j$ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a1  [        UR                  [        R                  5      (       a  SS jnU$ g g )Nc                 D    [         R                  R                  U UU5      $ r   )r    r   
triangularr
  r  r  r   s       r   r   !triangular_impl.<locals>.<lambda>  s    BII4H4HIMIN5Pr   c                 j    [         R                  " [         R                  R                  XU5      5      $ r   )r    r   r   r  r  s       r   r   r    s!    BHHII  U35
r   c                     [         R                  " U5      nUR                  n[        UR                  5       H%  n[         R
                  R                  XU5      XV'   M'     U$ r   )r    r   r   r   r   r   r  )r
  r  r  r   r   r   rf   s          r   r   triangular_impl.<locals>._impl  sG    ((4.CxxHSXX "		 4 4T G 'Jr   r   r   )r
  r  r  r   r   s        r   triangular_implr    s    4P 	P d
 	
 	4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                     [        U [        R                  [        R                  45      (       aI  [        U[        R                  [        R                  45      (       a  [	        [
        R
                  5      $ g g r   )r   r   r   r   _gammavariate_implr   alphabetas     r   gammavariate_implr    sQ    %%++u}}566:5;;.<0 <0!&--00<06r   c                 h    [        U [        R                  [        R                  45      (       a  S $ g )Nc                 B    [         R                  R                  U S5      $ r   r    r   gammashapes    r   r   %ol_np_random_gamma1.<locals>.<lambda>  s    RYY__UC8r   r   r  s    r   ol_np_random_gamma1r"    s)     %%++u}}56688 7r   c                 ,  ^ [        U [        R                  [        R                  45      (       ad  [        U[        R                  [        R                  45      (       a4  [	        [        [        R                  R                  5      5      mU4S jnU$ g g )Nc                    > T" X5      $ r   r"   )r   r  r1   s     r   r   !ol_np_random_gamma2.<locals>.impl  s    e##r   )r   r   r   r   r   r  r    r   )r   r  r   r1   s      @r   ol_np_random_gamma2r&    sg    %%++u}}566:EKK/<1 <101A1ABC	$<16r   c                    ^  U 4S jnU$ )Nc                   > S[         R                  " S5      -   nU S::  d  US::  a  [        S5      eU S:  a  [         R                  " SU -  S-
  5      nU [         R                  " S5      -
  nX-   n T" 5       nSUs=:  a  S:  d  O  M  ST" 5       -
  n[         R                  " USU-
  -  5      U-  nU [         R                  " U5      -  n	Xf-  U-  n
XEU-  -   U	-
  nX-   SU
-  -
  S:  d  U[         R                  " U
5      :  a  X-  $ M  U S:X  a"  [         R                  " ST" 5       -
  5      * U-  $  T" 5       n[         R
                  U -   [         R
                  -  nX-  nUS::  a	  USU -  -  n	O[         R                  " X-
  U -  5      * n	T" 5       nUS:  a  XiU S-
  -  ::  a   X-  $ O U[         R                  " U	* 5      ::  a   X-  $ M  )	z1Gamma distribution.  Taken from CPython.
        r   g      @r   z*gammavariate: alpha and beta must be > 0.0r#  g      @gHz>gP?)r%  r'  r}  r&  expe)r  r  SG_MAGICCONSTainvbbbcccu1u2rJ  r   zrn  r  rt   pr,  s                  r   r   !_gammavariate_impl.<locals>._impl$  s    dhhsm+
 C<43;IJJ3; 99S5[3./D$((3-'C,CYb+8+79_HHRR[)$.$((1+%E"HAIaK$s1u,3qDHHQK7G8O  c\
 HHS79_--44 IVVe^TVV+C8c%i(A13+..AYs753;// 8O	 0488QB<'8O r   r"   r,  r   s   ` r   r  r  #  s    6n Lr   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   r  r   r  r   s      r   r   gamma_impl.<locals>.<lambda>a  s    "))//%*Gr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r  r7  s      r   r   r8  d  s    "((299??53P*Qr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r  )r   r  r   r   r   rf   s         r   r   gamma_impl.<locals>._implh  sC    ((4.CxxHSXX "		 = 'Jr   r   )r   r  r   r   s       r   
gamma_implr<  ^  sy    4GGdQQ$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   r    r   standard_gammar   r   s     r   r   %standard_gamma_impl.<locals>.<lambda>t  s    299#;#;E#Br   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r@  rA  s     r   r   rB  w  s    288BII,D,DU,K#Lr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   r@  )r   r   r   r   rf   s        r   r   "standard_gamma_impl.<locals>._impl{  sE    ((4.CxxHSXX "		 8 8 ? 'Jr   r   )r   r   r   s      r   standard_gamma_implrF  q  sy    4BBdLL4''JtU^^,L,L0:4::;@==1J 1J	 1J -Mr   c                     [        U [        R                  [        R                  45      (       aI  [        U[        R                  [        R                  45      (       a  [	        [
        R                  5      $ g g r   )r   r   r   r   _betavariate_implr   gammavariater  s     r   betavariate_implrJ    sS    %%++u}}566:5;;.<0 <0 !4!455<06r   c                 ,  ^ [        U [        R                  [        R                  45      (       ad  [        U[        R                  [        R                  45      (       a4  [	        [        [        R                  R                  5      5      mU4S jnU$ g g )Nc                    > T" X5      $ r   r"   )rs   rt   r1   s     r   r   ol_np_random_beta.<locals>.impl  s    a8Or   )	r   r   r   r   r   rH  r    r   r  )rs   rt   r   r1   s      @r   ol_np_random_betarN    se    !ekk5==122zU]]+8- 8-0AB	8-2r   c                    ^  U 4S jnU$ )Nc                 @   > T" U S5      nUS:X  a  gX"T" US5      -   -  $ )z0Beta distribution.  Taken from CPython.
        r   r   r"   )r  r  ri   r  s      r   r    _betavariate_impl.<locals>._impl  s/    
 %8E$O+,,r   r"   )r  r   s   ` r   rH  rH    s    	- Lr   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   )r    r   r  rs   rt   r   s      r   r   beta_impl.<locals>.<lambda>  s    ")).."6r   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r  rT  s      r   r   rU    s    "((299>>!+?"@r   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r  )rs   rt   r   r   r   rf   s         r   r   beta_impl.<locals>._impl  sC    ((4.CxxHSXX "		q 4 'Jr   r   )rs   rt   r   r   s       r   	beta_implrY    s|    466d A@4''JtU^^,L,L0:4::;@==1J 1J	 1J -Mr   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                 b    [         R                  " S[        R                  " 5       -
  5      * U -  $ )z;Exponential distribution.  Taken from CPython.
            r   )r%  r'  r   )lambds    r   r   expovariate_impl.<locals>._impl  s&     HHS6==?233e;;r   r   r   r   )r\  r   s     r   expovariate_implr_    s$    %%%	<  &r   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc                 t    [         R                  " S[        R                  R                  5       -
  5      * U -  $ r   r%  r'  r    r   r  s    r   r   exponential_impl.<locals>._impl  s+    HHS299#3#3#5566>>r   r   )r  r   s     r   exponential_implre    s+    %%++u}}566	? 7r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   exponentialr  r   s     r   r   "exponential_impl.<locals>.<lambda>  s    299#8#8#?r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   rh  ri  s     r   r   rj    s    288BII,A,A%,H#Ir   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   rh  r  r   r   r   rf   s        r   r   rd    sE    ((4.CxxHSXX "		 5 5e < 'Jr   r   r  r   r   s      r   re  re    sy    4??dII4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                      S n U $ )Nc                  n    [         R                  " S[        R                  R                  5       -
  5      * $ r   rb  r"   r   r   r   rd    s&    ryy//11222r   r"   r   s    r   re  re    s    3Lr   c                 *   [        U 5      (       a  S $ [        U 5      (       a  S $ [        U [        R                  5      (       dH  [        U [        R
                  5      (       a/  [        U R                  [        R                  5      (       a  S nU$ g g )Nc                 >    [         R                  R                  5       $ r   )r    r   standard_exponentialr   s    r   r   +standard_exponential_impl.<locals>.<lambda>  s    BII::<r   c                 f    [         R                  " [         R                  R                  5       5      $ r   )r    r   r   rs  r   s    r   r   rt    s    BHHRYY%C%C%EFr   c                     [         R                  " U 5      nUR                  n[        UR                  5       H#  n[         R
                  R                  5       X#'   M%     U$ r   )r    r   r   r   r   r   rs  r   s       r   r   (standard_exponential_impl.<locals>._impl  sC    ((4.CxxHSXX "		 > > @ 'Jr   r   r   s     r   standard_exponential_implrx    sv    4<<dFF4''4((Z

8=.G .G	 .G(r   c                      S $ )Nc                  B    [         R                  R                  SS5      $ r   r    r   	lognormalr"   r   r   r   $np_lognormal_impl0.<locals>.<lambda>   s    299&&sC0r   r"   r"   r   r   np_lognormal_impl0r~    s    00r   c                 h    [        U [        R                  [        R                  45      (       a  S $ g )Nc                 B    [         R                  R                  U S5      $ r   r{  means    r   r   %np_log_normal_impl1.<locals>.<lambda>  s    BII//c:r   r   r  s    r   np_log_normal_impl1r    s'    $emm455:: 6r   c                 (  ^ [        U [        R                  [        R                  45      (       ab  [        U[        R                  [        R                  45      (       a2  [	        [        [        R                  R                  5      5      mU4S j$ g g )Nc                    > T" X5      $ r   r"   r  r   r1   s     r   r   %np_log_normal_impl2.<locals>.<lambda>  s	    2d?r   )	r   r   r   r   r   _lognormvariate_implr    r   r   r  s     @r   np_log_normal_impl2r  	  sc    $emm455*EKK/;1 ;122993C3CDE22;15r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   r{  r  r   r   s      r   r    lognormal_impl.<locals>.<lambda>  s    )<)<T)Ir   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r|  r  s      r   r   r    s    "))2E2Ed2R)Sr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r|  )r  r   r   r   r   rf   s         r   r   lognormal_impl.<locals>._impl  sE    ((4.CxxHSXX "		 3 3D @ 'Jr   r   )r  r   r   r   s       r   lognormal_implr    sy    4IIdSS4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                    ^ [        U [        R                  5      (       aH  [        U[        R                  5      (       a(  [        [	        [
        R                  5      5      mU4S j$ g g )Nc                    > T" X5      $ r   r"   r   r   r1   s     r   r   %lognormvariate_impl.<locals>.<lambda>(  s	    Br   )r   r   r   r   r  r   gaussr  s     @r   lognormvariate_implr  $  sG    "ekk""z%'E'E26<<@A.. (F"r   c                    ^  U 4S j$ )Nc                 <   > [         R                  " T" X5      5      $ r   )r%  r)  )r   r   _gausss     r   r   &_lognormvariate_impl.<locals>.<lambda>,  s    TXXfR&78r   r"   )r  s   `r   r  r  +  s	    88r   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                 H    S[         R                   " 5       -
  nSUSU -  -  -  $ )z)Pareto distribution.  Taken from CPython.r   )r   )r  r  s     r   r   !paretovariate_impl.<locals>._impl2  s(     fmmo%As5y)))r   r^  )r  r   s     r   paretovariate_implr  /  s$    %%%	*  &r   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                 `    S[         R                  R                  5       -
  nSUSU -  -  -  S-
  $ )Nr   rF   r   rs   r  s     r   r   pareto_impl.<locals>._impl>  s1    bii&&((As1u%))r   r^  rs   r   s     r   pareto_implr  ;  s$    !U[[!!	*
  "r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   paretors   r   s     r   r   pareto_impl.<locals>.<lambda>I  s    ryy//2r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r  L  s    rxx		(8(8(;<r   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   r  rs   r   r   r   rf   s        r   r   r  P  sE    ((4.CxxHSXX "		 0 0 3 'Jr   r   rs   r   r   s      r   r  r  F  sy    422d<<4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                     [        U [        R                  [        R                  45      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g )Nc                 r    S[         R                   " 5       -
  nU [        R                  " U5      * SU-  -  -  $ )z*Weibull distribution.  Taken from CPython.r   )r   r%  r'  )r  r  r  s      r   r   "weibullvariate_impl.<locals>._impl]  s2     fmmo%ATXXa[Lc$h777r   r   )r  r  r   s      r   weibullvariate_implr  Y  sN    %%++u}}566:5;;.<0 <0	8 <06r   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc                 ~    S[         R                  R                  5       -
  n[        R                  " U5      * SU -  -  $ r   r    r   r%  r'  r  s     r   r   weibull_impl.<locals>._impli  s2    bii&&((AXXa[Lc!e,,r   r   r  s     r   weibull_implr  f  s-    !ekk5==122	-
  3r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   weibullr  s     r   r   weibull_impl2.<locals>.<lambda>t  s    ryy003r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r  w  s    rxx		(9(9!(<=r   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   r  r  s        r   r   weibull_impl2.<locals>._impl{  sE    ((4.CxxHSXX "		 1 1! 4 'Jr   r   r  s      r   weibull_impl2r  q  sy    433d==4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                     [        U [        R                  5      (       a9  [        U[        R                  5      (       a  [        [        R                  5      $ g g r   )r   r   r   _vonmisesvariate_implr   r   kappas     r   vonmisesvariate_implr    s;    "ekk""z%'E'E$V]]33 (F"r   c                     [        U [        R                  5      (       aC  [        U[        R                  5      (       a#  [        [        R
                  R
                  5      $ g g r   )r   r   r   r  r    r   r  s     r   r  r    sA    "ekk""z%'E'E$RYY%5%566 (F"r   c                    ^  U 4S jnU$ )Nc                 Z  > US::  a  S[         R                  -  T" 5       -  $ SU-  nU[         R                  " SX"-  -   5      -   n T" 5       n[         R                  " [         R                  U-  5      nXSU-   -  nT" 5       nUSXf-  -
  :  d   USU-
  [         R                  " U5      -  ::  a  OMj  SU-  nX-   SX-  -   -  n	T" 5       n
U
S:  a/  U [         R
                  " U	5      -   S[         R                  -  -  nU$ U [         R
                  " U	5      -
  S[         R                  -  -  nU$ )zCircular data distribution.  Taken from CPython.
Note the algorithm in Python 2.6 and Numpy is different:
http://bugs.python.org/issue17141
gư>r#  r  r   )r%  pir&  cosr)  acos)r   r  srn  r/  r1  dr0  qr+  u3thetar,  s               r   r   $_vonmisesvariate_impl.<locals>._impl  s    D==79,,%K		#+&&B2&AUABC!%K2#'TXXa[)@#@  !GUsQU{#Y8$))A,&3=9E  $))A,&3=9Er   r"   r4  s   ` r   r  r    s    &P Lr   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   )r    r   vonmisesr   r  r   s      r   r   vonmises_impl.<locals>.<lambda>  s    ryy'9'9"'Dr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r  r  s      r   r   r    s    rxx		0B0B20M'Nr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r  )r   r  r   r   r   rf   s         r   r   vonmises_impl.<locals>._impl  sE    ((4.CxxHSXX "		 2 22 = 'Jr   r   )r   r  r   r   s       r   vonmises_implr    y    4DDdNN4''JtU^^,L,L0:4::;@==1J 1J	 1J -Mr   c                     [        U [        R                  5      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g )Nc           	      <   U S:  a  [        S5      eSUs=::  a  S::  d  O  [        S5      eUS:X  a  gUS:X  a  U $ US:  nU(       a  SU-
  nSU-
  nSnX0-  nUS::  a  US	-  nU S	-  n X0-  nU S:  d   eUS::  a  M  X-  n[        XS
[        R                  " Xc-  S-   5      -  -   5      nSnUS:  ak  Sn	[        R
                  R                  5       n
UnX::  a<  X::  a  X(       a  X	-
  OU	-  nUS-  nO"X-  n
U	S-  n	X	-
  S-   U-  U-  X-  -  nX::  a  M<  US:  a  Mk  U$ )zp
Binomial distribution.  Numpy's variant of the BINV algorithm
is used.
(Numpy uses BTPE for n*p >= 30, though)
r   zbinomial(): n <= 0r   r   zbinomial(): p outside of [0, 1]r  rF   gx0 rI         $@)r}  minr%  r&  r    r   )rk  r2  flippedr  nitersqnnp_prodboundr   XUpxs               r   r   binomial_impl.<locals>._impl  s`    1u !5661OO !BCCCxCx#gG!GaAFB, 1aV1uu , eGTDIIgkAo,F%FFGEE1*II$$&jw'q8!GAFA519/B.159B j	 1* Lr   r   r   r   r   rk  r2  r   s      r   binomial_implr    sG    !U]]##
U]]+)- )-/	b g)-#r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   )r    r   binomialrk  r2  r   s      r   r   binomial_impl.<locals>.<lambda>
  s    "))"4"4Q":r   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r  r  s      r   r   r    s    "((299+=+=a+C"Dr   c                     [         R                  " U[         R                  S9nUR                  n[	        UR
                  5       H$  n[         R                  R                  X5      XE'   M&     U$ r  )r    r   intpr   r   r   r   r  )rk  r2  r   r   r   rf   s         r   r   r    sL    ((4rww/CxxHSXX "		 2 21 8 'Jr   r   )rk  r2  r   r   s       r   r  r    s|    4::d ED4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc                 L    S[         R                  R                  U S-  5      -  $ Nr#  r?  )dfs    r   r   chisquare_impl.<locals>._impl  s     11"s(;;;r   r   r  r   s     r   chisquare_implr    s-    "u{{EMM233	< 	 4r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   r    r   	chisquarer  r   s     r   r   !chisquare_impl2.<locals>.<lambda>'  s    		 3 3B 7r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r   )  s    )<)<R)@ Ar   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   r  r  r   r   r   rf   s        r   r   chisquare_impl2.<locals>._impl-  sE    ((4.CxxHSXX "		 3 3B 7 'Jr   r   r  r   r   s      r   chisquare_impl2r  $  sy    477dAA4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                     [        U [        R                  [        R                  45      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g )Nc                     [         R                  R                  U 5      U-  [         R                  R                  U5      U -  -  $ r   r  )dfnumdfdens     r   r   f_impl.<locals>._impl:  s:    YY((/%7YY((/%79 :r   r   )r	  r
  r   s      r   f_implr  6  sN    %%++u}}566:EKK/<1 <1	: <16r   c                    [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [	        U5      (       a  S $ [        U [        R                  [        R                  45      (       aB  [        U[        R                  [        R                  45      (       a  [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   )r    r   r+  r	  r
  r   s      r   r   f_impl.<locals>.<lambda>F  s    "))++e*Cr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r+  r  s      r   r   r  K  s    "((299;;u3L*Mr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r+  )r	  r
  r   r   r   rf   s         r   r   r  O  sC    ((4.CxxHSXX "		E 9 'Jr   r  )r	  r
  r   r   s       r   r  r  A  s    55;;677JEKK/=1 =14CC55;;677JEKK/=1 =1dMM4''JtU^^,L,L0:4::;@==1J 1J	 1J -Mr   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc                    U S::  d  U S:  a  [        S5      eSU -
  nU S:  aG  [        S5      nU =p4[        R                  R                  5       nXS:  a  XA-  nX4-  nUS-  nXS:  a  M  U$ [        R
                  " [        R                  " S[        R                  R                  5       -
  5      [        R                  " U5      -  5      $ )Nr   r   z geometric(): p outside of (0, 1]gUUUUUU?rF   )r}  r  r    r   r%  ceilr'  )r2  r  r  sumprodr  s         r   r   geometric_impl.<locals>._impl[  s    Cx1s7 !CDDaA..FII$$&gIDKCFA g yy#		0@0@0B*B!C!%!"- . .r   r   )r2  r   s     r   geometric_implr  X  s-    !ekk5==122	.$ ' 3r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   	geometricr2  r   s     r   r    geometric_impl.<locals>.<lambda>s      ryy2215r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r  v      rxx		(;(;A(>?r   c                     [         R                  " U[         R                  S9nUR                  n[	        UR
                  5       H$  n[         R                  R                  U 5      X4'   M&     U$ r  )r    r   int64r   r   r   r   r  r2  r   r   r   rf   s        r   r   r  z  L    ((4rxx0CxxHSXX "		 3 3A 6 'Jr   r   r2  r   r   s      r   r  r  p  sy    455d??4''JtU^^,L,L,6tzz7<}}-F -F	 -F -Mr   c                     [        U [        R                  [        R                  45      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g )Nc                     S[         R                  R                  5       -
  nX[        R                  " [        R                  " U5      * 5      -  -
  $ r   r  r   r  r  s      r   r   gumbel_impl.<locals>._impl  s:    bii&&((A488A;,!7777r   r   r  s      r   gumbel_implr+    sN    #U]]344EKK/:1 :1	8 :14r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   )r    r   gumbelr  s      r   r   gumbel_impl3.<locals>.<lambda>  r  r   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r.  r  s      r   r   r/    r  r   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r.  r  s         r   r   gumbel_impl3.<locals>._impl  r  r   r   r  s       r   gumbel_impl3r3    r  r   c                 ,   [        U [        R                  [        R                  45      (       ae  [        U[        R                  [        R                  45      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g g )Nc                    [        U5      [        U 5      -   [        U5      -
  n[        [        X5      5      nUn[        U5      nUS:  aV  US:  aP  U[        R                  " [
        R                  R                  5       XSU-   -  -   5      -  nUS-  nUS:  a  US:  a  MP  [        XE-
  5      nX:  a  [        U5      U-
  $ U$ )z'Numpy's algorithm for hypergeometric().r   r   rF   )r  floatr  r%  floorr    r   )ngoodnbadnsampled1d2YKZs           r   r   "hypergeometric_impl.<locals>._impl  s    TSZ'#g,6Bs4'(BAGAc'a!eTZZ		 0 0 2Qq&\ ABBQ c'a!e BFA|7|a''r   r   )r8  r9  r:  r   s       r   hypergeometric_implrA    sm    55;;677J5;;.=0 =0gU]];<<	  # ==07r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 B    [         R                  R                  XU5      $ r   )r    r   hypergeometricr8  r9  r:  r   s       r   r   %hypergeometric_impl.<locals>.<lambda>  s    II$$U':r   c                 j    [         R                  " [         R                  R                  XU5      5      $ r   )r    r   r   rD  rE  s       r   r   rF    s    HHRYY--e7CDr   c                     [         R                  " U[         R                  S9nUR                  n[	        UR
                  5       H%  n[         R                  R                  XU5      XV'   M'     U$ r  )r    r   r  r   r   r   r   rD  )r8  r9  r:  r   r   r   rf   s          r   r   r@    sN    ((4rww/CxxHSXX "		 8 8g N 'Jr   r   )r8  r9  r:  r   r   s        r   rA  rA    s    4; 	;dE 	E4''JtU^^,L,L0:4::;@==1J 1J	 1J -Mr   c                      S $ )Nc                  B    [         R                  R                  SS5      $ r   r    r   laplacer"   r   r   r   laplace_impl0.<locals>.<lambda>  r  r   r"   r"   r   r   laplace_impl0rN    r  r   c                 h    [        U [        R                  [        R                  45      (       a  S $ g )Nc                 B    [         R                  R                  U S5      $ r   rK  r   s    r   r   laplace_impl1.<locals>.<lambda>  s    299,,S#6r   r   r   s    r   laplace_impl1rR    s'    #U]]34466 5r   c                     [        U [        R                  [        R                  45      (       a6  [        U[        R                  [        R                  45      (       a  [        $ g g r   )r   r   r   r   laplace_implr   r  s     r   laplace_impl2rV    sH    #U]]344EKK/:1 :1:14r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   rK  r  s      r   r   laplace_impl3.<locals>.<lambda>  s    		(9(9#(Er   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   rL  r  s      r   r   rY    s    1B1B31N(Or   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   rL  r  s         r   r   laplace_impl3.<locals>._impl  sE    ((4.CxxHSXX "		 1 1# = 'Jr   r   r  s       r   laplace_impl3r]    sy    4EEdOO$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                     [         R                  R                  5       nUS:  a  X[        R                  " X"-   5      -  -   $ X[        R                  " SU-
  U-
  5      -  -
  $ )Nr  r#  r  r)  s      r   rT  rT    sR    
		A3wTXXae_,,,TXXcAgk2222r   c                      S $ )Nc                  B    [         R                  R                  SS5      $ r   r    r   logisticr"   r   r   r    logistic_impl0.<locals>.<lambda>  s    299%%c3/r   r"   r"   r   r   logistic_impl0rd    s    //r   c                 h    [        U [        R                  [        R                  45      (       a  S $ g )Nc                 B    [         R                  R                  U S5      $ r   ra  r   s    r   r    logistic_impl1.<locals>.<lambda>  s    299--c37r   r   r   s    r   logistic_impl1rh     s'    #U]]34477 5r   c                     [        U [        R                  [        R                  45      (       a6  [        U[        R                  [        R                  45      (       a  [        $ g g r   )r   r   r   r   logistic_implrU  s     r   logistic_impl2rk    sH    #U]]344EKK/:1 :1:14r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   ra  r  s      r   r    logistic_impl3.<locals>.<lambda>  s    		(:(:3(Fr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   rb  r  s      r   r   rn    s    1C1CC1O(Pr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   rb  r  s         r   r   logistic_impl3.<locals>._impl  sE    ((4.CxxHSXX "		 2 23 > 'Jr   r   r  s       r   logistic_impl3rr    sy    4FFdPP4''JtU^^,L,L0:4::;@==1J 1J	 1J -Mr   c                     [         R                  R                  5       nX[        R                  " USU-
  -  5      -  -   $ r   r  r)  s      r   rj  rj     s3    
		A!sQw-0000r   c                    U S::  d  U S:  a  [        S5      e[        R                  " SU -
  5      n [        R                  R	                  5       nX :  a  g[        R                  R	                  5       nS[        R
                  " X-  5      -
  nX$U-  ::  aD  [        R                  " S[        R                  " U5      [        R                  " U5      -  -   5      $ X$:  a  gg)z"Numpy's algorithm for logseries().r   r   z logseries(): p outside of (0, 1]rF   rI   )r}  r%  r'  r    r   r)  r#  )r2  rn  Vr  r  s        r   _logseries_implrv  %  s    Cx1s7;<<qA
II6II$((15/!A:88C$((1+";;<<Vr   c                 n    [        U [        R                  [        R                  45      (       a  [        $ g r   )r   r   r   r   rv  )r2  s    r   logseries_implrx  :  s'    !ekk5==122 3r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   	logseriesr  s     r   r    logseries_impl.<locals>.<lambda>C  r  r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r{  r  s     r   r   r|  E  r!  r   c                     [         R                  " U[         R                  S9nUR                  n[	        UR
                  5       H$  n[         R                  R                  U 5      X4'   M&     U$ r  )r    r   r#  r   r   r   r   r{  r$  s        r   r   logseries_impl.<locals>._implI  r%  r   r   r&  s      r   rx  rx  @  sy    455d??$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                     [        U [        R                  5      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g )Nc                     U S::  a  [        S5      eUS:  d  US:  a  [        S5      e[        R                  R                  U SU-
  U-  5      n[        R                  R	                  U5      $ )Nr   znegative_binomial(): n <= 0r   r   z(negative_binomial(): p outside of [0, 1])r}  r    r   r  poisson)rk  r2  r=  s      r   r   %negative_binomial_impl.<locals>._implV  s_    Av !>??3w!c' !KLL		C!Gq=1A99$$Q''r   r  r  s      r   negative_binomial_implr  R  sE    !U]]##
u{{EMM*), ),	( ),#r   c                      S $ )Nc                  @    [         R                  R                  S5      $ r   r    r   r  r"   r   r   r   poisson_impl0.<locals>.<lambda>c  s    299$$S)r   r"   r"   r   r   poisson_impl0r  a  s    ))r   c                    ^ [        U [        R                  [        R                  45      (       a  [        S 5       mU4S j$ g )Nc                 ^   ^ [        U5      mU4S jn[        [        R                  U5      U4$ )Nc                   >^^ [        X5      n[        R                  " U[        SS9nUR	                  S5      nUR	                  S5      nUu  nT" X5      nUR                  SU[        R                  " [        S5      5      n	UR                  U	5         [        R                  " [        [        [        45      n
[        R                  " UR                  R                  U
S5      nUR                  XU45      nUR!                  X5        UR#                  U5        S S S 5        UR#                  U5        UR%                  U5        [&        R(                  R(                  m[*        R,                  mUU4S jnU R/                  XX#5      nUR!                  X5        UR#                  U5        UR%                  U5        UR1                  U5      $ ! , (       d  f       N= f)	Nr   r3  bbcontrw  rW   r  numba_poisson_ptrsc                    > U S:  a  [        S5      eU S:X  a  gT" U * 5      nSnSn T" 5       nX4-  nX1::  a  U$ US-  nM  )a  Numpy's algorithm for poisson() on small *lam*.

This method is invoked only if the parameter lambda of the
distribution is small ( < 10 ). The algorithm used is
described in "Knuth, D. 1969. 'Seminumerical Algorithms.
The Art of Computer Programming' vol 2.
r   zpoisson(): lambda < 0r   r   rF   r}  )lamenlamr  r  r  _expr,  s        r   poisson_implCpoisson_impl1.<locals>._impl.<locals>.codegen.<locals>.poisson_impl  s`     Sy()@AAcz  #JEAD#I	=#$HQ r   )r9   r   r6  r   rq  fcmp_orderedr   r   ro   r{  r%   r&   r'   rR   r(   r+   r`   rr  rs  r    r   r%  r)  r8  r\   )r,   r-   r   rS   rA   retptrr  rw  r  big_lamr0   r1   r   r  r  r,  lam_preprocessors                 @@r   r   -poisson_impl1.<locals>._impl.<locals>.codegenm  s{   ,W>	 ,,WgEJ 33H=227;&w4!..tS/1{{64/HJ__W- ??7_f4MND 778H8H8O8O8<8LNB ",,rs+;<CMM#.NN5) . v&''/))**xx, ..wcPc*u%''.||F++W .-s   BG
G)r   r   r   r#  )r   r  r   r  s      @r   r   poisson_impl1.<locals>._impli  s,    3C86,n U[[#.77r   c                    > T" U 5      $ r   r"   r  r   s    r   r   poisson_impl1.<locals>.<lambda>  s	    5:r   r   r  s    @r   poisson_impl1r  f  s>    #U]]344	:	8 
:	8v &%{ 5r   c                 F   [        U [        R                  [        R                  45      (       a  [	        U5      (       a  S $ [        U [        R                  [        R                  45      (       a  [        U5      (       a  S $ [        U [        R                  [        R                  45      (       an  [        U[        R                  5      (       dH  [        U[        R                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g g )Nc                 @    [         R                  R                  U 5      $ r   r  r  r   s     r   r   poisson_impl2.<locals>.<lambda>  s    !2!23!7r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r    s    "))*;*;C*@!Ar   c                     [         R                  " U[         R                  S9nUR                  n[	        UR
                  5       H$  n[         R                  R                  U 5      X4'   M&     U$ r  )r    r   r  r   r   r   r   r  )r  r   r   r   rf   s        r   r   poisson_impl2.<locals>._impl  sL    ((4rww/CxxHSXX "		 1 1# 6 'Jr   r  )r  r   r   s      r   poisson_impl2r    s    #U]]344T9J9J77#U]]3449M9MAA#U]]344tU]]++4((Z

8=.G .G	 .G( 5r   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc                     U S::  a  [        S5      e[        R                  " S[        R                  " [        R
                  R                  5       * 5      -
  SU -  5      $ )Nr   zpower(): a <= 0rF   r   )r}  r%  powr)  r    r   rs  rs   s    r   r   power_impl.<locals>._impl  sM    Cx !23388A"))*H*H*J)J KKqD" "r   r   r  s     r   
power_implr    s-    !ekk5==122	"  3r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   powerr  s     r   r   power_impl.<locals>.<lambda>  s    ryyq1r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r    s    rxx		(:;r   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   r  r  s        r   r   r    sC    ((4.CxxHSXX "		 2 'Jr   r   r  s      r   r  r    sy    411d;;$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                      S $ )Nc                  @    [         R                  R                  S5      $ r   r    r   rayleighr"   r   r   r    rayleigh_impl0.<locals>.<lambda>  s    299%%c*r   r"   r"   r   r   rayleigh_impl0r    s    **r   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc           	          U S::  a  [        S5      eU [        R                  " S[        R                  " S[        R
                  R                  5       -
  5      -  5      -  $ )Nr   zrayleigh(): scale <= 0r$  r   )r}  r%  r&  r'  r    r   rc  s    r   r   rayleigh_impl1.<locals>.impl  sI    | !9::499TDHHS299;K;K;M5M,N%NOOOr   r   )r  r   s     r   rayleigh_impl1r    s.    %%++u}}566	P  7r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   r  ri  s     r   r    rayleigh_impl2.<locals>.<lambda>  s    299#5#5e#<r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  ri  s     r   r   r    s    288BII,>,>u,E#Fr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   r  rm  s        r   r   rayleigh_impl2.<locals>._impl  sE    ((4.CxxHSXX "		 2 25 9 'Jr   r   rn  s      r   rayleigh_impl2r    sy    4<<dFF$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                      S n U $ )Nc                  |    [         R                  R                  5       [         R                  R                  5       -  $ r   r	  r"   r   r   r   cauchy_impl.<locals>._impl  s'    yy((*RYY-F-F-HHHr   r"   r   s    r   cauchy_implr     s    I Lr   c                 *   [        U 5      (       a  S $ [        U 5      (       a  S $ [        U [        R                  5      (       dH  [        U [        R
                  5      (       a/  [        U R                  [        R                  5      (       a  S nU$ g g )Nc                 >    [         R                  R                  5       $ r   )r    r   standard_cauchyr   s    r   r   &standard_cauchy_impl.<locals>.<lambda>  r  r   c                 f    [         R                  " [         R                  R                  5       5      $ r   )r    r   r   r  r   s    r   r   r    r  r   c                     [         R                  " U 5      nUR                  n[        UR                  5       H#  n[         R
                  R                  5       X#'   M%     U$ r   )r    r   r   r   r   r   r  r   s       r   r   #standard_cauchy_impl.<locals>._impl  r  r   r   r   s     r   standard_cauchy_implr    sy    477dAA$&&:dENN+K+K/9$**:?--0I 0I	 0I ,Lr   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc                     [         R                  R                  5       n[         R                  R                  U S-  5      n[        R
                  " U S-  5      U-  [        R
                  " U5      -  nU$ r  )r    r   r
  r@  r%  r&  )r  NGr  s       r   r   standard_t_impl.<locals>._impl  sU    		))+A		((c2A		"s(#a'$))A,6AHr   r   r  s     r   standard_t_implr    s-    "u{{EMM233	  4r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   
standard_tr  s     r   r   "standard_t_impl2.<locals>.<lambda>*  s    		 4 4R 8r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r  ,  s    )=)=b)A Br   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  U 5      X4'   M&     U$ r   )r    r   r   r   r   r   r  r  s        r   r   standard_t_impl2.<locals>._impl0  sE    ((4.CxxHSXX "		 4 4R 8 'Jr   r   r  s      r   standard_t_impl2r  '  sy    488dBB$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                     [        U [        R                  5      (       a%  [        U[        R                  5      (       a  S nU$ g g )Nc                 T   U S::  a  [        S5      eUS::  a  [        S5      eU SU-  -  n[        R                  R                  5       nX-  U-  nXU[        R
                  " SU-  U-  X3-  -   5      -
  -  -   n[        R                  R                  5       nXPX-   -  ::  a  U$ X -  U-  $ )Nr   zwald(): mean <= 0zwald(): scale <= 0r#     )r}  r    r   r
  r%  r&  )r  r  mu_2lr=  r  r  s         r   r   wald_impl.<locals>._impl<  s    s{ !455| !566C%K(E		))+A1ADIIa%i!mae.C$D DEEA		  "ADH%%{Q&r   r^  )r  r  r   s      r   	wald_implr  9  s8    $$$E5;;)G)G	' ! *H$r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  X5      $ r   )r    r   waldr  r  r   s      r   r   wald_impl2.<locals>.<lambda>Q  s    )Dr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r    r   r   r  r  s      r   r   r  T  s    "))..2M)Nr   c                     [         R                  " U5      nUR                  n[        UR                  5       H$  n[         R
                  R                  X5      XE'   M&     U$ r   )r    r   r   r   r   r   r  )r  r  r   r   r   rf   s         r   r   wald_impl2.<locals>._implX  sC    ((4.CxxHSXX "		t ; 'Jr   r   )r  r  r   r   s       r   
wald_impl2r  N  sy    4DDdNN$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                 |   U S::  a  [        S5      eU S-
  nSU-  n S[        R                  R                  5       -
  n[        R                  R                  5       n[        [        R
                  " USU-  -  5      5      nU[        :  d  US:  a  Mw  SSU-  -   U-  nUS:  a  XE-  US-
  -  US-
  -  Xb-  ::  a  U$ M  )Nr   zzipf(): a <= 1r#  rF   g      )r}  r    r   r  r%  r7  r   )rs   am1rt   r  ru  r  Ts          r   r   zipf_impl.<locals>._impld  s    Cx !122c'Cs
A"))**,,II$$&

1#456LAG37]s*6aeq3w/1s7;FH r   r^  r  s     r   	zipf_implr  a  s$    !U[[!!	" % "r   c                 *   [        U5      (       a  S $ [        U5      (       a  S $ [        U[        R                  5      (       dH  [        U[        R
                  5      (       a/  [        UR                  [        R                  5      (       a  S nU$ g g )Nc                 @    [         R                  R                  U 5      $ r   )r    r   zipfr  s     r   r   zipf_impl.<locals>.<lambda>{  s    ryy~~a0r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r    r   r   r  r  s     r   r   r  ~  s    rxx		q(9:r   c                     [         R                  " U[         R                  S9nUR                  n[	        UR
                  5       H$  n[         R                  R                  U 5      X4'   M&     U$ r  )r    r   r  r   r   r   r   r  r  s        r   r   r    sJ    ((4rww/CxxHSXX "		q 1 'Jr   r   r  s      r   r  r  x  sy    400d::$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                 
  ^ [        U [        R                  5      (       d  Sn[        U5      eUS:X  a  [        R
                  R                  mOUS:X  a  [
        R                  mU R                  S:X  a  U4S jnU$ U4S jnU$ )Nz1The argument to shuffle() should be a buffer typer    r   rF   c                    > U R                   S   S-
  nUS:  a&  T" US-   5      nX   X   sX'   X'   US-  nUS:  a  M%  g g rE   r  r   ijrands      r   r   do_shuffle_impl.<locals>.impl  sM    
QAa%QKT14
adQ a%r   c                    > U R                   S   S-
  nUS:  aN  T" US-   5      n[        R                  " X   5      [        R                  " X   5      sX'   X'   US-  nUS:  a  MM  g g rE   )r   r    copyr  s      r   r   r     s]    
QAa%QKWWQT]BGGADM
adQ a%r   )	r   r   Bufferr   r    r   r  r  ndim)r   rngra  r   r  s       @r   do_shuffle_implr    so    a&&AS!!
d{yy  	vv{	 K	 Kr   c                     [        U S5      $ r   r  r   s    r   shuffle_implr	        1d##r   c                     [        U S5      $ r   r  r   s    r   r	  r	    r
  r   c                     [        U [        R                  5      (       a  S nU$ [        U [        R                  5      (       a  S nU$ S nU$ )Nc                 p    [         R                  " U 5      n[         R                  R                  U5        U$ r   )r    aranger   shuffle)r   ri   s     r   permutation_impl*permutation_impl.<locals>.permutation_impl  s&    		!AIIa Hr   c                 d    U R                  5       n[        R                  R                  U5        U$ r   )r  r    r   r  )r   arr_copys     r   r  r    s$    vvxHIIh'Or   )r   r   r   Array)r   r  s     r   r  r    sN    !U]]##	  
Au{{	#	#	   r   c                  4    [        U 5      S:X  a  S nU$ S nU$ )Nr   c                  >    [         R                  R                  5       $ r   r   r   s    r   	rand_implrand.<locals>.rand_impl  s    99##%%r   c                  @    [         R                  R                  U 5      $ r   r   r   s    r   r  r    s    99##D))r   len)r   r  s     r   r  r    s'    
4yA~	& 	* r   c                  4    [        U 5      S:X  a  S nU$ S nU$ )Nr   c                  >    [         R                  R                  5       $ r   r	  r   s    r   
randn_implrandn.<locals>.randn_impl  s    99,,..r   c                  @    [         R                  R                  U 5      $ r   r	  r   s    r   r  r    s    99,,T22r   r  )r   r  s     r   randnr!    s'    
4yA~	/ 	3 r   c                   ^^^ [        U [        R                  5      (       aC  U R                  S:X  d   eU R                  m[
        S 5       m[
        S 5       n[
        S 5       mOc[        U [        R                  5      (       a5  [        R                  m[
        S 5       m[
        S 5       n[
        S 5       mO[        SU < 35      eUS [        R                  4;   a  SUU4S	 jjnU$ SUUU4S
 jjnU$ )NrF   c                     [        U 5      $ r   r  r  s    r   get_source_sizechoice.<locals>.get_source_size  s    q6Mr   c                 "    U R                  5       $ r   )r  r  s    r   copy_sourcechoice.<locals>.copy_source  s    668Or   c                 
    X   $ r   r"   rs   a_is     r   getitemchoice.<locals>.getitem  s	    6Mr   c                     U $ r   r"   r  s    r   r$  r%    s    Hr   c                 .    [         R                  " U 5      $ r   )r    r  r  s    r   r'  r(    s    99Q<r   c                     U$ r   r"   r*  s     r   r,  r-    s    Jr   z>np.random.choice() first argument should be int or array, got c                 d   > T" U 5      n[         R                  R                  SU5      nT" X5      $ )zO
choice() implementation returning a single sample
(note *replace* is ignored)
r   r  )rs   r   replacerk  r  r$  r,  s        r   choice_implchoice.<locals>.choice_impl  s/    
  "A		!!!Q'A1= r   c                   > T
" U 5      nU(       aj  [         R                  " UT	5      nUR                  n[        [	        U5      5       H-  n[         R
                  R                  SU5      nT" X5      XV'   M/     U$ [         R                  " UT	5      nUR                  U:  a  [        S5      e[         R
                  R                  U 5      nUR                  n[        [	        U5      5       H	  nX   XV'   M     U$ )z7
choice() implementation returning an array of samples
r   z@Cannot take a larger sample than population when 'replace=False')
r    r   r   r   r  r   r  r   r}  permutation)rs   r   r2  rk  r   flr  r  
permuted_ar   r$  r,  s            r   r3  r4    s      "AhhtU+XXs2wA		))!Q/A#AMBE ( 
 hhtU+88a<$ &G H H  YY2215
XXs2wA&MBE (
r   NT)r   r   r  r  r   r   r   r    r  r   r   )rs   r   r2  r'  r3  r   r$  r,  s        @@@r   choicer:    s    !U[[!!vv{{		 
	 
	 
	 
	 
	 
Au}}	%	%		 
	 
	  
	  
	 
	 78; < 	< ejj!!	! 	!P =	 	< r   c                   ^^ [         R                  m[        S 5       m[        U [        R
                  5      (       d  [        SU < 35      e[        U[        R                  [        R                  45      (       d  [        SU< 35      eUS [        R                  4;   a  SUU4S jjnU$ [        U[        R
                  5      (       a  SUU4S jjnU$ [        U[        R                  5      (       a  SUU4S jjnU$ [        SU< 35      e)	Nc                 >   UR                   nUR                  n[        U5      n[        SXE5       Hj  nSnU n[        SUS-
  5       H?  n	X   n
[        R
                  R                  XU-  5      =oXi-   '   X-  nUS::  a    OXz-  nMA     US:  d  Ma  XXe-   S-
  '   Ml     g )Nr   r   rF   )r   r   r  r   r    r   r  )rk  pvalsr   r7  szplenr  p_sumn_experimentsr  p_jn_js               r   multinomial_inner&multinomial.<locals>.multinomial_innerB  s     XXXX5zq"#A
 EM
 1dQh'h"$))"4"4]%K"PPi$ A% ( q #018a< - $r   z5np.random.multinomial(): n should be an integer, got zCnp.random.multinomial(): pvals should be an array or sequence, got c                 Z   > [         R                  " [        U5      T5      nT" XU5        U$ )z
multinomial(..., size=None)
r    zerosr  rk  r=  r   r   r   rD  s       r   multinomial_impl%multinomial.<locals>.multinomial_implj  s(     ((3u:u-Ca,Jr   c                 ^   > [         R                  " U[        U5      4T5      nT" XU5        U$ )z
multinomial(..., size=int)
rG  rI  s       r   rJ  rK  s  s-     ((D#e*-u5Ca,Jr   c                 b   > [         R                  " U[        U5      4-   T5      nT" XU5        U$ )z
multinomial(..., size=tuple)
rG  rI  s       r   rJ  rK  |  s/     ((43u:-/7Ca,Jr   zBnp.random.multinomial(): size should be int or tuple or None, got r   )r    r  r   r   r   r   r   Sequencer  r   	BaseTuple)rk  r=  r   rJ  r   rD  s       @@r   multinomialrP  =  s    GGE1 1< a''236 7 	7 eennekk:;;<AD E 	E ejj!!	 	< - 
D%--	(	(	 	*  
D%//	*	*	 	  8<? @ 	@r   c                 l    [        U [        R                  [        R                  45      (       a  S nU$ g )Nc                 Z    [         R                  " [        U 5      5      n[        X5        U$ r   r    r   r  dirichlet_arr)r  r   s     r   dirichlet_impl!dirichlet.<locals>.dirichlet_impl  !    ((3u:&C%%Jr   )r   r   rN  r  )r  rU  s     r   	dirichletrX    s.    %%..%++677	  8r   c                    [        U [        R                  [        R                  45      (       d  [	        SU < 35      eUS [        R
                  4;   d  [        U5      (       a  SS jnU$ [        U[        R                  5      (       a  SS jnU$ [        U[        R                  5      (       a0  [        UR                  [        R                  5      (       a  SS jnU$ [	        SU-  5      e)NzAnp.random.dirichlet(): alpha should be an array or sequence, got c                 Z    [         R                  " [        U 5      5      n[        X5        U$ r   rS  r  r   r   s      r   rU  rV    rW  r   c                 ^    [         R                  " U[        U 5      45      n[        X5        U$ )z
dirichlet(..., size=int)
rS  r[  s      r   rU  rV    s(     ((D#e*-.C%%Jr   c                 b    [         R                  " U[        U 5      4-   5      n[        X5        U$ )z
dirichlet(..., size=tuple)
rS  r[  s      r   rU  rV    s*     ((43u:-/0C%%Jr   zJnp.random.dirichlet(): size should be int or tuple of ints or None, got %sr   )
r   r   rN  r  r   r   r   r   r   r   )r  r   rU  s      r   rX  rX    s    eennekk:;;+03
 	

 ejj!!^D%9%9	> 5 
D%--	(	(	0 ! 
D%..	)	)j9>/H /H	  ,.23
 	
r   c                    [        U 5       H  nUS::  d  M  [        S5      e   [        U 5      nUR                  nUR                  n[        SXC5       Hx  nSn[        U 5       HA  u  p[        R                  R                  U	S5      XVU-   '   XuXh-      R                  5       -  nMC     [        U 5       H  u  pXVU-   ==   U-  ss'   M     Mz     g )Nr   zdirichlet: alpha must be > 0.0rF   )iterr}  r  r   r   r   	enumerater    r   r  item)
r  r   a_vala_lenr   r   r  normrd  r  s
             r   rT  rT    s    
 eA:=>>  JE88D88D1d"e$DA))//!Q/DQKK$$&&D % e$DAQK4K % #r   c                     [        U [        R                  [        R                  45      (       a5  [        U[        R                  [        R                  45      (       a  S nU$ g g )Nc                 .    [        X5        [        X5      $ r   #validate_noncentral_chisquare_inputnoncentral_chisquare_singler  noncs     r   noncentral_chisquare_impl7noncentral_chisquare.<locals>.noncentral_chisquare_impl  s    /9.r88r   r   )r  rk  rl  s      r   noncentral_chisquarern    sO    "u{{EMM233
5;;.90 90	9 )(903r   c                 b   US [         R                  4;   a  SS jnU$ [        U5      (       a  SS jnU$ [        U[         R                  5      (       dH  [        U[         R
                  5      (       a0  [        UR                  [         R                  5      (       a  SS jnU$ [        SU-  5      e)Nc                 .    [        X5        [        X5      $ r   rg  r  rk  r   s      r   rl  rm    s    0:/99r   c                 V    [        X5        [        R                  " [        X5      5      $ r   )rh  r    r   ri  rq  s      r   rl  rm    s    0:HH8BCCr   c                     [        X5        [        R                  " U5      nUR                  n[	        UR
                  5       H  n[        X5      XE'   M     U$ r   )rh  r    r   r   r   r   ri  )r  rk  r   r   r   rf   s         r   rl  rm    sC    0:88D>SXchh!<R!F (Zr   zUnp.random.noncentral_chisquare(): size should be int or tuple of ints or None, got %sr   )r   r   r   r   r   r   r   r   )r  rk  r   rl  s       r   rn  rn    s    uzz""
: *	)t
D *	)
T5==
)
)ju~~.N.N2<TZZ=B]]3L 3L
 *	)-/34 
r   c                    [         R                  " U5      (       a  [         R                  $ SU :  a^  [         R                  R	                  U S-
  5      n[         R                  R                  5       [         R                  " U5      -   nX#U-  -   $ [         R                  R                  US-  5      n[         R                  R	                  U SU-  -   5      $ )NrF   r#  rI   )r    isnannanr   r  r
  r&  r  )r  rk  chi2rk  r  s        r   ri  ri  		  s    
 
xx~~vv2vyy""2a4(II%%'"''$-7!e| IId3h'yy""2A:..r   c                 H    U S::  a  [        S5      eUS:  a  [        S5      eg )Nr   zdf <= 0znonc < 0r  rj  s     r   rh  rh  	  s+    	Qw##ax$$ r   r   r9  )__doc__r%  r   numpyr    llvmliter   numba.core.cgutilsr   r   numba.core.extendingr   r   r   numba.core.imputilsr	   r
   r   numba.core.typingr   
numba.corer   r   numba.core.errorsr   numba.np.random._constantsr   registrylowerr  r   r   r   rR  ro   r  r   r^   LiteralStructType	ArrayTypernd_state_tPointerTyper&   r2   r6   r9   r;   rB   rG   rJ   rM   rU   rj   ru   r   r   r   r   r   random_samplesampleranfr   r   r  normalvariater   r
  r   r   r   r  r  r   r/  r   r   getrandbitsri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rI  r  r@  r  r"  r&  r  r<  rF  betavariaterJ  r  rN  rH  rY  expovariater_  rh  re  rs  rx  r|  r~  r  r  r  lognormvariater  r  paretovariater  r  r  weibullvariater  r  r  r  vonmisesvariater  r  r  r  r  r  r  r  r  r+  r  r  r  r.  r+  r3  rD  rA  rL  rN  rR  rV  r]  rT  rb  rd  rh  rk  rr  rj  rv  r{  rx  negative_binomialr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r6  r  r  r!  r:  rP  rX  rT  rn  ri  rh  r"   r   r   <module>r     s@  
     : F F6 6 ' % , /L!
**R.
**R.#	
++gq
! ""LL!
$  ..- "117::::21.b 
&++  
"))..   
$ 
&--  
"))

	"))
!
!"	"))

	"))..   #  
"))

	"))
!
!"	"))

	"))..   # $ 
&,,	&

	2   	2 
"))
#
#$	"))

.  %. 
"))

6 6
 
"))

	4 	4 
"))
#
#$ %$ 
"))

 0$%PQ" 
&

" "(CEL 
&

; ;
 
&

D D
* 
&

B B4 
&..: :
 
"))

5 5
 
"))

2 20 
"))

 0 
"))

/ / 
&..	( 	( 
"))

	2 	2	 
"))

 2 
&

  
&

 $ 
"))

  $ 
"))

  , 
&

1 1 
"))
"
"#	"))//9  $9
 
"))// 8v 
"))// $ 
"))
"
"# $$ 
&

6 6 
"))..  
")).. & 
&

  
"))

  ! 
"))

  !$ 
"))
(
()	"))

  ! * 
"))
(
() *& 
"))

1 1 
"))

; ;
 
"))

3 3 
"))

 $ 
&

 / !/9 
&

   
"))

  
"))

 $ 
&

 	 !	 
"))

  
"))

 $ 
&
 
 !4 "4
 
"))

7 7
)X 
"))

 $ 
"))

4 4n 
"))

 & 
"))

  
"))

 " 
"))++  
"))++ , 
"))

 . 
"))

 $ 
"))

  
"))

 $ 
"))
"
"# $. 
"))
"
"# $( 
"))

/ / 
"))

7 7
 
"))

  
"))

 $3 
"))

0 0 
"))

8 8
 
"))

  
"))

 $1
* 
"))

 
 
"))

 " 
"))
%
%& ' 
"))

* * 
"))

>& >&B 
"))

 ( 
"))//  
"))// $ 
"))

+ + 
"))

  
"))

 $ 
"))
#
#$ % 
"))
#
#$ %$ 
"))

   
"))

  " 
")).. ( 
")).. $ 
")).. , 
")).. ": 
&..$ $ 
"))

$ $ 
"))

  !& 
"))..  
"))// " 
"))

P Pl 
"))

 J !J` 
"))

  
"))

( (V    2 
"))
(
()) *) 
"))
(
() *> / /" % %r   