
    qKg                        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 Z ej                  ed      ZdZd Zej$                  j'                   e             Zd	 Z e       Z e       Zej0                  efk(  sJ ej0                  ej0                  k(  sJ  eed
      Z eedde d        eed
      Z eedde d       ej8                  j:                  Zej8                  j>                  Z  ej                  d      d        Z! e e!dde jD                                ej                  d      d        Z# e#ddde jD                         y)    N)PCG64)timeitc                    t        j                  |       }t        | dz   dz        D ]  }dt        |      z  dz
  }dt        |      z  dz
  }||z  ||z  z   }|dk\  s|dk(  r9dt        |      z  dz
  }dt        |      z  dz
  }||z  ||z  z   }|dk\  r3|dk(  r9t        j                  dt        j
                  |      z  |z        }||z  |d|z  <   d|z  dz   | k  s||z  |d|z  dz   <    |S )N      g       @g      ?g        g       )npemptyrangenext_dsqrtlog)nstateoutix1x2r2fs           j/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numpy/random/_examples/numba/extending.pynormalsr      s   
((1+CAEa< 6%= 3&6%= 3&"WrBwCi29ve}$s*Bve}$s*Bb27"B Ci29 GGD266":%*+VAE
q519q=VCA	N ! J    T)nopythoni'  c                  *    t        t        t              S )N)normalsjr   
state_addr r   r   	numbacallr       s    Az""r   c                  6    t         j                  t              S )N)size)rgnormalr   r   r   r   	numpycallr#   %   s    99!9r   i  )numberz.2fz
 secs for z% PCG64 (Numba/PCG64) gaussian randomsz% PCG64 (NumPy/PCG64) gaussian randomsc                     || z
  x}}||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }t        |      |z  }||kD  rt        |      |z  }||kD  r| |z   S )Nr   r            )next_u32)lbubr   maskdeltavals         r   bounded_uintr/   8   s    7D5DAIDDAIDDAIDDAIDDBJD
5/D
 C
+uo$ + 8Or   iC  iC$ c                     t        j                  |t         j                        }t        |      D ]  }t	        | ||      ||<    y )N)dtype)r   r	   uint32r
   r/   )r*   r+   r   r   r   r   s         r   bounded_uintsr3   K   s6    
((1BII
&C1Xb"e,A r   i )$numpyr   numbanbnumpy.randomr   r   bit_gencffinext_doubler   state_addressr   r   jitr   r   r   random	Generatorr!   r#   r1r   shapet1printt2ctypesnext_uint32r)   r   ctypes_stater/   valuer3   r   r   r   <module>rH      s      
'		!	!\\''
" 266'D)	# YY! [[	xxA4 	xx288 Id# C
1#BC DId# C
1#BC D >>%%~~##  l3!3!34 5 - - c7Hl&8&8 9r   