
    |hs>                       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  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\R4                  r\R6                  " S5      r\R6                  " S5      rS r\R>                  " 5       r Sr!\RD                  " \\!5      r#\RH                  " \\RJ                  " \\!5      \\ \/5      r&\RN                  " \&5      r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4\" \Rj                  5      S 5       r6\" \R                  Rj                  5      S 5       r6S r7\" \R                  5      S 5       r8\" \R                  R                  5      \" \R                  Rr                  5      \" \R                  Rt                  5      \" \R                  Rv                  5      S  5       5       5       5       r<\" \R                  R                  5      \" \R                  Rr                  5      \" \R                  Rt                  5      \" \R                  Rv                  5      SS! j5       5       5       5       r=\" \R|                  5      \" \R~                  5      S" 5       5       r@\" \R                  R                  5      \" \R                  R                  5      S# 5       5       rC\" \R                  R                  5      S$ 5       rD\" \R                  R                  5      S% 5       rE\" \R                  R                  5      S& 5       rF\" \R                  R                  5      S' 5       rGS( rHS) rIS* rJ\" \R                  5      S+ 5       rLS, rM\" \R                  5      S- 5       rO\" \R                  5      S. 5       rPS/ rQ\" \R                  5      S0 5       rR\" \R                  5      S1 5       rT\" \R                  R                  5      S2 5       rU\" \R                  R                  5      S3 5       rV\" \R                  R                  5      S4 5       rW\" \R                  R                  5      S5 5       rY\" \R                  5      S6 5       rZ\" \R                  R                  5      S7 5       r[S8 r\\" \R                  R                  5      S9 5       r]\" \R                  5      S: 5       r_\" \R                  5      S; 5       r`\" \R                  R                  5      S< 5       r`\" \R                  R                  5      SS= j5       ra\" \R                  5      S> 5       rc\" \R                  R                  5      \" \R                  R                  5      S? 5       5       rf\" \R                  R                  5      S@ 5       rgSA rh\" \R                  R                  5      SB 5       ri\" \R                  R                  5      SC 5       rj\" \R                  5      SD 5       rl\" \R                  R                  5      SE 5       rnSF ro\" \R                  R                  5      SG 5       rp\" \R                  5      SH 5       rr\" \R                  R                  5      SI 5       rt\" \R                  R                  5      SJ 5       rt\" \R                  R                  5      \" \R                  R                  5      SK 5       5       rt\" \R                  R                  5      SL 5       rv\" \R                  R                  5      SM 5       rx\" \R                  R                  5      SN 5       ry\" \R                  R                  5      SO 5       rz\" \R                  R                  5      SP 5       r{\" \R                  5      SQ 5       r}SR r~\" \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R,                  5      Se 5       r\" \R                  GR,                  5      Sf 5       r\" \R                  GR2                  5      Sg 5       r\" \R                  GR2                  5      Sh 5       r\" \R                  GR6                  5      Si 5       r\" \R                  GR6                  5      Sj 5       r\" \R                  GR6                  5      Sk 5       r\" \R                  GR6                  5      Sl 5       rSm r\" \R                  GRB                  5      Sn 5       r\" \R                  GRB                  5      So 5       r\" \R                  GRB                  5      Sp 5       r\" \R                  GRB                  5      Sq 5       rSr rSs r\" \R                  GRP                  5      St 5       r\" \R                  GRP                  5      Su 5       r\" \R                  GRT                  5      Sv 5       r\" \R                  GRX                  5      Sw 5       r\" \R                  GRX                  5      Sx 5       r\" \R                  GRX                  5      Sy 5       r\" \R                  GR`                  5      Sz 5       r\" \R                  GR`                  5      S{ 5       r\" \R                  GRd                  5      S| 5       r\" \R                  GRd                  5      S} 5       r\" \R                  GRd                  5      S~ 5       r\" \R                  GRl                  5      S 5       r\" \R                  GRl                  5      S 5       r\" \R                  GRr                  5      S 5       r\" \R                  GRr                  5      S 5       r\" \R                  GRx                  5      S 5       r\" \R                  GRx                  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	signature)typescgutils)NumbaTypeError)LONG_MAX
randomimpl    @   c                 8    [         R                  " [        U 5      $ N)r   Constantint32_txs    R/home/james-whalen/.local/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_ptrr0   2   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   r0   r*   r+   s     r   get_py_state_ptrr4   C        400r   c                     [        XS5      $ )z7
Get a pointer to the thread-local Numpy random state.
r   r2   r3   s     r   get_np_state_ptrr7   I   r5   r   c                     [        XS5      $ )z:
Get a pointer to the thread-local internal random state.
r   r2   r3   s     r   get_internal_state_ptrr9   O   s     :66r   c                 2    [         R                  " XSS5      $ Nr   r   gep_inboundsr+   	state_ptrs     r   get_index_ptrr@   V       Aq99r   c                 2    [         R                  " XSS5      $ Nr      r<   r>   s     r   get_array_ptrrE   Y   rA   r   c                 2    [         R                  " XSS5      $ )Nr      r<   r>   s     r   get_has_gauss_ptrrH   \   rA   r   c                 2    [         R                  " XSS5      $ )Nr      r<   r>   s     r   get_gauss_ptrrK   _   rA   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+   r.   r/   s      r   get_rnd_shufflerS   b   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   NrD         l   VX:    l     _    )r@   loadicmp_unsignedN_constr   if_unlikelyrS   r)   storer   rE   r=   r(   xorlshrand_shl)	r*   r+   r?   idxptridxneed_reshuffler/   	array_ptrys	            r   get_next_int32rh   m   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)
r`   rh   r   uitofpdoublefdivfaddfmulr   r   )r*   r+   r?   abs        r   get_next_doublers      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;   )subrh   typewidthzexttruncnot_r   r   r`   ra   )	nbitsshiftrg   maskr+   c32r*   is_numpyr?   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   rw   r   alloca_once_valueint64_tr[   if_elser^   ry   rv   rh   r(   rb   rZ   )r*   r+   r?   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    )rq   r/   s    r   implseed_impl.<locals>.impl   s    a5Lr   )
isinstancer   Integerr   
_seed_impl)rq   r   r/   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#   rO   r$   r   r   r%   rP   r&   r)   r0   get_constantr   none)r*   r+   sigrQ   
seed_valuer.   r/   
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   r0   rs   r*   r+   r   rQ   r?   s        r   r   +random_impl.<locals>._impl.<locals>.codegen       %g=I"7Y??r   )r   r   rm   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_flatrd   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>._impl1  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>7  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	  @      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>._implD  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>R      		(8(8(Dr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   r   r  s      r   r   r  W      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   rd   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  M  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_pairg  sz     wy3&Bwy3&BBCxB#I  IIdTXXb\)B./vqv~r   r    )r*  r+  s   ` r   _gauss_pair_implr-  f  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   rG   r    rD   )return_typeget_data_typer   r   r0   r   alloca_oncerK   rH   is_truerZ   r   r^   r   compile_internalr-  r   r   r   unpack_tuplero   rp   )r*   r+   r   rQ   tylltyr*  r?   r   	gauss_ptrhas_gauss_ptr	has_gaussthen	otherwisepairfirstsecondr   r   r   r   states                      r   r   _gauss_impl.<locals>._imply  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    )rB  r   r   r   s   ``` r   r   r   x  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+   vr8  s     r   r   &_double_preprocessor.<locals>.<lambda>      gnnQ&;r   c                 (   > U R                  UT5      $ r   )rl   rG  s     r   r   rI    rJ  r   r   c                 (   > U R                  UT5      $ r   )fpextrG  s     r   r   rI    s    gmmAr&:r   c                     U$ r   r    )_builderrH  s     r   r   rI    s    qr   z(Cannot convert {} to floating point type)	r   r   
DoubleTyper   r   signedr   bitwidthr   )valuer8  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)NrU   A   ==r   z getrandbits() limited to 64 bitsr   F)
r[   r   r   r]   or_	call_convreturn_user_excOverflowErrorr0   r   )	r*   r+   r   rQ   r|   	too_large	too_smallmsgr?   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    rb  r   s    r   r   "getrandbits_impl.<locals>.<lambda>  s	    qr   )r   r   r   r   re  s    @r   getrandbits_implrg    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   rD   nr1  <>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   rU   )append_basic_blockbranchposition_at_endr   rz   icmp_signedcbranchr^   )bbwhilebbendrl  r]  r+   r*   ri  r|   rptrrB  r?   r8  s       r   get_num _randrange_impl.<locals>.get_num  s    ,,W5**;7w('9eUd]KMM!R ''a3		E2&ar   rX  )r0   r   r   r   r4  r^   rv   if_thenrr  r(   rZ   sdivr]   rZ  r[  
ValueErrorr#   true_bitrw   r%   rP   r&   rz   r)   r   rx   r   mul)r*   r+   startstopstepr8  rQ  rB  zeroonenptrwr_  r.   r/   nm1rw  is_one
is_not_oneri  r|   rv  r?   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      $ rC   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      $ NrD   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    )rO  rH  _tys      r   r   )_randrange_preprocessor.<locals>.<lambda>  s    r   )rR  rQ  r   	IRBuildersextry   )rR  r8  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   rQ   r~  r  r  	llvm_typerQ  start_preprocessorstep_preprocessorstop_preprocessors          r   r   0randrange_impl_3.<locals>._impl.<locals>.codegen/  sM    $(!T*79E(	B(	B&wd'0&$@ @r   r
   )r   r~  r  r  r   int_tyr  rQ  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>8  s    uD)Ar   r   r   r   maxrQ  rR  from_bitwidthr   IntTyper  r   )r~  r  r  rR  r   r  r  rQ  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  rq   rr   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>D  s    299,,Q4r   r  r  s    r   np_randint_impl_1r  A  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      $ )NrD   r   )r   r   r  )r*   r+   r   rQ   r~  r  r  r  rQ  r  r  s          r   r   1np_randint_impl_2.<locals>._impl.<locals>.codegenT  sN    "*79E(	B{{9a0&wd'0&$@ @r   r
   )	r   r   r   r   r  r  rQ  r  r  s	       r   r    np_randint_impl_2.<locals>._implR  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   rR  r   r  r  rQ  r  r  s	      @@@@@@r   np_randint_impl_2r  G  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>d      ryy'8'8'Cr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   r  r  s      r   r   r  h      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   rd   result_types         r   r    np_randint_impl_3.<locals>._implp  sI    ((4{3CxxHSXX "		 1 1# < 'Jr   )r   r   r   r   r   r   r   r  rR  getattrr   )r   r   r   rR  r   r  s        @r   np_randint_impl_3r  `  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  y      ..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   rq   rr   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    rq   rr   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   )r0   fsubrs   ro   rp   )r*   r+   r   rQ   r?   rq   rr   rx   rl  a_preprocessorb_preprocessorrB  s            r   r   uniform_impl.<locals>.impl  s\    !'E:	7&7&Q"Gi8||A||E566r   r    )rB  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   rd   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   rd   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   r/   s     r   r   !ol_np_random_gamma2.<locals>.impl  s    e##r   )r   r   r   r   r   r  r   r   )r  r   r   r/   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u2rH  r   zrl  r  rr   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>`  s    "))//%*Gr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   r  r5  s      r   r   r6  c  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   rd   s         r   r   gamma_impl.<locals>._implg  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>s  s    299#;#;E#Br   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r   r   r   r>  r?  s     r   r   r@  v  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   rd   s        r   r   "standard_gamma_impl.<locals>._implz  sE    ((4.CxxHSXX "		 8 8 ? 'Jr   r   )r  r   r   s      r   standard_gamma_implrD  p  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_implrH    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    )rq   rr   r/   s     r   r   ol_np_random_beta.<locals>.impl  s    a8Or   )	r   r   r   r   r   rF  r   r   r  )rq   rr   r   r/   s      @r   ol_np_random_betarL    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  rg   r  s      r   r    _betavariate_impl.<locals>._impl  s/    
 %8E$O+,,r   r    )r  r   s   ` r   rF  rF    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  rq   rr   r   s      r   r   beta_impl.<locals>.<lambda>  s    ")).."6r   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   r  rR  s      r   r   rS    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  )rq   rr   r   r   r   rd   s         r   r   beta_impl.<locals>._impl  sC    ((4.CxxHSXX "		q 4 'Jr   r   )rq   rr   r   r   s       r   	beta_implrW    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   )rZ  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_implrc    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   rf  rg  s     r   r   rh    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   rf  r   r   r   r   rd   s        r   r   rb    sE    ((4.CxxHSXX "		 5 5e < 'Jr   r   r   r   r   s      r   rc  rc    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   r`  r    r   r   r   rb    s&    ryy//11222r   r    r   s    r   rc  rc    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   rq  r   s    r   r   rr    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   rq  r   s       r   r   (standard_exponential_impl.<locals>._impl  sC    ((4.CxxHSXX "		 > > @ 'Jr   r   r   s     r   standard_exponential_implrv    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   ry  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   r/   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   ry  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   rz  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   rz  )r  r   r   r   r   rd   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   r/   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>._impl1  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   rD   r   rq   r  s     r   r   pareto_impl.<locals>._impl=  s1    bii&&((As1u%))r   r\  rq   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rq   r   s     r   r   pareto_impl.<locals>.<lambda>H  s    ryy//2r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r   r   r   r  r  s     r   r   r  K  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  rq   r   r   r   rd   s        r   r   r  O  sE    ((4.CxxHSXX "		 0 0 3 'Jr   r   rq   r   r   s      r   r  r  E  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  X  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>._implh  s2    bii&&((AXXa[Lc!e,,r   r   r  s     r   weibull_implr  e  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>s  s    ryy003r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r   r   r   r  r  s     r   r   r  v  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>._implz  sE    ((4.CxxHSXX "		 1 1! 4 'Jr   r   r  s      r   weibull_impl2r  p  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  srl  r-  r/  dr.  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    r2  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   rd   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  rD   gx0 rG         $@)r{  minr#  r$  r   r   )ri  r0  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   ri  r0  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ri  r0  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  )ri  r0  r   r   r   rd   s         r   r   r    sL    ((4rww/CxxHSXX "		 2 21 8 'Jr   r   )ri  r0  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   rd   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>._impl9  s:    YY((/%7YY((/%79 :r   r   )r  r  r   s      r   f_implr	  5  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>E  s    "))++e*Cr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   r)  r  s      r   r   r  J  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   rd   s         r   r   r  N  sC    ((4.CxxHSXX "		E 9 'Jr   r  )r  r  r   r   s       r   r	  r	  @  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?rD   )r{  r  r   r   r#  ceilr%  )r0  r  r  sumprodr  s         r   r   geometric_impl.<locals>._implZ  s    Cx1s7 !CDDaA..FII$$&gIDKCFA g yy#		0@0@0B*B!C!%!"- . .r   r   )r0  r   s     r   geometric_implr  W  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r0  r   s     r   r    geometric_impl.<locals>.<lambda>r      ryy2215r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r   r   r   r  r  s     r   r   r  u      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  r0  r   r   r   rd   s        r   r   r  y  L    ((4rxx0CxxHSXX "		 3 3A 6 'Jr   r   r0  r   r   s      r   r  r  o  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_impl3r0    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   rD   )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   )r5  r6  r7  r   s       r   hypergeometric_implr>    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r5  r6  r7  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   rA  rB  s       r   r   rC    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   rA  )r5  r6  r7  r   r   r   rd   s          r   r   r=    sN    ((4rww/CxxHSXX "		 8 8g N 'Jr   r   )r5  r6  r7  r   r   s        r   r>  r>    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_impl0rK    r  r   c                 h    [        U [        R                  [        R                  45      (       a  S $ g )Nc                 B    [         R                  R                  U S5      $ r   rH  r   s    r   r   laplace_impl1.<locals>.<lambda>  s    299,,S#6r   r   r   s    r   laplace_impl1rO    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_impl2rS    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   rH  r  s      r   r   laplace_impl3.<locals>.<lambda>  s    		(9(9#(Er   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   rI  r  s      r   r   rV    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   rI  r  s         r   r   laplace_impl3.<locals>._impl  sE    ((4.CxxHSXX "		 1 1# = 'Jr   r   r  s       r   laplace_impl3rZ    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   rQ  rQ    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_impl0ra    s    //r   c                 h    [        U [        R                  [        R                  45      (       a  S $ g )Nc                 B    [         R                  R                  U S5      $ r   r^  r   s    r   r    logistic_impl1.<locals>.<lambda>  s    299--c37r   r   r   s    r   logistic_impl1re    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_implrR  s     r   logistic_impl2rh    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   r^  r  s      r   r    logistic_impl3.<locals>.<lambda>  s    		(:(:3(Fr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   r_  r  s      r   r   rk    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   r_  r  s         r   r   logistic_impl3.<locals>._impl  sE    ((4.CxxHSXX "		 2 23 > 'Jr   r   r  s       r   logistic_impl3ro    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   rg  rg    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]rD   rG   )r{  r#  r%  r   r   r'  r   )r0  rl  Vr  r  s        r   _logseries_implrs  $  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   rs  )r0  s    r   logseries_implru  9  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>B  r  r   c                 h    [         R                  " [         R                  R                  U 5      5      $ r   )r   r   r   rx  r  s     r   r   ry  D  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   rx  r!  s        r   r   logseries_impl.<locals>._implH  r"  r   r   r#  s      r   ru  ru  ?  sy    455d??$&&:dENN+K+K+5djj6;mm,E ,E	 ,E ,Lr   c                     [        U [        R                  [        R                  4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)ri  r0  r:  s      r   r   %negative_binomial_impl.<locals>._implU  s_    Av !>??3w!c' !KLL		C!Gq=1A99$$Q''r   r   r  s      r   negative_binomial_implr  Q  sN    !ekk5==122zu{{EMM*8, 8,	( 8,2r   c                      S $ )Nc                  @    [         R                  R                  S5      $ r   r   r   r  r    r   r   r   poisson_impl0.<locals>.<lambda>b  s    299$$S)r   r    r    r   r   poisson_impl0r  `  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   r1  bbcontru  rU   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   rD   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   )r7   r   r4  r   ro  fcmp_orderedr   r   rm   ry  r#   r$   r%   rP   r&   r)   r^   rp  rq  r   r   r#  r'  r6  rZ   )r*   r+   r   rQ   r?   retptrr  ru  r  big_lamr.   r/   r   r  r  r*  lam_preprocessors                 @@r   r   -poisson_impl1.<locals>._impl.<locals>.codegenl  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>._implh  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  e  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   rd   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 <= 0rD   r   )r{  r#  powr'  r   r   rq  rq   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   ra  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  rg  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  rg  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  rk  s        r   r   rayleigh_impl2.<locals>._impl  sE    ((4.CxxHSXX "		 2 25 9 'Jr   r   rl  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>._impl/  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  8  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>P  s    )Dr   c                 h    [         R                  " [         R                  R                  X5      5      $ r   )r   r   r   r  r  s      r   r   r  S  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   rd   s         r   r   wald_impl2.<locals>._implW  sC    ((4.CxxHSXX "		t ; 'Jr   r   )r  r   r   r   s       r   
wald_impl2r  M  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!  rD   g      )r{  r   r   r  r#  r4  r   )rq   am1rr   r  rr  r  Ts          r   r   zipf_impl.<locals>._implc  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  `  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>z  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  w  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   rD   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 rC   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 rC   )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   rngr_  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   rg   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$ )NrD   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    rq   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  )rq   r   replaceri  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)rq   r   r/  ri  r   flr  r  
permuted_ar   r!  r)  s            r   r0  r1    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   )rq   r   r/  r$  r0  r   r!  r)  s        @@@r   choicer7    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   rD   )r   r   r  r   r   r   r  )ri  pvalsr   r4  szplenr  p_sumn_experimentsr  p_jn_js               r   multinomial_inner&multinomial.<locals>.multinomial_innerA  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  ri  r:  r   r   r   rA  s       r   multinomial_impl%multinomial.<locals>.multinomial_impli  s(     ((3u:u-Ca,Jr   c                 ^   > [         R                  " U[        U5      4T5      nT" XU5        U$ )z
multinomial(..., size=int)
rD  rF  s       r   rG  rH  r  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)
rD  rF  s       r   rG  rH  {  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)ri  r:  r   rG  r   rA  s       @@r   multinomialrM  <  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   rK  r  )r  rR  s     r   	dirichletrU    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   rP  r  r   r   s      r   rR  rS    rT  r   c                 ^    [         R                  " U[        U 5      45      n[        X5        U$ )z
dirichlet(..., size=int)
rP  rX  s      r   rR  rS    s(     ((D#e*-.C%%Jr   c                 b    [         R                  " U[        U 5      4-   5      n[        X5        U$ )z
dirichlet(..., size=tuple)
rP  rX  s      r   rR  rS    s*     ((43u:-/0C%%Jr   zJnp.random.dirichlet(): size should be int or tuple of ints or None, got %sr   )
r   r   rK  r  r   r   r   r   r   r   )r  r   rR  s      r   rU  rU    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.0rD   )iterr{  r  r   r   r   	enumerater   r   r  item)
r  r   a_vala_lenr   r   r  normrb  r  s
             r   rQ  rQ    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  rh  ri  s      r   noncentral_chisquarerk    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   rd  r  rh  r   s      r   ri  rj    s    0:/99r   c                 V    [        X5        [        R                  " [        X5      5      $ r   )re  r   r   rf  rn  s      r   ri  rj    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   )re  r   r   r   r   r   rf  )r  rh  r   r   r   rd   s         r   ri  rj    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  rh  r   ri  s       r   rk  rk    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      $ )NrD   r!  rG   )r   isnannanr   r  r  r$  r  )r  rh  chi2ri  r  s        r   rf  rf  	  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  rg  s     r   re  re  	  s+    	Qw##ax$$ r   r   r6  )__doc__r#  r   numpyr   llvmliter   numba.core.cgutilsr   r   numba.core.extendingr   r   r   numba.core.imputilsr	   numba.core.typingr   
numba.corer   r   numba.core.errorsr   numba.np.random._constantsr   registrylowerr  r   r   r   rP  rm   r  r   r\   LiteralStructType	ArrayTypernd_state_tPointerTyper$   r0   r4   r7   r9   r@   rE   rH   rK   rS   rh   rs   r   r   r   r   r   random_samplesampleranfr   r   r  normalvariater   r  r   r   r   r  r  r  r-  r   r   getrandbitsrg  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  rG  r  r>  r  r   r$  r  r:  rD  betavariaterH  r  rL  rF  rW  expovariater]  rf  rc  rq  rv  rz  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(  r0  rA  r>  rI  rK  rO  rS  rZ  rQ  r_  ra  re  rh  ro  rg  rs  rx  ru  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  r3  r  r  r  r7  rM  rU  rQ  rk  rf  re  r    r   r   <module>r     s9  
     : F F ( ' % , /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   