
    
fO                        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  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             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d+             ZEed,             ZFed-             ZGed.             ZHed/             ZIed0             ZJed1             ZKed2             ZLed3             ZMed4             ZNdS )5zU
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int64c                 *    t          j        |           S N)nplog1pxs    =lib/python3.11/site-packages/numba/np/random/distributions.pynp_log1pr$          8A;;    c                 D    t          j        t          |                     S r   )r   r    r   r!   s    r#   	np_log1pfr(      s    8GAJJr&   c                 P    |t          j        dt          |           z            z  S N       @)r   sqrtrandom_standard_exponential)bitgenmodes     r#   random_rayleighr0   $   s%    "'# ;F C CCDDDDr&   c                 *    t          j        |           S r   )r   expm1r!   s    r#   np_expm1r3   )   r%   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 ,)N         l    r   g      )
r   r   r   r   r   r    r   r   r   expr.   ridxsignrabsr"   xxyys           r#   random_standard_normalr@   .   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 )Nr5   r6   r7   	   i r         ?)r   r   r   r	   r
   r(   r   r   r   r   r8   r9   s           r#   random_standard_normal_frD   K   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 )Nr5      r6   r7   r   )	r   r   r   r   r$   r   r   r   r8   r.   rir;   r"   s       r#   r-   r-   g   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 )Nr5   r6   r7   r   )
r   r   r   r   r   r(   r   r   r   r8   rG   s       r#   random_standard_exponential_frJ   y   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   r.   s    r#   random_standard_exponential_invrM      s    k&)))****r&   c                 f    t          j        t          d          t          |           z
             S N      ?)r   logr   r   rL   s    r#   !random_standard_exponential_inv_frR      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 )NrP           r5   UUUUUU?rB   m{?rC   )r-   r   powr   rQ   r,   r@   )r.   shapeUVXYbcs           r#   random_standard_gammar_      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 )NrP   rT   r5         @g      "@rV   rC   )r   rJ   r   rW   r   rQ   r,   rD   )	r.   rX   f32_onerY   rZ   r[   r\   r]   r^   s	            r#   random_standard_gamma_frc      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   r@   r.   locscalescaled_normals       r#   random_normalrj      s     26:::Mr&   c                 d    t          |t          |           z            }t          ||z             S r   )r   rD   rf   s       r#   random_normal_frl      s0    E$<V$D$DDEEM3&'''r&   c                 &    |t          |           z  S r   )r-   )r.   rh   s     r#   random_exponentialrn      s    .v6666r&   c                 0    |t          |           z  }||z   S r   r   )r.   lowerrangescaled_uniforms       r#   random_uniformrt      s    [000N>!!r&   c                 (    |t          | |          z  S r   r_   r.   rX   rh   s      r#   random_gammarx      s    (7777r&   c                 B    t          |t          | |          z            S r   )r   rc   rw   s      r#   random_gamma_frz     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 )NrP   r5   rT   r   )r   rW   r   rQ   minr8   r_   )r.   ar]   rY   rZ   r[   r\   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*   rv   )r.   dfs     r#   random_chisquarer   !  s    &vrCx8888r&   c                 P    t          | |          |z  t          | |          |z  z  S r   )r   )r.   dfnumdfdens      r#   random_fr   &  s0    fe,,u4fe,,u46 7r&   c                 @    t          |           t          |           z  S r   re   rL   s    r#   random_standard_cauchyr   ,  s    !&)),B6,J,JJJr&   c                 @    t          t          |           |z            S r   )r3   r-   r.   r}   s     r#   random_paretor   1  s    /77!;<<<r&   c                 R    |dk    rdS t          t          |           d|z            S NrT   rP   )rW   r-   r   s     r#   random_weibullr   6  s-    	Ss*622BF;;;r&   c                 `    t          t          t          |                       d|z            S rO   )rW   r3   r-   r   s     r#   random_powerr   =  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   rC   r+   rT   r   r   rQ   r.   rg   rh   rY   s       r#   random_laplacer   B  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   N  sR    FA
s(( s((S1W.....r&   c                 H    t          j        t          | ||                    S r   )r   r8   rj   )r.   meansigmas      r#   random_lognormalr   V  s    6-e44555r&   c                     t          |           }t          | |dz            }t          j        |dz            |z  t          j        |          z  S )N   )r@   r_   r   r,   )r.   r   numdenoms       r#   random_standard_tr   [  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      )r@   r   r,   r   )r.   r   rh   mu_2lr\   r[   rY   s          r#   random_waldr   b  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 )Nr5   rP   rp   )r.   pr[   sumprodqrY   s          r#   random_geometric_searchr   o  s\    	ANC$aAFAs77	tE s77 Hr&   c                 r    t          j        t          |            t          j        |           z            S r   )r   ceilr-   r    r.   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 )NrU   )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 )NrP   r+   r5   g      )rW   r   r   floorr   )r.   r}   am1r]   rY   rZ   r[   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 rO   )r   r   r,   )
r.   leftr/   rightbaseleftbaseratioleftprod	rightprodrY   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gGrP   r+   rT   g      @   r   gdg?rB   r7   rC   r5   )intrr   r   rQ   )	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   rP   r5   )r   r8   r   )r.   lamenlamr[   r   rY   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   r5   rC   gQ?gQ?r   g9v?)r   r,   rQ   r   fabsr   r   )r.   r   slamloglamr]   r}   invalphavrrY   rZ   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   )r.   r   s     r#   random_poissonr     s9    r		"63///
((q"63///r&   c                 P    t          | |d|z
  |z            }t          | |          S )Nr5   )rx   r   )r.   r   r   r\   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   r5   r+   r   )r   isnannanr   r@   r,   r   )r.   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   )r.   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 )Nr5   rT   r   )r$   r   r   r2   r   r   rQ   )r.   r   r:   rZ   rY   r   results          r#   random_logseriesr     s    !AFF1Xa!e__QJJ28Aq		BF1II(=$=>>??FzzQ#XXFF11r&   c           	      f	   t          |d|z
            }d|z
  }||z  |z   }t          t          j        |                    }t          t          j        dt          j        ||z  |z            z  d|z  z
            dz             }|dz   }||z
  }	||z   }
ddd|z   z  z   }||	z
  ||	|z  z
  z  }|d|dz  z   z  }|
|z
  |
|z  z  }|d|dz  z   z  }|dd|z  z   z  }|||z  z   }|||z  z   }d	}d
x}}	 |d	k    r_||z  |z  }t          |           |z  }t          |           }||k    rd}9t          t          j        |||z  z
  |z                       }d}f|dk    rg||k    rd}u|	||z
  |z  z   }||z  dz   t          j        ||z
  dz             |z  z
  }|dk    rd	}t          t          j        |                    }d}|dk    ra||k    rd}t          t          j        |	t          j        |          |z  z                       }|d
k     s|dk    rd	}+|||z
  z  |z  }d}:|dk    rXt          t          j        |
t          j        |          |z  z
                      }||k    s|dk    rd	}|||z
  z  |z  }d}|dk    rt          ||z
            }|dk    r||dz  dz
  k     rd}||z  }||dz   z  }d}||k     r%t          |dz   |dz             D ]}|||z  |z
  z  }n*||k    r$t          |dz   |dz             D ]}|||z  |z
  z  }||k    rd	}4d}8|dk    rn||z  ||dz  dz   z  dz   |z  dz   z  }| |z  d|z  z  }t          j        |          }|||z
  k     rd}|||z   k    rd	}|dz   }|dz   } |dz   |z
  }!||z
  dz   }"||z  }#| | z  }$|!|!z  }%|"|"z  }&||t          j        | |z            z  ||z
  dz   t          j        |!|"z            z  z   ||z
  t          j        |"|z  ||z  z            z  z   ddddd|$z  z
  |$z  z
  |$z  z
  |$z  z
  | z  dz  z   ddddd|%z  z
  |%z  z
  |%z  z
  |%z  z
  |!z  dz  z   ddddd|#z  z
  |#z  z
  |#z  z
  |#z  z
  |z  dz  z   ddddd|&z  z
  |&z  z
  |&z  z
  |&z  z
  |"z  dz  z   k    rd	}n|dk    r|dk    r||z
  }|S )NrP   g(\@gffffff@rC   gx&?g     4@g.@r+   r   r   r5      <      2   (   rT   4   ra   g      ?gUUUUUU?r   g     @g     |@g     `@g     X@g     a@g    MAg     1@)
r|   r   r   r   r,   r   r   rQ   absrr   )'r.   r   r   r:   r   fmmp1xmxlxrr^   r}   lamllamrp2p3p4caseyr   nrquvr"   sFr   rhor   Ax1f1zwr   f2z2w2s'                                          r#   random_binomial_btper  2  s{   AsQwAaA	
QBBHRLLA	RXebga!eai00037:;;cA	B	BB	
SB	bB	bBq!!A	bR"q&[!Aa#gD	bR!VAa#gD	sS1W}	B	a$hB	a$hBDIA`2::a%!)CF##b(AF##ABBHR"q&[1_--..ADRZZBa"f\!AAbga!eck22R77ACBHQKK  ADRZZBBHR"&))d"223344AQAHHQVt#ADRZZBHR"&))d"223344AQAHHQVt#ADRZZAE

ARaC3;?33AAQUAAAq1ua!e,, ( (AQUQYAA(a%%q1ua!e,, ( (AQUQYAAADRZZ9S5),??C Q!c'"Aq		AQWQWQBQBA	AA	AbBbBQBQBR"&b//)QUS[BF1q5MM,II!erva!erAv&67778dRi2/E(E'K K   !#*++ dRi2/E(E'K K   ")*	* dRi2/E(E'K K   !#*++ dRi2/E(E'K K   "()	) 	* 	* 	* RZZCEHA`r&   c           	      v   d|z
  }t          j        |t          j        |          z            }||z  }t          ||dt          j        ||z  dz             z  z             }d}|}t          |           }	|	|k    r>|dz   }||k    rd}|}t          |           }	n|	|z  }	||z
  dz   |z  |z  ||z  z  }|	|k    >|S )NrP   g      $@r5   r   )r   r8   rQ   r|   r,   r   )
r.   r   r   r   qn_npboundr[   pxrY   s
             r#   random_binomial_inversionr    s    aA	BF1II		B
a%C3a! 4 44455E	A	BFAr66EIIABF##AAGAq519/B&1q51B r66 Hr&   c                     |dk    s|dk    rdS |dk    r+||z  dk    rt          | ||          S t          | ||          S d|z
  }||z  dk    r|t          | ||          z
  S |t          | ||          z
  S )Nr   rT   rC   g      >@rP   )r  r  )r.   r   r   r   s       r#   random_binomialr    s    	
aQ#XXq	SETMM,VQ:::'1555!GETMM0A>>>>+FAq9999r&   )O__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   r$   r(   r0   r3   r@   rD   r-   rJ   rM   rR   r_   rc   rj   rl   rn   rt   rx   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  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                
          E E E      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
   * t t tn   , : : : : :r&   