a
    hÝEb¥  ã                   @   sD  d dl Zd dlZd dlmZ d dlmZ eƒ Zejj	Z
ejjZdd„ Zejedd�ZdZd	d
„ Zej eƒ ¡Zdd„ Zeƒ Zeƒ Zejefks’J ‚ejejks¢J ‚eedd�Zeed›de› d�ƒ eedd�Zeed›de› d�ƒ ejjZejjZ ejdd�dd„ ƒZ!ee!dde j"ƒƒ ejdd�dd„ ƒZ#e#ddde j"ƒ dS )é    N)ÚPCG64)Útimeitc                 C   sâ   t  | ¡}t| d d ƒD ]Â}dt|ƒ d }dt|ƒ d }|| ||  }|dks^|dkr�dt|ƒ d }dt|ƒ d }|| ||  }qNt  dt  |¡ | ¡}|| |d| < d| d | k r|| |d| d < q|S )Né   é   g       @g      ð?g        g       À)ÚnpÚemptyÚrangeÚnext_dÚsqrtÚlog)ÚnÚstateÚoutÚiÚx1Zx2Úr2Úf© r   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/random/_examples/numba/extending.pyÚnormals   s    
r   T)Znopythoni'  c                   C   s
   t ttƒS )N)Únormalsjr   Ú
state_addrr   r   r   r   Ú	numbacall    s    r   c                   C   s   t jtd�S )N)Úsize)ÚrgÚnormalr   r   r   r   r   Ú	numpycall%   s    r   iè  )Únumberz.2fz
 secs for z% PCG64 (Numba/PCG64) gaussian randomsz% PCG64 (NumPy/PCG64) gaussian randomsc                 C   sr   ||   }}||d? O }||d? O }||d? O }||d? O }||d? O }t |ƒ|@ }||krjt |ƒ|@ }qT| | S )Nr   r   é   é   é   )Únext_u32)ÚlbÚubr   ÚmaskÚdeltaÚvalr   r   r   Úbounded_uint8   s    r'   iC  iCŠ$ c                 C   s2   t j|t jd�}t|ƒD ]}t| ||ƒ||< qd S )N)Zdtype)r   r   Zuint32r   r'   )r"   r#   r   r   r   r   r   r   r   Úbounded_uintsK   s    r(   i€–˜ )$Únumpyr   ZnumbaÚnbZnumpy.randomr   r   Zbit_genZcffiZnext_doubler	   Zstate_addressr   r   Zjitr   r   r   ÚrandomÚ	Generatorr   r   Úr1r   ÚshapeÚt1ÚprintÚt2ÚctypesZnext_uint32r!   r   Zctypes_stater'   Úvaluer(   r   r   r   r   Ú<module>   s8   



