o
    0 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#   m/home/app/PaddleOCR-VL-test/.venv_paddleocr/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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)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   rA   r#   r#   r$   random_standard_exponential_fz   s&   rC   c                 C   s   t t|   S r   )r%   r   r-   r#   r#   r$   random_standard_exponential_inv      rE   c                 C   s   t tdt|   S N      ?)r   logr   r   rD   r#   r#   r$   !random_standard_exponential_inv_f   s   rJ   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])NrH           r2   UUUUUU?r=   m{?r>   )r,   r   powr   rI   r+   r<   )r-   shapeUVXYbcr#   r#   r$   random_standard_gamma   sD   ,rV   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)NrH   rK   r2         @g      "@rM   r>   )r   rC   r   rN   r   rI   r+   r?   )	r-   rO   Zf32_onerP   rQ   rR   rS   rT   rU   r#   r#   r$   random_standard_gamma_f   sP   
 rX   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[   r#   r#   r$   random_normal_f   s   r`   c                 C   s   |t |  S r   )r,   )r-   r]   r#   r#   r$   random_exponential   s   ra   c                 C   rY   r   r   )r-   lowerrangeZscaled_uniformr#   r#   r$   random_uniform   r_   re   c                 C   s   |t | | S r   rV   r-   rO   r]   r#   r#   r$   random_gamma   r(   rh   c                 C   s   t |t| | S r   )r   rX   rg   r#   r#   r$   random_gamma_f     ri   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 )NrH   r2   rK   r   )r   rN   r   rI   minr5   rV   )r-   arT   rP   rQ   rR   rS   ZXpYZlogXZlogYZlogMZGaZGbr#   r#   r$   random_beta  s(   
$

rm   c                 C   s   dt | |d  S r)   rf   )r-   dfr#   r#   r$   random_chisquare"  rj   ro   c                 C   s   t | || t | ||  S r   )ro   )r-   dfnumdfdenr#   r#   r$   random_f'  s   rr   c                 C   s   t | t |  S r   rZ   rD   r#   r#   r$   random_standard_cauchy-  rF   rs   c                 C   s   t t| | S r   )r1   r,   r-   rl   r#   r#   r$   random_pareto2  rF   ru   c                 C   s   |dkrdS t t| d| S NrK   rH   )rN   r,   rt   r#   r#   r$   random_weibull7  s   rw   c                 C   s   t tt|   d| S rG   )rN   r1   r,   rt   r#   r#   r$   random_power>  s   rx   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*   rK   r   r   rI   r-   r\   r]   rP   r#   r#   r$   random_laplaceC  s   r{   c                 C   s:   t | }|dkrt | }|dks||t|d|    S rv   ry   rz   r#   r#   r$   random_logisticO  s
   r|   c                 C   s   t t| ||S r   )r   r5   r^   )r-   meansigmar#   r#   r$   random_lognormalW  rj   r   c                 C   s2   t | }t| |d }t|d | t| S )N   )r<   rV   r   r+   )r-   rn   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_2lrS   rR   rP   r#   r#   r$   random_waldc  s   &r   c                 C   sH   d}| }}d| }t | }||kr"||9 }||7 }|d }||ks|S )Nr2   rH   rb   )r-   prR   sumprodqrP   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 )NrL   )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
NrH   r*   r2   g      )rN   r   r   floorr   )r-   rl   am1rT   rP   rQ   rR   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   )rN   r   r   r   r   )
r-   rl   r   rT   ZUminZU01rP   rQ   rR   r   r#   r#   r$   r     s   
 c           
      C   sd   || }|| }|| }|| }|| | }t | }	|	|kr'|t|	|  S |td|	 |  S rG   )r   r   r+   )
r-   leftr.   rightbaseZleftbaseratioZleftprodZ	rightprodrP   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gGrH   r*   rK   g      @   r   gdg?r=   r4   r>   r2   )intrd   r   rI   )	r"   rl   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   rH   r2   )r   r5   r   )r-   lamZ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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+   rI   r   fabsr   r   )r-   r   ZslamZloglamrT   rl   ZinvalphaZ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 )N
   r   )r   r   )r-   r   r#   r#   r$   random_poisson  s
   

r   c                 C   s   t | |d| | }t| |S )Nr2   )rh   r   )r-   r   r   rS   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nanro   r<   r+   r   )r-   rn   noncZChi2r   ir#   r#   r$   random_noncentral_chisquare  s   

r   c                 C   s"   t | ||| }|t| ||  S r   )r   ro   )r-   rp   rq   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   rK   r   )r%   r   r   r0   r   r   rI   )r-   r   r7   rQ   rP   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})NrH   g(\@gffffff@r>   gx&?g     4@g.@r*   r   r   r2      <      2   (   rK   4   rW   g      ?gUUUUUU?r   g     @g     |@g     `@g     X@g     a@g    MAg     1@)
rk   r   r   r   r+   r   r   rI   absrd   )'r-   r   r   r7   r   fmmp1ZxmZxlZxrrU   rl   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_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 )NrH   g      $@r2   r   )r   r5   rI   rk   r+   r   )
r-   r   r   r   qnZ_npboundrR   ZpxrP   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   rK   r>   g      >@rH   )r   r   )r-   r   r   r   r#   r#   r$   random_binomial  s   r   )Q__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   Znumba.np.numpy_supportr   r%   r'   r/   r1   r<   r?   r,   rC   rE   rJ   rV   rX   r^   r`   ra   re   rh   ri   rm   ro   rr   rs   ru   rw   rx   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
