o
    iO                     @   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  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" Z.ed#d$ Z/ed%d& Z0ed'd( Z1ed)d* Z2ed+d, Z3ed-d. Z4ed/d0 Z5ed1d2 Z6ed3d4 Z7ed5d6 Z8ed7d8 Z9ed9d: Z:ed;d< Z;ed=d> Z<ed?d@ Z=edAdB Z>edCdD Z?edEdF Z@edGdH ZAedIdJ ZBedKdL ZCedMdN ZDedOdP ZEedQdR ZFedSdT ZGedUdV ZHedWdX ZIedYdZ ZJed[d\ ZKed]d^ ZLed_d` ZMedadb ZNdS )czU
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                 C   
   t | S N)nplog1px r"   l/var/www/html/eduruby.in/lip-sync/lip-sync-env/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   r.   c                 C   r   r   )r   expm1r    r"   r"   r#   np_expm1)   r%   r0   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signZ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)Nr1   r2   r3   	   i r         ?)r   r   r   r   r	   r&   r   r
   r   r   r4   r5   r"   r"   r#   random_standard_normal_fK   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)Nr1      r2   r3   r   )	r   r   r   r   r$   r   r   r   r4   r,   rir7   r!   r"   r"   r#   r+   g   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)Nr1   r2   r3   r   )
r   r   r   r   r   r&   r   r   r   r4   r@   r"   r"   r#   random_standard_exponential_fy   s&   rB   c                 C   s   t t|   S r   )r$   r   r,   r"   r"   r#   random_standard_exponential_inv      rD   c                 C   s   t tdt|   S N      ?)r   logr   r   rC   r"   r"   r#   !random_standard_exponential_inv_f   s   rI   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])NrG           r1   UUUUUU?r<   m{?r=   )r+   r   powr   rH   r*   r;   )r,   shapeUVXYbcr"   r"   r#   random_standard_gamma   sD   ,rU   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)NrG   rJ   r1         @g      "@rL   r=   )r   rB   r   rM   r   rH   r*   r>   )	r,   rN   Zf32_onerO   rP   rQ   rR   rS   rT   r"   r"   r#   random_standard_gamma_f   sP   
 rW   c                 C      |t |  }|| S r   r;   r,   locscaleZscaled_normalr"   r"   r#   random_normal      r]   c                 C   s   t |t|  }t || S r   )r   r>   rZ   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   rX   r   r   )r,   lowerrangeZscaled_uniformr"   r"   r#   random_uniform   r^   rd   c                 C   s   |t | | S r   rU   r,   rN   r\   r"   r"   r#   random_gamma   r'   rg   c                 C   s   t |t| | S r   )r   rW   rf   r"   r"   r#   random_gamma_f     rh   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 )NrG   r1   rJ   r   )r   rM   r   rH   minr4   rU   )r,   arS   rO   rP   rQ   rR   ZXpYZlogXZlogYZlogMZGaZGbr"   r"   r#   random_beta  s(   
$

rl   c                 C   s   dt | |d  S r(   re   )r,   dfr"   r"   r#   random_chisquare!  ri   rn   c                 C   s   t | || t | ||  S r   )rn   )r,   dfnumdfdenr"   r"   r#   random_f&  s   rq   c                 C   s   t | t |  S r   rY   rC   r"   r"   r#   random_standard_cauchy,  rE   rr   c                 C   s   t t| | S r   )r0   r+   r,   rk   r"   r"   r#   random_pareto1  rE   rt   c                 C   s   |dkrdS t t| d| S NrJ   rG   )rM   r+   rs   r"   r"   r#   random_weibull6  s   rv   c                 C   s   t tt|   d| S rF   )rM   r0   r+   rs   r"   r"   r#   random_power=  s   rw   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)   rJ   r   r   rH   r,   r[   r\   rO   r"   r"   r#   random_laplaceB  s   rz   c                 C   s:   t | }|dkrt | }|dks||t|d|    S ru   rx   ry   r"   r"   r#   random_logisticN  s
   r{   c                 C   s   t t| ||S r   )r   r4   r]   )r,   meansigmar"   r"   r#   random_lognormalV  ri   r~   c                 C   s2   t | }t| |d }t|d | t| S )N   )r;   rU   r   r*   )r,   rm   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\   Zmu_2lrR   rQ   rO   r"   r"   r#   random_waldb  s   &r   c                 C   sH   d}| }}d| }t | }||kr"||9 }||7 }|d }||ks|S )Nr1   rG   ra   )r,   prQ   sumprodqrO   r"   r"   r#   random_geometric_searcho  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 )NrK   )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
)NrG   r)   r1   g      )rM   r   r   floorr   )r,   rk   Zam1rS   rO   rP   rQ   Tr"   r"   r#   random_zipf  s   
 r   c           
      C   sd   || }|| }|| }|| }|| | }t | }	|	|kr'|t|	|  S |td|	 |  S rF   )r   r   r*   )
r,   leftr-   rightbaseZleftbaseratioZleftprodZ	rightprodrO   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gGrG   r)   rJ   g      @   r   gdg?r<   r3   r=   r1   )intrc   r   rH   )	r!   rk   nZx0x2Zlg2piZ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   rG   r1   )r   r4   r   )r,   lamZenlamrQ   r   rO   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   r1   r=   gQ?gQ?r   g9v?)r   r*   rH   r   fabsr   r   )r,   r   ZslamZloglamrS   rk   ZinvalphaZvrrO   rP   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 )Nr1   )rg   r   )r,   r   r   rR   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   r1   r)   r   )r   isnannanrn   r;   r*   r   )r,   rm   noncZChi2r   ir"   r"   r#   random_noncentral_chisquare  s   

r   c                 C   s"   t | ||| }|t| ||  S r   )r   rn   )r,   ro   rp   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 )Nr1   rJ   r   )r$   r   r   r/   r   r   rH   )r,   r   r6   rP   rO   r   resultr"   r"   r#   random_logseries  s   
"r   c           '      C   s,  t |d| }d| }|| | }t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r1d	}q~|||  | }d}q~|dkrt|| }|dkrX||d d k rXd}q~|| }||d  }d}||k rt	|d |d D ]}||| |  }qrn||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~n|dkr|dkr|| }|S q)NrG   g(\@gffffff@r=   gx&?g     4@g.@r)   r   r   r1      <      2   (   rJ   4   rV   g      ?gUUUUUU?r   g     @g     |@g     `@g     X@g     a@g    MAg     1@)
rj   r   r   r   r*   r   r   rH   absrc   )'r,   r   r   r6   r   fmmp1ZxmZxlZxrrT   rk   ZlamlZlamrp2Zp3Zp4caseyr   Znrquvr!   sFr   rhor   Ax1f1zwr   f2Zz2Zw2r"   r"   r#   random_binomial_btpe2  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 )NrG   g      $@r1   r   )r   r4   rH   rj   r*   r   )
r,   r   r   r   qnZ_npboundrQ   ZpxrO   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   rJ   r=   g      >@rG   )r   r   )r,   r   r   r   r"   r"   r#   random_binomial  s   r   )O__doc__numpyr   Z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   Znumba.np.random.generator_corer   r   r   r   Znumbar   r   r$   r&   r.   r0   r;   r>   r+   rB   rD   rI   rU   rW   r]   r_   r`   rd   rg   rh   rl   rn   rq   rr   rt   rv   rw   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#   <module>   s    T











%
)























!


	




w
