
    ܙdD?                        d Z ddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZ ddlmZm Z  ddl!m"Z" e"dk    r"ed	             Z#ed
             Z$ed             Z%n!ed             Z#ed             Z$ed             Z%e"dk    red             Z&ned             Z&ed             Z'ed             Z(ed             Z)ed             Z*ed             Z+ed             Z,ed             Z-ed             Z.ed             Z/ed             Z0ed             Z1ed             Z2ed             Z3ed             Z4ed              Z5ed!             Z6ed"             Z7ed#             Z8ed$             Z9ed%             Z:ed&             Z;ed'             Z<ed(             Z=ed)             Z>ed*             Z?ed+             Z@ed,             ZAed-             ZBed.             ZCed/             ZDed0             ZEed1             ZFed2             ZGed3             ZHed4             ZIed5             ZJed6             ZKed7             ZLed8             ZMdS )9zU
Algorithmic implementations for generating different types
of random distributions.
    N)register_jitable)	wi_double	ki_doubleziggurat_nor_r	fi_doublewi_floatki_floatziggurat_nor_inv_r_fziggurat_nor_r_ffi_float	we_double	ke_doubleziggurat_exp_r	fe_doublewe_floatke_floatziggurat_exp_r_ffe_float	INT64_MAXziggurat_nor_inv_r)next_double
next_floatnext_uint32next_uint64)float32int64)numpy_version)      c                 *    t          j        |           S N)nplog1pxs    =lib/python3.11/site-packages/numba/np/random/distributions.pynp_log1pr'          x{{    c                 D    t          j        t          |                     S r!   )r"   r#   r   r$   s    r&   	np_log1pfr+       s    x

###r)   c                 P    |t          j        dt          |           z            z  S N       @)r"   sqrtrandom_standard_exponentialbitgenmodes     r&   random_rayleighr4   $   s%    bgc$?$G$GGHHHHr)   c                 0    t          j        d| z             S N      ?)r"   logr$   s    r&   r'   r'   (   s    vcAgr)   c                 r    t          j        d          }t          j        |t          |           z             S r6   )r"   r   r8   )r%   f32_ones     r&   r+   r+   ,   s*    *S//vg

*+++r)   c           
      z    |t          j        dt          j        dt          |           z
            z            z  S )Ng       r7   )r"   r/   r8   r   r1   s     r&   r4   r4   1   s3    bgdRVC+f2E2E,E%F%FFGGGGr)   )r      c                 *    t          j        |           S r!   )r"   expm1r$   s    r&   np_expm1r?   6   r(   r)   c                 0    t          j        |           dz
  S r6   )r"   expr$   s    r&   r?   r?   :   s    vayy3r)   c                 \   	 t          |           }|dz  }|dz  }|dz  }|dz	  dz  }|t          |         z  }|dz  r| }|t          |         k     r|S |dk    ry	 t           t	          j        t          |                      z  }t	          j        t          |                       }||z   ||z  k    r|dz	  dz  rt          |z    S t          |z   S xt          |dz
           t          |         z
  t          |           z  t          |         z   t	          j	        d|z  |z            k     r|S ,)Nr         l    r   g      )
r   r   r   r   r"   r#   r   r   r   rA   r2   ridxsignrabsr%   xxyys           r&   random_standard_normalrL   ?   s`   $h	a3wQ,,9S>!3J 	A)C.  H!883((28[5H5H4H+I+IIhF 3 33444Gb2g%%c) 3!/"!455-223 C!G$y~5''(*3C.9F4!8a<(() ) 1r)   c                 J   	 t          |           }|dz  }|dz	  dz  }|dz	  dz  }t          t          |          t          |         z            }|dz  r| }|t          |         k     r|S |dk    r	 t          t           t          t          |                      z            }t          t          t          |                                 }t          ||z             t          ||z            k    r7|dz	  dz  rt          t          |z              S t          t          |z             S t          |dz
           t          |         z
  t          |           z  t          |         z   t          t          j
        t          d           |z  |z                      k     r|S )Nr   rC   rD   	   i r         ?)r   r   r   r	   r
   r+   r   r   r   r"   rA   rE   s           r&   random_standard_normal_frP   \   s   $hQ#~Q+%GDMMHSM1223J 	A8C=  H1HH>22&
6(:(:':;;< = =iF););(;<<<==BG$$wrBw'7'777c) > '(82(= > >>>&'7"'<===> 37#hsm3z&7I7II#")"&'#,,1BQ1F*G*G"H"HI I/r)   c                    	 t          |           }|dz  }|dz  }|dz  }|t          |         z  }|t          |         k     r|S |dk    r%t          t	          t          |                      z
  S t          |dz
           t          |         z
  t          |           z  t          |         z   t          j        |           k     r|S )Nr      rC   rD   r   )	r   r   r   r   r'   r   r   r"   rA   r2   rirG   r%   s       r&   r0   r0   x   s      
q4i
q33Haxx%+f2E2E1E(F(FFFS1W%	#6+f:M:MMC.!#%61"::. .r)   c           
      &   	 t          |           }|dz  }|dz  }|dz  }t          t          |          t          |         z            }|t          |         k     r|S |dk    r?t          t          t          t          t          |                                z
            S t          |dz
           t          |         z
  t          |           z  t          |         z   t          t          j	        t          |                               k     r|S )Nr   rC   rD   r   )
r   r   r   r   r   r+   r   r   r"   rA   rS   s       r&   random_standard_exponential_frV      s     
q4i
qGBKK(3-/00#Hq/&y*V2D2D1D'E'EFF G H H HC!G$x}4
68J8JJ3- ")"&!*=*=">">? ?r)   c                 >    t          t          |                       S r!   )r'   r   r2   s    r&   random_standard_exponential_invrY      s    k&)))****r)   c                 f    t          j        t          d          t          |           z
             S r6   )r"   r8   r   r   rX   s    r&   !random_standard_exponential_inv_fr[      s(    F73<<*V"4"445555r)   c                    |dk    rt          |           S |dk    rdS |dk     r	 t          |           }t          |           }|d|z
  k    rt          |d|z            }||k    r|S nBt          j        d|z
  |z             }t          d|z
  ||z  z   d|z            }|||z   k    r|S |dz
  }dt          j        d|z            z  }	 	 t          |           }d||z  z   }|dk    rn||z  |z  }t          |           }|dd||z  z  ||z  z  z
  k     r||z  S t          j        |          d|z  |z  |d|z
  t          j        |          z   z  z   k     r||z  S )Nr7           r   UUUUUU?rN   m{?rO   )r0   r   powr"   r8   r/   rL   )r2   shapeUVXYbcs           r&   random_standard_gammarh      s   *6222
3,,s
#++	F##A+F33AS5[  2:&&FFH  VQUeO,,,eeai/e<<!a%LLH	 GOQ	*622!a%KGG	 A	AF##AC&AE*a!e4444Aq		C!GaK!rAvq		/A*BBBBA	r)   c           
          t          d          }t          |          }||k    rt          |           S |t          d          k    rt          d          S ||k     r	 t          |           }t          |           }|||z
  k    r6t          t          |t          ||z                                }||k    r|S nt          t	          j        t          ||z
  |z                                 }t          t          ||z
  t          ||z            z   t          ||z                                }|||z   k    r|S ||t          d          z  z
  }t          |t          t	          j        t          d          |z                      z            }	 	 t          t          |                     }t          |||z  z             }|t          d          k    rnFt          ||z  |z            }t          |           }||t          d          ||z  z  ||z  z  z
  k     rt          ||z            S t	          j        |          t          d          |z  |z  |||z
  t	          j        |          z   z  z   k     rt          ||z            S )Nr7   r]   r   g      @g      "@r_   rO   )r   rV   r   r`   r"   r8   r/   rP   )	r2   ra   r:   rb   rc   rd   re   rf   rg   s	            r&   random_standard_gamma_frj      s   cllGENNE,V444
73<<

s||
'//	6""A-f55AWu_$$C77U?#;#;<<==FFH  RVGWq[E,A$B$BCCCDDC%'%!)2D2D D#GeO446 6 7 7!a%LLH	 Ggcll**GgbggcllQ.>&?&?@@@AA	&4V<<==Ga!eO,,$$	 A	""A6""AGgfooQ71q5AAAAq1u~~%q		GCLL1,q01q[26!99,4. . . .q1u~~%	&r)   c                 0    |t          |           z  }||z   S r!   rL   r2   locscalescaled_normals       r&   random_normalrq      s     26:::Mr)   c                 d    t          |t          |           z            }t          ||z             S r!   )r   rP   rm   s       r&   random_normal_frs      s0    E$<V$D$DDEEM3&'''r)   c                 &    |t          |           z  S r!   )r0   )r2   ro   s     r&   random_exponentialru     s    .v6666r)   c                 0    |t          |           z  }||z   S r!   r   )r2   lowerrangescaled_uniforms       r&   random_uniformr{     s    [000N>!!r)   c                 (    |t          | |          z  S r!   rh   r2   ra   ro   s      r&   random_gammar     s    (7777r)   c                 B    t          |t          | |          z            S r!   )r   rj   r~   s      r&   random_gamma_fr     s     5265AAABBBr)   c           	      f   |dk    r|dk    r	 t          |           }t          |           }t          |d|z            }t          |d|z            }||z   }|dk    r|dk    r||z   dk    r||z  S t          j        |          |z  }t          j        |          |z  }	t	          ||	          }
||
z  }|	|
z  }	t          j        |t          j        t          j        |          t          j        |	          z             z
            S t          | |          }t          | |          }|||z   z  S )Nr7   r   r]   r   )r   r`   r"   r8   minrA   rh   )r2   arf   rb   rc   rd   re   XpYlogXlogYlogMGaGbs                r&   random_betar     s.   CxxAHH	NF##AF##AAsQwAAsQwAa%CczzcCiiEAIIs7N6!99q=D6!99q=DtT??DDLDDLD6$trvd||0K)L)L"LMMM!	N$ #61--"61--R"W~r)   c                 .    dt          | |dz            z  S r-   r}   )r2   dfs     r&   random_chisquarer   2  s    &vrCx8888r)   c                 P    t          | |          |z  t          | |          |z  z  S r!   )r   )r2   dfnumdfdens      r&   random_fr   7  s0    fe,,u4fe,,u46 7r)   c                 @    t          |           t          |           z  S r!   rl   rX   s    r&   random_standard_cauchyr   =  s    !&)),B6,J,JJJr)   c                 @    t          t          |           |z            S r!   )r?   r0   r2   r   s     r&   random_paretor   B  s    /77!;<<<r)   c                 R    |dk    rdS t          t          |           d|z            S Nr]   r7   )r`   r0   r   s     r&   random_weibullr   G  s-    	Ss*622BF;;;r)   c                 `    t          t          t          |                       d|z            S r6   )r`   r?   r0   r   s     r&   random_powerr   N  s-    5f===>>>QGGGr)   c                     t          |           }|dk    rt          |           }|dk    |dk    r!||t          j        d|z
  |z
            z  z
  }n#|dk    r||t          j        ||z             z  z   }|S )Nr   rO   r.   r]   r   r"   r8   r2   rn   ro   rb   s       r&   random_laplacer   S  s    FA
q&& q&&	S%"&q1----
c''%"&Q--''Hr)   c                     t          |           }|dk    rt          |           }|dk    ||t          j        |d|z
  z            z  z   S r   r   r   s       r&   random_logisticr   _  sR    FA
s(( s((S1W.....r)   c                 H    t          j        t          | ||                    S r!   )r"   rA   rq   )r2   meansigmas      r&   random_lognormalr   g  s    6-e44555r)   c                     t          |           }t          | |dz            }t          j        |dz            |z  t          j        |          z  S )N   )rL   rh   r"   r/   )r2   r   numdenoms       r&   random_standard_tr   l  sF    
 
(
(C!&"q&11E726??S 275>>11r)   c                     |d|z  z  }t          |           }||z  |z  }|||t          j        d|z  |z  ||z  z             z
  z  z   }t          |           }||||z   z  k    r|S ||z  |z  S )Nr      )rL   r"   r/   r   )r2   r   ro   mu_2lre   rd   rb   s          r&   random_waldr   s  s    AIEv&&Aq1AuBGAIMAE$9:::;;AFA	TTAXd{Qr)   c                 p    d}|x}}d|z
  }t          |           }||k    r||z  }||z  }|dz   }||k    |S )Nr   r7   rw   )r2   prd   sumprodqrb   s          r&   random_geometric_searchr     s\    	ANC$aAFAs77	tE s77 Hr)   c                 r    t          j        t          |            t          j        |           z            S r!   )r"   ceilr0   r#   r2   r   s     r&   random_geometric_inversionr     s-    7/777"(A2,,FGGGr)   c                 N    |dk    rt          | |          S t          | |          S )Nr^   )r   r   r   s     r&   random_geometricr     s.    	'''&vq111)&!444r)   c                 @   |dz
  }t          d|          }	 dt          |           z
  }t          |           }t          j        t          |d|z                      }|t          k    s|dk     rYt          dd|z  z   |          }||z  |dz
  z  |dz
  z  ||z  k    r|S )Nr7   r.   r   g      )r`   r   r"   floorr   )r2   r   am1rf   rb   rc   rd   Ts           r&   random_zipfr     s    
c'CCA	+f%%%HSD3J''((	MMQWWcAgs##EQWS)QU22H	r)   c                     ||z
  }||z
  }||z  }||z  }||z
  |z  }t          |           }	|	|k    r|t          j        |	|z            z   S |t          j        d|	z
  |z            z
  S r6   )r   r"   r/   )
r2   leftr3   rightbaseleftbaseratioleftprod	rightprodrb   s
             r&   random_triangularr     s     4<Dd{HtOE$H%IFA	U

bga(l++++rwa945555r)   c                    g d}| dk    s| dk    rdS | dk     rt          d| z
            }nd}| |z   }d|z  d|z  z  }d}|d	         }t          dd	          D ]}||z  }||d
|z
           z  }||z  d|z  z   |dz
  t          j        |          z  z   |z
  }| dk     r5t          d|dz             D ]!}|t          j        |dz
            z
  }|dz
  }"|S )N)
gUUUUUU?gllfgJ?g88Cg$+K?g<ٰj_gAAz?gSˆBg8?g5gGr7   r.   r]   g      @   r   gdg?rN   rD   rO   r   )intry   r"   r8   )	r%   r   nx0x2lg2pigl0kgls	            r&   random_loggamr     s   	7 	7 	7A 
cqCxxs
c''AJJ	
QB
(sRx	 B"E
A$C1a[[  r	qQx	rC%K	28rvbzz"9	9B	>B	Cq!a% 	 	AbfR#X&&&BcBBIr)   c                 |    t          j        |           }d}d}	 t          |           }||z  }||k    r|dz  }n|S #)Nr   r7   r   )r"   rA   r   )r2   lamenlamrd   r   rb   s         r&   random_poisson_multr     sT    FC4LLE	AD	5LLFAAHr)   c                 d   t          j        |          }t          j        |          }dd|z  z   }dd|z  z   }dd|dz
  z  z   }dd	|d
z
  z  z
  }	 t          |           dz
  }t          |           }	dt          j        |          z
  }
t          d
|z  |
z  |z   |z  |z   dz             }|
dk    r|	|k    r|S |dk     s|
dk     r|	|
k    r{t          j        |	          t          j        |          z   t          j        ||
|
z  z  |z             z
  | ||z  z   t          |dz             z
  k    r|S )Ngn?g=
ףp=@gh|?5g[	m?g$~?gr?g333333@gr鷯?gB>٬@r   r   rO   gQ?gQ?r   g9v?)r"   r/   r8   r   fabsr   r   )r2   r   slamloglamrf   r   invalphavrrb   rc   usr   s               r&   random_poisson_ptrsr     s[    73<<DVC[[FtA1A!c'**H	&AE"	"B#%271::Qa1$s*T1224ZZa2ggHUUe!b&& VAYY)))BF1R=13D,E,EED1v:a!e 4 446 6Hr)   c                 ^    |dk    rt          | |          S |dk    rdS t          | |          S )N
   r   )r   r   )r2   r   s     r&   random_poissonr     s9    r		"63///
((q"63///r)   c                 P    t          | |d|z
  |z            }t          | |          S )Nr   )r   r   )r2   r   r   re   s       r&   random_negative_binomialr     s+    VQQ!,,A&!$$$r)   c                 J   t          j        |          rt           j        S |dk    rt          | |          S d|k     r?t          | |dz
            }t	          |           t          j        |          z   }|||z  z   S t          | |dz            }t          | |d|z  z             S )Nr   r   r.   r   )r"   isnannanr   rL   r/   r   )r2   r   noncChi2r   is         r&   random_noncentral_chisquarer     s    	x~~ vqyy+++2vvQ//"6**RWT]]:a!e|64#:..QU
333r)   c                 V    t          | ||          |z  }|t          | |          |z  z  S r!   )r   r   )r2   r   r   r   ts        r&   random_noncentral_fr   '  s3    #FE4885@A //%788r)   c           	      z   t          |           }	 t          |           }||k    rdS t          |           }t          j        ||z             }|||z  k    rZt	          t          j        dt          j        |          t          j        |          z  z                       }|dk     s|dk    r|S ||k    rdS dS )Nr   r]   r   )r'   r   r"   r>   r   r   r8   )r2   r   rF   rc   rb   r   results          r&   random_logseriesr   -  s    !AFF1Xa!e__QJJ28Aq		BF1II(=$=>>??FzzQ#XXFF11r)   )N__doc__numpyr"   numba.core.extendingr   numba.np.random._constantsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   numba.np.random.generator_corer   r   r   r   numbar   r   numba.np.numpy_supportr   r'   r+   r4   r?   rL   rP   r0   rV   rY   r[   rh   rj   rq   rs   ru   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r)   r&   <module>r      s   
     1 1 1 1 1 1	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GF F F F F F F F F F F F                 0 0 0 0 0 0
 G   $ $ $ I I I I    , , , H H H G         8   6   "   $ + + + 6 6 6 " " "J && && &&R   
 ( ( (
 7 7 7 " " "
 8 8 8 C C C   2 9 9 9 7 7 7
 K K K = = = < < < H H H    / / / 6 6 6 2 2 2 	 	 	 	 	 	 H H H 5 5 5    6 6 6   B 
 
 
   6 0 0 0 % % %
 4 4 4  9 9 9
     r)   