o
    iQ                     @   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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 Z-edd Z.ed d! Z/ed"d# Z0ed$d% Z1ed&d' Z2ed(d) Z3ed*d+ Z4ed,d- Z5ed.d/ Z6ed0d1 Z7ed2d3 Z8ed4d5 Z9ed6d7 Z:ed8d9 Z;ed:d; Z<ed<d= Z=ed>d? Z>ed@dA Z?edBdC Z@edDdE ZAedFdG ZBedHdI ZCe"dJk r"edKdL ZDnedMdL ZDedNdO ZEedPdQ ZFedRdS ZGedTdU ZHedVdW ZIedXdY ZJedZd[ ZKed\d] ZLed^d_ ZMed`da ZNedbdc ZOeddde ZPdS )fzU
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_versionc                 C   
   t | S N)nplog1px r#   ^/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/np/random/old_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   r/   c                 C   r   r   )r   expm1r!   r#   r#   r$   np_expm1*   r&   r1   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)N         l    r   g      )
r   r   r   r   r   r    r   r   r   expr-   ridxsignrabsr"   xxyyr#   r#   r$   random_standard_normal/   s:   
	r=   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)Nr2   r3   r4   	   i r         ?)r   r   r   r   r	   r'   r   r
   r   r   r5   r6   r#   r#   r$   random_standard_normal_fL   s8   
r@   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)Nr2      r3   r4   r   )	r   r   r   r   r%   r   r   r   r5   r-   rir8   r"   r#   r#   r$   r,   h   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)Nr2   r3   r4   r   )
r   r   r   r   r   r'   r   r   r   r5   rB   r#   r#   r$   random_standard_exponential_fz   s&   rD   c                 C   s   t t|   S r   )r%   r   r-   r#   r#   r$   random_standard_exponential_inv      rF   c                 C   s   t tdt|   S N      ?)r   logr   r   rE   r#   r#   r$   !random_standard_exponential_inv_f   s   rK   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])NrI           r2   UUUUUU?r>   m{?r?   )r,   r   powr   rJ   r+   r=   )r-   shapeUVXYbcr#   r#   r$   random_standard_gamma   sD   ,rW   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)NrI   rL   r2         @g      "@rN   r?   )r   rD   r   rO   r   rJ   r+   r@   )	r-   rP   f32_onerQ   rR   rS   rT   rU   rV   r#   r#   r$   random_standard_gamma_f   sP   
 rZ   c                 C      |t |  }|| S r   r=   r-   locscalescaled_normalr#   r#   r$   random_normal      ra   c                 C   s   t |t|  }t || S r   )r   r@   r]   r#   r#   r$   random_normal_f   s   rc   c                 C   s   |t |  S r   )r,   )r-   r_   r#   r#   r$   random_exponential   s   rd   c                 C   r[   r   r   )r-   lowerrangescaled_uniformr#   r#   r$   random_uniform   rb   ri   c                 C   s   |t | | S r   rW   r-   rP   r_   r#   r#   r$   random_gamma   r(   rl   c                 C   s   t |t| | S r   )r   rZ   rk   r#   r#   r$   random_gamma_f     rm   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 )NrI   r2   rL   r   )r   rO   r   rJ   minr5   rW   )r-   arU   rQ   rR   rS   rT   XpYlogXlogYlogMGaGbr#   r#   r$   random_beta  s(   
$

rw   c                 C   s   dt | |d  S r)   rj   )r-   dfr#   r#   r$   random_chisquare"  rn   ry   c                 C   s   t | || t | ||  S r   )ry   )r-   dfnumdfdenr#   r#   r$   random_f'  s   r|   c                 C   s   t | t |  S r   r\   rE   r#   r#   r$   random_standard_cauchy-  rG   r}   c                 C   s   t t| | S r   )r1   r,   r-   rp   r#   r#   r$   random_pareto2  rG   r   c                 C   s   |dkrdS t t| d| S NrL   rI   )rO   r,   r~   r#   r#   r$   random_weibull7  s   r   c                 C   s   t tt|   d| S rH   )rO   r1   r,   r~   r#   r#   r$   random_power>  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   r?   r*   rL   r   r   rJ   r-   r^   r_   rQ   r#   r#   r$   random_laplaceC  s   r   c                 C   s:   t | }|dkrt | }|dks||t|d|    S r   r   r   r#   r#   r$   random_logisticO  s
   r   c                 C   s   t t| ||S r   )r   r5   ra   )r-   meansigmar#   r#   r$   random_lognormalW  rn   r   c                 C   s2   t | }t| |d }t|d | t| S )N   )r=   rW   r   r+   )r-   rx   numdenomr#   r#   r$   random_standard_t\  s   r   c                 C   sn   |d|  }t | }|| | }|||td| | ||     }t| }||||  kr1|S || | S )Nr      )r=   r   r+   r   )r-   r   r_   mu_2lrT   rS   rQ   r#   r#   r$   random_waldc  s   &r   c                 C   sH   d}| }}d| }t | }||kr"||9 }||7 }|d }||ks|S )Nr2   rI   re   )r-   prS   sumprodqrQ   r#   r#   r$   random_geometric_searchp  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 )NrM   )r   r   r   r#   r#   r$   random_geometric  s   

r   )r   r2   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
NrI   r*   r2   g      )rO   r   r   floorr   )r-   rp   am1rU   rQ   rR   rS   Tr#   r#   r$   random_zipf  s   
 r   c           
      C   s   |d }t d|}t t| }	 t| }|| d|  }t| }tt |d| }|tks2|dk r3qt dd|  |}	|| |	d  |d  |	| krN|S qr   )rO   r   r   r   r   )
r-   rp   r   rU   UminU01rQ   rR   rS   r   r#   r#   r$   r     s   
 c           
      C   sd   || }|| }|| }|| }|| | }t | }	|	|kr'|t|	|  S |td|	 |  S rH   )r   r   r+   )
r-   leftr.   rightbaseleftbaseratioleftprod	rightprodrQ   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gGrI   r*   rL   g      @   r   gdg?r>   r4   r?   r2   )intrg   r   rJ   )	r"   rp   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   rI   r2   )r   r5   r   )r-   lamenlamrS   r   rQ   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   r2   r?   gQ?gQ?r   g9v?)r   r+   rJ   r   fabsr   r   )r-   r   slamloglamrU   rp   invalphavrrQ   rR   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   )r-   r   r#   r#   r$   random_poisson  s
   

r   c                 C   s   t | |d| | }t| |S )Nr2   )rl   r   )r-   r   r   rT   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   r2   r*   r   )r   isnannanry   r=   r+   r   )r-   rx   noncChi2r   ir#   r#   r$   random_noncentral_chisquare  s   

r   c                 C   s"   t | ||| }|t| ||  S r   )r   ry   )r-   rz   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 )Nr2   rL   r   )r%   r   r   r0   r   r   rJ   )r-   r   r7   rR   rQ   r   resultr#   r#   r$   random_logseries.  s   
"r   c           '      C   s,  t |d| }d| }|| | }tt|}tdt|| |  d|  d }|d }|| }	|| }
ddd|   }||	 ||	|   }|d|d   }|
| |
|  }|d|d   }|dd|   }|||  }|||  }d	}d
 }}	 |d	kr|| | }t| | }t| }||krd}q|tt|||  | }d}q||dkr||krd}q||	|| |  }|| d t|| d |  }|dkrd	}q|tt|}d}q||dkr||krd}q|tt|	t||  }|d
k s|dkrd	}q||||  | }d}q||dkr:tt|
t||  }||ks,|dkr/d	}q||||  | }d}q||dkrt|| }|dkrV||d d k rVd}q||| }||d  }d}||k r}t	|d |d D ]}||| |  }qpn||krt	|d |d D ]}||| |  }q||krd	}q|d}q||dkr|| ||d d  d | d  }| | d|  }t|}||| k rd}q|||| krd	}q||d }|d } |d | }!|| d }"|| }#| |  }$|!|! }%|"|" }&||t| |  || d t|!|"   || t|"| ||    ddddd|$  |$  |$  |$  |  d  ddddd|%  |%  |%  |%  |! d  ddddd|#  |#  |#  |#  | d  ddddd|&  |&  |&  |&  |" d  krd	}q|d}q||dkr|dkr|| }|S q})NrI   g(\@gffffff@r?   gx&?g     4@g.@r*   r   r   r2      <      2   (   rL   4   rX   g      ?gUUUUUU?r   g     @g     |@g     `@g     X@g     a@g    MAg     1@)
ro   r   r   r   r+   r   r   rJ   absrg   )'r-   r   r   r7   r   fmmp1xmxlxrrV   rp   lamllamrp2p3p4caseyr   nrquvr"   sFr   rhor   Ax1f1zwr   f2z2w2r#   r#   r$   random_binomial_btpeD  s(  ("







,


r   c           
      C   s   d| }t |t | }|| }t||dt || d   }d}|}t| }	|	|krU|d }||kr?d}|}t| }	n|	|8 }	|| d | | ||  }|	|ks.|S )NrI   g      $@r2   r   )r   r5   rJ   ro   r+   r   )
r-   r   r   r   qn_npboundrS   pxrQ   r#   r#   r$   random_binomial_inversion  s"    

r   c                 C   st   |dks|dkr
dS |dkr || dkrt | ||S t| ||S d| }|| dkr2|t | || S |t| || S )Nr   rL   r?   g      >@rI   )r   r   )r-   r   r   r   r#   r#   r$   random_binomial  s   r   )Q__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'   r/   r1   r=   r@   r,   rD   rF   rK   rW   rZ   ra   rc   rd   ri   rl   rm   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>   s    T











%
)
























!


	




y
