
    ihmO                     h   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 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        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d0        ZHed1        ZIed2        ZJed3        ZKy)4zU
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_uint64c                 ,    t        j                  |       S N)nplog1pxs    _/var/www/html/dev/engine/venv/lib/python3.12/site-packages/numba/np/random/new_distributions.pynp_log1pr"          88A;    c                 R    t        j                  t        j                  |             S r   )r   r   float32r   s    r!   	np_log1pfr'      s    88BJJqM""r$   c                 J    |t        j                  dt        |       z        z  S N       @)r   sqrtrandom_standard_exponential)bitgenmodes     r!   random_rayleighr/   #   s!    "''# ;F CCDDDr$   c                 ,    t        j                  |       S r   )r   expm1r   s    r!   np_expm1r2   (   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        j                  t        j                  |      t        |   z        }|dz  r| }|t        |   k  r|S |dk(  r	 t        j                  t
         t        t        |              z        }t        j                  t        t        |                     }t        j                  ||z         t        j                  ||z        kD  rA|dz	  dz  rt        j                  t        |z          S t        j                  t        |z         S t        |dz
     t        |   z
  t        |       z  t        |   z   t        j                  t        j                  t        j                  d       |z  |z              k  r|S )Nr4   r5   r6   	   i r         ?)r   r   r&   r   r	   r
   r'   r   r   r   r7   r8   s           r!   random_standard_normal_frC   J   s   
$hQ#~Q+%JJrzz$'(3-783JA8C= H1HZZ!5 5&
6(:':;!< =ZZJv,>+>!? ?@JJrBw'"**R"W*==c) "

+;b+@ AAA!zz*:R*?@@  37#hsm3z&7II#"$**RVVRZZ_4Dq4H14L-M"NO/ 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 )Nr4      r5   r6   r   )	r   r   r   r   r"   r   r   r   r7   r-   rir:   r    s       r!   r,   r,   f   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        j                  t        j                  |      t        |   z        }|t        |   k  r|S |dk(  rBt        j                  t
        t        j                  t        t        |                    z
        S t        |dz
     t        |   z
  t        |       z  t        |   z   t        j                  t        j                  t        j                  |                   k  r|S )Nr4   r5   r6   r   )
r   r   r&   r   r   r   r'   r   r   r7   rF   s       r!   random_standard_exponential_frI   x   s    
 
q4i
qJJrzz"~56#Hqzz"2!zz)Z5G4G*HI#J K KC!G$x}4
68JJ3- "$**RVVBJJrN-C"DE r$   c                 .    t        t        |               S r   )r"   r   r-   s    r!   random_standard_exponential_invrL      s    k&))***r$   c                 l    t        j                  t        j                  d      t        |       z
         S N      ?)r   logr&   r   rK   s    r!   !random_standard_exponential_inv_frQ      s&    FF2::c?Z%77888r$   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 )NrO           r4   UUUUUU?rA   m{?rB   )r,   r   powr   rP   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        j                  d      }t        j                  |      }||k(  rt        |       S |t        j                  d      k(  rt        j                  d      S ||k  r	 t        |       }t        |       }|||z
  k  r<t        j                  t	        |t        j                  ||z                    }||k  r|S t        j                  t        j
                  t        j                  ||z
  |z                     }t        j                  t	        ||z
  t        j                  ||z        z   t        j                  ||z                    }|||z   k  r|S ||t        j                  d      z  z
  }t        j                  |t        j                  t        j                  t        j                  d      |z              z        }	 	 t        j                  t        |             }t        j                  |||z  z         }|t        j                  d      kD  rnSt        j                  ||z  |z        }t        |       }||t        j                  d      ||z  z  ||z  z  z
  k  rt        j                  ||z        S t        j
                  |      t        j                  d      |z  |z  |||z
  t        j
                  |      z   z  z   k  rt        j                  ||z        S #)NrO   rS         @g      "@rU   rB   )r   r&   rI   r   rV   rP   r+   rC   )	r-   rW   f32_onerX   rY   rZ   r[   r\   r]   s	            r!   random_standard_gamma_frb      sp   jjoGJJuE,V44
2::c?
"zz#
'/6"A-f5AWu_$JJs1bjj5&ABCFHJJrzz7Q;%2G'H IIJJJs7U?RZZ	5J#JJJw7 9 :!a%LH  Gbjjo--JJwBGGBJJsOa4G,H!IIJJJ7?@JJwQ/

3'	  

1q519%A6"AGbjj0AE:a!eDDDzz!a%((q	BJJsOa/!3aq[266!9,7. . .zz!a%(( r$   c                 (    |t        |       z  }||z   S r   r?   r-   locscalescaled_normals       r!   random_normalri      s    26::Mr$   c                 t    t        j                  |t        |       z        }t        j                  ||z         S r   )r   r&   rC   re   s       r!   random_normal_frk      s/    JJu'?'GGHM::cM)**r$   c                     |t        |       z  S r   )r,   )r-   rg   s     r!   random_exponentialrm      s    .v666r$   c                 (    |t        |       z  }||z   S r   r   )r-   lowerrangescaled_uniforms       r!   random_uniformrs      s    [00N>!!r$   c                      |t        | |      z  S r   r^   r-   rW   rg   s      r!   random_gammarw      s    (777r$   c                 F    t        j                  |t        | |      z        S r   )r   r&   rb   rv   s      r!   random_gamma_fry     s    ::e5feDDEEr$   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 )NrO   rS   r   )r   rV   r   rP   minr7   r^   )r-   ar\   rX   rY   rZ   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)   ru   )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   rd   rK   s    r!   random_standard_cauchyr   +  s    !&),B6,JJJr$   c                 0    t        t        |       |z        S r   )r2   r,   r-   r|   s     r!   random_paretor   0  s    /7!;<<r$   c                 >    |dk(  ryt        t        |       d|z        S NrS   rO   )rV   r,   r   s     r!   random_weibullr   5  s#    	S*62BF;;r$   c                 H    t        t        t        |               d|z        S rN   )rV   r2   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   rB   r*   rS   r   r   rP   r-   rf   rg   rX   s       r!   random_laplacer   A  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   M  sG    FA
s( s(S1W....r$   c                 B    t        j                  t        | ||            S r   )r   r7   ri   )r-   meansigmas      r!   random_lognormalr   U  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   Z  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   rg   mu_2lr[   rZ   rX   s          r!   random_waldr   a  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 )Nr4   rO   ro   )r-   prZ   sumprodqrX   s          r!   random_geometric_searchr   n  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 )NrT   )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)NrO   r*   g      )rV   r   r   floorr   )r-   r|   am1r\   rX   rY   rZ   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 rN   )r   r   r+   )
r-   leftr.   rightbaseleftbaseratioleftprod	rightprodrX   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gGrO   r*   rS   g      @   r   gdg?rA   r6   rB   r4   )intrq   r   rP   )	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   rO   r4   )r   r7   r   )r-   lamenlamrZ   r   rX   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   r4   rB   gQ?gQ?r   g9v?)r   r+   rP   r   fabsr   r   )r-   r   slamloglamr\   r|   invalphavrrX   rY   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 )Nr4   )rw   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   r4   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           	      f   t        |       }	 t        |       }||k\  ryt        |       }t        j                  ||z         }|||z  k  rat        j                  t        j
                  dt        j                  |      t        j                  |      z  z               }|dk  s|dk(  r|S ||k\  ryy)Nr4   rS   r   )r"   r   r   r1   int64r   rP   )r-   r   r9   rY   rX   r   results          r!   random_logseriesr     s    !A
FXXa!e_QJXXbhhq266!9rvvay+@'@ABF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 )NrO   g(\@gffffff@rB   gx&?g     4@g.@r*   r   r   r4      <      2   (   rS   4   r`   g      ?gUUUUUU?r   g     @g     |@g     `@g     X@g     a@g    MAg     1@)
r{   r   r   r   r+   r   r   rP   absrq   )'r-   r   r   r9   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  1  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 )NrO   g      $@r4   r   )r   r7   rP   r{   r+   r   )
r-   r   r   r   qn_npboundrZ   pxrX   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   rS   rB   g      >@rO   )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$   )L__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   r"   r'   r/   r2   r?   rC   r,   rI   rL   rQ   r^   rb   ri   rk   rm   rs   rw   ry   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  "  $ + + 9 9 " "J &) &)R  
 + +
 7 7 " "
 8 8 F F  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$   