o
    TdD?                     @   s  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rged	d
 Z#edd Z$edd Z%nedd
 Z#edd Z$edd Z%e"dkredd Z&nedd Z&edd Z'edd Z(edd Z)edd Z*edd Z+ed d! Z,ed"d# Z-ed$d% Z.ed&d' Z/ed(d) Z0ed*d+ Z1ed,d- Z2ed.d/ Z3ed0d1 Z4ed2d3 Z5ed4d5 Z6ed6d7 Z7ed8d9 Z8ed:d; Z9ed<d= Z:ed>d? Z;ed@dA Z<edBdC Z=edDdE Z>edFdG Z?edHdI Z@edJdK ZAedLdM ZBedNdO ZCedPdQ ZDedRdS ZEedTdU ZFedVdW ZGedXdY ZHedZd[ ZIed\d] ZJed^d_ ZKed`da ZLedbdc ZMdS )dzU
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                 C   
   t | S N)nplog1px r%   p/home/ncw/WWW/www-new/content/articles/pi-bbp/venv/lib/python3.10/site-packages/numba/np/random/distributions.pynp_log1p      
r'   c                 C   s   t t| S r    )r!   r"   r   r#   r%   r%   r&   	np_log1pf       r)   c                 C   s   |t dt|   S N       @)r!   sqrtrandom_standard_exponentialbitgenmoder%   r%   r&   random_rayleigh$   s   r2   c                 C   s   t d|  S N      ?)r!   logr#   r%   r%   r&   r'   (   r*   c                 C   s   t d}t |t|  S r3   )r!   r   r5   )r$   f32_oner%   r%   r&   r)   ,   s   
c              	   C   s    |t dt dt|    S )Ng       r4   )r!   r-   r5   r   r/   r%   r%   r&   r2   1   s    )r      c                 C   r   r    )r!   expm1r#   r%   r%   r&   np_expm16   r(   r9   c                 C   s   t | d S r3   )r!   expr#   r%   r%   r&   r9   :   r*   c                 C   s   	 t | }|d@ }|dL }|d@ }|d? d@ }|t|  }|d@ r$| }|t| k r,|S |dkr]	 t tt|   }tt|   }|| || kr\|d? d@ rXt|  S t| S q1t|d  t|  t|  t|  t	d| | k rz|S q)Nr         l    r   g      )
r   r   r   r   r!   r"   r   r   r   r:   r0   ridxsignrabsr$   xxyyr%   r%   r&   random_standard_normal?   s:   
	rD   c                 C   s  	 t | }|d@ }|d? d@ }|d? d@ }tt|t|  }|d@ r&| }|t| k r.|S |dkri	 tt tt|   }ttt|   }t|| t|| krh|d? d@ rbtt|  S tt| S q3t|d  t|  t|  t|  tt	
td | | k r|S q)Nr   r;   r<   	   i r         ?)r   r   r   r   r	   r)   r   r
   r   r!   r:   r=   r%   r%   r&   random_standard_normal_f\   s8   
rG   c                 C   s   	 t | }|dL }|d@ }|dL }|t|  }|t| k r|S |dkr,ttt|   S t|d  t|  t|  t|  t| k rF|S q)Nr      r;   r<   r   )	r   r   r   r   r'   r   r   r!   r:   r0   rir?   r$   r%   r%   r&   r.   x   s"   
r.   c                 C   s   	 t | }|dL }|d@ }|dL }tt|t|  }|t| k r#|S |dkr4ttttt|   S t|d  t|  t|  t|  tt	t| k rR|S q)Nr   r;   r<   r   )
r   r   r   r   r   r)   r   r   r!   r:   rI   r%   r%   r&   random_standard_exponential_f   s&   rK   c                 C   s   t t|   S r    )r'   r   r0   r%   r%   r&   random_standard_exponential_inv      rM   c                 C   s   t tdt|   S r3   )r!   r5   r   r   rL   r%   r%   r&   !random_standard_exponential_inv_f   s   rO   c                 C   sJ  |dkrt | S |dkrdS |dk rO	 t| }t | }|d| kr/t|d| }||kr.|S ntd| |  }td| ||  d| }||| krN|S q|d }dtd|  }	 	 t| }d||  }|dkrmnq^|| | }t| }|dd||  ||   k r|| S t|d| | |d| t|   k r|| S q])Nr4           r   UUUUUU?rE   m{?rF   )r.   r   powr!   r5   r-   rD   )r0   shapeUVXYbcr%   r%   r&   random_standard_gamma   sD   ,r[   c           	      C   s  t d}t |}||krt| S |t dkrt dS ||k ri	 t| }t| }||| kr?t t|t || }||kr>|S n)t tt || |  }t t|| t ||  t || }||| krh|S q||t d  }t |t tt d|  }	 	 t t| }t |||  }|t dkrnqt || | }t| }||t d||  ||   k rt || S t|t d| | ||| t|   k rt || S q)Nr4   rP   r   g      @g      "@rR   rF   )r   rK   r   rS   r!   r5   r-   rG   )	r0   rT   r6   rU   rV   rW   rX   rY   rZ   r%   r%   r&   random_standard_gamma_f   sP   
 r\   c                 C      |t |  }|| S r    rD   r0   locscalescaled_normalr%   r%   r&   random_normal      rc   c                 C   s   t |t|  }t || S r    )r   rG   r_   r%   r%   r&   random_normal_f   s   re   c                 C   s   |t |  S r    )r.   )r0   ra   r%   r%   r&   random_exponential  s   rf   c                 C   r]   r    r   )r0   lowerrangescaled_uniformr%   r%   r&   random_uniform  rd   rk   c                 C   s   |t | | S r    r[   r0   rT   ra   r%   r%   r&   random_gamma  r*   rn   c                 C   s   t |t| | S r    )r   r\   rm   r%   r%   r&   random_gamma_f     ro   c              	   C   s   |dkrc|dkrc	 t | }t | }t|d| }t|d| }|| }|dkrb|dkrb|| dkr5|| S t|| }t|| }	t||	}
||
8 }|	|
8 }	t|tt|t|	  S q	t| |}t| |}|||  S )Nr4   r   rP   r   )r   rS   r!   r5   minr:   r[   )r0   arY   rU   rV   rW   rX   XpYlogXlogYlogMGaGbr%   r%   r&   random_beta  s(   
$

ry   c                 C   s   dt | |d  S r+   rl   )r0   dfr%   r%   r&   random_chisquare2  rp   r{   c                 C   s   t | || t | ||  S r    )r{   )r0   dfnumdfdenr%   r%   r&   random_f7  s   r~   c                 C   s   t | t |  S r    r^   rL   r%   r%   r&   random_standard_cauchy=  rN   r   c                 C   s   t t| | S r    )r9   r.   r0   rr   r%   r%   r&   random_paretoB  rN   r   c                 C   s   |dkrdS t t| d| S NrP   r4   )rS   r.   r   r%   r%   r&   random_weibullG  s   r   c                 C   s   t tt|   d| S r3   )rS   r9   r.   r   r%   r%   r&   random_powerN  s   r   c                 C   sh   t | }|dkrt | }|dks|dkr#||td| |   }|S |dkr2||t||   }|S )Nr   rF   r,   rP   r   r!   r5   r0   r`   ra   rU   r%   r%   r&   random_laplaceS  s   r   c                 C   s:   t | }|dkrt | }|dks||t|d|    S r   r   r   r%   r%   r&   random_logistic_  s
   r   c                 C   s   t t| ||S r    )r!   r:   rc   )r0   meansigmar%   r%   r&   random_lognormalg  rp   r   c                 C   s2   t | }t| |d }t|d | t| S )N   )rD   r[   r!   r-   )r0   rz   numdenomr%   r%   r&   random_standard_tl  s   r   c                 C   sn   |d|  }t | }|| | }|||td| | ||     }t| }||||  kr1|S || | S )Nr      )rD   r!   r-   r   )r0   r   ra   mu_2lrX   rW   rU   r%   r%   r&   random_walds  s   &r   c                 C   sH   d}| }}d| }t | }||kr"||9 }||7 }|d }||ks|S )Nr   r4   rg   )r0   prW   sumprodqrU   r%   r%   r&   random_geometric_search  s   r   c                 C   s   t t|  t |  S r    )r!   ceilr.   r"   r0   r   r%   r%   r&   random_geometric_inversion  s   r   c                 C   s   |dkr	t | |S t| |S )NrQ   )r   r   r   r%   r%   r&   random_geometric  s   

r   c                 C   s   |d }t d|}	 dt|  }t| }tt |d| }|tks&|dk r'q	t dd|  |}|| |d  |d  || krB|S q
)Nr4   r,   r   g      )rS   r   r!   floorr   )r0   rr   am1rY   rU   rV   rW   Tr%   r%   r&   random_zipf  s   
 r   c           
      C   sd   || }|| }|| }|| }|| | }t | }	|	|kr'|t|	|  S |td|	 |  S r3   )r   r!   r-   )
r0   leftr1   rightbaseleftbaseratioleftprod	rightprodrU   r%   r%   r&   random_triangular  s   r   c           	      C   s   g d}| dks| dkrdS | dk rt d|  }nd}| | }d| d|  }d}|d	 }tdd	D ]}||9 }||d
|  7 }q2|| d|  |d t|  | }| dk rotd|d D ]}|t|d  }|d }q_|S )N)
gUUUUUU?gllfgJ?g88Cg$+K?g<ٰj_gAAz?gSˆBg8?g5gGr4   r,   rP   g      @   r   gdg?rE   r<   rF   r   )intri   r!   r5   )	r$   rr   nx0x2lg2pigl0kglr%   r%   r&   random_loggam  s&   &
r   c                 C   s>   t | }d}d}	 t| }||9 }||kr|d7 }n|S q)Nr   r4   r   )r!   r:   r   )r0   lamenlamrW   r   rU   r%   r%   r&   random_poisson_mult  s   
r   c                 C   s  t |}t |}dd|  }dd|  }dd|d   }dd	|d
   }	 t| d }t| }	dt | }
td
| |
 | | | d }|
dkrR|	|krR|S |dk s^|
dk r_|	|
kr_q&t |	t | t ||
|
  |  | ||  t|d  kr|S q')Ngn?g=
ףp=@gh|?5g[	m?g$~?gr?g333333@gr鷯?gB>٬@r   r   rF   gQ?gQ?r   g9v?)r!   r-   r5   r   fabsr   r   )r0   r   slamloglamrY   rr   invalphavrrU   rV   usr   r%   r%   r&   random_poisson_ptrs  s(   

 (r   c                 C   s(   |dkr	t | |S |dkrdS t| |S )N
   r   )r   r   )r0   r   r%   r%   r&   random_poisson  s
   

r   c                 C   s   t | |d| | }t| |S )Nr   )rn   r   )r0   r   r   rX   r%   r%   r&   random_negative_binomial  s   
r   c                 C   sv   t |rt jS |dkrt| |S d|k r+t| |d }t| t | }|||  S t| |d }t| |d|  S )Nr   r   r,   r   )r!   isnannanr{   rD   r-   r   )r0   rz   noncChi2r   ir%   r%   r&   random_noncentral_chisquare  s   

r   c                 C   s"   t | ||| }|t| ||  S r    )r   r{   )r0   r|   r}   r   tr%   r%   r&   random_noncentral_f'  s   r   c                 C   s   t | }	 t| }||krdS t| }t||  }||| kr>ttdt|t|  }|dk s;|dkr<q|S ||krDdS dS )Nr   rP   r   )r'   r   r!   r8   r   r   r5   )r0   r   r>   rV   rU   r   resultr%   r%   r&   random_logseries-  s   
"r   )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)   r2   r9   rD   rG   r.   rK   rM   rO   r[   r\   rc   re   rf   rk   rn   ro   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&   <module>   s    T













%
)























!


	


