
    xKgO                     x   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        ZNy)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    a/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/np/random/distributions.pynp_log1pr$          88A;    c                 >    t        j                  t        |             S r   )r   r    r   r!   s    r#   	np_log1pfr(      s    88GAJr&   c                 J    |t        j                  dt        |       z        z  S N       @)r   sqrtrandom_standard_exponential)bitgenmodes     r#   random_rayleighr0   $   s!    "''# ;F CC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(  ro	 t         t	        j
                  t        |              z  }t	        j
                  t        |               }||z   ||z  kD  r|dz	  dz  r
t        |z    S t        |z   S nt        |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@   .   s6   
$h	a3wQ,,9S>!3JA)C. H!8((288[5H4H+IIhhF 3344Gb2g%c)!/"!455-22  C!G$y~5'(*3C.9FF4!8a<() 1 r&   c                    	 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        kD  r-|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 I)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+%GDMHSM123JA8C= H1H22&
6(:':;< =iF);(;<<=BG$wrBw'77c) '(82(= >>>&'7"'<==  37#hsm3z&7II#")"&&'#,1BQ1F*G"H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ax%+f2E1E(FFFS1W%	#6+f:MMC.!#%661":. 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GBK(3-/0#Hq/&y*V2D1D'EF G H HC!G$x}4
68JJ3- ")"&&!*=">? r&   c                 .    t        t        |               S r   )r$   r   r.   s    r#   random_standard_exponential_invrM      s    k&))***r&   c                 X    t        j                  t        d      t        |       z
         S N      ?)r   logr   r   rL   s    r#   !random_standard_exponential_inv_frR      s"    FF73<*V"44555r&   c                 v   |dk(  rt        |       S |dk(  ry|dk  rt	 t        |       }t        |       }|d|z
  k  rt        |d|z        }||k  r@|S t        j                  d|z
  |z         }t        d|z
  ||z  z   d|z        }|||z   k  r|S s|dz
  }dt        j
                  d|z        z  }	 	 t        |       }d||z  z   }|dkD  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
3,
#+F#A+F3AS5[ 2:&FHVVQUeO,,eeai/e<!a%LH  GOQ*62!a%KG	  A	AF#AC&AE*a!e444Aq	C!GaK!rAvq	/A*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  r(t        t        |t        ||z                    }||k  rm|S t        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      kD  rn5t        ||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         @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   clGENE,V44
73<
s|
'/6"A-f5AWu_$C77U?#;<=FHRVVGWq[E,A$BCCDC%'%!)2D D#GeO46 7!a%LH  Ggcl**GgbgggclQ.>&?@@A4V<=Ga!eO,$	  A	"A6"AGgfoQ71q5AAAq1u~%q	GCL1,q01q[266!9,4. . .q1u~% r&   c                 (    |t        |       z  }||z   S r   r@   r.   locscalescaled_normals       r#   random_normalrj      s    26::Mr&   c                 L    t        |t        |       z        }t        ||z         S r   )r   rD   rf   s       r#   random_normal_frl      s'    E$<V$DDEM3&''r&   c                     |t        |       z  S r   )r-   )r.   rh   s     r#   random_exponentialrn      s    .v666r&   c                 (    |t        |       z  }||z   S r   r   )r.   lowerrangescaled_uniforms       r#   random_uniformrt      s    [00N>!!r&   c                      |t        | |      z  S r   r_   r.   rX   rh   s      r#   random_gammarx      s    (777r&   c                 2    t        |t        | |      z        S r   )r   rc   rw   s      r#   random_gamma_frz     s    5265AABBr&   c           	      .   |dk  r|dk  r	 t        |       }t        |       }t        |d|z        }t        |d|z        }||z   }|dk  r|dkD  r||z   dkD  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   rT   r   )r   rW   r   rQ   minr8   r_   )r.   ar]   rY   rZ   r[   r\   XpYlogXlogYlogMGaGbs                r#   random_betar     s   CxAHF#AF#AAsQwAAsQwAa%CczcCiEAIs7N66!9q=D66!9q=DtT?DDLDDLD66$trvvd|0K)L"LMM! $ #61-"61-R"W~r&   c                 &    dt        | |dz        z  S r*   rv   )r.   dfs     r#   random_chisquarer   !  s    &vrCx888r&   c                 @    t        | |      |z  t        | |      |z  z  S r   )r   )r.   dfnumdfdens      r#   random_fr   &  s*    fe,u4fe,u46 7r&   c                 0    t        |       t        |       z  S r   re   rL   s    r#   random_standard_cauchyr   ,  s    !&),B6,JJJr&   c                 0    t        t        |       |z        S r   )r3   r-   r.   r}   s     r#   random_paretor   1  s    /7!;<<r&   c                 >    |dk(  ryt        t        |       d|z        S NrT   rP   )rW   r-   r   s     r#   random_weibullr   6  s#    	S*62BF;;r&   c                 H    t        t        t        |               d|z        S rO   )rW   r3   r-   r   s     r#   random_powerr   =  s$    5f==>>QGGr&   c                     t        |       }|dk  rt        |       }|dk  r|dk\  r#||t        j                  d|z
  |z
        z  z
  }|S |dkD  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--- H c'%"&&Q-''Hr&   c                     t        |       }|dk  rt        |       }|dk  r||t        j                  |d|z
  z        z  z   S r   r   r   s       r#   random_logisticr   N  sG    FA
s( s(S1W....r&   c                 B    t        j                  t        | ||            S r   )r   r8   rj   )r.   meansigmas      r#   random_lognormalr   V  s    66-e4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   [  s@    
 
(C!&"q&1E7726?S 2775>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BGGAIMAE$9::;;AFA	TTAXd{Qr&   c                 f    d}|x}}d|z
  }t        |       }||kD  r||z  }||z  }|dz   }||kD  r|S )Nr5   rP   rp   )r.   pr[   sumprodqrY   s          r#   random_geometric_searchr   o  sU    	ANC$aAFAs7	tE s7 Hr&   c                 n    t        j                  t        |        t        j                  |       z        S r   )r   ceilr-   r    r.   r   s     r#   random_geometric_inversionr   |  s)    77/77"((A2,FGGr&   c                 <    |dk\  rt        | |      S t        | |      S )NrU   )r   r   r   s     r#   random_geometricr     s%    	''&vq11)&!44r&   c                    |dz
  }t        d|      }	 dt        |       z
  }t        |       }t        j                  t        |d|z              }|t        kD  s|dk  rKt        dd|z  z   |      }||z  |dz
  z  |dz
  z  ||z  k  r|S v)NrP   r+   g      )rW   r   r   floorr   )r.   r}   am1r]   rY   rZ   r[   Ts           r#   random_zipfr     s    
c'CCA
+f%%HHSD3J'(	MQWcAgs#EQWS)QU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
bgga(l+++rwwa94555r&   c                    g d}| dk(  s| dk(  ry| 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  r4t        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    	7A 
cqCx
c'AJ	
QB
(sRx	 B"E
A$C1a[r	qQx  
rC%K	28rvvbz"9	9B	>B	Cq!a%AbffR#X&&BcB ! Ir&   c                 t    t        j                  |       }d}d}	 t        |       }||z  }||kD  r|dz  }n|S )Nr   rP   r5   )r   r8   r   )r.   lamenlamr[   r   rY   s         r#   random_poisson_multr     sK    FFC4LE	AD	5LFA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|	|
kD  rkt        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<    773<DVVC[FtA1A!c'**H	&AE"	"B#%2771:Qa1$s*T124Za2gHUe!b& VVAY))BFF1R=13D,EED1v:a!e 446H r&   c                 H    |dk\  rt        | |      S |dk(  ryt        | |      S )N
   r   )r   r   )r.   r   s     r#   random_poissonr     s-    r	"63//
("63//r&   c                 @    t        | |d|z
  |z        }t        | |      S )Nr5   )rx   r   )r.   r   r   r\   s       r#   random_negative_binomialr     s%    VQQ!,A&!$$r&   c                 *   t        j                  |      rt         j                  S |dk(  rt        | |      S d|k  r8t        | |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    	xx~vvqy++2vQ/"6*RWWT]:a!e|64#:.QU
33r&   c                 F    t        | ||      |z  }|t        | |      |z  z  S r   )r   r   )r.   r   r   r   ts        r#   random_noncentral_fr     s-    #FE485@A /%788r&   c           	      R   t        |       }	 t        |       }||k\  ryt        |       }t        j                  ||z         }|||z  k  rWt	        t        j
                  dt        j                  |      t        j                  |      z  z               }|dk  s|dk(  r|S ||k\  ryy)Nr5   rT   r   )r$   r   r   r2   r   r   rQ   )r.   r   r:   rZ   rY   r   results          r#   random_logseriesr     s    !A
FXXa!e_QJ288Aq	BFF1I(=$=>?FzQ#XFr&   c           	         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(  rS||z  |z  }t        |       |z  }t        |       }||kD  rd}/t        t        j                  |||z  z
  |z               }d}Y|dk(  rc|kD  rd}f|	||z
  |z  z   }|z  dz   t        j                  ||z
  dz         |z  z
  }|dkD  rd	}t        t        j                  |            }d}|dk(  r\|kD  rd}t        t        j                  |	t        j                        |z  z               }|d
k  s|dk(  rd	}|||z
  z  |z  }d}"|dk(  rTt        t        j                  |
t        j                        |z  z
              }||kD  s|dk(  rd	}l||z
  z  |z  }d}{|dk(  rt        ||z
        }|dkD  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'||kD  r"t        |dz   |dz         D ]  }|||z  |z
  z  } |kD  rd	}	d}|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|||z   kD  rd	}f|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   kD  rd	}|dk(  r|dkD  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BHHRLA	RXXebgga!eai0037:;cA	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BHHR"q&[1_-.ADRZBa"f\!AAbgga!eck2R77ACBHHQK ADRZBBHHR"&&)d"2234AQAHQVt#ADRZBHHR"&&)d"2234AQAHQVt#ADRZAE
ARaC3;?3AAQUAAAq1ua!e,AQUQYA -a%q1ua!e,AQUQYA -ADRZ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[BFF1q5M,II!ervva!erAv&6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   "()	) 	* RZCEHA r&   c           	      `   d|z
  }t        j                  |t        j                  |      z        }||z  }t        ||dt        j                  ||z  dz         z  z         }d}|}t        |       }	|	|kD  r9|dz   }||kD  rd}|}t        |       }	n|	|z  }	||z
  dz   |z  |z  ||z  z  }|	|kD  r9|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	BFF1I	B
a%C3a! 4445E	A	BFAr6EIABF#AGAq519/B&1q51B r6 Hr&   c                     |dk(  s|dk(  ry|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#X	SETM,VQ::'155!GETM0A>>>+FAq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	G 	G 	G 	G 	G 	GF F  
       E E    8  6  "  $ + + 6 6 " "J && &&R  
 ( (
 7 7 " "
 8 8 C C  2 9 9 7 7
 K K = = < < H H   / / 6 6 2 2 	 	 	 	 H H 5 5   6 6  B 
 
  6 0 0 % %
 4 4  9 9
  * t tn  , : :r&   