
    G/Ph                        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                             e                      Zd	 Z e            Z e            Zej        efk    sJ ej        ej        k    sJ  eed
          Z eedde d            eed
          Z eedde d           ej        j        Zej        j        Z  ej        d          d             Z! e e!dde j"                              ej        d          d             Z# e#ddde j"                   dS )    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    rAdt          |          z  dz
  }dt          |          z  dz
  }||z  ||z  z   }|dk    ;|dk    At          j        dt          j        |          z  |z            }||z  |d|z  <   d|z  dz   | k     r||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           f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/random/_examples/numba/extending.pynormalsr      s*   
(1++CAEa<   $ $6%== 3&6%== 3&"WrBwCii299ve}}$s*Bve}}$s*Bb27"B Cii299 GD26"::%*++VAE
q519q==VCA	NJ    T)nopythoni'  c                  6    t          t          t                    S )N)normalsjr   
state_addr r   r   	numbacallr       s    Az"""r   c                  B    t                               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  }||k    rt          |          |z  }||k    | |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
++uoo$ ++ 8Or   iC  iC$ c                     t          j        |t           j                  }t          |          D ]}t	          | ||          ||<   d S )N)dtype)r   r	   uint32r
   r/   )r*   r+   r   r   r   r   s         r   bounded_uintsr3   K   sN    
(1BI
&
&
&C1XX - -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'                      
%''		!\'
  " 26'D)))	# # # Y!!   Y[[Y[[	xA4	x28VId### CCC1CCC D D DVId### CCC1CCC D D D >%~#   ll3!344 5 5 5 - - - c7Hl&8 9 9 9 9 9r   