o
    0 imO                     @   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 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% Z-ed&d' Z.ed(d) Z/ed*d+ Z0ed,d- Z1ed.d/ Z2ed0d1 Z3ed2d3 Z4ed4d5 Z5ed6d7 Z6ed8d9 Z7ed:d; Z8ed<d= Z9ed>d? Z:ed@dA Z;edBdC Z<edDdE Z=edFdG Z>edHdI Z?edJdK Z@edLdM ZAedNdO ZBedPdQ ZCedRdS ZDedTdU ZEedVdW ZFedXdY ZGedZd[ ZHed\d] ZIed^d_ ZJed`da ZKdS )bzU
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                 C   
   t | S N)nplog1px r    m/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/numba/np/random/new_distributions.pynp_log1p      
r"   c                 C   s   t t | S r   )r   r   float32r   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#   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)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 r0|S |dkrq	 tt tt|   }ttt|   }t|| t|| krp|d? d@ ritt|  S tt| S q5t	|d  t	|  t|  t	|  tt
td | | k r|S q)Nr0   r1   r2   	   i r         ?)r   r   r$   r   r   r	   r%   r   r
   r   r3   r4   r    r    r!   random_standard_normal_fJ   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)Nr0      r1   r2   r   )	r   r   r   r   r"   r   r   r   r3   r+   rir6   r   r    r    r!   r*   f   s"   
r*   c                 C   s   	 t | }|dL }|d@ }|dL }tt|t|  }|t| k r%|S |dkr8ttttt|   S t|d  t|  t|  t|  tt	t| k rX|S q)Nr0   r1   r2   r   )
r   r   r$   r   r   r   r%   r   r   r3   r?   r    r    r!   random_standard_exponential_fx   s&   rA   c                 C   s   t t|   S r   )r"   r   r+   r    r    r!   random_standard_exponential_inv   r&   rC   c                 C   s   t t dt|   S N      ?)r   logr$   r   rB   r    r    r!   !random_standard_exponential_inv_f      rG   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])NrE           r0   UUUUUU?r;   m{?r<   )r*   r   powr   rF   r)   r:   )r+   shapeUVXYbcr    r    r!   random_standard_gamma   sD   ,rT   c           	   
   C   s  t d}t |}||krt| S |t dkrt dS ||k rt	 t| }t| }||| krEt t|t || }||krD|S n.t t t || |  }t t|| t ||  t || }||| krs|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)NrE   rI   r0         @g      "@rK   r<   )r   r$   rA   r   rL   rF   r)   r=   )	r+   rM   Zf32_onerN   rO   rP   rQ   rR   rS   r    r    r!   random_standard_gamma_f   sP   


 $"rV   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$   r=   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   rW   r   r   )r+   lowerrangeZscaled_uniformr    r    r!   random_uniform   r]   rc   c                 C   s   |t | | S r   rT   r+   rM   r[   r    r    r!   random_gamma   s   rf   c                 C   s   t |t| | S r   )r   r$   rV   re   r    r    r!   random_gamma_f  s   rg   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 )NrE   r0   rI   r   )r   rL   r   rF   minr3   rT   )r+   arR   rN   rO   rP   rQ   ZXpYZlogXZlogYZlogMZGaZGbr    r    r!   random_beta  s(   
$

rj   c                 C   s   dt | |d  S r'   rd   )r+   dfr    r    r!   random_chisquare      rl   c                 C   s   t | || t | ||  S r   )rl   )r+   dfnumdfdenr    r    r!   random_f%  s   rp   c                 C   s   t | t |  S r   rX   rB   r    r    r!   random_standard_cauchy+  r&   rq   c                 C   s   t t| | S r   )r/   r*   r+   ri   r    r    r!   random_pareto0  r&   rs   c                 C   s   |dkrdS t t| d| S NrI   rE   )rL   r*   rr   r    r    r!   random_weibull5  s   ru   c                 C   s   t tt|   d| S rD   )rL   r/   r*   rr   r    r    r!   random_power<  rH   rv   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(   rI   r   r   rF   r+   rZ   r[   rN   r    r    r!   random_laplaceA  s   ry   c                 C   s:   t | }|dkrt | }|dks||t|d|    S rt   rw   rx   r    r    r!   random_logisticM  s
   rz   c                 C   s   t t| ||S r   )r   r3   r\   )r+   meansigmar    r    r!   random_lognormalU  rm   r}   c                 C   s2   t | }t| |d }t|d | t| S )N   )r:   rT   r   r)   )r+   rk   numdenomr    r    r!   random_standard_tZ  s   r   c                 C   sn   |d|  }t | }|| | }|||td| | ||     }t| }||||  kr1|S || | S )Nr~      )r:   r   r)   r   )r+   r{   r[   Zmu_2lrQ   rP   rN   r    r    r!   random_walda  s   &r   c                 C   sH   d}| }}d| }t | }||kr"||9 }||7 }|d }||ks|S )Nr0   rE   r`   )r+   prP   sumprodqrN   r    r    r!   random_geometric_searchn  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 )NrJ   )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
)NrE   r(   r0   g      )rL   r   r   floorr   )r+   ri   Zam1rR   rN   rO   rP   Tr    r    r!   random_zipf  s   
 r   c           
      C   sd   || }|| }|| }|| }|| | }t | }	|	|kr'|t|	|  S |td|	 |  S rD   )r   r   r)   )
r+   leftr,   rightbaseZleftbaseratioZleftprodZ	rightprodrN   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gGrE   r(   rI   g      @   r   gdg?r;   r2   r<   r0   )intrb   r   rF   )	r   ri   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   rE   r0   )r   r3   r   )r+   lamZenlamrP   r   rN   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~   r0   r<   gQ?gQ?r   g9v?)r   r)   rF   r   fabsr   r   )r+   r   ZslamZloglamrR   ri   ZinvalphaZvrrN   rO   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 )Nr0   )rf   r   )r+   r   r   rQ   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   r0   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+   rn   ro   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rEdS dS )Nr0   rI   r~   )r"   r   r   r.   Zint64r   rF   )r+   r   r5   rO   rN   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)NrE   g(\@gffffff@r<   gx&?g     4@g.@r(   r   r   r0      <      2   (   rI   4   rU   g      ?gUUUUUU?r~   g     @g     |@g     `@g     X@g     a@g    MAg     1@)
rh   r   r   r   r)   r   r   rF   absrb   )'r+   r   r   r5   r   fmmp1ZxmZxlZxrrS   ri   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_btpe1  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 )NrE   g      $@r0   r   )r   r3   rF   rh   r)   r   )
r+   r   r   r   qnZ_npboundrP   ZpxrN   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   rI   r<   g      >@rE   )r   r   )r+   r   r   r   r    r    r!   random_binomial  s   r   )L__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   r"   r%   r-   r/   r:   r=   r*   rA   rC   rG   rT   rV   r\   r^   r_   rc   rf   rg   rj   rl   rp   rq   rs   ru   rv   ry   rz   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
