
    ܙd)                       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 dd
lmZ  ed          Zej        Z ej        d          Z ej        d          Zd Z ej                     Z!dZ" ej#        ee"          Z$ ej%        e ej&        ee"          ee!eg          Z' ej(        e'          Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5 eej6                  d             Z7 eej        j6                  d             Z7d Z8 eej                  d             Z9 eej        j                   eej        j:                   eej        j;                   eej        j<                  d                                                  Z= eej        j                   eej        j:                   eej        j;                   eej        j<                  d!                                                 Z> eej?                   eej@                  d"                         ZA eej        jB                   eej        jC                  d#                         ZD eej        jC                  d$             ZE eej        jC                  d%             ZF eej        jB                  d&             ZG eej        jC                  d'             ZHd( ZId) ZJd* ZK eejL                  d+             ZMd, ZN eejO                  d-             ZP eejO                  d.             ZQd/ ZR eejO                  d0             ZS eejT                  d1             ZU eej        jT                  d2             ZV eej        jT                  d3             ZW eej        jT                  d4             ZX eejY                  d5             ZZ eej        jY                  d6             Z[ eejY                  d7             Z\ eej        jY                  d8             Z] eejY                  d9             Z^ eej        jY                  d:             Z_d; Z` eej        jY                  d<             Za eejb                  d=             Zc eejb                  d>             Zd eej        jb                  d?             Zd eej        jb                  d@             Ze eejf                  dA             Zg eej        jh                   eej        ji                  dB                         Zg eej        ji                  dC             ZgdD Zj eej        ji                  dE             Zk eej        jh                  dF             Zl eejm                  dG             Zn eej        jo                  dH             ZndI Zp eej        jo                  dJ             Zq eejr                  dK             Zs eej        jt                  dL             Zu eej        jt                  dM             Zu eej        jv                   eej        jt                  dN                         Zu eej        jv                  dO             Zw eej        jx                  dP             Zy eej        jx                  dQ             Zz eej        jx                  dR             Z{ eej        jx                  dS             Z| eej}                  dT             Z~dU Z eej                  dV             Z eej        j                  dW             Z eej        j                  dX             Z eej                  dY             Z eej        j                  dZ             Z eej        j                  d[             Z eej                  d\             Z eej        j                  d]             Zd^ 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        j                  df             Z eej        j                  dg             Z eej        j                  dh             Z eej        j                  di             Z eej        j                  dj             Z eej        j                  dk             Z eej        j                  dl             Z eej        j                  dm             Z eej        j                  dn             Z eej        j                  do             Zdp Z eej        j                  dq             Z eej        j                  dr             Z eej        j                  ds             Z eej        j                  dt             Zdu Zdv Z eej        j                  dw             Z eej        j                  dx             Z eej        j                  dy             Z eej        j                  dz             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             Zd Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Zd Z eej                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  d             Z eej        j                  dd            Z eej        j                  dd            Z eej        j                  d             Z eej        j                  dd            Zed             Z eej        j                  d             Z eej        j                  dd            Zed             Zed             ZdS )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)arrayobj)NumbaTypeError
randomimpl    @   c                 6    t          j        t          |           S N)r   Constantint32_t)xs    8lib/python3.11/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                            d           |j                            d           |                    |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   4   s     ++++++d2I??B//D		'i	H	HB Mj!!!M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   E        '40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   K   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   Q   s     ':666r   c                 0    t          j        | |dd          S Nr   r   gep_inboundsr+   	state_ptrs     r   get_index_ptrr@   X       Aq999r   c                 0    t          j        | |dd          S Nr      r<   r>   s     r   get_array_ptrrE   [   rA   r   c                 0    t          j        | |dd          S )Nr      r<   r>   s     r   get_has_gauss_ptrrH   ^   rA   r   c                 0    t          j        | |dd          S )Nr      r<   r>   s     r   get_gauss_ptrrK   a   rA   r   c                     t          j        t          j                    t          f          }t	          j        | j        j        |d          }|j        d         	                    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   d   s\     ?2;==?*<==D		'(8(?(;
= 
=BGAJ[)))Ir   c                    t          ||          }|                    |          }|                    d|t                    }t	          j        ||          5  t          |          }|                    ||f           |                    t          d          |           ddd           n# 1 swxY w Y   |                    |          }t          ||          }|                    t	          j        ||d|                    }|                    |t          d                    }|                    ||           |                    ||                    |t          d                              }|                    ||                    |                    |t          d                    t          d                              }|                    ||                    |                    |t          d                    t          d	                              }|                    ||                    |t          d
                              }|S )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   o   s0    7I..F
,,v

C**4g>>N		Wn	5	5 , ,W%%R)&&&illF+++, , , , , , , , , , , , , , , ,,v

Cgy11IW)'9aEEFFA
++c9Q<<
(
(CMM#vAw||Ay}}5566AAw||GKK9Q<<$@$@$-j$9$9; ; 	< 	<AAw||GKK9R==$A$A$-j$9$9; ; 	< 	<AAw||Ay}}5566AHs   A
B--B14B1c                    |                     t          | ||          t          d                    }|                     t          | ||          t          d                    }|                    |t                    }|                    |t                    }|                    |                    ||                    |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,,OOA^GWi@@)A,,OOA 	q&!!Aq&!!A<<QQFJ(G(GHHII
F.//1 1 1r   c                     t          j        |j        d           fd}t          j        t          j        t
          d                    }                    d|          }                    |          5 \  }}	|5   ||          }
                    	                    |
t
                    |           ddd           n# 1 swxY w Y   |	5  r |
                    |                    }t                     }
s |
                    |                    }                    	                    |
t
                                        	                    |t
                    t          j        t
          d                              }                    ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y                       |          S )z2
    Get the next integer with width *nbits*.
    r   c                 
                        |           }t                    }| j        j        |j        j        k     r                    ||j                  }n5| j        j        |j        j        k    r                    ||j                  }rY                    t          j        |j        d                    }	                    ||          }
                    ||          S 	                    ||          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7 :afl**LL//EEZ,,MM%00E 	*<<AFA 6 67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    +ej"
%
%C* * * * * * * * *& 
#GR[!-D-D
E
EC""444F		 	  &$6Wg 	; 	;!/%((CMM',,sG44c:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;  	& 	& @&w{{5#'>'>?? '9==C @&w{{5#'>'>??KKS'**GLLw77K446 67 7E MM%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&	& & & & & & & & & & & & & & && <<s[   G;CGC	GC	GCG:GG
	
GG
	GG!$G!c                 X    t          | t          j                  rt          d          S d S Nr   
isinstancer   Integer
_seed_implseeds    r   	seed_implr      .    $&&  $   r   c                 X    t          | t          j                  rt          d          S d S Nr   r   r   s    r   r   r      r   r   c                 4     t            fd            fdS )Nc                 Z    fd}t          t          j        t          j                  |fS )Nc                 >   |\  }t          j        t          j                    t          t          f          }t          j        |j        j        |d          }|	                    |t          | |          |f           |                     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MMD/0@0G0@B BBLLmGWjII(* + + +''
D999r   )r   r   voiduint32)typingcontextr   r   r   s      r   _implz_seed_impl.<locals>._impl   s7    	: 	: 	: 	: 	: U\2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      s8    	< 	< 	< 	< Y	< $####r   c                  .     t           d               fdS )Nc                 >    d }t          t          j                  |fS )Nc                 F    t          | |d          }t          | ||          S r   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>       5577 r   r   r   s   @r   random_implr      s*    0 0 Y0
 ???r   c                  .     t           d               fdS )Nc                 >    d }t          t          j                  |fS )Nc                 F    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 Y1
 ???r   c                     t          |           rd S t          | t          j                  s9t          | t          j                  r$t          | j        t          j                  rd }|S d S d S )Nc                 >    t           j                                        S r   r   randomsizes    r   r   zrandom_impl1.<locals>.<lambda>  s    BI,,.. r   c                     t          j        |           }|j        }t          |j                  D ]#}t           j                                        ||<   $|S r   )r   emptyflatranger   r   r   outout_flatrd   s       r   r   zrandom_impl1.<locals>._impl  sK    (4..CxHSX 3 3 "	 0 0 2 2Jr   r   r   r   r   UniTupledtyper   r   s     r   random_impl1r      s    
 4 /...$&& 	:dEN+K+K 	/9$*:?-0I 0I		 	 	 	 	 	 	r   c                     t          | t          j        t          j        f          r;t          |t          j        t          j        f          rt          d             fdS d S d S )Nc                     t          |          }t          |          }t          t          j        ||          t	          d||          fS r   _double_preprocessorr   r   r   _gauss_implr   locscaleloc_preprocessorscale_preprocessors        r   r   zgauss_impl.<locals>._impl  L    3C88!5e!<!<U]C77t%57IJJK Kr   c                      | |          S r   r    r   r   r   s     r   r   zgauss_impl.<locals>.<lambda>      %%U"3"3 r   r   r   Floatr   r   r   s     @r   
gauss_implr     s     #U]344 4EK/:1 :1 4		K 	K 
	K
 433334 4 4 4r   c                      d S )Nc                  B    t           j                            dd          S N              ?r   r   normalr    r   r   r   z np_gauss_impl0.<locals>.<lambda>   s    29##C-- r   r    r    r   r   np_gauss_impl0r     s     .--r   c                 X    t          | t          j        t          j        f          rd S d S )Nc                 B    t           j                            | d          S Nr   r   r   s    r   r   z np_gauss_impl1.<locals>.<lambda>&  s    29++C55 r   r   r   r   r   r   s    r   np_gauss_impl1r   #  s0    #U]344 65556 6r   c                     t          | t          j        t          j        f          r;t          |t          j        t          j        f          rt          d             fdS d S d S )Nc                     t          |          }t          |          }t          t          j        ||          t	          d||          fS r   r   r   s        r   r   znp_gauss_impl2.<locals>._impl-  r   r   c                      | |          S r   r    r   s     r   r   z np_gauss_impl2.<locals>.<lambda>3  r   r   r   r   s     @r   np_gauss_impl2r   )  s~    #U]344 4EK/:1 :1 4		K 	K 
	K
 433334 4 4 4r   c                     t          |           rd S t          | t          j                  s9t          | t          j                  r$t          | j        t          j                  rd }|S d S d S )Nc                 >    t           j                                        S r   r   r   standard_normalr   s    r   r   z'standard_normal_impl1.<locals>.<lambda>9      BI5577 r   c                     t          j        |           }|j        }t          |j                  D ]#}t           j                                        ||<   $|S r   )r   r   r   r   r   r   r   r   s       r   r   z$standard_normal_impl1.<locals>._impl=  K    (4..CxHSX < < "	 9 9 ; ;Jr   r   r   s     r   standard_normal_impl1r   6  s    4 8777$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	r   c                    t          | t          j        t          j        f          r8t          |t          j        t          j        f          rt	          |          rd S t          | t          j        t          j        f          r~t          |t          j        t          j        f          rZt          |t          j                  s9t          |t          j                  r(t          |j        t          j                  rd }|S d S d S d S d S )Nc                 B    t           j                            | |          S r   r   r   r   r   s      r   r   z np_gauss_impl3.<locals>.<lambda>K      	(8(8e(D(D r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r   r   r   r   r   r   rd   s         r   r   znp_gauss_impl3.<locals>._implQ  O    (4..CxHSX = = "	 0 0e < <Jr   r   r   r   r   r   r   r   r   r   r   r   s       r   np_gauss_impl3r  F  s   3em455 E*EK/;1 ;1 E4E EDD3em455 *EK/;1 ;1 4'',6tU^,L,L 1;4:;@=1J 1J
	 	 	        r   c                       fd}|S )Nc                      	 d             z  dz
  } d             z  dz
  }| | z  ||z  z   }|dk     r|dk    rn9t          j        dt          j        |          z  |z            }|| z  ||z  fS )zG
        Compute a pair of numbers on the normal distribution.
        T       @r   r          )mathsqrtlog)x1x2r2f_randoms       r   compute_gauss_pairz,_gauss_pair_impl.<locals>.compute_gauss_pair[  s    	wwyy3&Bwwyy3&BBBBCxxB#II	 IdTXb\\)B.//2vq2v~r   r    )r  r  s   ` r   _gauss_pair_implr  Z  s$         r   c                       fd}|S )Nc                    |j         }|                     |          }t          j        t          j        j        d         }t	          | |          }t          j        ||d          }t          ||          }	t          ||          }
t          j	        ||
                    |
                    }|                    |          5 \  }}|5  |                    |
                    |	          |           |                    t          d          |
           d d d            n# 1 swxY w Y   |5  |                     |t          |          t!          t#          j        |d                    d          }t          j        ||d          \  }}|                    ||	           |                    ||           |                    t          d          |
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |\  }}|                     ||          |                     ||          |
                    |                              S )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secondmusigmar   r   states                      r   r   z_gauss_impl.<locals>._implm  s   _$$R(()+ ++02 "'7E::	!'4h???!'955	)'9==OGW\\--H-HII	__Y'' 	;+<D) ; ;gll955s;;;illM:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  ; ; //0@0I0I09%.Q:O:O0P0P024 4
 !( 4WdA F FveY///fc***illM:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;$ 	E||,,Wb99#LL););GU)K)K)0c):):< <= = 	=s\   HAD&H&D*	*H-D*	.H3B.G-!H-G1	1H4G1	5HHHr    )r'  r   r   r   s   ``` r   r   r   l  s0    #= #= #= #= #= #= #=H Lr   c                    t           j                                        t          | t          j                  r| j        rfdS fdS t          | t          j                  r| j        dk    rfdS d S t          d| z            )Nc                 0    |                      |          S r   )sitofpr+   vr  s     r   r   z&_double_preprocessor.<locals>.<lambda>      gnnQ&;&; r   c                 0    |                      |          S r   )rl   r+  s     r   r   z&_double_preprocessor.<locals>.<lambda>  r-  r   r   c                 0    |                      |          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    q r   z(Cannot convert {} to floating point type)	r   r   
DoubleTyper   r   signedr   bitwidth	TypeError)valuer  s    @r   r   r     s    					B%'' L< 	<;;;;;;;;;;	E5;	'	' L>R:::::(((BUJKKKr   c                 f    t          | t          j                  rt          d             fdS d S )Nc                 @    d }t          t          j        |          |fS )Nc                    |\  }|                     d|t          d                    }|                     d|t          d                    }t          j        ||                    ||                    5  d}| j                            |t          |f           d d d            n# 1 swxY w Y   t          | |d          }t          | |||d          S )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M	#11$y||LL	('++i>G3I 3I J J > ><C%55g}7:f> > >> > > > > > > > > > > > > > >
 *'7DAA	#GWiNNNs   6%B''B+.B+)r   r   uint64)r   kr   s      r   r   zgetrandbits_impl.<locals>._impl  s-    O O O U\1--w66r   c                      |           S r   r    rE  r   s    r   r   z"getrandbits_impl.<locals>.<lambda>  s    q r   )r   r   r   r   rG  s    @r   getrandbits_implrH    sK    !U]## "		7 	7 
	7 "!!!!!" "r   c                 j    t                     t          j        d          }t          j        d          }	t          j        d          }
                                        ||          |
                                                   d||                    5  	                    	                    
                    |
          |          |	          }                    ||                              |
           d d d            n# 1 swxY w Y                                           d||	                    5                      	                    
                    |
          |          |	          }                    ||                              |
           d d d            n# 1 swxY w Y   
                    |
          t          j                            d|                    5  d} j                            t          |f           d d d            n# 1 swxY w Y   t          j        t          j        j        g          }t          j        j        j        |d	z            }d
k    r                    |	          n}                                        ||t          j        g          t0                                        t          j        t0          j                            t          j        d           fd}d
k    r                                        d|	                    5 \  }}|5                      |           d d d            n# 1 swxY w Y   |5   |             d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n
 |             	                    |                    
                              |                    S )Nr   rD   nr  <>r   zempty range for randrange()zllvm.ctlz.%sr   rc                                          d          }                      d          }                    |                                |            t          
	dk              }                    |          }                    d|          }                    || |                               |                               |           d S )Nwhilez	while.endr   rU   )append_basic_blockbranchposition_at_endr   rz   icmp_signedcbranchr^   )bbwhilebbendrM  rA  r+   r*   rJ  r|   rptrr'  r?   r  s       r   get_numz _randrange_impl.<locals>.get_num  s    ,,W55**;77w((('9eUd]KKMM!R  ''a33		7E222&&&ar   r<  )r0   r   r   r   r  r^   rv   if_thenrS  r(   rZ   sdivr]   r>  r?  
ValueErrorr#   true_bitrw   r%   rP   r&   rz   r)   r   rx   r   mul)r*   r+   startstopstepr  r4  r'  zeroonenptrwrC  r.   r/   nm1rX  is_one
is_not_onerJ  r|   rW  r?   s   ``   ` `           @@@@r   _randrange_implrh    sl   gw66I;r1D
+b!

Cw555D MM'++dE**D111	,,S$==	>	>  KKGLL$6$6==sCCLLD!!a	              
 
,,S$<<	=	=  KKGLL$6$6==sCCLLD!!a	               	TA		Wg&9&9$4&H&H	I	I G G+))':vFFFG G G G G G G G G G G G G G G
 ?2G$4$9:;;D		'(8(?(6(;
= 
=B "'$'++a


ACMM',,rC1A+BCCWMMEKKGRX66>>Ew555D            }}__W00q#>>?? 	CWFJ * *dD)))* * * * * * * * * * * * * * *  			              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 				;;ugkk',,t*<*<dCCDDDs   /A*D%%D),D)A*GGG%III>O"N'O"'N+	+O".N+	/O"4O?O"O	O"O	O""O&)O&c                 @    t          | t          j                  rd S d S )Nc                 .    t          j        d| d          S rC   r   	randranger_  s    r   r   z"randrange_impl_1.<locals>.<lambda>  s    F,Qa88 r   r   r   r   rm  s    r   randrange_impl_1ro     s)    $&& 98889 9r   c                 x    t          | t          j                  rt          |t          j                  rd S d S d S )Nc                 .    t          j        | |d          S NrD   rk  r^  r_  s     r   r   z"randrange_impl_2.<locals>.<lambda>	  s    6#3E4#C#C r   rn  rs  s     r   randrange_impl_2rt    sL    %'' DJtU],K,K DCCCD D D Dr   c                 p    |j         | k    r)|j        rt          j        j        nt          j        j        S d S )Nc                     |S r   r    )r2  r,  _tys      r   r   z)_randrange_preprocessor.<locals>.<lambda>  s     r   )r5  r4  r   	IRBuildersextry   )r5  r  s     r   _randrange_preprocessorrz    s;    	{h%'Y '!!\&	( *))r   c                 8  	
 t          | t          j                  rt          |t          j                  rt          |t          j                  rt          | j        |j        |j                  t          | j        |j        |j                  }t          j                            |          t          j        |          t          ||           t          ||          
t          ||          	t          	
fd            fdS d S d S d S )Nc                 >    	
fd}t          |||          |fS )Nc           
          |\  }}} 	||          } ||          } 
||          }t          | ||||d          S r   )rh  )r*   r+   r   rQ   r^  r_  r`  	llvm_typer4  start_preprocessorstep_preprocessorstop_preprocessors          r   r   z0randrange_impl_3.<locals>._impl.<locals>.codegen#  sq    $(!tT**7E9EE(($	BB(($	BB&wd'0&$@ @ @r   r   )r   r^  r_  r`  r   int_tyr~  r4  r  r  r  s        r   r   zrandrange_impl_3.<locals>._impl!  sT    @ @ @ @ @ @ @ @ @ VUD$77@@r   c                      | ||          S r   r    )r^  r_  r`  r   s      r   r   z"randrange_impl_3.<locals>.<lambda>,  s    udD)A)A r   r   r   r   maxr4  r5  from_bitwidthr   IntTyperz  r   )r^  r_  r`  r5  r   r  r~  r4  r  r  r  s       @@@@@@@r   randrange_impl_3r    sG   5%-(( BZem-L-L B$&&BU\4;<<u~t}dmDD,,Xv>>Jx((	4XuEE3HdCC3HdCC			A 		A 		A 		A 		A 		A 		A 		A 		A 
		A BAAAA-B B B B B Br   c                 x    t          | t          j                  rt          |t          j                  rd S d S d S )Nc                 4    t          j        | |dz   d          S rr  rk  rs  s     r   r   z randint_impl_1.<locals>.<lambda>2  s    6#3E4!8Q#G#G r   rn  rs  s     r   randint_impl_1r  /  sL    %'' HJtU],K,K HGGGH H H Hr   c                 @    t          | t          j                  rd S d S )Nc                 B    t           j                            d|           S r;   r   r   randintr   s    r   r   z#np_randint_impl_1.<locals>.<lambda>8  s    BI--a66 r   rn  r  s    r   np_randint_impl_1r  5  s)    $&& 76667 7r   c                    t          | t          j                  rt          |t          j                  rt          | j        |j                  t          | j        |j                  }t          j                            |          t          j        |          t          ||           t          ||          t          fd            fdS d S d S )Nc                 :    fd}t          ||          |fS )Nc           
          |\  }} 	||          } 
||          }t          j        d          }t          | ||||d          S )NrD   r   )r   r   rh  )r*   r+   r   rQ   r^  r_  r`  r~  r4  r  r  s          r   r   z1np_randint_impl_2.<locals>._impl.<locals>.codegenH  sk    "t**7E9EE(($	BB{9a00&wd'0&$@ @ @r   r   )	r   r   r   r   r  r~  r4  r  r  s	       r   r   z np_randint_impl_2.<locals>._implF  sL    @ @ @ @ @ @ @ @ VS$//88r   c                      | |          S r   r    r   r   r   s     r   r   z#np_randint_impl_2.<locals>.<lambda>Q      sD!1!1 r   r  )	r   r   r5  r   r  r~  r4  r  r  s	      @@@@@@r   np_randint_impl_2r  ;  s    #u}%% 2*T5=*I*I 2SZ--s|T]33,,Xv>>Jx((	4XsCC3HdCC			9 		9 		9 		9 		9 		9 		9 		9 
		9 21111)2 2 2 2r   c                     t          | t          j                  r,t          |t          j                  rt          |          rd S t          | t          j                  rt          |t          j                  rt          |t          j                  s9t          |t          j                  r\t          |j        t          j                  r?t          | j        |j                  }t          t          d|           fd}|S d S d S d S d S )Nc                 B    t           j                            | |          S r   r  r   r   r   s      r   r   z#np_randint_impl_3.<locals>.<lambda>X      ry'8'8d'C'C r   intc                     t          j        |          }|j        }t          |j                  D ]%}t           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>._impl`  sW    (4{333CxHSX = = "	 1 1#t < <Jr   )
r   r   r   r   r   r   r  r5  getattrr   )r   r   r   r5  r   r  s        @r   np_randint_impl_3r  T  s'   3&& D:dEM+J+J D4DCCC3&& :dEM+J+J 4'',6tU^,L,L0:4:;@=1J 1J s|T]33b"2"2"233	 	 	 	 	        r   c                      d S )Nc                  ,    t          j        dd          S r   r   uniformr    r   r   r   zuniform_impl0.<locals>.<lambda>k  s    6>#s++ r   r    r    r   r   uniform_impl0r  i  s    +++r   c                      d S )Nc                  B    t           j                            dd          S r   r   r   r  r    r   r   r   z"np_uniform_impl0.<locals>.<lambda>p      29$$S#.. r   r    r    r   r   np_uniform_impl0r  n      ...r   c                 X    t          | t          j        t          j        f          rd S d S )Nc                 ,    t          j        | d          S r   r  r   s    r   r   zuniform_impl1.<locals>.<lambda>v  s    6>#s33 r   r   r  s    r   uniform_impl1r  s  s0    #U]344 43334 4r   c                 X    t          | t          j        t          j        f          rd S d S )Nc                 B    t           j                            | d          S r   r  r  s    r   r   z"np_uniform_impl1.<locals>.<lambda>|      29,,S#66 r   r   r  s    r   np_uniform_impl1r  y  0    #U]344 76667 7r   c                     t          | t          j        t          j        f          r;t          |t          j        t          j        f          rt          d             fdS d S d S )Nc                     t          |          }t          |          }t          t          j        ||          t	          d||          fS r   r   r   r   r   uniform_implr   r   r   low_preprocessorhigh_preprocessors        r   r   zuniform_impl2.<locals>._impl  N    3C88 4T : :U]C66&(99; 9; ; ;r   c                      | |          S r   r    r  s     r   r   zuniform_impl2.<locals>.<lambda>  r  r   r   r  s     @r   uniform_impl2r    {    #U]344 25;.:0 :0 2		; 	; 
	;
 211112 2 2 2r   c                     t          | t          j        t          j        f          r;t          |t          j        t          j        f          rt          d             fdS d S d S )Nc                     t          |          }t          |          }t          t          j        ||          t	          d||          fS r   r  r  s        r   r   znp_uniform_impl2.<locals>._impl  r  r   c                      | |          S r   r    r  s     r   r   z"np_uniform_impl2.<locals>.<lambda>  r  r   r   r  s     @r   np_uniform_impl2r    r  r   c                       fd}|S )Nc                    t          | |          }|\  }} 	||          } 
||          }|                    ||          }t          | ||          }|                    ||                    ||                    S r   )r0   fsubrs   ro   rp   )r*   r+   r   rQ   r?   rq   rr   rx   rM  a_preprocessorb_preprocessorr'  s            r   implzuniform_impl.<locals>.impl  s    !'7E::	1N7A&&N7A&&Q""GWi88||Aw||E155666r   r    )r'  r  r  r  s   ``` r   r  r    s/    7 7 7 7 7 7 7 Kr   c                    t          | t          j        t          j        f          r8t          |t          j        t          j        f          rt	          |          rd S t          | t          j        t          j        f          r~t          |t          j        t          j        f          rZt          |t          j                  s9t          |t          j                  r(t          |j        t          j                  rd }|S d S d S d S d S )Nc                 B    t           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                            | |          ||<   &|S r   )r   r   r   r   r   r   r  )r   r   r   r   r   rd   s         r   r   znp_uniform_impl3.<locals>._impl  sO    (4..CxHSX = = "	 1 1#t < <Jr   r   )r   r   r   r   s       r   np_uniform_impl3r    s   3em455 D*5;.;0 ;0 D4D DCC3em455 *5;.;0 ;0 4'',6tU^,L,L 1;4:;@=1J 1J
	 	 	        r   c                     d }t          | t          j        t          j        f          r(t          |t          j        t          j        f          r|S d S d S )Nc                     t          j                     }d}||k    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  sO    MOOq55aAcCdSjDIa!e$4$4444r   r   r  s      r   triangular_impl_2r    sf    5 5 5 #U]344 5;.:0 :0    r   c                     t          | t          j        t          j        f          rQt          |t          j        t          j        f          r-t          |t          j        t          j        f          r	d }|S d S d S d S )Nc                     || k    r| S t          j                     }|| z
  || z
  z  }||k    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  ss    s{{
As
+A1uu!G!G #T$*	!a%(8(8888r   r   )r   r   r  r   s       r   triangular_impl_3r    s    3em455 *5;.;0 ;0 $em455		9 		9 		9      r   c                     t          | t          j        t          j        f          rQt          |t          j        t          j        f          r-t          |t          j        t          j        f          r	d }|S d S d S d S )Nc                     || k    r| S t           j                                        }|| z
  || z
  z  }||k    rd|z
  }d|z
  }|| }} | || z
  t          j        ||z            z  z   S r   )r   r   r  r  )r   r  r   r  r  s        r   r   z triangular_impl_3.<locals>._impl  s{    s{{
	  ""As
+A1uu!G!G #T$*	!a%(8(8888r   r   )r   r  r   r   s       r   r  r    s    3em455 *5;.;0 ;0 tek5=9::		9 		9 		9      r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 D    t           j                            | ||          S r   )r   r   
triangular)r   r   r  r   s       r   r   z!triangular_impl.<locals>.<lambda>  s!    RY-A-A#tBF.H .H r   c                     t          j        |          }|j        }t          |j                  D ]&}t           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  sS    (4..CxHSX F F "	 4 4S$ E EJr   r   )r   r   r  r   r   s        r   triangular_implr    s    4 HH H 	H4'' 	JtU^,L,L 	,6tz7<}-F -F		 	 	 	 	 	 	r   c                     t          | t          j        t          j        f          r?t          |t          j        t          j        f          rt	          t
          j                  S d S d S r   )r   r   r   r   _gammavariate_implr   alphabetas     r   gammavariate_implr    s`    %%+u}566 1:5;.<0 <0 1!&-0001 1 1 1r   c                 X    t          | t          j        t          j        f          rd S d S )Nc                 B    t           j                            | d          S r   r   r   gammar  s    r   r   z#gammavariate_impl.<locals>.<lambda>
  s    RY__UC88 r   r   r  s    r   r  r    s2     %%+u}566 98889 9r   c                     t          | t          j        t          j        f          rDt          |t          j        t          j        f          r t	          t
          j        j                  S d S d S r   )r   r   r   r   r  r   r   r  s     r   r  r    sc    %%+u}566 4:5;.<0 <0 4!")"23334 4 4 4r   c                       fd}|S )Nc                    dt          j        d          z   }| dk    s|dk    rt          d          | dk    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k    r||	| dz
  z  k    rnn|t          j        |	           k    rn|	|z  S )
z1Gamma distribution.  Taken from CPython.
        r   g      @r   z*gammavariate: alpha and beta must be > 0.0r  g      @rD   gHz>gP?)r  r	  r[  r  expe)r  r  SG_MAGICCONSTainvbbbcccu1u2r,  r   zrM  r  rr   pr  s                  r   r   z!_gammavariate_impl.<locals>._impl  s"    dhsmm+
 C<<43;;IJJJ3;; 9S5[3.//D$(3--'C$,C
$WYYb++++8++++7799_HRR[))$.$(1++%rE"HAIaK}$s1u,33qDHQKK7G7Gt8O
$ c\\
 HS7799_---44GIIVe^TV+aC88c%i(AA1Q3+...AWYYs77Q53;/// 048QB<<'' t8Or   r    r  r   s   ` r   r  r    s$    6 6 6 6 6n Lr   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   r  r  r  r   s      r   r   zgamma_impl.<locals>.<lambda>R  s    )E)E r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r  r  r  r   r   r   rd   s         r   r   zgamma_impl.<locals>._implV  sM    (4..CxHSX = = "	t < <Jr   r   r  r  r   r   s       r   
gamma_implr  O      4 FEEE$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   r   r   standard_gammar  r   s     r   r   z%standard_gamma_impl.<locals>.<lambda>b  s    29#;#;E#B#B r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   r  r  r   r   r   rd   s        r   r   z"standard_gamma_impl.<locals>._implf  sO    (4..CxHSX @ @ "	 8 8 ? ?Jr   r   r  r   r   s      r   standard_gamma_implr  _  s    4 CBBB4'' 	JtU^,L,L 	0:4:;@=1J 1J		 	 	 	 	 	 	r   c                     t          | t          j        t          j        f          r?t          |t          j        t          j        f          rt	          t
          j                  S d S d S r   )r   r   r   r   _betavariate_implr   gammavariater  s     r   betavariate_implr  o  sa    %%+u}566 6:5;.<0 <0 6 !45556 6 6 6r   c                     t          | t          j        t          j        f          rDt          |t          j        t          j        f          r t	          t
          j        j                  S d S d S r   )r   r   r   r   r  r   r   r  r  s     r   r  r  v  sb    %%+u}566 2:5;.<0 <0 2 1112 2 2 2r   c                       fd}|S )Nc                 P     | d          }|dk    rdS || |d          z   z  S )z0Beta distribution.  Taken from CPython.
        r   r   r    )r  r  rg   r  s      r   r   z _betavariate_impl.<locals>._impl~  s>    
 E%883EE$OO+,,r   r    )r  r   s   ` r   r  r  }  s#    	- 	- 	- 	- 	- Lr   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   )r   r   r  r  s      r   r   zbeta_impl.<locals>.<lambda>  s    t)D)D r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r  r  s         r   r   zbeta_impl.<locals>._impl  sM    (4..CxHSX < < "	ud ; ;Jr   r   r   s       r   	beta_implr        4 EDDD4'' 	JtU^,L,L 	0:4:;@=1J 1J		 	 	 	 	 	 	r   c                 D    t          | t          j                  rd }|S d S )Nc                 Z    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'     HS6=??2333e;;r   r   r   r   )r  r   s     r   expovariate_implr    s6    %%% 	< 	< 	<  r   c                 \    t          | t          j        t          j        f          rd }|S d S )Nc                 p    t          j        dt          j                                        z
             | z  S r   r  r	  r   r   )r   s    r   r   zexponential_impl.<locals>._impl  s-    HS29#3#3#5#55666>>r   r   )r   r   s     r   exponential_implr     s;    %%+u}566 	? 	? 	? r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   )r   r   exponential)r   r   s     r   r   z"exponential_impl.<locals>.<lambda>  s    29#8#8#?#? r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   r#  )r   r   r   r   rd   s        r   r   zexponential_impl.<locals>._impl  sM    (4..CxHSX = = "	 5 5e < <Jr   r   )r   r   r   s      r   r   r     s    4 @???4'' 	JtU^,L,L 	,6tz7<}-F -F		 	 	 	 	 	 	r   c                      d } | S )Nc                  j    t          j        dt          j                                        z
             S r   r  r    r   r   r   zexponential_impl.<locals>._impl  s(    ry//1112222r   r    r   s    r   r   r     s    3 3 3Lr   c                     t          |           rd S t          | t          j                  s9t          | t          j                  r$t          | j        t          j                  rd }|S d S d S )Nc                 >    t           j                                        S r   )r   r   standard_exponentialr   s    r   r   z+standard_exponential_impl.<locals>.<lambda>  s    BI::<< r   c                     t          j        |           }|j        }t          |j                  D ]#}t           j                                        ||<   $|S r   )r   r   r   r   r   r   r)  r   s       r   r   z(standard_exponential_impl.<locals>._impl  sM    (4..CxHSX A A "	 > > @ @Jr   r   r   s     r   standard_exponential_implr+    s    4 =<<<4'' 
4((
-7
8=.G .G
	 	 	 
 
 
 
r   c                      d S )Nc                  B    t           j                            dd          S r   r   r   	lognormalr    r   r   r   z$np_lognormal_impl0.<locals>.<lambda>  s    29&&sC00 r   r    r    r   r   np_lognormal_impl0r0    s    000r   c                 X    t          | t          j        t          j        f          rd S d S )Nc                 B    t           j                            | d          S r   r.  r%  s    r   r   z%np_log_normal_impl1.<locals>.<lambda>  s    ")--b#66 r   r   r3  s    r   np_log_normal_impl1r4    s0    "u{EM233 76667 7r   c                     t          | t          j        t          j        f          rDt          |t          j        t          j        f          r t	          t
          j        j                  S d S d S r   )r   r   r   r   _lognormvariate_implr   r   r   r%  r&  s     r   np_log_normal_impl2r8    sc    "u{EM233 6
EK/91 91 6#BI$45556 6 6 6r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   r.  )r%  r&  r   s      r   r   z lognormal_impl.<locals>.<lambda>  s    ry':':2u'E'E r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r/  )r%  r&  r   r   r   rd   s         r   r   zlognormal_impl.<locals>._impl  sO    (4..CxHSX ? ? "	 3 3B > >Jr   r   )r%  r&  r   r   s       r   lognormal_implr<    s    4 FEEE4'' 	JtU^,L,L 	,6tz7<}-F -F		 	 	 	 	 	 	r   c                     t          | t          j                  r3t          |t          j                  rt          t          j                  S d S d S r   )r   r   r   r6  r   gaussr7  s     r   lognormvariate_implr?    sM    "ek"" 2z%'E'E 2#FL1112 2 2 2r   c                       fdS )Nc                 @    t          j         | |                    S r   )r  r  )r%  r&  _gausss     r   r   z&_lognormvariate_impl.<locals>.<lambda>  s    TXffR&7&788 r   r    )rB  s   `r   r6  r6    s    88888r   c                 D    t          | t          j                  rd }|S d S )Nc                 D    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(     fmoo%As5y)))r   r  r  r   s     r   paretovariate_implrG    s6    %%% 	* 	* 	*  r   c                 D    t          | t          j                  rd }|S d S )Nc                 `    dt           j                                        z
  }d|d| z  z  z  dz
  S )Nr   rD   r   rE  s     r   r   zpareto_impl.<locals>._impl  s3    bi&&(((As5y))A--r   r  rF  s     r   pareto_implrJ    s6    %%% 	. 	. 	.
  r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   )r   r   paretor  s     r   r   zpareto_impl.<locals>.<lambda>"  s    29#3#3E#:#: r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   rM  r	  s        r   r   zpareto_impl.<locals>._impl&  sM    (4..CxHSX 8 8 "	 0 0 7 7Jr   r   r
  s      r   rJ  rJ        4 ;:::4'' 	JtU^,L,L 	,6tz7<}-F -F		 	 	 	 	 	 	r   c                     t          | t          j        t          j        f          r+t          |t          j        t          j        f          rd }|S d S d S )Nc                 j    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>._impl3  s2     fmoo%ATXa[[Lc$h777r   r   )r  r  r   s      r   weibullvariate_implrR  /  sf    %%+u}566 :5;.<0 <0 	8 	8 	8    r   c                 \    t          | t          j        t          j        f          rd }|S d S )Nc                 z    dt           j                                        z
  }t          j        |           d| z  z  S r   r   r   r  r	  )r  r  s     r   r   zweibull_impl.<locals>._impl?  s3    bi&&(((AXa[[Lc$h//r   r   )r  r   s     r   weibull_implrV  <  s=    $em455 	0 	0 	0
  r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   )r   r   weibull)r  r   s     r   r   zweibull_impl2.<locals>.<lambda>J  s    ")"3"3D"9"9 r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   rY  )r  r   r   r   rd   s        r   r   zweibull_impl2.<locals>._implN  sM    (4..CxHSX 8 8 "	 1 1$ 7 7Jr   r   )r  r   r   s      r   weibull_impl2r[  G  s    4 :9994'' 	JtU^,L,L 	,6tz7<}-F -F		 	 	 	 	 	 	r   c                     t          | t          j                  r3t          |t          j                  rt          t          j                  S d S d S r   )r   r   r   _vonmisesvariate_implr   r%  kappas     r   vonmisesvariate_implr`  W  sM    "ek"" 4z%'E'E 4$V]3334 4 4 4r   c                     t          | t          j                  r8t          |t          j                  r t          t          j        j                  S d S d S r   )r   r   r   r]  r   r   r^  s     r   r`  r`  ]  sP    "ek"" 7z%'E'E 7$RY%56667 7 7 7r   c                       fd}|S )Nc                 D   |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id|z  }||z   d||z  z   z  }	             }
|
dk    r(| t          j        |	          z   dt           j        z  z  }n'| 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%  r_  srM  r  r  dr  qr  u3thetar  s               r   r   z$_vonmisesvariate_impl.<locals>._impld  s3    D===7799,,%K	#A+&&&	B2&&AQUABC!a%K2#'TXa[[)@#@#@	 !GUsQU{#WYY88$)A,,&3=9EE$)A,,&3=9Er   r    r  s   ` r   r]  r]  c  s$    & & & & &P Lr   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   )r   r   vonmises)r%  r_  r   s      r   r   zvonmises_impl.<locals>.<lambda>  s    ry'9'9"e'D'D r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   rn  )r%  r_  r   r   r   rd   s         r   r   zvonmises_impl.<locals>._impl  sO    (4..CxHSX > > "	 2 22u = =Jr   r   )r%  r_  r   r   s       r   vonmises_implrp    r  r   c                     t          | t          j                  r+t          |t          j        t          j        f          rd }|S d S d S )Nc           	      N   | dk     rt          d          d|cxk    rdk    sn t          d          |dk    rdS |dk    r| S |dk    }|rd|z
  }d|z
  }d}|| z  }|dk    r|d	z  }| d	z  } || z  }| dk    sJ |dk    | |z  }t          | |d
t          j        ||z  dz             z  z             }d}|dk    rjd}	t          j                                        }
|}|	|k    r<|
|k    r||r| |	z
  n|	z  }|dz  }n$|
|z  }
|	dz  }	| |	z
  dz   |z  |z  |	|z  z  }|	|k    <|dk    j|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         $@)r[  minr  r  r   r   )rJ  r  flippedri  nitersqnnp_prodboundr   XUpxs               r   r   zbinomial_impl.<locals>._impl  s    1uu !56661OOOOOOOO !BCCCCxxqCxx#gG !GaAFaB,, 1a!V1uuuu ,, !eG7TDIgkAo,F,F%FFGGEE1**I$$&&5jjBww'!8Qq8!GAFAq519/B.1q59B 5jj	 1** Lr   r   r   r   r   rJ  r  r   s      r   binomial_implr    sa    !U]## 3
U]+)- )- 3/	 /	 /	b g3 3 3 3r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   )r   r   binomial)rJ  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                            | |          ||<   &|S r  )r   r   intpr   r   r   r   r  )rJ  r  r   r   r   rd   s         r   r   zbinomial_impl.<locals>._impl  sX    (4rw///CxHSX 9 9 "	 2 21a 8 8Jr   r   )rJ  r  r   r   s       r   r  r    rO  r   c                 \    t          | t          j        t          j        f          rd }|S d S )Nc                 L    dt           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{EM233 	< 	< 	< 	 r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   r   r   	chisquarer  r   s     r   r   z!chisquare_impl2.<locals>.<lambda>      ry22155 r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   r  r  r   r   r   rd   s        r   r   zchisquare_impl2.<locals>._impl  sM    (4..CxHSX 7 7 "	 3 3A 6 6Jr   r   r  r   r   s      r   chisquare_impl2r        4 65554'' 	JtU^,L,L 	,6tz7<}-F -F		 	 	 	 	 	 	r   c                     t          | t          j        t          j        f          r+t          |t          j        t          j        f          rd }|S d S d S )Nc                     t           j                            |           |z  t           j                            |          | z  z  S r   r  )numdenoms     r   r   zf_impl.<locals>._impl  s<    Y((--5Y((//#57 8r   r   )r  r  r   s      r   f_implr     f    #U]344 EK/:1 :1 	8 	8 	8    r   c                 v   t          | t          j        t          j        f          r8t          |t          j        t          j        f          rt	          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   )r   r   r  )r  r  r   s      r   r   zf_impl.<locals>.<lambda>  s    	C(?(? r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r  )r  r  r   r   r   rd   s         r   r   zf_impl.<locals>._impl  sM    (4..CxHSX 8 8 "	C 7 7Jr   r   )r  r  r   r   s       r   r  r    s    3em455 @*EK/;1 ;1 @4@ @??4'' 	JtU^,L,L 	0:4:;@=1J 1J		 	 	 	 	 	 	r   c                 \    t          | t          j        t          j        f          rd }|S d S )Nc                    | dk    s| dk    rt          d          d| z
  }| dk    rNt          d          }| x}}t          j                                        }||k    r||z  }||z  }|dz  }||k    |S t	          j        t	          j        dt          j                                        z
            t	          j        |          z            S )Nr   r   z geometric(): p outside of (0, 1]gUUUUUU?rD   )r[  r  r   r   r  ceilr	  )r  ri  rz  sumprodr{  s         r   r   zgeometric_impl.<locals>._impl   s    Cxx1s77 !CDDDaA...FFdI$$&&#ggAID4KCFA #gg y#	0@0@0B0B*B!C!C!%!"- . . .r   r   )r  r   s     r   geometric_implr    s=    !ek5=122 	. 	. 	.$ ' r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   )r   r   	geometricr  s     r   r   z geometric_impl.<locals>.<lambda>8  r  r   c                     t          j        |t           j                  }|j        }t	          |j                  D ]$}t           j                            |           ||<   %|S r  )r   r   int64r   r   r   r   r  r  s        r   r   zgeometric_impl.<locals>._impl<  V    (4rx000CxHSX 7 7 "	 3 3A 6 6Jr   r   r  s      r   r  r  5  r  r   c                     t          | t          j        t          j        f          r+t          |t          j        t          j        f          rd }|S d S d S )Nc                     dt           j                                        z
  }| |t          j        t          j        |                     z  z
  S r   rU  r   r   r{  s      r   r   zgumbel_impl.<locals>._implI  s>    bi&&(((A48A;;,!7!7777r   r   r   s      r   gumbel_implr  E  r  r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   )r   r   gumbelr   s      r   r   zgumbel_impl3.<locals>.<lambda>S  r   r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r  r   s         r   r   zgumbel_impl3.<locals>._implW  r   r   r   r  s       r   gumbel_impl3r  P  r  r   c                     t          | t          j        t          j        f          rQt          |t          j        t          j        f          r-t          |t          j        t          j        f          r	d }|S d S d S d S )Nc                    t          |          t          |           z   t          |          z
  }t          t          ||                     }|}t          |          }|dk    rS|dk    rM|t          j        t
          j                                        |||z   z  z             z  }|dz  }|dk    r|dk    Mt          ||z
            }| |k    rt          |          |z
  S |S )z'Numpy's algorithm for hypergeometric().r   r   rD   )r  floatrt  r  floorr   r   )ngoodnbadnsamplesd1d2YKZs           r   r   z"hypergeometric_impl.<locals>._imple  s    TSZZ'#h--7Bs4''((BAHAc''a!eeTZ	 0 0 2 2Q"q&\ ABBBQ c''a!ee BFAt||8}}q((r   r   )r  r  r  r   s       r   hypergeometric_implr  `  s    55;677 J5;.=0 =0 hem <==	 	 	  '     r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 D    t           j                            | ||          S r   )r   r   hypergeometric)r  r  r  r   s       r   r   z%hypergeometric_impl.<locals>.<lambda>{  s    I$$UD(;; r   c                     t          j        |t           j                  }|j        }t	          |j                  D ]&}t           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>._impl  s\    (4rw///CxHSX P P "	 8 8h O OJr   r   )r  r  r  r   r   s        r   r  r  x  s    4 << < 	<4'' 	JtU^,L,L 	0:4:;@=1J 1J		 	 	 	 	 	 	r   c                      d S )Nc                  B    t           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                 X    t          | t          j        t          j        f          rd S d S )Nc                 B    t           j                            | d          S r   r  r   s    r   r   zlaplace_impl1.<locals>.<lambda>  r  r   r   r   s    r   laplace_impl1r    r  r   c                     t          | t          j        t          j        f          r-t          |t          j        t          j        f          r	t          S d S d S r   )r   r   r   r   laplace_implr   r   s     r   laplace_impl2r    sV    #U]344 EK/:1 :1    r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   r  r   s      r   r   zlaplace_impl3.<locals>.<lambda>  s    	(9(9#u(E(E r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r  r   s         r   r   zlaplace_impl3.<locals>._impl  sO    (4..CxHSX > > "	 1 1#u = =Jr   r   r  s       r   laplace_impl3r    r  r   c                     t           j                                        }|dk     r| |t          j        ||z             z  z   S | |t          j        d|z
  |z
            z  z
  S )Nr  r  rU  r  s      r   r  r    s\    
	A3wwUTXa!e__,,,UTXcAgk22222r   c                      d S )Nc                  B    t           j                            dd          S r   r   r   logisticr    r   r   r   z logistic_impl0.<locals>.<lambda>  s    29%%c3// r   r    r    r   r   logistic_impl0r    s    ///r   c                 X    t          | t          j        t          j        f          rd S d S )Nc                 B    t           j                            | d          S r   r  r   s    r   r   z logistic_impl1.<locals>.<lambda>  s    29--c377 r   r   r   s    r   logistic_impl1r    s0    #U]344 87778 8r   c                     t          | t          j        t          j        f          r-t          |t          j        t          j        f          r	t          S d S d S r   )r   r   r   r   logistic_implr  s     r   logistic_impl2r    sV    #U]344 EK/:1 :1    r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   r  r   s      r   r   z logistic_impl3.<locals>.<lambda>  s    	(:(:3(F(F r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   r  r   s         r   r   zlogistic_impl3.<locals>._impl  sO    (4..CxHSX ? ? "	 2 23 > >Jr   r   r  s       r   logistic_impl3r    s    4 GFFF4'' 	JtU^,L,L 	0:4:;@=1J 1J		 	 	 	 	 	 	r   c                 ~    t           j                                        }| |t          j        |d|z
  z            z  z   S r   rU  r  s      r   r  r    s7    
	A!sQw-00000r   c                    | dk    s| dk    rt          d          t          j        d| z
            }	 t          j                                        }|| k    rdS t          j                                        }dt          j        ||z            z
  }|||z  k    r>t          j        dt          j        |          t          j        |          z  z             S ||k    rdS dS )z"Numpy's algorithm for logseries().r   r   z logseries(): p outside of (0, 1]rD   rG   )r[  r  r	  r   r   r  r  )r  rM  Vr{  ri  s        r   _logseries_implr    s    Cxx1s77;<<<qAI661I$(1q5//!A::8C$(1++";;<<<!VV11r   c                 `    t          | t          j        t          j        f          rt          S d S r   )r   r   r   r   r  )r  s    r   logseries_implr    s-    !ek5=122  r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           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                            |           ||<   %|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    s    4 6555$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	r   c                     t          | t          j                  r+t          |t          j        t          j        f          rd }|S d S d S )Nc                     | dk    rt          d          |dk     s|dk    rt          d          t          j                            | d|z
  |z            }t          j                            |          S )Nr   znegative_binomial(): n <= 0r   r   z(negative_binomial(): p outside of [0, 1])r[  r   r   r  poisson)rJ  r  r  s      r   r   z%negative_binomial_impl.<locals>._impl	  sm    Avv !>???3ww!c'' !KLLL	C!Gq=11A9$$Q'''r   r}  r~  s      r   negative_binomial_implr    s_    !U]## 

u{EM*), ), 
	( 	( 	( 
 
 
 
r   c                      d S )Nc                  @    t           j                            d          S r   r   r   r  r    r   r   r   zpoisson_impl0.<locals>.<lambda>  s    29$$S)) r   r    r    r   r   poisson_impl0r    s    )))r   c                 ~    t          | t          j        t          j        f          rt          d             fdS d S )Nc                 d    t          |          fd}t          t          j        |          |fS )Nc                    t          | |          }t          j        |t          d          }|                    d          }|                    d          }|\  } ||          }|                    d|t          j        t          d                    }	|	                    |	          5  t          j
        t          t          t          f          }
t          j        |j        j        |
d          }|                    |||f          }|                    ||           |                    |           d d d            n# 1 swxY w Y   |                    |           |                    |           t&          j        j        t*          j        fd}|                     ||||          }|                    ||           |                    |           |                    |           |                    |          S )	Nr   r  bbcontrV  rU   rs  numba_poisson_ptrsc                     | dk     rt          d          | dk    rdS  |            }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   r[  )lamenlamrz  r  r{  _expr  s        r   poisson_implzCpoisson_impl1.<locals>._impl.<locals>.codegen.<locals>.poisson_impl<  sy     Syy()@AAAczz q D#JJEAD#GII	5==#$HQr   )r7   r   r  r   rP  fcmp_orderedr   r   rm   rY  r#   r$   r%   rP   r&   r)   r^   rQ  rR  r   r   r  r  r  rZ   )r*   r+   r   rQ   r?   retptrr  rV  r  big_lamr.   r/   r   r  r   r  lam_preprocessors                 @@r   r   z-poisson_impl1.<locals>._impl.<locals>.codegen   s3   ,Wg>>	 ,WgEJJJ 33H==227;;&&w44!..tS/1{64/H/HJ J__W-- 	* 	* ?7_f4MNND 78H8O8<8LN NB ",,rIs+;<<CMM#v...NN5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* v&&&''///)*x     , ..wc4PPc6***u%%%''...||F+++s   .B
EEE)r   r   r   r  )r   r  r   r  s      @r   r   zpoisson_impl1.<locals>._impl  sD    3C886, 6, 6, 6, 6,n U[#..77r   c                      |           S r   r    r  r   s    r   r   zpoisson_impl1.<locals>.<lambda>X  s    55:: r   r   r  s    @r   poisson_impl1r    sT    #U]344 =&	:	8 :	8 
:	8v &%%%%{=& =&r   c                 z   t          | t          j        t          j        f          rt	          |          rd S t          | t          j        t          j        f          rXt          |t          j                  s9t          |t          j                  r&t          |j        t          j                  r	d }|S d S d S d S )Nc                 @    t           j                            |           S r   r  )r  r   s     r   r   zpoisson_impl2.<locals>.<lambda>^  s    !2!23!7!7 r   c                     t          j        |t           j                  }|j        }t	          |j                  D ]$}t           j                            |           ||<   %|S r  )r   r   r  r   r   r   r   r  )r  r   r   r   rd   s        r   r   zpoisson_impl2.<locals>._impld  sV    (4rw///CxHSX 7 7 "	 1 1# 6 6Jr   r   )r  r   r   s      r   poisson_impl2r  [  s    #U]344 8T9J9J 8777#U]344 tU]++4((-7
8=.G .G
	 	 	      r   c                 \    t          | t          j        t          j        f          rd }|S d S )Nc                     | dk    rt          d          t          j        dt          j        t          j                                                   z
  d| z            S )Nr   zpower(): a <= 0rD   r   )r[  r  powr  r   r   r)  rq   s    r   r   zpower_impl.<locals>._implp  sW    Cxx !23338A")*H*H*J*J)J K KKqD" " "r   r   rq   r   s     r   
power_implr  m  s=    !ek5=122 	" 	" 	"  r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   )r   r   powerrq   r   s     r   r   zpower_impl.<locals>.<lambda>|  s    ryq11 r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   r  rq   r   r   r   rd   s        r   r   zpower_impl.<locals>._impl  sK    (4..CxHSX 3 3 "	 2 2Jr   r   rq   r   r   s      r   r  r  y  s    4 2111$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	r   c                      d S )Nc                  @    t           j                            d          S r   r   r   rayleighr    r   r   r   z rayleigh_impl0.<locals>.<lambda>  s    29%%c** r   r    r    r   r   rayleigh_impl0r    s    ***r   c                 `    t          | t          j        t          j        f          rt          S d S r   )r   r   r   r   rayleigh_implr  s    r   rayleigh_impl1r"    s-    $em455  r   c           	          | dk    rt          d          | t          j        dt          j        dt          j                                        z
            z            z  S )Nr   zrayleigh(): mode <= 0r  r   )r[  r  r  r	  r   r   r!  s    r   r   r     sQ    s{{0111$)D48C")2B2B2D2D,D#E#EEFFFFr   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   r  )r  r   s     r   r   z rayleigh_impl2.<locals>.<lambda>  s    ")"4"4T":": r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   r  )r  r   r   r   rd   s        r   r   zrayleigh_impl2.<locals>._impl  sM    (4..CxHSX 9 9 "	 2 24 8 8Jr   r   )r  r   r   s      r   rayleigh_impl2r'    s    4 ;:::$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	r   c                      d } | S )Nc                  |    t           j                                        t           j                                        z  S r   r   r    r   r   r   zcauchy_impl.<locals>._impl  s)    y((**RY-F-F-H-HHHr   r    r   s    r   cauchy_implr*    s    I I I Lr   c                     t          |           rd S t          | t          j                  s9t          | t          j                  r$t          | j        t          j                  rd }|S d S d S )Nc                 >    t           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                                        ||<   $|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/    s    4 8777$&& 	:dEN+K+K 	/9$*:?-0I 0I		 	 	 	 	 	 	r   c                 \    t          | t          j        t          j        f          rd }|S d S )Nc                     t           j                                        }t           j                            | dz            }t	          j        | dz            |z  t	          j        |          z  }|S r  )r   r   r   r  r  r  )r  NGrz  s       r   r   zstandard_t_impl.<locals>._impl  sX    	))++A	((c22A	"s(##a'$)A,,6AHr   r   r  s     r   standard_t_implr4    s=    "u{EM233 	 	 	  r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   )r   r   
standard_tr  s     r   r   z"standard_t_impl2.<locals>.<lambda>  s    ry33A66 r   c                     t          j        |          }|j        }t          |j                  D ]$}t           j                            |           ||<   %|S r   )r   r   r   r   r   r   r7  )r  r   r   r   rd   s        r   r   zstandard_t_impl2.<locals>._impl  sM    (4..CxHSX 9 9 "	 4 4R 8 8Jr   r   )r  r   r   s      r   standard_t_impl2r9    s    4 7666$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	r   c                 |    t          | t          j                  rt          |t          j                  rd }|S d S d S )Nc                 l   | dk    rt          d          |dk    rt          d          | d|z  z  }t          j                                        }| |z  |z  }| ||t	          j        d|z  |z  ||z  z             z
  z  z   }t          j                                        }|| | |z   z  k    r|S | | z  |z  S )Nr   zwald(): mean <= 0zwald(): scale <= 0r     )r[  r   r   r   r  r  )meanr   mu_2lr  rz  r{  s         r   r   zwald_impl.<locals>._impl  s    s{{ !4555|| !5666C%K(E	))++Aq1AuDIa%i!ma!e.C$D$D DEEA	  ""ADD1H%%%d{Q&r   r  )r=  r   r   s      r   	wald_implr?    sS    $$$ E5;)G)G 	' 	' 	' !   r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 B    t           j                            | |          S r   )r   r   wald)r=  r   r   s      r   r   zwald_impl2.<locals>.<lambda>  s    e)D)D r   c                     t          j        |          }|j        }t          |j                  D ]%}t           j                            | |          ||<   &|S r   )r   r   r   r   r   r   rB  )r=  r   r   r   r   rd   s         r   r   zwald_impl2.<locals>._impl  sM    (4..CxHSX < < "	tU ; ;Jr   r   )r=  r   r   r   s       r   
wald_impl2rD    s    4 EDDD$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	r   c                 D    t          | t          j                  rd }|S d S )Nc                 f   | dk    rt          d          | dz
  }d|z  }	 dt          j                                        z
  }t          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      )r[  r   r   r  r  r  )rq   am1rr   r{  r  rz  Ts          r   r   zzipf_impl.<locals>._impl  s    Cxx !1222c'Cs
A")**,,,I$$&&
1#4556637]s*66a!eq3w/1s7;AFFHr   r  r  s     r   	zipf_implrI    s6    !U[!! 	 	 	  r   c                     t          |          rd S t          |t          j                  s9t          |t          j                  r$t          |j        t          j                  rd }|S d S d S )Nc                 @    t           j                            |           S r   )r   r   zipfr  s     r   r   zzipf_impl.<locals>.<lambda>  s    ry~~a00 r   c                     t          j        |t           j                  }|j        }t	          |j                  D ]$}t           j                            |           ||<   %|S r  )r   r   r  r   r   r   r   rL  r  s        r   r   zzipf_impl.<locals>._impl  sT    (4rw///CxHSX 2 2 "	q 1 1Jr   r   r  s      r   rI  rI    s    4 1000$&& 	:dEN+K+K 	+5dj6;m,E ,E		 	 	 	 	 	 	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}nfd}|S )Nz1The argument to shuffle() should be a buffer typer   r   rD   c                     | j         d         dz
  }|dk    r2 |dz             }| |         | |         c| |<   | |<   |dz  }|dk    0d S d S rC   )shapearrijrands      r   r  zdo_shuffle_impl.<locals>.impl0  sd    	!q Aa%%DQKK!$QQAAQ a%%%%%%r   c                     | j         d         dz
  }|dk    rV |dz             }t          j        | |                   t          j        | |                   c| |<   | |<   |dz  }|dk    Td S d S rC   )rP  r   copyrQ  s      r   r  zdo_shuffle_impl.<locals>.impl7  st    	!q Aa%%DQKK!#Q"'#a&//AAQ a%%%%%%r   )	r   r   Bufferr6  r   r   r  rl  ndim)rR  rngr  rU  s      @r   do_shuffle_implr[  %  s    c5<(( MKLLL
d{{y 	
x1}}	 	 	 	 	 		 	 	 	 	 Kr   c                 "    t          | d          S r   r[  rR  s    r   shuffle_implr_  A      3%%%r   c                 "    t          | d          S r   r]  r^  s    r   r_  r_  F  r`  r   c                     t          | t          j                  rd }n t          | t          j                  rd }nd }|S )Nc                 l    t          j        |           }t           j                            |           |S r   )r   aranger   shuffle)r   rg   s     r   permutation_implz*permutation_impl.<locals>.permutation_implN  s*    	!AIa   Hr   c                 l    |                                  }t          j                            |           |S r   )rW  r   r   re  )r   arr_copys     r   rf  z*permutation_impl.<locals>.permutation_implS  s*    vvxxHIh'''Or   )r   r   r   Array)r   rf  s     r   rf  rf  K  sb    !U]##  	 	 	 	 
Au{	#	#  	 	 	 	
  r   c                  :    t          |           dk    rd }nd }|S )Nr   c                  >    t           j                                        S r   r   r   s    r   	rand_implzrand.<locals>.rand_implc  s    9##%%%r   c                  @    t           j                            |           S r   r   r   s    r   rl  zrand.<locals>.rand_implh  s    9##D)))r   len)r   rl  s     r   rU  rU  _  s<    
4yyA~~	& 	& 	& 	&
	* 	* 	* r   c                  :    t          |           dk    rd }nd }|S )Nr   c                  >    t           j                                        S r   r   r   s    r   
randn_implzrandn.<locals>.randn_implr  s    9,,...r   c                  @    t           j                            |           S r   r   r   s    r   rr  zrandn.<locals>.randn_implw  s    9,,T222r   rn  )r   rr  s     r   randnrt  n  s<    
4yyA~~	/ 	/ 	/ 	/
	3 	3 	3 r   Tc                    t          | t          j                  rE| j        dk    sJ | j        t
          d             t
          d             }t
          d             nit          | t          j                  r=t          j        t
          d             t
          d             }t
          d             nt          d|           |d t          j
        fv rdfd
	}ndfd	}|S )NrD   c                      t          |           S r   rn  r  s    r   get_source_sizezchoice.<locals>.get_source_size  s    q66Mr   c                 *    |                                  S r   )rW  r  s    r   copy_sourcezchoice.<locals>.copy_source  s    6688Or   c                     | |         S r   r    rq   a_is     r   getitemzchoice.<locals>.getitem  s    S6Mr   c                     | S r   r    r  s    r   rw  zchoice.<locals>.get_source_size  s    Hr   c                 *    t          j        |           S r   )r   rd  r  s    r   ry  zchoice.<locals>.copy_source  s    9Q<<r   c                     |S r   r    r{  s     r   r}  zchoice.<locals>.getitem  s    Jr   z>np.random.choice() first argument should be int or array, got Tc                 r     |           }t           j                            d|          } | |          S )zs
            choice() implementation returning a single sample
            (note *replace* is ignored)
            r   r  )rq   r   replacerJ  rS  rw  r}  s        r   choice_implzchoice.<locals>.choice_impl  s;    
  ""A	!!!Q''A71a== r   c                     
|           }|rlt          j        |	          }|j        }t          t	          |                    D ]1}t           j                            d|          } | |          ||<   2|S t          j        |	          }|j        |k    rt          d          t           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   ro  r   r  r   r[  permutation)rq   r   r  rJ  r   flrS  rT  
permuted_ar   rw  r}  s            r   r  zchoice.<locals>.choice_impl  s     ""A htU++Xs2ww * *A	))!Q//A#GAqMMBqEE
 htU++8a<<$ &G H H H  Y22155
Xs2ww * *A&qMBqEE
r   NT)r   r   ri  rY  r   r   r   r   r  r6  r   )rq   r   r  ry  r  r   rw  r}  s        @@@r   choicer    s    !U[!! #7v{{{{		 	 
		 
	 	 
		 
	 	 
		 	 
Au}	%	% 7		 	 
		 
	  	  
		  
	 	 
		 	 i23!6 7 7 	7 ej!!!	! 	! 	! 	! 	! 	! 	! 	!	 	 	 	 	 	 	 	< 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	}nVt          |t          j                  rdfd	}n4t          |t          j
                  rdfd	}nt          d|          |S )	Nc                 H   |j         }|j        }t          |          }t          d||          D ]r}d}| }t          d|dz
            D ]G}	||	         }
t          j                            ||
|z            x}|||	z   <   ||z  }|dk    r n||
z  }H|dk    r||||z   dz
  <   sd S )Nr   r   rD   )r   r   ro  r   r   r   r  )rJ  pvalsr   r  szplenrS  p_sumn_experimentsrT  p_jn_js               r   multinomial_innerz&multinomial.<locals>.multinomial_inner  s     XX5zzq"d## 	1 	1A
 EM
 1dQh''  Ah"$)"4"4]C%K"P"PPbQi$ A%%Eq  #01t8a< -	1 	1r   z5np.random.multinomial(): n should be an integer, got zCnp.random.multinomial(): pvals should be an array or sequence, got c                 f    t          j        t          |                    } | ||           |S )z5
            multinomial(..., size=None)
            r   zerosro  rJ  r  r   r   r   r  s       r   multinomial_implz%multinomial.<locals>.multinomial_impl  s6     (3u::u--Ca,,,Jr   c                 j    t          j        |t          |          f          } | ||           |S )z4
            multinomial(..., size=int)
            r  r  s       r   r  z%multinomial.<locals>.multinomial_impl  s;     (D#e**-u55Ca,,,Jr   c                 n    t          j        |t          |          fz             } | ||           |S )z6
            multinomial(..., size=tuple)
            r  r  s       r   r  z%multinomial.<locals>.multinomial_impl  s=     (43u::-/77Ca,,,Jr   zBnp.random.multinomial(): size should be int or tuple or None, got r   )r   r  r   r   r   r   r6  Sequenceri  r   	BaseTuple)rJ  r  r   r  r   r  s       @@r   multinomialr    sz    GE1 1 1< a'' 2i-.Q1 2 2 	2 eenek:;; @i7<u? @ @ 	@ ej!!!	 	 	 	 	 	 	 	 
D%-	(	( ;	 	 	 	 	 	 	 	 
D%/	*	* ;	 	 	 	 	 	 	 	 i374: ; ; 	; r   c                 \    t          | t          j        t          j        f          rd }|S d S )Nc                 h    t          j        t          |                     }t          | |           |S r   r   r   ro  dirichlet_arr)r  r   s     r   dirichlet_implz!dirichlet.<locals>.dirichlet_impl+  ,    (3u::&&C%%%%Jr   )r   r   r  ri  )r  r  s     r   	dirichletr  (  s>    %%.%+677 	 	 	  r   c                 ~   t          | t          j        t          j        f          st	          d|           |d t          j        fv rdd}not          |t          j                  rdd}nPt          |t          j                  r$t          |j        t          j                  rdd}nt	          d|z            |S )NzAnp.random.dirichlet(): alpha should be an array or sequence, got c                 h    t          j        t          |                     }t          | |           |S r   r  r  r   r   s      r   r  z!dirichlet.<locals>.dirichlet_impl<  r  r   c                 l    t          j        |t          |           f          }t          | |           |S )z2
            dirichlet(..., size=int)
            r  r  s      r   r  z!dirichlet.<locals>.dirichlet_implC  s3     (D#e**-..C%%%%Jr   c                 p    t          j        |t          |           fz             }t          | |           |S )z4
            dirichlet(..., size=tuple)
            r  r  s      r   r  z!dirichlet.<locals>.dirichlet_implM  s5     (43u::-/00C%%%%Jr   zJnp.random.dirichlet(): size should be int or tuple of ints or None, got %sr   )	r   r   r  ri  r   r   r   r   r   )r  r   r  s      r   r  r  2  s   eenek:;; 
n+053
 
 	

 ej!!!	 	 	 	 	
 
D%-	(	( 
	 	 	 	 	 
D%.	)	) 
j9>/H /H 
	 	 	 	 	 ,.23
 
 	

 r   c                    t          |           D ]}|dk    rt          d          t          |           }|j        }|j        }t          d||          D ]}d}t          |           D ]K\  }}	t          j        	                    |	d          |||z   <   ||||z            
                                z  }Lt          |           D ]\  }}	|||z   xx         |z  cc<   d S )Nr   zdirichlet: alpha must be > 0.0rD   )iterr[  ro  r   r   r   	enumerater   r   r  item)
r  r   a_vala_lenr   r   rS  normrE  rd  s
             r   r  r  ^  s   
 e ? ?A::=>>>  JJE8D8D1dE""    e$$ 	' 	'DAq)//!Q//DQKDQK$$&&&DDe$$ 	  	 DAqQKKK4KKKK	    r   c                     t          | t          j        t          j        f          r+t          |t          j        t          j        f          rd }|S d S d S )Nc                 B    t          | |           t          | |          S r   #validate_noncentral_chisquare_inputnoncentral_chisquare_singler  noncs     r   noncentral_chisquare_implz7noncentral_chisquare.<locals>.noncentral_chisquare_impl|  s"    /D999.r4888r   r   )r  r  r  s      r   noncentral_chisquarer  x  sg    "u{EM233 )
5;.90 90 )	9 	9 	9 )() ) ) )r   c                    |d t           j        fv rdd}|S t          |t           j                  s9t          |t           j                  r%t          |j        t           j                  rdd}|S t          d|z            )Nc                 B    t          | |           t          | |          S r   r  )r  r  r   s      r   r  z7noncentral_chisquare.<locals>.noncentral_chisquare_impl  s"    0T:::/D9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  sY    0T:::8D>>SXch G G!<R!F!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    s    uz"""
: 
: 
: 
: *	)
T5=
)
) ju~.N.N 2<TZ=B]3L 3L
 
 
 
 *	)-/34  
r   c                    t          j        |          rt           j        S d| k     r]t           j                            | dz
            }t           j                                        t          j        |          z   }|||z  z   S t           j                            |dz            }t           j                            | d|z  z             S )NrD   r  rG   )r   isnannanr   r  r   r  r  )r  r  chi2rJ  rS  s        r   r  r    s    
 
x~~ v2vvy""2a4((I%%''"'$--7a!e| Id3h''y""2A:...r   c                 Z    | dk    rt          d          |dk     rt          d          d S )Nr   zdf <= 0znonc < 0r  r  s     r   r  r    s7    	Qww###axx$$$ xr   r  r   )__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.npr   numba.core.errorsr   registrylowerr  r   r   r   r3  rm   r2  r   r\   LiteralStructType	ArrayTypernd_state_tPointerTyper$   r0   r4   r7   r9   r@   rE   rH   rK   rS   rh   rs   r   r   r   r   r   random_samplesampleranfr   r   r>  normalvariater   r   r   r   r   r   r   r  r  r   r   getrandbitsrH  rh  rl  ro  rt  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  betavariater  r  r  r  expovariater  r#  r   r)  r+  r/  r0  r4  r8  r<  lognormvariater?  r6  paretovariaterG  rM  rJ  weibullvariaterR  rY  rV  r[  vonmisesvariater`  rn  r]  rp  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  negative_binomialr  r  r  r  r  r  r  r  r  r"  r   r'  r-  r*  r/  r7  r4  r9  rB  r?  rD  rL  rI  r[  re  r_  r  rf  rU  rt  r  r  r  r  r  r  r  r    r   r   <module>r     s   
             * * * * * * F F F F F F F F F F6 6 6 6 6 6 6 6 6 6 ' ' ' ' ' ' % % % % % % % %       , , , , , , 8L!!
"*R..
"*R..# # #	
"+gq
!
! #b"BL!
$   !".--     "1 1 11 1 17 7 7: : :: : :: : :: : :    21 1 1. . .b 
&+     
 
").     
$ $ $ 
&-   
")
	")
!""	")
	").    #"  
")
	")
!""	")
	").    #"  
&,	&
	4 	4   	4 
")
#$$	")
. .  %$. 
")
6 6 6
 
")
	4 	4 	4 
")
#$$  %$ 
")
  &  $% % %PL L L" 
&
" " "(CE CE CEL 
&
9 9 9
 
&
D D D
* * * 
&
B B B4 
&.H H H
 
")
7 7 7
 
")
2 2 20 
")
  ( 
&., , , 
")
/ / / 
&.4 4 4
 
")
7 7 7
 
&.	2 	2 	2 
")
	2 	2 	2	 	 	 
")
  & 
&
   
&
  $ 
")
   $ 
")
     
&
1 1 1 
")
"##	")/9 9  $#9
 
")/4 4 48 8 8v 
")/   
")
"##  $# 
&
6 6 6 
").2 2 2   
").   
&
   
")
    !  
")
    !  
")
())	")
    !  *) 
")
())  *)  
")
1 1 1 
")
7 7 7
 
")
6 6 6 
")
   
&
  2 2 ! 2
9 9 9 
&
    
")
   
")
   
&
  	 	 ! 	 
")
   
")
   
&
 !!4 4 "!4
 
")
7 7 7
) ) )X 
")
   
")
4 4 4n 
")
   
")
   
")
   
")+   
")+  " 
")
  . 
")
   
")
   
")
   
")
"##  $#. 
")
"##  $#  
")
/ / / 
")
7 7 7
 
")
   
")
  3 3 3 
")
0 0 0 
")
8 8 8
 
")
   
")
  1 1 1
  * 
")
  
 
")
   
")
%&&  '& 
")
* * * 
")
>& >& >&B 
")
  " 
")/   
")/   
")
+ + + 
")
  
G G G 
")
   
")
#$$  %$ 
")
#$$  %$ 
")
    
")
    
").  ( 
").   
").  $ 
").    8 
&.& & & 
")
& & & 
")
    ! & 
").   
")/  " 
")
P P P Pl 
")
  J J J ! J` 
")
   
")
( ( ( (V      2 
")
())) ) *)) 
")
())   *)2 / / /" % % % % %r   