
    xKg)                       d Z ddlZddlZddlZddlmZ ddl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  ed
      Zej2                  Z ej4                  d      Z ej4                  d      Zd Z ej<                         ZdZ  ejB                  ee       Z" ejF                  e ejH                  ee       eeeg      Z% ejL                  e%      Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3 eejh                        d        Z5 eej                  jh                        d        Z5d Z6 eej                        d        Z7 eej                  j                         eej                  jp                         eej                  jr                         eej                  jt                        d                             Z; eej                  j                         eej                  jp                         eej                  jr                         eej                  jt                        dd                             Z< eejz                         eej|                        d!               Z? eej                  j                         eej                  j                        d"               ZB eej                  j                        d#        ZC eej                  j                        d$        ZD eej                  j                        d%        ZE eej                  j                        d&        ZFd' ZGd( ZHd) ZI eej                        d*        ZKd+ ZL eej                        d,        ZN eej                        d-        ZOd. ZP eej                        d/        ZQ eej                        d0        ZS eej                  j                        d1        ZT eej                  j                        d2        ZU eej                  j                        d3        ZV eej                  j                        d4        ZX eej                        d5        ZY eej                  j                        d6        ZZd7 Z[ eej                  j                        d8        Z\ eej                        d9        Z^ eej                        d:        Z_ eej                  j                        d;        Z_ eej                  j                        dd<       Z` eej                        d=        Zb eej                  j                         eej                  j                        d>               Ze eej                  j                        d?        Zfd@ Zg eej                  j                        dA        Zh eej                  j                        dB        Zi eej                        dC        Zk eej                  j                        dD        ZmdE Zn eej                  j                        dF        Zo eej                        dG        Zq eej                  j                        dH        Zs eej                  j                        dI        Zs eej                  j                         eej                  j                        dJ               Zs eej                  j                        dK        Zu eej                  j                        dL        Zw eej                  j                        dM        Zx eej                  j                        dN        Zy eej                  j                        dO        Zz eej                        dP        Z|dQ Z} eej                        dR        Z eej                  j                         dS        Z eej                  j                         dT        Z eej                        dU        Z eej                  j                        dV        Z eej                  j                        dW        Z eej                        dX        Z eej                  j                        dY        ZdZ 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"                        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                  j*                        de        Z eej                  j0                        df        Z eej                  j0                        dg        Z eej                  j4                        dh        Z eej                  j4                        di        Z eej                  j4                        dj        Z eej                  j4                        dk        Zdl Z eej                  j@                        dm        Z eej                  j@                        dn        Z eej                  j@                        do        Z eej                  j@                        dp        Zdq Zdr Z eej                  jN                        ds        Z eej                  jN                        dt        Z eej                  jR                        du        Z eej                  jV                        dv        Z eej                  jV                        dw        Z eej                  jV                        dx        Z eej                  j^                        dy        Z eej                  j^                        dz        Z eej                  jb                        d{        Z eej                  jb                        d|        Z eej                  jb                        d}        Z eej                  jj                        d~        Z eej                  jj                        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        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)	intrinsicoverloadregister_jitable)Registryimpl_ret_untrackedimpl_ret_new_ref	signature)typescgutils)NumbaTypeError
randomimpl    @   c                 6    t        j                  t        |       S N)r   Constantint32_txs    \/home/alanp/www/video.onchill/myenv/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_ptrr0   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   r0   r*   r+   s     r   get_py_state_ptrr4   D        '400r   c                     t        | |d      S )z?
    Get a pointer to the thread-local Numpy random state.
    r   r2   r3   s     r   get_np_state_ptrr7   J   r5   r   c                     t        | |d      S )zB
    Get a pointer to the thread-local internal random state.
    r   r2   r3   s     r   get_internal_state_ptrr9   P   s     ':66r   c                 2    t        j                  | |dd      S Nr   r   gep_inboundsr+   	state_ptrs     r   get_index_ptrr@   W       Aq99r   c                 2    t        j                  | |dd      S Nr      r<   r>   s     r   get_array_ptrrE   Z   rA   r   c                 2    t        j                  | |dd      S )Nr      r<   r>   s     r   get_has_gauss_ptrrH   ]   rA   r   c                 2    t        j                  | |dd      S )Nr      r<   r>   s     r   get_gauss_ptrrK   `   rA   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+   r.   r/   s      r   get_rnd_shufflerS   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   NrD         l   VX:    l     _    )r@   loadicmp_unsignedN_constr   if_unlikelyrS   r)   storer   rE   r=   r(   xorlshrand_shl)	r*   r+   r?   idxptridxneed_reshuffler/   	array_ptrys	            r   get_next_int32rh   n   s    7I.F
,,v
C**4g>N			Wn	5W%R)&ilF+ 
6 ,,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! 
6	5s   :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)
r`   rh   r   uitofpdoublefdivfaddfmulr   r   )r*   r+   r?   abs        r   get_next_doublers      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;   )subrh   typewidthzexttruncnot_r   r   r`   ra   )	nbitsshiftrg   maskr+   c32r*   is_numpyr?   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   rw   r   alloca_once_valueint64_tr[   if_elser^   ry   rv   rh   r(   rb   rZ   )r*   r+   r?   r|   r   r   retis_32bifsmalliflargelowhightotalr   s   ``` `        @r   get_next_intr      s^    ++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%% 	 
!& <<% W W	 
!	 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    )rq   r/   s    r   implzseed_impl.<locals>.impl   s    a5Lr   )
isinstancer   Integerr   
_seed_impl)rq   r   r/   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#   rO   r$   r   r   r%   rP   r&   r)   r0   get_constantr   none)r*   r+   sigrQ   
seed_valuer.   r/   
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   r0   rs   r*   r+   r   rQ   r?   s        r   r   z+random_impl.<locals>._impl.<locals>.codegen       %gw=I"7GY??r   )r   r   rm   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>       57r   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        | 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!3r   c                     t        j                  |       }|j                  }t        |j                        D ]#  }t         j
                  j                         ||<   % |S r   )r   emptyflatranger   r   r   outout_flatrd   s       r   r   zrandom_impl1.<locals>._impl  sE    ((4.CxxHSXX "		 0 0 2 'Jr   r   r   r   r   r   UniTupledtyper   r   s     r   random_impl1r      s[    
 433$&: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!1r   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5r   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>._impl/  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>5  s    %U"3r   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        | 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7r   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>._impl?  E    ((4.CxxHSXX "		 9 9 ; 'Jr   r   r   s     r   standard_normal_impl1r   8  sY    477$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                 0   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>M      		(8(8e(Dr   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   r   r   r   r   r   r   rd   s         r   r   znp_gauss_impl3.<locals>._implS  I    ((4.CxxHSXX "		 0 0e < 'Jr   r   r   r   r   r   r   r   r   r   r   r   s       r   np_gauss_impl3r  H  s    3emm45*EKK/;14DD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_pair]  s     wy3&Bwy3&BBBBCxB#I  IIdTXXb\)B./2vq2v~r   r    )r  r  s   ` r   _gauss_pair_implr  \  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   rG   r    rD   )return_typeget_data_typer   r   r0   r   alloca_oncerK   rH   is_truerZ   r   r^   r   compile_internalr  r   r   r   unpack_tuplero   rp   )r*   r+   r   rQ   tylltyr  r?   r   	gauss_ptrhas_gauss_ptr	has_gaussthen	otherwisepairfirstsecondr   r   r   r   states                      r   r   z_gauss_impl.<locals>._implo  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   n  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   )rl   r(  s     r   r   z&_double_preprocessor.<locals>.<lambda>  r*  r   r   c                 (    | j                  |      S r   )fpextr(  s     r   r   z&_double_preprocessor.<locals>.<lambda>  s    gmmAr&:r   c                     |S r   r    )_builderr)  s     r   r   z&_double_preprocessor.<locals>.<lambda>  s    qr   z(Cannot convert {} to floating point type)	r   r   
DoubleTyper   r   signedr   bitwidth	TypeError)valuer  s    @r   r   r     sm    				B%'<<;;;;	E5;;	'>>R::((BUJKKr   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)NrU   A   ==r   z getrandbits() limited to 64 bitsr   F)
r[   r   r   r]   or_	call_convreturn_user_excOverflowErrorr0   r   )	r*   r+   r   rQ   r|   	too_large	too_smallmsgr?   s	            r   r   z0getrandbits_impl.<locals>._impl.<locals>.codegen  s    #11$y}M	#11$y|L	(('++i>G3I J<C%%55g}7:f>J
 *'7DA	#GWiNNJ J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    rB  r   s    r   r   z"getrandbits_impl.<locals>.<lambda>  s	    qr   )r   r   r   r   rD  s    @r   getrandbits_implrE    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   rD   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   rU   )append_basic_blockbranchposition_at_endr   rz   icmp_signedcbranchr^   )bbwhilebbendrJ  r>  r+   r*   rG  r|   rptrr$  r?   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   r9  )r0   r   r   r   r  r^   rv   if_thenrP  r(   rZ   sdivr]   r;  r<  
ValueErrorr#   true_bitrw   r%   rP   r&   rz   r)   r   rx   r   mul)r*   r+   startstopstepr  r1  r$  zeroonenptrwr@  r.   r/   nm1rU  is_one
is_not_onerG  r|   rT  r?   s   ``   ` `           @@@@r   _randrange_implre    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+))':vF 
J
 ??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 
?	>
 
>	= 
J	IN  @?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 rC   r   	randranger[  s    r   r   z"randrange_impl_1.<locals>.<lambda>  s    V--a:r   r   r   r   rj  s    r   randrange_impl_1rl    s    %':: (r   c                 t    t        | t        j                        rt        |t        j                        rd S y y )Nc                 0    t        j                  | |d      S NrD   rh  r[  r\  s     r   r   z"randrange_impl_2.<locals>.<lambda>  s    6#3#3E4#Cr   rk  rp  s     r   randrange_impl_2rq    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    )r/  r)  _tys      r   r   z)_randrange_preprocessor.<locals>.<lambda>  s    r   )r2  r1  r   	IRBuildersextry   )r2  r  s     r   _randrange_preprocessorrw    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   )re  )r*   r+   r   rQ   r[  r\  r]  	llvm_typer1  start_preprocessorstep_preprocessorstop_preprocessors          r   r   z0randrange_impl_3.<locals>._impl.<locals>.codegen%  sY    $(!tT*7E9E($	B($	B&wd'0&$@ @r   r   )r   r[  r\  r]  r   int_tyr{  r1  r|  r}  r~  s        r   r   zrandrange_impl_3.<locals>._impl#  s'    @ @ VUD$7@@r   c                      | ||      S r   r    )r[  r\  r]  r   s      r   r   z"randrange_impl_3.<locals>.<lambda>.  s    udD)Ar   r   r   r   maxr1  r2  from_bitwidthr   IntTyperw  r   )r[  r\  r]  r2  r   r  r{  r1  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 ro  rh  rq   rr   s     r   r   z randint_impl_1.<locals>.<lambda>4  s    F,,QAq9r   rk  r  s     r   randint_impl_1r  1  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>:  s    299,,Q4r   rk  r  s    r   np_randint_impl_1r  7  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 )NrD   r   )r   r   re  )r*   r+   r   rQ   r[  r\  r]  r{  r1  r|  r~  s          r   r   z1np_randint_impl_2.<locals>._impl.<locals>.codegenJ  sX    "t*7E9E($	B{{9a0&wd'0&$@ @r   r   )	r   r   r   r   r  r{  r1  r|  r~  s	       r   r   z np_randint_impl_2.<locals>._implH  s    @ VS$/88r   c                      | |      S r   r    r   r   r   s     r   r   z#np_randint_impl_2.<locals>.<lambda>S      sD!1r   r  )	r   r   r2  r   r  r{  r1  r|  r~  s	      @@@@@@r   np_randint_impl_2r  =  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                        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>Z      ryy'8'8d'Cr   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   rd   result_types         r   r   z np_randint_impl_3.<locals>._implb  sM    ((4{3CxxHSXX "		 1 1#t < 'Jr   )
r   r   r   r   r   r   r  r2  getattrr   )r   r   r   r2  r   r  s        @r   np_randint_impl_3r  V  s    3&:dEMM+J4CC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>m      299$$S#.r   r    r    r   r   np_uniform_impl0r  k      ..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   rq   rr   low_preprocessorhigh_preprocessors        r   r   zuniform_impl2.<locals>._implt  sB    3A6 4Q 7U]]Aq1<&(94; ; ;r   c                      | |      S r   r    rq   rr   r   s     r   r   zuniform_impl2.<locals>.<lambda>z  s    E!QKr   r   r  s     @r   uniform_impl2r  p  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   )r0   fsubrs   ro   rp   )r*   r+   r   rQ   r?   rq   rr   rx   rJ  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                 0   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                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   r  )r   r   r   r   r   rd   s         r   r   znp_uniform_impl3.<locals>._impl  sI    ((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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        |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                     t        j                  |      }|j                  }t        |j                        D ]&  }t         j
                  j                  | ||      ||<   ( |S r   )r   r   r   r   r   r   r  )r  r  r  r   r   r   rd   s          r   r   ztriangular_impl.<locals>._impl  sK    ((4.CxxHSXX "		 4 4T4 G 'Jr   r   r   )r  r  r  r   r   s        r   triangular_implr    sa    4P 	P 	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8r   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   r/   s     r   r   z!ol_np_random_gamma2.<locals>.impl  s    eU##r   )r   r   r   r   r   r  r   r   )r  r   r   r/   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  rX  r  expe)r  r  SG_MAGICCONSTainvbbbcccu1u2r)  r   zrJ  r  rr   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        |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>G  s    "))//%*Gr   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   r  )r  r   r   r   r   rd   s         r   r   zgamma_impl.<locals>._implK  sG    ((4.CxxHSXX "		u = 'Jr   r   )r  r   r   r   s       r   
gamma_implr  D  sY    4GG$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                     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>W  s    299#;#;E#Br   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r   r   r   r   r   r   r  )r  r   r   r   rd   s        r   r   z"standard_gamma_impl.<locals>._impl[  sG    ((4.CxxHSXX "		 8 8 ? 'Jr   r   )r  r   r   s      r   standard_gamma_implr  T  sY    4BB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  d  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    )rq   rr   r/   s     r   r   zol_np_random_beta.<locals>.implp  s    a8Or   )	r   r   r   r   r   r  r   r   r  )rq   rr   r   r/   s      @r   ol_np_random_betar  k  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  rg   r  s      r   r   z _betavariate_impl.<locals>._implv  s1    
 %8E$O+,,r   r    )r  r   s   ` r   r  r  u  s    	- Lr   c                     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  )rq   rr   r   s      r   r   zbeta_impl.<locals>.<lambda>  s    "))..A"6r   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   r  )rq   rr   r   r   r   rd   s         r   r   zbeta_impl.<locals>._impl  sG    ((4.CxxHSXX "		q! 4 'Jr   r   )rq   rr   r   r   s       r   	beta_implr    sY    466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        |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                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r   r   r   r   r   r   r  r   r   r   r   rd   s        r   r   zexponential_impl.<locals>._impl  sG    ((4.CxxHSXX "		 5 5e < 'Jr   r   r   r   r   s      r   r  r    sY    4??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        | 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                     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  sE    ((4.CxxHSXX "		 > > @ 'Jr   r   r   s     r   standard_exponential_implr    sV    4<<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0r   r    r    r   r   np_lognormal_impl0r"    s    00r   c                 ^    t        | t        j                  t        j                  f      rd S y )Nc                 B    t         j                  j                  | d      S r   r   means    r   r   z%np_log_normal_impl1.<locals>.<lambda>  s    BII//c:r   r   r%  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   r/   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        |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 lognormal_impl.<locals>.<lambda>  s    )<)<T5)Ir   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   r!  )r&  r   r   r   r   rd   s         r   r   zlognormal_impl.<locals>._impl  sI    ((4.CxxHSXX "		 3 3D% @ 'Jr   r   )r&  r   r   r   s       r   lognormal_implr0    sY    4II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   r/   s     r   r   z%lognormvariate_impl.<locals>.<lambda>  s    Br   )r   r   r   r   r+  r   gaussr3  s     @r   lognormvariate_implr5    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8r   r    )r8  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>._impl  s(     fmmo%As5y)))r   r	  )r  r   s     r   paretovariate_implr;    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   rD   r   rq   r  s     r   r   zpareto_impl.<locals>._impl  s1    bii&&((As1u%))r   r	  rq   r   s     r   pareto_implr@    s!    !U[[!	*
  "r   c                     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rq   r   s     r   r   zpareto_impl.<locals>.<lambda>  s    ryy//2r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r   r   r   r   r   r   rC  rq   r   r   r   rd   s        r   r   zpareto_impl.<locals>._impl   sG    ((4.CxxHSXX "		 0 0 3 'Jr   r   rq   r   r   s      r   r@  r@    sY    422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_implrJ  )  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  r>  s     r   r   zweibull_impl.<locals>._impl9  s2    bii&&((AXXa[Lc!e,,r   r   r?  s     r   weibull_implrN  6  s*    !ekk5==12	-
  3r   c                     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   weibullrD  s     r   r   zweibull_impl2.<locals>.<lambda>D  s    ryy003r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r   r   r   r   r   r   rQ  rF  s        r   r   zweibull_impl2.<locals>._implH  sG    ((4.CxxHSXX "		 1 1! 4 'Jr   r   rG  s      r   weibull_impl2rS  A  sY    433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_implrX  Q  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   rU  r   r   rV  s     r   rX  rX  W  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   rW  srJ  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   rU  rU  ]  s    &P Lr   c                     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   rW  r   s      r   r   zvonmises_impl.<locals>.<lambda>  s    ryy'9'9"e'Dr   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   rf  )r   rW  r   r   r   rd   s         r   r   zvonmises_impl.<locals>._impl  sI    ((4.CxxHSXX "		 2 22u = 'Jr   r   )r   rW  r   r   s       r   vonmises_implrh    Y    4DD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  rD   gx0 rG         $@)rX  minr  r  r   r   )rG  r  flippedra  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   rG  r  r   s      r   binomial_implrx    s?    !U]]#
U]]+)-/	b g)-#r   c                     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)rG  r  r   s      r   r   zbinomial_impl.<locals>.<lambda>  s    "))"4"4Q":r   c                     t        j                  |t         j                        }|j                  }t	        |j
                        D ]%  }t         j                  j                  | |      ||<   ' |S r  )r   r   intpr   r   r   r   r{  )rG  r  r   r   r   rd   s         r   r   zbinomial_impl.<locals>._impl  sP    ((4rww/CxxHSXX "		 2 21a 8 'Jr   r   )rG  r  r   r   s       r   rx  rx    sY    4::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        |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 7r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r   r   r   r   r   r   r  r  r   r   r   rd   s        r   r   zchisquare_impl2.<locals>._impl  sG    ((4.CxxHSXX "		 3 3B 7 'Jr   r   r  r   r   s      r   chisquare_impl2r    sY    477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    sF    %%++u}}56:EKK/<1	: <16r   c                    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>
  s    "))++eU*Cr   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   r  )r  r  r   r   r   rd   s         r   r   zf_impl.<locals>._impl  sG    ((4.CxxHSXX "		E5 9 'Jr   r   )r  r  r   r   s       r   r  r    s    55;;67JEKK/=14CC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?rD   )rX  r  r   r   r  ceilr  )r  ra  rs  sumprodrt  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    s*    !ekk5==12	.$ ' 3r   c                     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>2      ryy2215r   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   rd   s        r   r   zgeometric_impl.<locals>._impl6  N    ((4rxx0CxxHSXX "		 3 3A 6 'Jr   r   r  r   r   s      r   r  r  /  sY    455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   rM  r   r   rt  s      r   r   zgumbel_impl.<locals>._implC  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        |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>M  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>._implQ  r   r   r   r   s       r   gumbel_impl3r  J  ri  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   rD   )r  floatrm  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  Z  sb    55;;67J5;;.=0gU]];<	  # ==07r   c                     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>u  s    II$$UD':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   rd   s          r   r   z"hypergeometric_impl.<locals>._implz  sR    ((4rww/CxxHSXX "		 8 8g N 'Jr   r   )r  r  r  r   r   s        r   r  r  r  s]    4; 	;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#6r   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        |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(Er   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  sI    ((4.CxxHSXX "		 1 1#u = 'Jr   r   r   s       r   laplace_impl3r    sY    4EE$&: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  rM  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7r   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        |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(Fr   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  sI    ((4.CxxHSXX "		 2 23 > 'Jr   r   r   s       r   logistic_impl3r    sY    4FF4'JtU^^,L0:4::;@==1J	 1J -Mr   c                     t         j                  j                         }| |t        j                  |d|z
  z        z  z   S r   rM  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]rD   rG   )rX  r  r  r   r   r  r  )r  rJ  Vrt  ra  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        |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>  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>._impl  r  r   r   r  s      r   r  r    sY    455$&: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])rX  r   r   r  poisson)rG  r  r  s      r   r   z%negative_binomial_impl.<locals>._impl  s_    Av !>??3w!c' !KLL		C!Gq=1A99$$Q''r   rv  rw  s      r   negative_binomial_implr    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>  s    299$$S)r   r    r    r   r   poisson_impl0r    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  bbcontrS  rU   rl  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   rD   rX  )lamenlamrs  r  rt  _expr  s        r   poisson_implzCpoisson_impl1.<locals>._impl.<locals>.codegen.<locals>.poisson_impl6  sd     Sy()@AAcz  #JEAD#I	5=#$HQ r   )r7   r   r  r   rM  fcmp_orderedr   r   rm   rV  r#   r$   r%   rP   r&   r)   r^   rN  rO  r   r   r  r  r  rZ   )r*   r+   r   rQ   r?   retptrr  rS  r  big_lamr.   r/   r   r  r  r  lam_preprocessors                 @@r   r   z-poisson_impl1.<locals>._impl.<locals>.codegen  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>._impl  s,    3C86,n U[[#.77r   c                      |       S r   r    r  r   s    r   r   zpoisson_impl1.<locals>.<lambda>R  s	    5:r   r   r   s    @r   poisson_impl1r    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        |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>X  s    !2!23!7r   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   rd   s        r   r   zpoisson_impl2.<locals>._impl^  sN    ((4rww/CxxHSXX "		 1 1# 6 'Jr   r   )r  r   r   s      r   poisson_impl2r  U  s    #U]]34T9J77#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 <= 0rD   r   )rX  r  powr  r   r   r  rq   s    r   r   zpower_impl.<locals>._implj  sM    Cx !23388A"))*H*H*J)J KKqD" "r   r   r?  s     r   
power_implr
  g  s*    !ekk5==12	"  3r   c                     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   powerrD  s     r   r   zpower_impl.<locals>.<lambda>v  s    ryyq1r   c                     t        j                  |      }|j                  }t        |j                        D ]$  }t         j
                  j                  |       ||<   & |S r   )r   r   r   r   r   r   r  rF  s        r   r   zpower_impl.<locals>._implz  sE    ((4.CxxHSXX "		 2 'Jr   r   rG  s      r   r
  r
  s  sY    411$&: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   )rX  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_impl1r    s+    %%++u}}56	P  7r   c                     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                     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  sG    ((4.CxxHSXX "		 2 25 9 'Jr   r   r  s      r   rayleigh_impl2r    sY    4<<$&: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_implr    s    I Lr   c                     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                     t        j                  |       }|j                  }t        |j                        D ]#  }t         j
                  j                         ||<   % |S r   )r   r   r   r   r   r   r   r   s       r   r   z#standard_cauchy_impl.<locals>._impl  r   r   r   r   s     r   standard_cauchy_implr"    sY    477$&: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Grs  s       r   r   zstandard_t_impl.<locals>._impl  sU    		))+A		((c2A		"s(#a'$))A,6AHr   r   r  s     r   standard_t_implr'    s*    "u{{EMM23	  4r   c                     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    ryy33A6r   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_t_impl2.<locals>._impl  sG    ((4.CxxHSXX "		 4 4R 8 'Jr   r   r  s      r   standard_t_impl2r,    sY    466$&: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     )rX  r   r   r   r  r  )r&  r   mu_2lr  rs  rt  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_implr1    s2    $$E5;;)G	' ! *H$r   c                     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>  s    e)Dr   c                     t        j                  |      }|j                  }t        |j                        D ]%  }t         j
                  j                  | |      ||<   ' |S r   )r   r   r   r   r   r   r4  )r&  r   r   r   r   rd   s         r   r   zwald_impl2.<locals>._impl  sG    ((4.CxxHSXX "		tU ; 'Jr   r   )r&  r   r   r   s       r   
wald_impl2r6    sY    4DD$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                 B    t        | t        j                        rd }|S y )Nc                 R   | dk  rt        d      | dz
  }d|z  }	 dt        j                  j                         z
  }t        j                  j                         }t        t	        j
                  |d|z  z              }dd|z  z   |z  }|dk\  r||z  |dz
  z  |dz
  z  ||z  k  r|S )Nr   zzipf(): a <= 1r  rD   g      )rX  r   r   r  r  r  )rq   am1rr   rt  r  rs  Ts          r   r   zzipf_impl.<locals>._impl   s    Cx !122c'Cs
A"))**,,II$$&

1#45637]s*6a!eq3w/1s7;AFH r   r	  r?  s     r   	zipf_implr;    s!    !U[[!	  "r   c                     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   zipfrD  s     r   r   zzipf_impl.<locals>.<lambda>  s    ryy~~a0r   c                     t        j                  |t         j                        }|j                  }t	        |j
                        D ]$  }t         j                  j                  |       ||<   & |S r  )r   r   r}  r   r   r   r   r>  rF  s        r   r   zzipf_impl.<locals>._impl  sL    ((4rww/CxxHSXX "		q 1 'Jr   r   rG  s      r   r;  r;    sY    400$&:dENN+K+5djj6;mm,E	 ,E ,Lr   c                     t        | t        j                        st        d      |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   rD   c                     | j                   d   dz
  }|dkD  r( |dz         }| |   | |   c| |<   | |<   |dz  }|dkD  r'y y rC   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 rC   )r  r   copyrB  s      r   r   zdo_shuffle_impl.<locals>.impl1  se    
QAa%QKWWQqT]BGGAaDM
!adQ a%r   )	r   r   Bufferr3  r   r   r  ri  ndim)r   rngr   rE  s      @r   do_shuffle_implrK    sh    a&KLL
d{yy  	vv{	 K	 Kr   c                     t        | d      S r   rK  r   s    r   shuffle_implrN  ;      1d##r   c                     t        | d      S r   rM  r   s    r   rN  rN  @  rO  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   rg   s     r   permutation_implz*permutation_impl.<locals>.permutation_implH  s&    		!AIIa Hr   c                 d    | j                         }t        j                  j                  |       |S r   )rG  r   r   rT  )r   arr_copys     r   rU  z*permutation_impl.<locals>.permutation_implM  s$    vvxHIIh'Or   )r   r   r   Array)r   rU  s     r   rU  rU  E  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_implb  s    99##D))r   len)r   r[  s     r   rE  rE  Y  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_impll  s    99,,..r   c                  @    t         j                  j                  |       S r   r   r   s    r   ra  zrandn.<locals>.randn_implq  s    99,,T22r   r]  )r   ra  s     r   randnrc  h  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 )NrD   c                     t        |       S r   r]  r	  s    r   get_source_sizezchoice.<locals>.get_source_size  s    q6Mr   c                 "    | j                         S r   )rG  r	  s    r   copy_sourcezchoice.<locals>.copy_source  s    668Or   c                     | |   S r   r    rq   a_is     r   getitemzchoice.<locals>.getitem  s    S6Mr   c                     | S r   r    r	  s    r   rf  zchoice.<locals>.get_source_size  s    Hr   c                 ,    t        j                  |       S r   )r   rS  r	  s    r   rh  zchoice.<locals>.copy_source  s    99Q<r   c                     |S r   r    rj  s     r   rl  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  )rq   r   replacerG  rC  rf  rl  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   rX  permutation)rq   r   rq  rG  r   flrC  rD  
permuted_ar   rf  rl  s            r   rr  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   rX  rI  r   r   r   r   r}  r3  r   )rq   r   rq  rh  rr  r   rf  rl  s        @@@r   choicerx  z  s     !U[[!vv{{		 
	 
	 
	 
	 
	 
Au}}	%		 
	 
	  
	  
	 
	 236 7 	7 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   rD   )r   r   r^  r   r   r   r{  )rG  pvalsr   ru  szplenrC  p_sumn_experimentsrD  p_jn_js               r   multinomial_innerz&multinomial.<locals>.multinomial_inner  s     XXXX5zq"d#A
 EM
 1dQh'Ah"$))"4"4]C%K"PPbQi$ A% ( q #01t8a< - $r   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^  rG  r{  r   r   r   r  s       r   multinomial_implz%multinomial.<locals>.multinomial_impl  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_impl  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   r3  SequencerX  r   	BaseTuple)rG  r{  r   r  r   r  s       @@r   multinomialr    s     GGE1 1< a'-.1 2 	2 eennekk:;7<? @ 	@ ejj!!	< - 
D%--	(	*  
D%//	*	  37: ; 	;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  rX  )r  r  s     r   	dirichletr  "  s+    %%..%++67	  8r   c                    t        | t        j                  t        j                  f      st	        d|       |d t        j
                  fv 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_impl6  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_implG  s,     ((43u:-/0C%%Jr   zJnp.random.dirichlet(): size should be int or tuple of ints or None, got %sr   )	r   r   r  rX  r   r   r   r   r   )r  r   r  s      r   r  r  ,  s    eennekk:;+03
 	

 ejj!!	> 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.0rD   )iterrX  r^  r   r   r   	enumerater   r   r  item)
r  r   a_vala_lenr   r   rC  normrB  ra  s
             r   r  r  X  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_implv  s    /D9.r488r   r   )r  r  r  s      r   noncentral_chisquarer  r  sG    "u{{EMM23
5;;.90	9 )(903r   c                    |d t         j                  fv 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                     t        | |       t        j                  |      }|j                  }t	        |j
                        D ]  }t        | |      ||<    |S r   )r  r   r   r   r   r   r  )r  r  r   r   r   rd   s         r   r  z7noncentral_chisquare.<locals>.noncentral_chisquare_impl  sI    0T:88D>SXchh!<R!F# (Zr   zUnp.random.noncentral_chisquare(): size should be int or tuple of ints or None, got %sr   )r   r   r   r   r   r   r   )r  r  r   r  s       r   r  r  }  sx    uzz""
: *	)
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 )NrD   r  rG   )r   isnannanr   r  r   r  r  )r  r  chi2rG  rC  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   rw  )__doc__r  r   numpyr   llvmliter   numba.core.cgutilsr   numba.core.extendingr   r   r   numba.core.imputilsr   r	   r
   numba.core.typingr   
numba.corer   r   numba.core.errorsr   registrylowerr  r   r   r   r0  rm   r%  r   r\   LiteralStructType	ArrayTypernd_state_tPointerTyper$   r0   r4   r7   r9   r@   rE   rH   rK   rS   rh   rs   r   r   r   r   r   random_samplesampleranfr   r   r4  normalvariater   r   r   r   r   r   r   r  r  r   r   getrandbitsrE  re  ri  rl  rq  rw  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  r  r!  r"  r'  r,  r0  lognormvariater5  r+  paretovariater;  rC  r@  weibullvariaterJ  rQ  rN  rS  vonmisesvariaterX  rf  rU  rh  r{  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  r  negative_binomialr  r  r  r  r  r  r
  r  r  r  r  r   r  r"  r*  r'  r,  r4  r1  r6  r>  r;  rK  rT  rN  rt  rU  rE  rc  rx  r  r  r  r  r  r  r    r   r   <module>r     sM  
     * F F6 6 ' % , L!
"**R.
"**R.#	
"++gq
! #b""BLL!
$  !"..- "117::::21.b 
&++  
"))..   
$ 
&--  
"))

	"))
!
!"	"))

	"))..   #  
"))

	"))
!
!"	"))

	"))..   #  
&,,	&

	2   	2 
"))
#
#$	"))

.  %. 
"))

6 6
 
"))

	4 	4 
"))
#
#$ % 
"))

 &$%PL" 
&

" "(CEL 
&

; ;
 
&

D D
* 
&

B B4 
&..: :
 
"))

5 5
 
"))

2 20 
"))

 ( 
"))

/ / 
&..	( 	( 
"))

	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 
"))

 " 
"))//  
"))//  
"))

+ + 
"))

  
"))

  
"))
#
#$ % 
"))
#
#$ % 
"))

   
"))

   
")).. ( 
"))..  
")).. $ 
")).. 8 
&..$ $ 
"))

$ $ 
"))

  !& 
"))..  
"))// " 
"))

P Pl 
"))

 J !J` 
"))

  
"))

( (V    2 
"))
(
()) *) 
"))
(
() *2 / /" % %r   