U
    |eD?                     @   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re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r
e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   s
   t | S N)nplog1px r$   Z/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/np/random/distributions.pynp_log1p   s    r&   c                 C   s   t t| S r   )r    r!   r   r"   r$   r$   r%   	np_log1pf    s    r'   c                 C   s   |t dt|   S N       @)r    sqrtrandom_standard_exponentialbitgenmoder$   r$   r%   random_rayleigh$   s    r/   c                 C   s   t d|  S N      ?)r    logr"   r$   r$   r%   r&   (   s    c                 C   s   t d}t |t|  S r0   )r    r   r2   )r#   f32_oner$   r$   r%   r'   ,   s    
c              	   C   s    |t dt dt|    S )Ng       r1   )r    r*   r2   r   r,   r$   r$   r%   r/   1   s    )r      c                 C   s
   t | S r   )r    expm1r"   r$   r$   r%   np_expm16   s    r6   c                 C   s   t | d S r0   )r    expr"   r$   r$   r%   r6   :   s    c                 C   s   t | }|d@ }|dL }|d@ }|d? d@ }|t|  }|d@ rF| }|t| k rV|S |dkrt tt|   }tt|   }|| || kr^|d? d@ rt|  S t| S q^q t|d  t|  t|  t|  t	d| | k r |S q d S )N      r   l    r   g      )
r   r   r   r   r    r!   r   r   r   r7   r-   ridxsignZrabsr#   xxyyr$   r$   r%   random_standard_normal?   s2    
r@   c                 C   s  t | }|d@ }|d? d@ }|d? d@ }tt|t|  }|d@ rJ| }|t| k rZ|S |dkrtt tt|   }ttt|   }t|| t|| krb|d? d@ rtt|  S tt| S qbq t|d  t|  t|  t|  tt	
td | | k r |S q d S )Nr8   r9   r   	   i r         ?)r   r   r   r   r	   r'   r   r
   r   r    r7   r:   r$   r$   r%   random_standard_normal_f\   s0    rC   c                 C   s   t | }|dL }|d@ }|dL }|t|  }|t| k r<|S |dkrVttt|   S t|d  t|  t|  t|  t| k r |S q d S )N   r8   r9   r   r   )	r   r   r   r   r&   r   r   r    r7   r-   rir<   r#   r$   r$   r%   r+   x   s    
r+   c                 C   s   t | }|dL }|d@ }|dL }tt|t|  }|t| k rD|S |dkrfttttt|   S t|d  t|  t|  t|  tt	t| k r |S q d S )Nr   r8   r9   r   )
r   r   r   r   r   r'   r   r   r    r7   rE   r$   r$   r%   random_standard_exponential_f   s"    rG   c                 C   s   t t|   S r   )r&   r   r-   r$   r$   r%   random_standard_exponential_inv   s    rI   c                 C   s   t tdt|   S r0   )r    r2   r   r   rH   r$   r$   r%   !random_standard_exponential_inv_f   s    rJ   c                 C   sL  |dkrt | S |dkrdS |dk rt| }t | }|d| kr\t|d| }||kr|S q$td| |  }td| ||  d| }||| kr$|S q$n|d }dtd|  }t| }d||  }|dkrqq|| | }t| }|dd||  ||   k r|| S t|d| | |d| t|   k r|| S qd S )Nr1           r   UUUUUU?rA   m{?rB   )r+   r   powr    r2   r*   r@   )r-   shapeUVXYbcr$   r$   r%   random_standard_gamma   s6    ,rV   c           	      C   s  t d}t |}||kr t| S |t dkr4t dS ||k rt| }t| }||| kr|t t|t || }||kr|S q<t tt || |  }t t|| t ||  t || }||| kr<|S q<n||t d  }t |t tt d|  }t t| }t |||  }|t dkr q2q t || | }t| }||t d||  ||   k rxt || S t|t d| | ||| t|   k r t || S q d S )Nr1   rK   g      @g      "@rM   rB   )r   rG   r   rN   r    r2   r*   rC   )	r-   rO   r3   rP   rQ   rR   rS   rT   rU   r$   r$   r%   random_standard_gamma_f   sB    
"
rW   c                 C   s   |t |  }|| S r   r@   r-   locscaleZscaled_normalr$   r$   r%   random_normal   s    r\   c                 C   s   t |t|  }t || S r   )r   rC   rY   r$   r$   r%   random_normal_f   s    r]   c                 C   s   |t |  S r   )r+   )r-   r[   r$   r$   r%   random_exponential  s    r^   c                 C   s   |t |  }|| S r   r   )r-   lowerrangeZscaled_uniformr$   r$   r%   random_uniform  s    rb   c                 C   s   |t | | S r   rV   r-   rO   r[   r$   r$   r%   random_gamma  s    re   c                 C   s   t |t| | S r   )r   rW   rd   r$   r$   r%   random_gamma_f  s    rf   c              	   C   s   |dkr|dkrt | }t | }t|d| }t|d| }|| }|dkr|dkr|| dkrh|| S t|| }t|| }	t||	}
||
8 }|	|
8 }	t|tt|t|	  S qn t| |}t| |}|||  S d S )Nr1   rK   r   )r   rN   r    r2   minr7   rV   )r-   arT   rP   rQ   rR   rS   ZXpYZlogXZlogYZlogMZGaGbr$   r$   r%   random_beta  s$    
(

rj   c                 C   s   dt | |d  S r(   rc   )r-   dfr$   r$   r%   random_chisquare2  s    rl   c                 C   s   t | || t | ||  S r   )rl   )r-   dfnumdfdenr$   r$   r%   random_f7  s    ro   c                 C   s   t | t |  S r   rX   rH   r$   r$   r%   random_standard_cauchy=  s    rp   c                 C   s   t t| | S r   )r6   r+   r-   rh   r$   r$   r%   random_paretoB  s    rr   c                 C   s   |dkrdS t t| d| S NrK   r1   )rN   r+   rq   r$   r$   r%   random_weibullG  s    rt   c                 C   s   t tt|   d| S r0   )rN   r6   r+   rq   r$   r$   r%   random_powerN  s    ru   c                 C   s`   t | }|dkrt | }q|dkr>||td| |   }n|dkr\||t||   }|S )Nr   rB   r)   rK   r   r    r2   r-   rZ   r[   rP   r$   r$   r%   random_laplaceS  s    
rx   c                 C   s4   t | }|dkrt | }q||t|d|    S rs   rv   rw   r$   r$   r%   random_logistic_  s    
ry   c                 C   s   t t| ||S r   )r    r7   r\   )r-   meansigmar$   r$   r%   random_lognormalg  s    r|   c                 C   s2   t | }t| |d }t|d | t| S )N   )r@   rV   r    r*   )r-   rk   numdenomr$   r$   r%   random_standard_tl  s    r   c                 C   sr   |d|  }t | }|| | }|||td| | ||     }t| }||||  krb|S || | S d S )Nr}      )r@   r    r*   r   )r-   rz   r[   mu_2lrS   rR   rP   r$   r$   r%   random_walds  s    &r   c                 C   sB   d}| }}d| }t | }||kr>||9 }||7 }|d }q|S )Nr   r1   r_   )r-   prR   sumprodqrP   r$   r$   r%   random_geometric_search  s    
r   c                 C   s   t t|  t |  S r   )r    ceilr+   r!   r-   r   r$   r$   r%   random_geometric_inversion  s    r   c                 C   s    |dkrt | |S t| |S d S )NrL   )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 rLqt dd|  |}|| |d  |d  || kr|S qd S )Nr1   r)   g      )rN   r   r    floorr   )r-   rh   am1rT   rP   rQ   rR   Tr$   r$   r%   random_zipf  s    
 r   c           
      C   sh   || }|| }|| }|| }|| | }t | }	|	|krN|t|	|  S |td|	 |  S d S r0   )r   r    r*   )
r-   leftr.   rightbaseZleftbaseratioZleftprodZ	rightprodrP   r$   r$   r%   random_triangular  s    r   c           	   
   C   s   ddddddddd	d
g
}| dks(| dkr,dS | dk rBt d|  }nd}| | }d| d|  }d}|d }tddD ]}||9 }||d|  7 }qt|| d|  |d t|  | }| dk rtd|d D ]}|t|d  }|d }q|S )NgUUUUUU?gllfgJ?g88Cg$+K?g<ٰj_gAAz?gSˆBg8?g5gGr1   r)   rK   g      @   r   gdg?rA   r9   rB   r   )intra   r    r2   )	r#   rh   nx0x2Zlg2piZgl0kglr$   r$   r%   random_loggam  s8        &
r   c                 C   s@   t | }d}d}t| }||9 }||kr6|d7 }q|S qd S )Nr   r1   r   )r    r7   r   )r-   lamenlamrR   r   rP   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r|	|kr|S |dk sL|
dk r|	|
krqLt |	t | t ||
|
  |  | ||  t|d  krL|S qLd S )Ngn?g=
ףp=@gh|?5g[	m?g$~?gr?g333333@gr鷯?gB>٬@r}   rB   gQ?gQ?r   g9v?r   )r    r*   r2   r   fabsr   r   )r-   r   ZslamZloglamrT   rh   ZinvalphavrrP   rQ   usr   r$   r$   r%   random_poisson_ptrs  s$    

 (r   c                 C   s,   |dkrt | |S |dkrdS t| |S d S )N
   r   )r   r   )r-   r   r$   r$   r%   random_poisson  s
    
r   c                 C   s   t | |d| | }t| |S )Nr   )re   r   )r-   r   r   rS   r$   r$   r%   random_negative_binomial  s    r   c                 C   sz   t |rt jS |dkr"t| |S d|k rVt| |d }t| t | }|||  S t| |d }t| |d|  S d S )Nr   r   r)   r}   )r    isnannanrl   r@   r*   r   )r-   rk   noncZChi2r   ir$   r$   r%   random_noncentral_chisquare  s    

r   c                 C   s"   t | ||| }|t| ||  S r   )r   rl   )r-   rm   rn   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rxq
n|S ||krdS dS q
d S )Nr   rK   r}   )r&   r   r    r5   r   r   r2   )r-   r   r;   rQ   rP   r   resultr$   r$   r%   random_logseries-  s    
"r   )N__doc__numpyr    numba.core.extendingr   Z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'   r/   r6   r@   rC   r+   rG   rI   rJ   rV   rW   r\   r]   r^   rb   re   rf   rj   rl   ro   rp   rr   rt   ru   rx   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r$   r$   r%   <module>   s   T














%
)























!


	


