
    .|h>                       d Z ddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZmZmZ ddlmZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ  ed      Zej8                  Z ej:                  d      Z ej:                  d      Zd Z  ejB                         Z"dZ# ejH                  ee#      Z% ejL                  e ejN                  ee#      ee"eg      Z( ejR                  e(      Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6 eejn                        d        Z8 eej                  jn                        d        Z8d Z9 eej                        d        Z: eej                  j                         eej                  jv                         eej                  jx                         eej                  jz                        d                              Z> eej                  j                         eej                  jv                         eej                  jx                         eej                  jz                        dd!                            Z? eej                         eej                        d"               ZB eej                  j                         eej                  j                        d#               ZE eej                  j                        d$        ZF eej                  j                        d%        ZG eej                  j                        d&        ZH eej                  j                        d'        ZId( ZJd) ZKd* ZL eej                        d+        ZNd, ZO eej                        d-        ZQ eej                        d.        ZRd/ ZS eej                        d0        ZT eej                        d1        ZV eej                  j                        d2        ZW eej                  j                        d3        ZX eej                  j                        d4        ZY eej                  j                        d5        Z[ eej                        d6        Z\ eej                  j                        d7        Z]d8 Z^ eej                  j                        d9        Z_ eej                        d:        Za eej                        d;        Zb eej                  j                        d<        Zb eej                  j                        dd=       Zc eej                        d>        Ze eej                  j                         eej                  j                        d?               Zh eej                  j                        d@        ZidA Zj eej                  j                        dB        Zk eej                  j                        dC        Zl eej                        dD        Zn eej                  j                        dE        ZpdF Zq eej                  j                        dG        Zr eej                        dH        Zt eej                  j                        dI        Zv eej                  j                        dJ        Zv eej                  j                         eej                  j                        dK               Zv eej                  j                        dL        Zx eej                  j                        dM        Zz eej                  j                        dN        Z{ eej                  j                        dO        Z| eej                  j                        dP        Z} eej                        dQ        ZdR Z eej                        dS        Z eej                  j                        dT        Z eej                  j                        dU        Z eej
                        dV        Z eej                  j                        dW        Z eej                  j                        dX        Z eej                        dY        Z eej                  j                        dZ        Zd[ Z eej                  j                        d\        Z eej                  j                        d]        Z eej                  j                        d^        Z eej                  j"                        d_        Z eej                  j"                        d`        Z eej                  j(                        da        Z eej                  j(                        db        Z eej                  j,                        dc        Z eej                  j,                        dd        Z eej                  j0                        de        Z eej                  j0                        df        Z eej                  j6                        dg        Z eej                  j6                        dh        Z eej                  j:                        di        Z eej                  j:                        dj        Z eej                  j:                        dk        Z eej                  j:                        dl        Zdm Z eej                  jF                        dn        Z eej                  jF                        do        Z eej                  jF                        dp        Z eej                  jF                        dq        Zdr Zds Z eej                  jT                        dt        Z eej                  jT                        du        Z eej                  jX                        dv        Z eej                  j\                        dw        Z eej                  j\                        dx        Z eej                  j\                        dy        Z eej                  jd                        dz        Z eej                  jd                        d{        Z eej                  jh                        d|        Z eej                  jh                        d}        Z eej                  jh                        d~        Z eej                  jp                        d        Z eej                  jp                        d        Z eej                  jv                        d        Z eej                  jv                        d        Z eej                  j|                        d        Z eej                  j|                        d        Z eej                  j                        d        Z eej                  j                        d        Zd Z eej                        d        Z eej                  j                        d        Z eej                  j                        d        Z eej                  j                        d        Z eej                  j                        d        Z eej                  j                        dd       Z eej                  j                        dd       Z eej                  j                        d        Z eej                  j                        dd       Zed        Z eej                  j                        d        Z eej                  j                        dd       Zed        Zed        Zy)z6
Implement the random and np.random module functions.
    N)ir)is_nonelikeis_empty_tuple)	intrinsicoverloadregister_jitable)Registryimpl_ret_untrackedimpl_ret_new_ref	signature)typescgutils)NumbaTypeError)LONG_MAX
randomimpl    @   c                 6    t        j                  t        |       S N)r   Constantint32_txs    W/var/www/html/test/engine/venv/lib/python3.12/site-packages/numba/cpython/randomimpl.py	const_intr      s    ;;w""    ip  c                    |dv sJ d|z  }t        j                  t        d      }t        j                  |j
                  ||      }|j                  j                  d       |j                  j                  d       |j                  |d      S )z
    Get a pointer to the given thread-local random state
    (depending on *name*: "py" or "np").
    If the state isn't initialized, it is lazily initialized with
    system entropy.
    )pynpinternalznumba_get_%s_random_state readnonenounwind)	r   FunctionTypernd_state_ptr_tr   get_or_insert_functionmodule
attributesaddcall)contextbuildername	func_namefntyfns         r   get_state_ptrr2   3   s|     +++++d2I???B/D		'	'i	HB MMj!MMj!<<Br   c                     t        | |d      S )z@
    Get a pointer to the thread-local Python random state.
    r   r2   r,   r-   s     r   get_py_state_ptrr6   D        '400r   c                     t        | |d      S )z?
    Get a pointer to the thread-local Numpy random state.
    r    r4   r5   s     r   get_np_state_ptrr9   J   r7   r   c                     t        | |d      S )zB
    Get a pointer to the thread-local internal random state.
    r!   r4   r5   s     r   get_internal_state_ptrr;   P   s     ':66r   c                 2    t        j                  | |dd      S Nr   r   gep_inboundsr-   	state_ptrs     r   get_index_ptrrB   W       Aq99r   c                 2    t        j                  | |dd      S Nr      r>   r@   s     r   get_array_ptrrG   Z   rC   r   c                 2    t        j                  | |dd      S )Nr      r>   r@   s     r   get_has_gauss_ptrrJ   ]   rC   r   c                 2    t        j                  | |dd      S )Nr      r>   r@   s     r   get_gauss_ptrrM   `   rC   r   c                     t        j                  t        j                         t        f      }t	        j
                  | j                  j                  |d      }|j                  d   j                  d       |S )z<
    Get the internal function to shuffle the MT taste.
    numba_rnd_shuffler   	nocapture)
r   r%   VoidTyper&   r   r'   functionr(   argsadd_attribute)r-   r0   r1   s      r   get_rnd_shufflerU   c   s[     ??2;;=?*<=D		'	'(8(8(?(?(;
=BGGAJ[)Ir   c                    t        ||      }|j                  |      }|j                  d|t              }t	        j
                  ||      5  t        |      }|j                  ||f       |j                  t        d      |       ddd       |j                  |      }t        ||      }|j                  t	        j                  ||d|            }|j                  |t        d            }|j                  ||       |j                  ||j                  |t        d                  }|j                  ||j                  |j!                  |t        d            t        d                  }|j                  ||j                  |j!                  |t        d            t        d	                  }|j                  ||j                  |t        d
                  }|S # 1 sw Y   [xY w)zB
    Get the next int32 generated by the PRNG at *state_ptr*.
    >=r   NrF         l   VX:    l     _    )rB   loadicmp_unsignedN_constr   if_unlikelyrU   r+   storer   rG   r?   r*   xorlshrand_shl)	r,   r-   rA   idxptridxneed_reshuffler1   	array_ptrys	            r   get_next_int32rj   n   s    7I.F
,,v
C**4g>N			Wn	5 ,W%R)&ilF+, ,,v
Cgy1IW))'9aEFA
++c9Q<
(CMM#vAw||Ay}56AAw||GKK9Q<$@$-j$9; 	<AAw||GKK9R=$A$-j$9; 	<AAw||Ay}56AH!, ,s   :GG(c                    |j                  t        | ||      t        d            }|j                  t        | ||      t        d            }|j                  |t              }|j                  |t              }|j                  |j                  ||j                  |t        j                  t        d                  t        j                  t        d            S )zC
    Get the next double generated by the PRNG at *state_ptr*.
          g      Ag      @C)
rb   rj   r   uitofpdoublefdivfaddfmulr   r   )r,   r-   rA   abs        r   get_next_doubleru      s    
 	^GWi@)A,OA^GWi@)A,OA 	q&!Aq&!A<<QQFJ(GHI
F./1 1r   c                 v    t        j                  |j                  d       fd}t        j                  t        j                  t
        d            }j                  d|      }j                  |      5 \  }}	|5   ||      }
j                  j                  |
t
              |       ddd       |	5  r |j                  |            }t               }
s |j                  |            }j                  j                  |
t
              j                  j                  t
              t        j                  t
        d                  }j                  ||       ddd       ddd       j                  |      S # 1 sw Y   xY w# 1 sw Y   .xY w# 1 sw Y   2xY w)z2
    Get the next integer with width *nbits*.
    r   c                 6   j                  |       }t              }| j                  j                  |j                  j                  k  rj	                  ||j                        }nI| j                  j                  |j                  j                  kD  rj                  ||j                        }rSj                  t        j                  |j                  d            }j                  ||      }j                  ||      S j                  ||      S r=   )subrj   typewidthzexttruncnot_r   r   rb   rc   )	nbitsshiftri   maskr-   c32r,   is_numpyrA   s	       r   get_shifted_intz%get_next_int.<locals>.get_shifted_int   s    C'7GY7 ::affll*LL/EZZ,MM%0E<<AFFA 67D<<e,D<<4(( <<5))r   r   <=N)r   r   ry   r   alloca_once_valueint64_tr]   if_elser`   r{   rx   rj   r*   rd   r\   )r,   r-   rA   r~   r   r   retis_32bifsmalliflargelowhightotalr   s   ``` `        @r   get_next_intr      su    ++ejj"
%C* *& 
#
#GR[[!-D
EC""44F		  &$6Wg 	;!%(CMM',,sG4c:	;  	&&w{{5#'>? '9=C&w{{5#'>?KKS'*GLLw7KK467E MM%%	&	&& <<%	; 	;	& 	&	& &s=   F//F6
F/ B6F#6F/F 	F/#F,	(F//F8c                 p    t        | t        j                        rt        t	        d            fd}|S y )Nr   c                      |       S r   r"   )rs   r1   s    r   implzseed_impl.<locals>.impl   s    a5Lr   )
isinstancer   Integerr   
_seed_impl)rs   r   r1   s     @r   	seed_implr      s/    !U]]#j./		 $r   c                 N    t        | t        j                        rt        d      S y Nr    )r   r   r   r   )seeds    r   r   r      s     $&$ 'r   c                 ,     t          fd       fdS )Nc                 b    fd}t        t        j                  t        j                        |fS )Nc                 D   |\  }t        j                  t        j                         t        t        f      }t        j                  |j                  j                  |d      }|j                  |t        | |      |f       | j                  t        j                  d       S )Nnumba_rnd_init)r   r%   rQ   r&   r   r   r'   rR   r(   r+   r2   get_constantr   none)r,   r-   sigrS   
seed_valuer0   r1   
state_types          r   codegenz*_seed_impl.<locals>._impl.<locals>.codegen   s    KJ??2;;=?G2LMD//0@0@0G0G0@BBLLmGWjI(* +''

D99r   )r   r   voiduint32)typingcontextr   r   r   s      r   _implz_seed_impl.<locals>._impl   s$    	: U\\2G;;r   c                      |       S r   r"   )r   r   s    r   <lambda>z_seed_impl.<locals>.<lambda>   s    d r   r   )r   r   s   `@r   r   r      s    	< 	< $#r   c                  &     t         d          fdS )Nc                 >    d }t        t        j                        |fS )Nc                 6    t        | |d      }t        | ||      S Nr   r2   ru   r,   r-   r   rS   rA   s        r   r   z+random_impl.<locals>._impl.<locals>.codegen       %gw=I"7GY??r   )r   r   ro   r   r   s     r   r   zrandom_impl.<locals>._impl   s    	@ &//r   c                               S r   r"   r   s   r   r   zrandom_impl.<locals>.<lambda>   	    57 r   r   r   s   @r   random_implr      s    0 0
 r   c                  &     t         d          fdS )Nc                 >    d }t        t        j                        |fS )Nc                 6    t        | |d      }t        | ||      S r   r   r   s        r   r   z,random_impl0.<locals>._impl.<locals>.codegen   r   r   )r   r   float64r   s     r   r   zrandom_impl0.<locals>._impl   s    	@ '00r   c                               S r   r"   r   s   r   r   zrandom_impl0.<locals>.<lambda>   r   r   r   r   s   @r   random_impl0r      s    
 1 1
 r   c                     t        |       rddS t        |       rddS t        | t        j                        s>t        | t        j
                        r+t        | j                  t        j                        rdd}|S y y )Nc                 >    t         j                  j                         S r   r    randomsizes    r   r   zrandom_impl1.<locals>.<lambda>  s    !1!1!3 r   c                 d    t        j                  t         j                  j                               S r   )r    arrayr   r   s    r   r   zrandom_impl1.<locals>.<lambda>  s    "))*:*:*<!= r   c                     t        j                  |       }|j                  }t        |j                        D ]#  }t         j
                  j                         ||<   % |S r   )r    emptyflatranger   r   r   outout_flatrf   s       r   r   zrandom_impl1.<locals>._impl  sJ    ((4.CxxHSXX 3 "		 0 0 23Jr   r   r   r   r   r   r   UniTupledtyper   r   s     r   random_impl1r      si    
 433d==$&:dENN+K/9$**:?--0I	 0I ,Lr   c                     t        | t        j                  t        j                  f      r<t        |t        j                  t        j                  f      rt        d        fdS y y )Nc                 ~    t        |      }t        |      }t        t        j                  ||      t	        d||      fS r   _double_preprocessorr   r   r   _gauss_impl)r   musigmaloc_preprocessorscale_preprocessors        r   r   zgauss_impl.<locals>._impl  sB    3B7!5e!<U]]B6t%57IJK Kr   c                      | |      S r   r"   r   r   r   s     r   r   zgauss_impl.<locals>.<lambda>  s    r5!1 r   r   r   Floatr   r   r   s     @r   
gauss_implr     sY     "u{{EMM23
EKK/91		K 
	K
 21913r   c                      d S )Nc                  B    t         j                  j                  dd      S N              ?r    r   normalr"   r   r   r   z np_gauss_impl0.<locals>.<lambda>%  s    299##C- r   r"   r"   r   r   np_gauss_impl0r   "  s
     .-r   c                 ^    t        | t        j                  t        j                  f      rd S y )Nc                 B    t         j                  j                  | d      S Nr   r   locs    r   r   z np_gauss_impl1.<locals>.<lambda>+  s    299++C5 r   r   r   r   r   r   s    r   np_gauss_impl1r   (  s$    #U]]3455 5r   c                     t        | t        j                  t        j                  f      r<t        |t        j                  t        j                  f      rt        d        fdS y y )Nc                 ~    t        |      }t        |      }t        t        j                  ||      t	        d||      fS r   r   )r   r   scaler   r   s        r   r   znp_gauss_impl2.<locals>._impl2  sB    3C8!5e!<U]]C7t%57IJK Kr   c                      | |      S r   r"   r   r   r   s     r   r   z np_gauss_impl2.<locals>.<lambda>8  s    %U"3 r   r   r   s     @r   np_gauss_impl2r   .  sW    #U]]34EKK/:1		K 
	K
 43:14r   c                     t        |       rd S t        |       rd S t        | t        j                        s>t        | t        j
                        r*t        | j                  t        j                        rd }|S y y )Nc                 >    t         j                  j                         S r   r    r   standard_normalr   s    r   r   z'standard_normal_impl1.<locals>.<lambda>>      BII557 r   c                 d    t        j                  t         j                  j                               S r   )r    r   r   r   r   s    r   r   z'standard_normal_impl1.<locals>.<lambda>A      BHHRYY%>%>%@A r   c                     t        j                  |       }|j                  }t        |j                        D ]#  }t         j
                  j                         ||<   % |S r   )r    r   r   r   r   r   r   r   s       r   r   z$standard_normal_impl1.<locals>._implE  J    ((4.CxxHSXX < "		 9 9 ;<Jr   r   r   s     r   standard_normal_impl1r   ;  sg    477dAA$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                    t        | t        j                  t        j                  f      r8t        |t        j                  t        j                  f      rt	        |      rd S t        | t        j                  t        j                  f      r8t        |t        j                  t        j                  f      rt        |      rd S t        | t        j                  t        j                  f      rt        |t        j                  t        j                  f      r_t        |t        j                        s>t        |t        j                        r*t        |j                  t        j                        rd }|S y y y y )Nc                 B    t         j                  j                  | |      S r   r   r   r   r   s      r   r   z np_gauss_impl3.<locals>.<lambda>S      		(8(8e(D r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r   r   s      r   r   z np_gauss_impl3.<locals>.<lambda>X       1A1A#u1M(N r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r   r   r   r   r   r   rf   s         r   r   znp_gauss_impl3.<locals>._impl^  N    ((4.CxxHSXX = "		 0 0e <=Jr   r   r   r   r   r   r   r   r   r   r   r   r   s       r   np_gauss_impl3r	  N  s    3emm45*EKK/;14DD3emm45*EKK/;1dNN3emm45*EKK/;14'JtU^^,L0:4::;@==1J	 1J -M;15r   c                       fd}|S )Nc                      	 d        z  dz
  } d        z  dz
  }| | z  ||z  z   }|dk  r|dk7  rn1t        j                  dt        j                  |      z  |z        }|| z  ||z  fS )zG
        Compute a pair of numbers on the normal distribution.
               @r   r          )mathsqrtlog)x1x2r2f_randoms       r   compute_gauss_pairz,_gauss_pair_impl.<locals>.compute_gauss_pairh  s     wy3&Bwy3&BBBBCxB#I  IIdTXXb\)B./2vq2v~r   r"   )r  r  s   ` r   _gauss_pair_implr  g  s     r   c                       fd}|S )Nc                 2   |j                   }| j                  |      }t        j                  t        j                  j                  d   }t	        | |      }t        j                  ||d      }t        ||      }	t        ||      }
t        j                  ||j                  |
            }|j                  |      5 \  }}|5  |j                  |j                  |	      |       |j                  t        d      |
       d d d        |5  | j                  |t        |      t!        t#        j$                  |d            d      }t        j&                  ||d      \  }}|j                  ||	       |j                  ||       |j                  t        d      |
       d d d        d d d        |\  }}|j)                   ||      |j+                   ||      |j                  |                  S # 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   exY w)N)r   r    resultr.   r   rI   r"   rF   )return_typeget_data_typer   r    r2   r   alloca_oncerM   rJ   is_truer\   r   r`   r   compile_internalr  r   r   r   unpack_tuplerq   rr   )r,   r-   r   rS   tylltyr  rA   r   	gauss_ptrhas_gauss_ptr	has_gaussthen	otherwisepairfirstsecondr   r   r   r   states                      r   r   z_gauss_impl.<locals>._implz  s   __$$R())++02 "'7E:	!!'4h?!'95	)'9=OOGW\\--HI	__Y' 	;+<D) ;gll95s;ilM:;  ; //0@0I09%..Q:O0P024
 !( 4 4WdA FveY/fc*ilM:;	;$ 	E||,Wb9#LL);GU)K)0c):<= 	=%; ;; ;	; 	;s=    H=G5
HBH!H5G>	:HH
	HHr"   )r,  r   r   r   s   ``` r   r   r   y  s    #=H Lr   c                    t         j                  j                         t        | t        j                        r| j
                  rfdS fdS t        | t        j                        r| j                  dk7  rfdS d S t        d| z        )Nc                 (    | j                  |      S r   )sitofpr-   vr"  s     r   r   z&_double_preprocessor.<locals>.<lambda>      gnnQ&; r   c                 (    | j                  |      S r   )rn   r0  s     r   r   z&_double_preprocessor.<locals>.<lambda>  r2  r   r   c                 (    | j                  |      S r   )fpextr0  s     r   r   z&_double_preprocessor.<locals>.<lambda>  s    gmmAr&: r   c                     |S r   r"   )_builderr1  s     r   r   z&_double_preprocessor.<locals>.<lambda>  s    q r   z(Cannot convert {} to floating point type)	r   r   
DoubleTyper   r   signedr   bitwidthr   )valuer"  s    @r   r   r     sm    				B%'<<;;;;	E5;;	'>>R::((G%OPPr   c                 \    t        | t        j                        rt        d        fdS y )Nc                 @    d }t        t        j                  |      |fS )Nc                 p   |\  }|j                  d|t        d            }|j                  d|t        d            }t        j                  ||j	                  ||            5  d}| j
                  j                  |t        |f       d d d        t        | |d      }t        | |||d      S # 1 sw Y   %xY w)NrW   A   ==r   z getrandbits() limited to 64 bitsr   F)
r]   r   r   r_   or_	call_convreturn_user_excOverflowErrorr2   r   )	r,   r-   r   rS   r~   	too_large	too_smallmsgrA   s	            r   r   z0getrandbits_impl.<locals>._impl.<locals>.codegen  s    #11$y}M	#11$y|L	(('++i>G3I J ><C%%55g}7:f>>
 *'7DA	#GWiNN> >s   #%B,,B5)r   r   uint64)r   kr   s      r   r   zgetrandbits_impl.<locals>._impl  s     O U\\1-w66r   c                      |       S r   r"   rI  r   s    r   r   z"getrandbits_impl.<locals>.<lambda>  s    q r   )r   r   r   r   rK  s    @r   getrandbits_implrL    s0    !U]]#		7 
	7 "!! $r   c                     t               t        j                  d      }t        j                  d      }	t        j                  d      }
j                  j                  ||      |
       j                  j                  d||            5  j                  j                  j                  |
      |      |	      }j                  ||      j                  |
       d d d        j                  j                  d||	            5  j                  j                  j                  |
      |      |	      }j                  ||      j                  |
       d d d        j                  |
      t        j                  j                  d|            5  d} j                  j                  t        |f       d d d        t        j                   t        j"                  j$                  g      }t        j&                  j(                  j*                  |d	z        }d
k(  rj                  |	      n}j-                  j/                  ||t        j"                  g      t0              j                  t        j                  t0        j2                              t        j                  d       fd}d
k(  r^j5                  j                  d|	            5 \  }}|5  j                  |       d d d        |5   |        d d d        d d d        n |        j                  |j7                  j                        |            S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   yxY w)Nr   rF   nr  <>r   zempty range for randrange()zllvm.ctlz.%sr    rc                  h   j                  d      } j                  d      }j                  |        j                  |        t        
	dk(        }j	                  |      }j                  d|      }j                  || |       j                  |       j                  |       y )Nwhilez	while.endr    rW   )append_basic_blockbranchposition_at_endr   r|   icmp_signedcbranchr`   )bbwhilebbendrQ  rE  r-   r,   rN  r~   rptrr,  rA   r"  s       r   get_numz _randrange_impl.<locals>.get_num  s    ,,W5**;7w('9eUd]KMM!R ''a3		7E2&ar   r@  )r2   r   r   r   r  r`   rx   if_thenrW  r*   r\   sdivr_   rB  rC  
ValueErrorr%   true_bitry   r'   rR   r(   r|   r+   r   rz   r   mul)r,   r-   startstopstepr"  r9  r,  zeroonenptrwrG  r0   r1   nm1r\  is_one
is_not_onerN  r~   r[  rA   s   ``   ` `           @@@@r   _randrange_implrl    s+   gw6I;;r1D
++b!
Cw5D MM'++dE*D1	,,S$=	> KKGLL$6=sCLLD!a	
 
,,S$<	= KKGLL$6=sCLLD!a	 	TA			Wg&9&9$4&H	I G+))':vFG
 ??2G$4$4$9$9:;D		'	'(8(8(?(?(6(;
=B "'$'++a
ACMM',,rC1A1A+BCWMEKKGRXX6>Ew5D  }__W00q#>? 	CWFJ *dD)* 		 	 		;;ugkk',,t*<dCDDu 
 G GN* * 	 	sb   ANAN4%NO N(&
O 0N48O NNN%(N1	-O 4N=	9O  O	c                 >    t        | t        j                        rd S y )Nc                 0    t        j                  d| d      S rE   r   	randrangerb  s    r   r   z"randrange_impl_1.<locals>.<lambda>  s    V--a: r   r   r   r   rq  s    r   randrange_impl_1rs    s    %':: (r   c                 t    t        | t        j                        rt        |t        j                        rd S y y )Nc                 0    t        j                  | |d      S NrF   ro  rb  rc  s     r   r   z"randrange_impl_2.<locals>.<lambda>  s    6#3#3E4#C r   rr  rw  s     r   randrange_impl_2rx    s,    %'JtU]],KCC -L'r   c                     |j                   | k7  r@|j                  rt        j                  j                  S t        j                  j
                  S d S )Nc                     |S r   r"   )r7  r1  _tys      r   r   z)_randrange_preprocessor.<locals>.<lambda>  s     r   )r:  r9  r   	IRBuildersextr{   )r:  r"  s     r   _randrange_preprocessorr~    s@    	{{h%'YY!! 	(\\&&	( *)r   c                 @  	
 t        | t        j                        rt        |t        j                        rt        |t        j                        rt        | j                  |j                  |j                        t        | j
                  |j
                  |j
                        }t        j                  j                  |      t        j                  |      t        ||       t        ||      
t        ||      	t        	
fd       fdS y y y )Nc                 6    	
fd}t        |||      |fS )Nc           
      p    |\  }}} 	||      } ||      } 
||      }t        | ||||d      S r   )rl  )r,   r-   r   rS   rb  rc  rd  	llvm_typer9  start_preprocessorstep_preprocessorstop_preprocessors          r   r   z0randrange_impl_3.<locals>._impl.<locals>.codegen0  sY    $(!tT*7E9E($	B($	B&wd'0&$@ @r   r   )r   rb  rc  rd  r   int_tyr  r9  r  r  r  s        r   r   zrandrange_impl_3.<locals>._impl.  s'    @ @ VUD$7@@r   c                      | ||      S r   r"   )rb  rc  rd  r   s      r   r   z"randrange_impl_3.<locals>.<lambda>9  s    udD)A r   r   r   r   maxr9  r:  from_bitwidthr   IntTyper~  r   )rb  rc  rd  r:  r   r  r  r9  r  r  r  s       @@@@@@@r   randrange_impl_3r  !  s    5%--(Zemm-L$&U\\4;;<u~~t}}dmmD,,Xv>JJx(	4XuE3HdC3HdC			A 		A 
		A BA+ ' .M(r   c                 t    t        | t        j                        rt        |t        j                        rd S y y )Nc                 6    t        j                  | |dz   d      S rv  ro  rs   rt   s     r   r   z randint_impl_1.<locals>.<lambda>?  s    F,,QAq9 r   rr  r  s     r   randint_impl_1r  <  s,    !U]]#
1emm(D99 )E#r   c                 >    t        | t        j                        rd S y )Nc                 B    t         j                  j                  d|       S r=   r    r   randintr   s    r   r   z#np_randint_impl_1.<locals>.<lambda>E  s    299,,Q4 r   rr  r  s    r   np_randint_impl_1r  B  s    #u}}%44 &r   c                    t        | t        j                        rt        |t        j                        rt        | j                  |j                        t        | j
                  |j
                        }t        j                  j                  |      t        j                  |      t        ||       t        ||      t        fd       fdS y y )Nc                 2    fd}t        ||      |fS )Nc           
          |\  }} 	||      } 
||      }t        j                  d      }t        | ||||d      S )NrF   r    )r   r   rl  )r,   r-   r   rS   rb  rc  rd  r  r9  r  r  s          r   r   z1np_randint_impl_2.<locals>._impl.<locals>.codegenU  sX    "t*7E9E($	B{{9a0&wd'0&$@ @r   r   )	r   r   r   r   r  r  r9  r  r  s	       r   r   z np_randint_impl_2.<locals>._implS  s    @ VS$/88r   c                      | |      S r   r"   r   r   r   s     r   r   z#np_randint_impl_2.<locals>.<lambda>^      sD!1 r   r  )	r   r   r:  r   r  r  r9  r  r  s	      @@@@@@r   np_randint_impl_2r  H  s    #u}}%*T5==*ISZZ-s||T]]3,,Xv>JJx(	4XsC3HdC			9 
		9 21) +J%r   c                    t        | t        j                        r(t        |t        j                        rt        |      rd S t        | t        j                        r(t        |t        j                        rt	        |      rd S t        | t        j                        rt        |t        j                        rt        |t        j                        s>t        |t        j
                        r_t        |j                  t        j                        r:t        | j                  |j                        }t        t        d|       fd}|S y y y y )Nc                 B    t         j                  j                  | |      S r   r  r   r   r   s      r   r   z#np_randint_impl_3.<locals>.<lambda>e      ryy'8'8d'C r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r  s      r   r   z#np_randint_impl_3.<locals>.<lambda>i       rxx		0A0A#t0L'M r   intc                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S N)r   )r    r   r   r   r   r   r  )r   r   r   r   r   rf   result_types         r   r   z np_randint_impl_3.<locals>._implq  sR    ((4{3CxxHSXX = "		 1 1#t <=Jr   )r   r   r   r   r   r   r   r  r:  getattrr    )r   r   r   r:  r   r  s        @r   np_randint_impl_3r  a  s    3&:dEMM+J4CC3&:dEMM+JdMM3&:dEMM+J4'JtU^^,L0:4::;@==1Js||T]]3bCz"23	 1J -M ,K&r   c                      d S )Nc                  B    t         j                  j                  dd      S r   r    r   uniformr"   r   r   r   z"np_uniform_impl0.<locals>.<lambda>|      299$$S#. r   r"   r"   r   r   np_uniform_impl0r  z      ..r   c                     t        | t        j                  t        j                  f      r<t        |t        j                  t        j                  f      rt        d        fdS y y )Nc                 ~    t        |      }t        |      }t        t        j                  ||      t	        d||      fS r   r   r   r   r   uniform_impl)r   rs   rt   low_preprocessorhigh_preprocessors        r   r   zuniform_impl2.<locals>._impl  sB    3A6 4Q 7U]]Aq1<&(94; ; ;r   c                      | |      S r   r"   rs   rt   r   s     r   r   zuniform_impl2.<locals>.<lambda>  s    E!QK r   r   r  s     @r   uniform_impl2r    sU    !ekk5==12zU]]+8-		; 
	;
 ('8-2r   c                     t        | t        j                  t        j                  f      r<t        |t        j                  t        j                  f      rt        d        fdS y y )Nc                 ~    t        |      }t        |      }t        t        j                  ||      t	        d||      fS r   r  )r   r   r   r  r  s        r   r   znp_uniform_impl2.<locals>._impl  sB    3C8 4T :U]]C6&(99; ; ;r   c                      | |      S r   r"   r  s     r   r   z"np_uniform_impl2.<locals>.<lambda>  r  r   r   r  s     @r   np_uniform_impl2r    sU    #U]]345;;.:0		; 
	;
 21:04r   c                       fd}|S )Nc                     t        | |      }|\  }} 	||      } 
||      }|j                  ||      }t        | ||      }|j                  ||j	                  ||            S r   )r2   fsubru   rq   rr   )r,   r-   r   rS   rA   rs   rt   rz   rQ  a_preprocessorb_preprocessorr,  s            r   r   zuniform_impl.<locals>.impl  sl    !'7E:	17A&7A&Q"GWi8||Aw||E1566r   r"   )r,  r  r  r   s   ``` r   r  r    s    7 Kr   c                    t        | t        j                  t        j                  f      r8t        |t        j                  t        j                  f      rt	        |      rd S t        | t        j                  t        j                  f      r8t        |t        j                  t        j                  f      rt        |      rd S t        | t        j                  t        j                  f      rt        |t        j                  t        j                  f      r_t        |t        j                        s>t        |t        j                        r*t        |j                  t        j                        rd }|S y y y y )Nc                 B    t         j                  j                  | |      S r   r  r  s      r   r   z"np_uniform_impl3.<locals>.<lambda>  r  r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r  s      r   r   z"np_uniform_impl3.<locals>.<lambda>  r  r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r  )r   r   r   r   r   rf   s         r   r   znp_uniform_impl3.<locals>._impl  sN    ((4.CxxHSXX = "		 1 1#t <=Jr   r  )r   r   r   r   s       r   np_uniform_impl3r    s   3emm45*5;;.;04CC3emm45*5;;.;0d NM3emm45*5;;.;04'JtU^^,L0:4::;@==1J	 1J -M;05r   c                     d }t        | t        j                  t        j                  f      r-t        |t        j                  t        j                  f      r|S y y )Nc                     t        j                          }d}||kD  r	d|z
  }|| }} | || z
  t        j                  ||z        z  z   S )N      ?r   r   r  r  )r   r   ucs       r   r   z triangular_impl_2.<locals>._impl  sL    MMOq5aAcCdSjDIIa!e$4444r   r   r  s      r   triangular_impl_2r    sF    5 #U]]345;;.:0:04r   c                    t        | t        j                  t        j                  f      r[t        |t        j                  t        j                  f      r0t        |t        j                  t        j                  f      rd }|S y y y )Nc                     || k(  r| S t        j                          }|| z
  || z
  z  }||kD  rd|z
  }d|z
  }|| }} | || z
  t        j                  ||z        z  z   S r   r  )r   r   moder  r  s        r   r   z triangular_impl_3.<locals>._impl  sn    s{
As
+A1u!G!G #T$*		!a%(8888r   r   )r   r   r  r   s       r   triangular_impl_3r    sb    3emm45*5;;.;0$emm45		9  6;05r   c                    t        | t        j                  t        j                  f      r[t        |t        j                  t        j                  f      r0t        |t        j                  t        j                  f      rd }|S y y y )Nc                     || k(  r| S t         j                  j                         }|| z
  || z
  z  }||kD  rd|z
  }d|z
  }|| }} | || z
  t        j                  ||z        z  z   S r   )r    r   r  r  )leftr  rightr  r  s        r   r   z triangular_impl_3.<locals>._impl  su    }		  "A.A1u!G!G#Te54<499QU+;;;;r   r   )r  r  r  r   s       r   r  r    sb    4%++u}}56:5;;.<0uu{{EMM:;		<  <<06r   c                     t        |      rddS t        |      rddS t        |t        j                        s>t        |t        j
                        r+t        |j                  t        j                        rdd}|S y y )Nc                 D    t         j                  j                  | ||      S r   )r    r   
triangularr  r  r  r   s       r   r   z!triangular_impl.<locals>.<lambda>  s    BII4H4HIMIN5P r   c                 j    t        j                  t         j                  j                  | ||            S r   )r    r   r   r  r  s       r   r   z!triangular_impl.<locals>.<lambda>  s%    BHHII  tU35
 r   c                     t        j                  |      }|j                  }t        |j                        D ]&  }t         j
                  j                  | ||      ||<   ( |S r   )r    r   r   r   r   r   r  )r  r  r  r   r   r   rf   s          r   r   ztriangular_impl.<locals>._impl  sR    ((4.CxxHSXX H "		 4 4T4 GHJr   r   r   )r  r  r  r   r   s        r   triangular_implr    su    4P 	P d
 	
 	4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                     t        | t        j                  t        j                  f      rDt        |t        j                  t        j                  f      rt	        t
        j
                        S y y r   )r   r   r   r   _gammavariate_implr   alphabetas     r   gammavariate_implr    sI    %%++u}}56:5;;.<0!&--00<06r   c                 ^    t        | t        j                  t        j                  f      rd S y )Nc                 B    t         j                  j                  | d      S r   r    r   gammashapes    r   r   z%ol_np_random_gamma1.<locals>.<lambda>  s    RYY__UC8 r   r   r  s    r   ol_np_random_gamma1r    s&     %%++u}}5688 7r   c                    t        | t        j                  t        j                  f      r^t        |t        j                  t        j                  f      r3t	        t        t        j                  j                              fd}|S y y )Nc                      | |      S r   r"   )r  r   r1   s     r   r   z!ol_np_random_gamma2.<locals>.impl  s    eU##r   )r   r   r   r   r   r  r    r   )r  r   r   r1   s      @r   ol_np_random_gamma2r    s_    %%++u}}56:EKK/<101A1ABC	$<16r   c                       fd}|S )Nc                 ~   dt        j                  d      z   }| dk  s|dk  rt        d      | dkD  rt        j                  d| z  dz
        }| t        j                  d      z
  }| |z   }	         }d|cxk  rdk  sn d        z
  }t        j                  |d|z
  z        |z  }| t        j                  |      z  }	||z  |z  }
|||z  z   |	z
  }||z   d|
z  z
  dk\  s|t        j                  |
      k\  r|	|z  S | dk(  r!t        j                  d        z
         |z  S 	         }t         j
                  | z   t         j
                  z  }||z  }|dk  r	|d| z  z  }	nt        j                  ||z
  | z         }	        }|dkD  r||	| dz
  z  k  r%	 |	|z  S |t        j                  |	       k  r	 |	|z  S )	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u2r1  r   zrQ  r  rt   pr  s                  r   r   z!_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+%rE"HAIaK}$s1u,3qDHHQK7Gt8O  c\
 HHS79_--44 IVVe^TVV+aC8c%i(A1Q3+..AYs7Q53;// t8O 488QB<'t8O r   r"   r  r   s   ` r   r  r  #  s    6n Lr   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   r  r  r   r   s      r   r   zgamma_impl.<locals>.<lambda>a  s    "))//%*G r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r  s      r   r   zgamma_impl.<locals>.<lambda>d  s    "((299??5%3P*Q r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r  )r  r   r   r   r   rf   s         r   r   zgamma_impl.<locals>._implh  sL    ((4.CxxHSXX > "		u =>Jr   r   )r  r   r   r   s       r   
gamma_implr   ^  sg    4GGdQQ$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   r    r   standard_gammar  r   s     r   r   z%standard_gamma_impl.<locals>.<lambda>t  s    299#;#;E#B r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   r  r  s     r   r   z%standard_gamma_impl.<locals>.<lambda>w  s    288BII,D,DU,K#L r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   r  )r  r   r   r   rf   s        r   r   z"standard_gamma_impl.<locals>._impl{  sN    ((4.CxxHSXX @ "		 8 8 ?@Jr   r   )r  r   r   s      r   standard_gamma_implr  q  sg    4BBdLL4'JtU^^,L0:4::;@==1J	 1J -Mr   c                     t        | t        j                  t        j                  f      rDt        |t        j                  t        j                  f      rt	        t
        j                        S y y r   )r   r   r   r   _betavariate_implr   gammavariater  s     r   betavariate_implr    sK    %%++u}}56:5;;.<0 !4!455<06r   c                    t        | t        j                  t        j                  f      r^t        |t        j                  t        j                  f      r3t	        t        t        j                  j                              fd}|S y y )Nc                      | |      S r   r"   )rs   rt   r1   s     r   r   zol_np_random_beta.<locals>.impl  s    a8Or   )	r   r   r   r   r   r
  r    r   r  )rs   rt   r   r1   s      @r   ol_np_random_betar    s]    !ekk5==12zU]]+8-0AB	8-2r   c                       fd}|S )Nc                 @     | d      }|dk(  ry|| |d      z   z  S )z0Beta distribution.  Taken from CPython.
        r   r   r"   )r  r  ri   r  s      r   r   z _betavariate_impl.<locals>._impl  s1    
 %8E$O+,,r   r"   )r  r   s   ` r   r
  r
    s    	- Lr   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   )r    r   r  rs   rt   r   s      r   r   zbeta_impl.<locals>.<lambda>  s    "))..A"6 r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r  s      r   r   zbeta_impl.<locals>.<lambda>  s    "((299>>!Q+?"@ r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r  )rs   rt   r   r   r   rf   s         r   r   zbeta_impl.<locals>._impl  sL    ((4.CxxHSXX 5 "		q! 45Jr   r   )rs   rt   r   r   s       r   	beta_implr    sj    466d A@4'JtU^^,L0:4::;@==1J	 1J -Mr   c                 B    t        | t        j                        rd }|S y )Nc                 ^    t        j                  dt        j                         z
         | z  S )z;Exponential distribution.  Taken from CPython.
            r   )r  r  r   )lambds    r   r   zexpovariate_impl.<locals>._impl  s&     HHS6==?233e;;r   r   r   r   )r  r   s     r   expovariate_implr    s!    %%	<  &r   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc                 r    t        j                  dt        j                  j                         z
         | z  S r   r  r  r    r   r   s    r   r   zexponential_impl.<locals>._impl  s+    HHS299#3#3#5566>>r   r   )r   r   s     r   exponential_implr!    s(    %%++u}}56	? 7r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   exponentialr   r   s     r   r   z"exponential_impl.<locals>.<lambda>  s    299#8#8#? r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   r$  r%  s     r   r   z"exponential_impl.<locals>.<lambda>  s    288BII,A,A%,H#I r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   r$  r   r   r   r   rf   s        r   r   zexponential_impl.<locals>._impl  sL    ((4.CxxHSXX = "		 5 5e <=Jr   r   r   r   r   s      r   r!  r!    sg    4??dII4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                      d } | S )Nc                  l    t        j                  dt        j                  j                         z
         S r   r  r"   r   r   r   zexponential_impl.<locals>._impl  s&    ryy//11222r   r"   r   s    r   r!  r!    s    3Lr   c                     t        |       rd S t        |       rd S t        | t        j                        s>t        | t        j
                        r*t        | j                  t        j                        rd }|S y y )Nc                 >    t         j                  j                         S r   )r    r   standard_exponentialr   s    r   r   z+standard_exponential_impl.<locals>.<lambda>  s    BII::< r   c                 d    t        j                  t         j                  j                               S r   )r    r   r   r.  r   s    r   r   z+standard_exponential_impl.<locals>.<lambda>  s    BHHRYY%C%C%EF r   c                     t        j                  |       }|j                  }t        |j                        D ]#  }t         j
                  j                         ||<   % |S r   )r    r   r   r   r   r   r.  r   s       r   r   z(standard_exponential_impl.<locals>._impl  sL    ((4.CxxHSXX A "		 > > @AJr   r   r   s     r   standard_exponential_implr1    sd    4<<dFF4'4(Z

8=.G	 .G(r   c                      d S )Nc                  B    t         j                  j                  dd      S r   r    r   	lognormalr"   r   r   r   z$np_lognormal_impl0.<locals>.<lambda>   s    299&&sC0 r   r"   r"   r   r   np_lognormal_impl0r6    s    00r   c                 ^    t        | t        j                  t        j                  f      rd S y )Nc                 B    t         j                  j                  | d      S r   r4  means    r   r   z%np_log_normal_impl1.<locals>.<lambda>  s    BII//c: r   r   r9  s    r   np_log_normal_impl1r;    s$    $emm45:: 6r   c                    t        | t        j                  t        j                  f      r\t        |t        j                  t        j                  f      r1t	        t        t        j                  j                              fdS y y )Nc                      | |      S r   r"   r:  r   r1   s     r   r   z%np_log_normal_impl2.<locals>.<lambda>  s    2dE? r   )	r   r   r   r   r   _lognormvariate_implr    r   r   r>  s     @r   np_log_normal_impl2r@  	  s[    $emm45*EKK/;122993C3CDE22;15r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   r4  r:  r   r   s      r   r   z lognormal_impl.<locals>.<lambda>  s    )<)<T5)I r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r5  rC  s      r   r   z lognormal_impl.<locals>.<lambda>  s     "))2E2EdE2R)S r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r5  )r:  r   r   r   r   rf   s         r   r   zlognormal_impl.<locals>._impl  sP    ((4.CxxHSXX A "		 3 3D% @AJr   r   )r:  r   r   r   s       r   lognormal_implrF    sg    4IIdSS4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                     t        | t        j                        rBt        |t        j                        r't        t	        t
        j                              fdS y y )Nc                      | |      S r   r"   r   r   r1   s     r   r   z%lognormvariate_impl.<locals>.<lambda>(  s    B r   )r   r   r   r   r?  r   gaussrI  s     @r   lognormvariate_implrK  $  sA    "ekk"z%'E26<<@A.. (F"r   c                       fdS )Nc                 <    t        j                   | |            S r   )r  r  )r   r   _gausss     r   r   z&_lognormvariate_impl.<locals>.<lambda>,  s    TXXfR&78 r   r"   )rN  s   `r   r?  r?  +  s	    88r   c                 B    t        | t        j                        rd }|S y )Nc                 F    dt        j                          z
  }d|d| z  z  z  S )z)Pareto distribution.  Taken from CPython.r   )r   )r  r  s     r   r   z!paretovariate_impl.<locals>._impl2  s(     fmmo%As5y)))r   r  )r  r   s     r   paretovariate_implrQ  /  s!    %%	*  &r   c                 B    t        | t        j                        rd }|S y )Nc                 `    dt         j                  j                         z
  }d|d| z  z  z  dz
  S )Nr   rF   r   rs   r  s     r   r   zpareto_impl.<locals>._impl>  s1    bii&&((As1u%))r   r  rs   r   s     r   pareto_implrV  ;  s!    !U[[!	*
  "r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   paretors   r   s     r   r   zpareto_impl.<locals>.<lambda>I  s    ryy//2 r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   rY  rZ  s     r   r   zpareto_impl.<locals>.<lambda>L  s    rxx		(8(8(;< r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   rY  rs   r   r   r   rf   s        r   r   zpareto_impl.<locals>._implP  sL    ((4.CxxHSXX 4 "		 0 0 34Jr   r   rs   r   r   s      r   rV  rV  F  sg    422d<<4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                     t        | t        j                  t        j                  f      r0t        |t        j                  t        j                  f      rd }|S y y )Nc                 n    dt        j                          z
  }| t        j                  |       d|z  z  z  S )z*Weibull distribution.  Taken from CPython.r   )r   r  r  )r  r  r  s      r   r   z"weibullvariate_impl.<locals>._impl]  s2     fmmo%ATXXa[Lc$h777r   r   )r  r  r   s      r   weibullvariate_implra  Y  sF    %%++u}}56:5;;.<0	8 <06r   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc                 |    dt         j                  j                         z
  }t        j                  |       d| z  z  S r   r    r   r  r  rT  s     r   r   zweibull_impl.<locals>._impli  s2    bii&&((AXXa[Lc!e,,r   r   rU  s     r   weibull_implre  f  s*    !ekk5==12	-
  3r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   weibullrZ  s     r   r   zweibull_impl2.<locals>.<lambda>t  s    ryy003 r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   rh  rZ  s     r   r   zweibull_impl2.<locals>.<lambda>w  s    rxx		(9(9!(<= r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   rh  r]  s        r   r   zweibull_impl2.<locals>._impl{  sL    ((4.CxxHSXX 5 "		 1 1! 45Jr   r   r^  s      r   weibull_impl2rk  q  sg    433d==4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                     t        | t        j                        r4t        |t        j                        rt        t        j                        S y y r   )r   r   r   _vonmisesvariate_implr   r   kappas     r   vonmisesvariate_implrp    s5    "ekk"z%'E$V]]33 (F"r   c                     t        | t        j                        r>t        |t        j                        r#t        t        j
                  j
                        S y y r   )r   r   r   rm  r    r   rn  s     r   rp  rp    s;    "ekk"z%'E$RYY%5%566 (F"r   c                       fd}|S )Nc                 P   |dk  rdt         j                  z          z  S d|z  }|t        j                  d||z  z         z   }	         }t        j                  t         j                  |z        }|||z   z  }        }|d||z  z
  k  s|d|z
  t        j                  |      z  k  rngd|z  }||z   d||z  z   z  }	        }
|
dkD  r.| t        j
                  |	      z   dt         j                  z  z  }|S | t        j
                  |	      z
  dt         j                  z  z  }|S )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   ro  srQ  r  r  dr  qr  u3thetar  s               r   r   z$_vonmisesvariate_impl.<locals>._impl  s$    D==79,,%K		#A+&&B2&AQUABC!a%K2#'TXXa[)@#@  !GUsQU{#Y8$))A,&3=9E  $))A,&3=9Er   r"   r  s   ` r   rm  rm    s    &P Lr   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   )r    r   vonmisesr   ro  r   s      r   r   zvonmises_impl.<locals>.<lambda>  s    ryy'9'9"e'D r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r~  r  s      r   r   zvonmises_impl.<locals>.<lambda>  s     rxx		0B0B2u0M'N r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r~  )r   ro  r   r   r   rf   s         r   r   zvonmises_impl.<locals>._impl  sN    ((4.CxxHSXX > "		 2 22u =>Jr   r   )r   ro  r   r   s       r   vonmises_implr    g    4DDdNN4'JtU^^,L0:4::;@==1J	 1J -Mr   c                     t        | t        j                        r0t        |t        j                  t        j                  f      rd }|S y y )Nc           	      4   | dk  rt        d      d|cxk  rdk  st        d       t        d      |dk(  ry|dk(  r| S |dkD  }|rd|z
  }d|z
  }d}|| z  }|dk  r|d	z  }| d	z  } || z  }| dkD  sJ |dk  r| |z  }t        | |d
t        j                  ||z  dz         z  z         }d}|dkD  rhd}	t        j
                  j                         }
|}|	|k  r;|
|k  r||r| |	z
  n|	z  }|dz  }n$|
|z  }
|	dz  }	| |	z
  dz   |z  |z  |	|z  z  }|	|k  r;|dkD  rh|S )z
            Binomial distribution.  Numpy's variant of the BINV algorithm
            is used.
            (Numpy uses BTPE for n*p >= 30, though)
            r   zbinomial(): n <= 0r   r   zbinomial(): p outside of [0, 1]r  rF   gx0 rI         $@)r_  minr  r  r    r   )rN  r  flippedry  nitersqnnp_prodboundr   XUpxs               r   r   zbinomial_impl.<locals>._impl  s    1u !5661OO !BCC $ !BCCCxCx#gG!GaAFaB, 1a!V1uu , !eG7TDIIgkAo,F%FFGEE1*II$$&5jBw'Qq8!GAFAq519/B.1q59B 5j	 1* Lr   r   r   r   r   rN  r  r   s      r   binomial_implr    s?    !U]]#
U]]+)-/	b g)-#r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   )r    r   binomialrN  r  r   s      r   r   zbinomial_impl.<locals>.<lambda>
  s    "))"4"4Q": r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r  s      r   r   zbinomial_impl.<locals>.<lambda>  s     "((299+=+=a+C"D r   c                     t        j                  |t         j                        }|j                  }t	        |j
                        D ]%  }t         j                  j                  | |      ||<   ' |S r  )r    r   intpr   r   r   r   r  )rN  r  r   r   r   rf   s         r   r   zbinomial_impl.<locals>._impl  sU    ((4rww/CxxHSXX 9 "		 2 21a 89Jr   r   )rN  r  r   r   s       r   r  r    sj    4::d ED4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc                 L    dt         j                  j                  | dz        z  S Nr  r  )dfs    r   r   zchisquare_impl.<locals>._impl  s     11"s(;;;r   r   r  r   s     r   chisquare_implr    s*    "u{{EMM23	< 	 4r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   r    r   	chisquarer  r   s     r   r   z!chisquare_impl2.<locals>.<lambda>'  s    		 3 3B 7 r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   r  r  s     r   r   z!chisquare_impl2.<locals>.<lambda>)  s    )<)<R)@ A r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   r  r  r   r   r   rf   s        r   r   zchisquare_impl2.<locals>._impl-  sL    ((4.CxxHSXX 8 "		 3 3B 78Jr   r   r  r   r   s      r   chisquare_impl2r  $  sg    477dAA4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                     t        | t        j                  t        j                  f      r0t        |t        j                  t        j                  f      rd }|S y y )Nc                     t         j                  j                  |       |z  t         j                  j                  |      | z  z  S r   r  )dfnumdfdens     r   r   zf_impl.<locals>._impl:  s:    YY((/%7YY((/%79 :r   r   )r  r  r   s      r   f_implr  6  sF    %%++u}}56:EKK/<1	: <16r   c                 H   t        | t        j                  t        j                  f      r8t        |t        j                  t        j                  f      rt	        |      rd S t        | t        j                  t        j                  f      r8t        |t        j                  t        j                  f      rt        |      rd S t        |t        j                        s>t        |t        j                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   )r    r   r  r  r  r   s      r   r   zf_impl.<locals>.<lambda>F  s    "))++eU*C r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r  s      r   r   zf_impl.<locals>.<lambda>K  s    "((299;;ue3L*M r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r  )r  r  r   r   r   rf   s         r   r   zf_impl.<locals>._implO  sL    ((4.CxxHSXX : "		E5 9:Jr   r  )r  r  r   r   s       r   r  r  A  s    55;;67JEKK/=14CC55;;67JEKK/=1dMM4'JtU^^,L0:4::;@==1J	 1J -Mr   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc                    | dk  s| dkD  rt        d      d| z
  }| dk\  rIt        d      }| x}}t        j                  j                         }||kD  r||z  }||z  }|dz  }||kD  r|S t	        j
                  t	        j                  dt        j                  j                         z
        t	        j                  |      z        S )Nr   r   z geometric(): p outside of (0, 1]gUUUUUU?rF   )r_  r  r    r   r  ceilr  )r  ry  r  sumprodr  s         r   r   zgeometric_impl.<locals>._impl[  s    Cx1s7 !CDDaA..FdII$$&#gAID4KCFA #g yy#		0@0@0B*B!C!%!"- . .r   r   )r  r   s     r   geometric_implr  X  s*    !ekk5==12	.$ ' 3r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   	geometricr  r   s     r   r   z geometric_impl.<locals>.<lambda>s      ryy2215 r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   r  r  s     r   r   z geometric_impl.<locals>.<lambda>v      rxx		(;(;A(>? r   c                     t        j                  |t         j                        }|j                  }t	        |j
                        D ]$  }t         j                  j                  |       ||<   & |S r  )r    r   int64r   r   r   r   r  r  r   r   r   rf   s        r   r   zgeometric_impl.<locals>._implz  S    ((4rxx0CxxHSXX 7 "		 3 3A 67Jr   r   r  r   r   s      r   r  r  p  sg    455d??4'JtU^^,L,6tzz7<}}-F	 -F -Mr   c                     t        | t        j                  t        j                  f      r0t        |t        j                  t        j                  f      rd }|S y y )Nc                     dt         j                  j                         z
  }| |t        j                  t        j                  |             z  z
  S r   rd  r   r   r  s      r   r   zgumbel_impl.<locals>._impl  s<    bii&&((A488A;,!7777r   r   r   s      r   gumbel_implr    sF    #U]]34EKK/:1	8 :14r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   )r    r   gumbelr   s      r   r   zgumbel_impl3.<locals>.<lambda>  r  r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r   s      r   r   zgumbel_impl3.<locals>.<lambda>  r  r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r  r  s         r   r   zgumbel_impl3.<locals>._impl  r  r   r   r  s       r   gumbel_impl3r    r  r   c                    t        | t        j                  t        j                  f      r[t        |t        j                  t        j                  f      r0t        |t        j                  t        j                  f      rd }|S y y y )Nc                    t        |      t        |       z   t        |      z
  }t        t        ||             }|}t        |      }|dkD  rR|dkD  rM|t        j                  t
        j                  j                         |||z   z  z         z  }|dz  }|dkD  r|dkD  rMt        ||z
        }| |kD  rt        |      |z
  S |S )z'Numpy's algorithm for hypergeometric().r   r   rF   )r  floatr  r  floorr    r   )ngoodnbadnsampled1d2YKZs           r   r   z"hypergeometric_impl.<locals>._impl  s    TSZ'#g,6Bs4'(BAGAc'a!eTZZ		 0 0 2Q"q&\ ABBQ c'a!e BFAt|7|a''r   r   )r  r  r  r   s       r   hypergeometric_implr    sb    55;;67J5;;.=0gU]];<	  # ==07r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 D    t         j                  j                  | ||      S r   )r    r   hypergeometricr  r  r  r   s       r   r   z%hypergeometric_impl.<locals>.<lambda>  s    II$$UD': r   c                 j    t        j                  t         j                  j                  | ||            S r   )r    r   r   r  r  s       r   r   z%hypergeometric_impl.<locals>.<lambda>  s&    HHRYY--eT7CD r   c                     t        j                  |t         j                        }|j                  }t	        |j
                        D ]&  }t         j                  j                  | ||      ||<   ( |S r  )r    r   r  r   r   r   r   r  )r  r  r  r   r   r   rf   s          r   r   z"hypergeometric_impl.<locals>._impl  sY    ((4rww/CxxHSXX O "		 8 8g NOJr   r   )r  r  r  r   r   s        r   r  r    sq    4; 	;dE 	E4'JtU^^,L0:4::;@==1J	 1J -Mr   c                      d S )Nc                  B    t         j                  j                  dd      S r   r    r   laplacer"   r   r   r   zlaplace_impl0.<locals>.<lambda>  r  r   r"   r"   r   r   laplace_impl0r    r  r   c                 ^    t        | t        j                  t        j                  f      rd S y )Nc                 B    t         j                  j                  | d      S r   r  r   s    r   r   zlaplace_impl1.<locals>.<lambda>  s    299,,S#6 r   r   r   s    r   laplace_impl1r    s$    #U]]3466 5r   c                     t        | t        j                  t        j                  f      r1t        |t        j                  t        j                  f      rt        S y y r   )r   r   r   r   laplace_implr   r   s     r   laplace_impl2r    s@    #U]]34EKK/:1:14r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   r  r   s      r   r   zlaplace_impl3.<locals>.<lambda>  s    		(9(9#u(E r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r   s      r   r   zlaplace_impl3.<locals>.<lambda>  s     1B1B31N(O r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r  r  s         r   r   zlaplace_impl3.<locals>._impl  sN    ((4.CxxHSXX > "		 1 1#u =>Jr   r   r  s       r   laplace_impl3r    sg    4EEdOO$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                     t         j                  j                         }|dk  r| |t        j                  ||z         z  z   S | |t        j                  d|z
  |z
        z  z
  S )Nr  r  rd  r  s      r   r  r    sX    
		A3wUTXXa!e_,,,UTXXcAgk2222r   c                      d S )Nc                  B    t         j                  j                  dd      S r   r    r   logisticr"   r   r   r   z logistic_impl0.<locals>.<lambda>  s    299%%c3/ r   r"   r"   r   r   logistic_impl0r    s    //r   c                 ^    t        | t        j                  t        j                  f      rd S y )Nc                 B    t         j                  j                  | d      S r   r  r   s    r   r   z logistic_impl1.<locals>.<lambda>  s    299--c37 r   r   r   s    r   logistic_impl1r     s$    #U]]3477 5r   c                     t        | t        j                  t        j                  f      r1t        |t        j                  t        j                  f      rt        S y y r   )r   r   r   r   logistic_implr  s     r   logistic_impl2r    s@    #U]]34EKK/:1:14r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   r  r   s      r   r   z logistic_impl3.<locals>.<lambda>  s    		(:(:3(F r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   r  r   s      r   r   z logistic_impl3.<locals>.<lambda>  s     1C1CC1O(P r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   r  r  s         r   r   zlogistic_impl3.<locals>._impl  sN    ((4.CxxHSXX ? "		 2 23 >?Jr   r   r  s       r   logistic_impl3r    sg    4FFdPP4'JtU^^,L0:4::;@==1J	 1J -Mr   c                     t         j                  j                         }| |t        j                  |d|z
  z        z  z   S r   rd  r  s      r   r  r     s5    
		A!sQw-0000r   c                    | dk  s| dkD  rt        d      t        j                  d| z
        }	 t        j                  j	                         }|| k\  ryt        j                  j	                         }dt        j
                  ||z        z
  }|||z  k  rAt        j                  dt        j                  |      t        j                  |      z  z         S ||k\  ryy)z"Numpy's algorithm for logseries().r   r   z logseries(): p outside of (0, 1]rF   rI   )r_  r  r  r    r   r  r  )r  rQ  Vr  ry  s        r   _logseries_implr  %  s    Cx1s7;<<qA
II6II$((1q5/!A:88C$((1+";;<<!Vr   c                 d    t        | t        j                  t        j                  f      rt        S y r   )r   r   r   r   r  )r  s    r   logseries_implr
  :  s$    !ekk5==12 3r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   	logseriesr  s     r   r   z logseries_impl.<locals>.<lambda>C  r  r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   r  r  s     r   r   z logseries_impl.<locals>.<lambda>E  r  r   c                     t        j                  |t         j                        }|j                  }t	        |j
                        D ]$  }t         j                  j                  |       ||<   & |S r  )r    r   r  r   r   r   r   r  r  s        r   r   zlogseries_impl.<locals>._implI  r  r   r   r  s      r   r
  r
  @  sg    455d??$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                     t        | t        j                        r0t        |t        j                  t        j                  f      rd }|S y y )Nc                     | dk  rt        d      |dk  s|dkD  rt        d      t        j                  j                  | d|z
  |z        }t        j                  j	                  |      S )Nr   znegative_binomial(): n <= 0r   r   z(negative_binomial(): p outside of [0, 1])r_  r    r   r  poisson)rN  r  r  s      r   r   z%negative_binomial_impl.<locals>._implV  s_    Av !>??3w!c' !KLL		C!Gq=1A99$$Q''r   r  r  s      r   negative_binomial_implr  R  s=    !U]]#
u{{EMM*),	( ),#r   c                      d S )Nc                  @    t         j                  j                  d      S r   r    r   r  r"   r   r   r   zpoisson_impl0.<locals>.<lambda>c  s    299$$S) r   r"   r"   r   r   poisson_impl0r  a  s    ))r   c                 |    t        | t        j                  t        j                  f      rt        d        fdS y )Nc                 \    t        |      fd}t        t        j                  |      |fS )Nc                    t        | |      }t        j                  |t        d      }|j	                  d      }|j	                  d      }|\  } ||      }|j                  d|t        j                  t        d            }	|j                  |	      5  t        j                  t        t        t        f      }
t        j                  |j                  j                  |
d      }|j                  |||f      }|j!                  ||       |j#                  |       d d d        |j#                  |       |j%                  |       t&        j(                  j(                  t*        j,                  fd}| j/                  ||||      }|j!                  ||       |j#                  |       |j%                  |       |j1                  |      S # 1 sw Y   xY w)	Nr   r  bbcontrZ  rW   r  numba_poisson_ptrsc                 ~    | dk  rt        d      | dk(  ry |        }d}d}	         }||z  }||k  r|S |dz  })ag  Numpy's algorithm for poisson() on small *lam*.

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

8=.G	 .G( 5r   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc                     | dk  rt        d      t        j                  dt        j                  t        j
                  j                                z
  d| z        S )Nr   zpower(): a <= 0rF   r   )r_  r  powr  r    r   r.  rs   s    r   r   zpower_impl.<locals>._impl  sM    Cx !23388A"))*H*H*J)J KKqD" "r   r   rU  s     r   
power_implr4    s*    !ekk5==12	"  3r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   powerrZ  s     r   r   zpower_impl.<locals>.<lambda>  s    ryyq1 r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   r7  rZ  s     r   r   zpower_impl.<locals>.<lambda>  s    rxx		(:; r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   r7  r]  s        r   r   zpower_impl.<locals>._impl  sJ    ((4.CxxHSXX 3 "		 23Jr   r   r^  s      r   r4  r4    sg    411d;;$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                      d S )Nc                  @    t         j                  j                  d      S r   r    r   rayleighr"   r   r   r   z rayleigh_impl0.<locals>.<lambda>  s    299%%c* r   r"   r"   r   r   rayleigh_impl0r>    s    **r   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc           	          | dk  rt        d      | t        j                  dt        j                  dt        j
                  j                         z
        z        z  S )Nr   zrayleigh(): scale <= 0r  r   )r_  r  r  r  r    r   r   s    r   r   zrayleigh_impl1.<locals>.impl  sI    | !9::499TDHHS299;K;K;M5M,N%NOOOr   r   )r   r   s     r   rayleigh_impl1rA    s+    %%++u}}56	P  7r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   r<  r%  s     r   r   z rayleigh_impl2.<locals>.<lambda>  s    299#5#5e#< r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   r=  r%  s     r   r   z rayleigh_impl2.<locals>.<lambda>  s    288BII,>,>u,E#F r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   r=  r(  s        r   r   zrayleigh_impl2.<locals>._impl  sL    ((4.CxxHSXX : "		 2 25 9:Jr   r   r)  s      r   rayleigh_impl2rF    sg    4<<dFF$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                      d } | S )Nc                  |    t         j                  j                         t         j                  j                         z  S r   r   r"   r   r   r   zcauchy_impl.<locals>._impl  s'    yy((*RYY-F-F-HHHr   r"   r   s    r   cauchy_implrI     s    I Lr   c                     t        |       rd S t        |       rd S t        | t        j                        s>t        | t        j
                        r*t        | j                  t        j                        rd }|S y y )Nc                 >    t         j                  j                         S r   )r    r   standard_cauchyr   s    r   r   z&standard_cauchy_impl.<locals>.<lambda>  r   r   c                 d    t        j                  t         j                  j                               S r   )r    r   r   rL  r   s    r   r   z&standard_cauchy_impl.<locals>.<lambda>  r   r   c                     t        j                  |       }|j                  }t        |j                        D ]#  }t         j
                  j                         ||<   % |S r   )r    r   r   r   r   r   rL  r   s       r   r   z#standard_cauchy_impl.<locals>._impl  r   r   r   r   s     r   standard_cauchy_implrO    sg    477dAA$&:dENN+K/9$**:?--0I	 0I ,Lr   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc                     t         j                  j                         }t         j                  j                  | dz        }t	        j
                  | dz        |z  t	        j
                  |      z  }|S r  )r    r   r   r  r  r  )r  NGr  s       r   r   zstandard_t_impl.<locals>._impl  sU    		))+A		((c2A		"s(#a'$))A,6AHr   r   r  s     r   standard_t_implrT    s*    "u{{EMM23	  4r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   
standard_tr  s     r   r   z"standard_t_impl2.<locals>.<lambda>*  s    		 4 4R 8 r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   rW  r  s     r   r   z"standard_t_impl2.<locals>.<lambda>,  s    )=)=b)A B r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r    r   r   r   r   r   rW  r  s        r   r   zstandard_t_impl2.<locals>._impl0  sL    ((4.CxxHSXX 9 "		 4 4R 89Jr   r   r  s      r   standard_t_impl2rZ  '  sg    488dBB$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                 x    t        | t        j                        r t        |t        j                        rd }|S y y )Nc                 X   | dk  rt        d      |dk  rt        d      | d|z  z  }t        j                  j                         }| |z  |z  }| ||t	        j
                  d|z  |z  ||z  z         z
  z  z   }t        j                  j                         }|| | |z   z  k  r|S | | z  |z  S )Nr   zwald(): mean <= 0zwald(): scale <= 0r     )r_  r    r   r   r  r  )r:  r   mu_2lr  r  r  s         r   r   zwald_impl.<locals>._impl<  s    s{ !455| !566C%K(E		))+Aq1AuDIIa%i!ma!e.C$D DEEA		  "ADD1H%%d{Q&r   r  )r:  r   r   s      r   	wald_implr_  9  s2    $$E5;;)G	' ! *H$r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 B    t         j                  j                  | |      S r   )r    r   waldr:  r   r   s      r   r   zwald_impl2.<locals>.<lambda>Q  s    e)D r   c                 h    t        j                  t         j                  j                  | |            S r   )r    r   r   rb  rc  s      r   r   zwald_impl2.<locals>.<lambda>T  s    "))..u2M)N r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r    r   r   r   r   r   rb  )r:  r   r   r   r   rf   s         r   r   zwald_impl2.<locals>._implX  sL    ((4.CxxHSXX < "		tU ;<Jr   r   )r:  r   r   r   s       r   
wald_impl2rf  N  sg    4DDdNN$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                 B    t        | t        j                        rd }|S y )Nc                 p   | dk  rt        d      | dz
  }d|z  }	 dt        j                  j                         z
  }t        j                  j                         }t        t	        j
                  |d|z  z              }|t        kD  s|dk  rsdd|z  z   |z  }|dk\  r||z  |dz
  z  |dz
  z  ||z  k  r|S )Nr   zzipf(): a <= 1r  rF   g      )r_  r    r   r  r  r  r   )rs   am1rt   r  r  r  Ts          r   r   zzipf_impl.<locals>._impld  s    Cx !122c'Cs
A"))**,,II$$&

1#456LAG37]s*6a!eq3w/1s7;AFH r   r  rU  s     r   	zipf_implrk  a  s!    !U[[!	" % "r   c                     t        |      rd S t        |      rd S t        |t        j                        s>t        |t        j
                        r*t        |j                  t        j                        rd }|S y y )Nc                 @    t         j                  j                  |       S r   )r    r   zipfrZ  s     r   r   zzipf_impl.<locals>.<lambda>{  s    ryy~~a0 r   c                 f    t        j                  t         j                  j                  |             S r   )r    r   r   rn  rZ  s     r   r   zzipf_impl.<locals>.<lambda>~  s    rxx		q(9: r   c                     t        j                  |t         j                        }|j                  }t	        |j
                        D ]$  }t         j                  j                  |       ||<   & |S r  )r    r   r  r   r   r   r   rn  r]  s        r   r   zzipf_impl.<locals>._impl  sQ    ((4rww/CxxHSXX 2 "		q 12Jr   r   r^  s      r   rk  rk  x  sg    400d::$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                     t        | t        j                        sd}t        |      |dk(  rt        j
                  j                  n|dk(  rt
        j                  | j                  dk(  rfd}|S fd}|S )Nz1The argument to shuffle() should be a buffer typer    r   rF   c                     | j                   d   dz
  }|dkD  r( |dz         }| |   | |   c| |<   | |<   |dz  }|dkD  r'y y rE   r  r   ijrands      r   r   zdo_shuffle_impl.<locals>.impl  sU    
QAa%QKqT1Q4
!adQ a%r   c                     | j                   d   dz
  }|dkD  rN |dz         }t        j                  | |         t        j                  | |         c| |<   | |<   |dz  }|dkD  rMy y rE   )r  r    copyrs  s      r   r   zdo_shuffle_impl.<locals>.impl  se    
QAa%QKWWQqT]BGGAaDM
!adQ a%r   )	r   r   Bufferr   r    r   r  rp  ndim)r   rngrG  r   rv  s       @r   do_shuffle_implr|    sl    a&AS!!
d{yy  	vv{	 K	 Kr   c                     t        | d      S r   r|  r   s    r   shuffle_implr        1d##r   c                     t        | d      S r   r~  r   s    r   r  r    r  r   c                     t        | t        j                        rd }|S t        | t        j                        rd }|S d }|S )Nc                 n    t        j                  |       }t         j                  j                  |       |S r   )r    aranger   shuffle)r   ri   s     r   permutation_implz*permutation_impl.<locals>.permutation_impl  s&    		!AIIa Hr   c                 d    | j                         }t        j                  j                  |       |S r   )rx  r    r   r  )r   arr_copys     r   r  z*permutation_impl.<locals>.permutation_impl  s$    vvxHIIh'Or   )r   r   r   Array)r   r  s     r   r  r    sH    !U]]#	  
Au{{	#	   r   c                  2    t        |       dk(  rd }|S d }|S )Nr   c                  >    t         j                  j                         S r   r   r   s    r   	rand_implzrand.<locals>.rand_impl  s    99##%%r   c                  @    t         j                  j                  |       S r   r   r   s    r   r  zrand.<locals>.rand_impl  s    99##D))r   len)r   r  s     r   rv  rv    s'    
4yA~	& 	* r   c                  2    t        |       dk(  rd }|S d }|S )Nr   c                  >    t         j                  j                         S r   r   r   s    r   
randn_implzrandn.<locals>.randn_impl  s    99,,..r   c                  @    t         j                  j                  |       S r   r   r   s    r   r  zrandn.<locals>.randn_impl  s    99,,T22r   r  )r   r  s     r   randnr    s'    
4yA~	/ 	3 r   c                    t        | t        j                        rB| j                  dk(  sJ | j                  t
        d        t
        d        }t
        d        n]t        | t        j                        r5t        j                  t
        d        t
        d        }t
        d        nt        d|       |d t        j                  fv r	dfd		}|S dfd
	}|S )NrF   c                     t        |       S r   r  r3  s    r   get_source_sizezchoice.<locals>.get_source_size  s    q6Mr   c                 "    | j                         S r   )rx  r3  s    r   copy_sourcezchoice.<locals>.copy_source  s    668Or   c                     | |   S r   r"   rs   a_is     r   getitemzchoice.<locals>.getitem  s    S6Mr   c                     | S r   r"   r3  s    r   r  zchoice.<locals>.get_source_size  s    Hr   c                 ,    t        j                  |       S r   )r    r  r3  s    r   r  zchoice.<locals>.copy_source  s    99Q<r   c                     |S r   r"   r  s     r   r  zchoice.<locals>.getitem  s    Jr   z>np.random.choice() first argument should be int or array, got c                 f     |       }t         j                  j                  d|      } | |      S )zs
            choice() implementation returning a single sample
            (note *replace* is ignored)
            r   r  )rs   r   replacerN  rt  r  r  s        r   choice_implzchoice.<locals>.choice_impl  s1    
  "A		!!!Q'A1a= r   c                     
|       }|rit        j                  |	      }|j                  }t        t	        |            D ].  }t         j
                  j                  d|      } | |      ||<   0 |S t        j                  |	      }|j                  |kD  rt        d      t         j
                  j                  |       }|j                  }t        t	        |            D ]
  }||   ||<    |S )zO
            choice() implementation returning an array of samples
            r   z@Cannot take a larger sample than population when 'replace=False')
r    r   r   r   r  r   r  r   r_  permutation)rs   r   r  rN  r   flrt  ru  
permuted_ar   r  r  s            r   r  zchoice.<locals>.choice_impl  s      "AhhtU+XXs2w *A		))!Q/A#AqMBqE* 
 hhtU+88a<$ &G H H  YY2215
XXs2w *A&qMBqE*
r   NT)r   r   r  rz  r   r   r   r    r  r   r   )rs   r   r  r  r  r   r  r  s        @@@r   choicer    s     !U[[!vv{{		 
	 
	 
	 
	 
	 
Au}}	%		 
	 
	  
	  
	 
	 78; < 	< ejj!!	!P =	< r   c                    t         j                  t        d        t        | t        j
                        st        d|       t        |t        j                  t        j                  f      st        d|      |d t        j                  fv r	dfd	}|S t        |t        j
                        r	dfd	}|S t        |t        j                        r	dfd	}|S t        d|      )	Nc                 B   |j                   }|j                  }t        |      }t        d||      D ]l  }d}| }t        d|dz
        D ]C  }	||	   }
t        j
                  j                  ||
|z        x}|||	z   <   ||z  }|dk  r n||
z  }E |dkD  sb||||z   dz
  <   n y )Nr   r   rF   )r   r   r  r   r    r   r  )rN  pvalsr   r  szplenrt  p_sumn_experimentsru  p_jn_js               r   multinomial_innerz&multinomial.<locals>.multinomial_innerB  s     XXXX5zq"d# 	1A
 EM
 1dQh' Ah"$))"4"4]C%K"PPbQi$ A% q #01t8a< -	1r   z5np.random.multinomial(): n should be an integer, got zCnp.random.multinomial(): pvals should be an array or sequence, got c                 Z    t        j                  t        |            } | ||       |S )z5
            multinomial(..., size=None)
            r    zerosr  rN  r  r   r   r   r  s       r   multinomial_implz%multinomial.<locals>.multinomial_implj  s*     ((3u:u-Ca,Jr   c                 ^    t        j                  |t        |      f      } | ||       |S )z4
            multinomial(..., size=int)
            r  r  s       r   r  z%multinomial.<locals>.multinomial_impls  s/     ((D#e*-u5Ca,Jr   c                 b    t        j                  |t        |      fz         } | ||       |S )z6
            multinomial(..., size=tuple)
            r  r  s       r   r  z%multinomial.<locals>.multinomial_impl|  s1     ((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)rN  r  r   r  r   r  s       @@r   multinomialr  =  s     GGE1 1< a'236 7 	7 eennekk:;<AD E 	E ejj!!	< - 
D%--	(	*  
D%//	*	  8<? @ 	@r   c                 b    t        | t        j                  t        j                  f      rd }|S y )Nc                 Z    t        j                  t        |             }t        | |       |S r   r    r   r  dirichlet_arr)r  r   s     r   dirichlet_implz!dirichlet.<locals>.dirichlet_impl  #    ((3u:&C%%Jr   )r   r   r  r  )r  r  s     r   	dirichletr    s+    %%..%++67	  8r   c                    t        | t        j                  t        j                  f      st	        d|       |d t        j
                  fv st        |      rdd}|S t        |t        j                        rdd}|S t        |t        j                        r*t        |j                  t        j                        rdd}|S t	        d|z        )NzAnp.random.dirichlet(): alpha should be an array or sequence, got c                 Z    t        j                  t        |             }t        | |       |S r   r  r  r   r   s      r   r  z!dirichlet.<locals>.dirichlet_impl  r  r   c                 ^    t        j                  |t        |       f      }t        | |       |S )z2
            dirichlet(..., size=int)
            r  r  s      r   r  z!dirichlet.<locals>.dirichlet_impl  s*     ((D#e*-.C%%Jr   c                 b    t        j                  |t        |       fz         }t        | |       |S )z4
            dirichlet(..., size=tuple)
            r  r  s      r   r  z!dirichlet.<locals>.dirichlet_impl  s,     ((43u:-/0C%%Jr   zJnp.random.dirichlet(): size should be int or tuple of ints or None, got %sr   )
r   r   r  r  r   r   r   r   r   r   )r  r   r  s      r   r  r    s    eennekk:;+03
 	

 ejj!!^D%9	> 5 
D%--	(	0 ! 
D%..	)j9>/H	  ,.23
 	
r   c                    t        |       D ]  }|dk  s	t        d       t        |       }|j                  }|j                  }t        d||      D ]y  }d}t        |       D ]D  \  }}	t        j                  j                  |	d      |||z   <   ||||z      j                         z  }F t        |       D ]  \  }}	|||z   xx   |z  cc<    { y )Nr   zdirichlet: alpha must be > 0.0rF   )iterr_  r  r   r   r   	enumerater    r   r  item)
r  r   a_vala_lenr   r   rt  normrI  rh  s
             r   r  r    s    
 e ?A:=>>? JE88D88D1dE"  e$ 	'DAq))//!Q/DQKDQK$$&&D	' e$ 	 DAqQK4K	  r   c                     t        | t        j                  t        j                  f      r0t        |t        j                  t        j                  f      rd }|S y y )Nc                 2    t        | |       t        | |      S r   #validate_noncentral_chisquare_inputnoncentral_chisquare_singler  noncs     r   noncentral_chisquare_implz7noncentral_chisquare.<locals>.noncentral_chisquare_impl  s    /D9.r488r   r   )r  r  r  s      r   noncentral_chisquarer    sG    "u{{EMM23
5;;.90	9 )(903r   c                 0   |d t         j                  fv rdd}|S t        |      rdd}|S t        |t         j                        s>t        |t         j
                        r*t        |j                  t         j                        rdd}|S t        d|z        )Nc                 2    t        | |       t        | |      S r   r  r  r  r   s      r   r  z7noncentral_chisquare.<locals>.noncentral_chisquare_impl  s    0T:/D99r   c                 X    t        | |       t        j                  t        | |            S r   )r  r    r   r  r  s      r   r  z7noncentral_chisquare.<locals>.noncentral_chisquare_impl  s#    0T:HH8TBCCr   c                     t        | |       t        j                  |      }|j                  }t	        |j
                        D ]  }t        | |      ||<    |S r   )r  r    r   r   r   r   r  )r  r  r   r   r   rf   s         r   r  z7noncentral_chisquare.<locals>.noncentral_chisquare_impl  sP    0T:88D>SXchh G!<R!F#G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  r  r   r  s       r   r  r    s    uzz""
: *	)t
D *	)
T5==
)ju~~.N2<TZZ=B]]3L
 *	)-/34 
r   c                    t        j                  |      rt         j                  S d| k  r^t         j                  j	                  | dz
        }t         j                  j                         t        j                  |      z   }|||z  z   S t         j                  j                  |dz        }t         j                  j	                  | d|z  z         S )NrF   r  rI   )r    isnannanr   r  r   r  r  )r  r  chi2rN  rt  s        r   r  r  		  s    
 
xx~vv2vyy""2a4(II%%'"''$-7a!e| IId3h'yy""2A:..r   c                 D    | dk  rt        d      |dk  rt        d      y )Nr   zdf <= 0znonc < 0r  r  s     r   r  r  	  s+    	Qw##ax$$ r   r   r  )__doc__r  r   numpyr    llvmliter   numba.core.cgutilsr   r   numba.core.extendingr   r   r   numba.core.imputilsr	   r
   r   numba.core.typingr   
numba.corer   r   numba.core.errorsr   numba.np.random._constantsr   registrylowerr  r   r   r   r8  ro   rR  r   r^   LiteralStructType	ArrayTypernd_state_tPointerTyper&   r2   r6   r9   r;   rB   rG   rJ   rM   rU   rj   ru   r   r   r   r   r   random_samplesampleranfr   r   rJ  normalvariater   r   r   r   r   r   r   r	  r  r   r   getrandbitsrL  rl  rp  rs  rx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  betavariater  r  r  r
  r  expovariater  r$  r!  r.  r1  r5  r6  r;  r@  rF  lognormvariaterK  r?  paretovariaterQ  rY  rV  weibullvariatera  rh  re  rk  vonmisesvariaterp  r~  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  negative_binomialr  r  r  r)  r/  r7  r4  r=  r>  rA  rF  rL  rI  rO  rW  rT  rZ  rb  r_  rf  rn  rk  r|  r  r  r  r  rv  r  r  r  r  r  r  r  r  r"   r   r   <module>r      sN  
     : F F6 6 ' % , /L!
"**R.
"**R.#	
"++gq
! #b""BLL!
$  !"..- "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   