
    `i                         d dl Z d dlmZmZ d dlmZ  ed           G d de                      Zedk    r e j                     dS dS )    N)CUDATestCaseskip_on_cudasim)captured_stdoutz4cudasim doesn't support cuda import at non-top-levelc                   2     e Zd ZdZ fdZ fdZd Z xZS )TestMonteCarloz&
    Test monte-carlo integration
    c                     t                      | _        | j                                         t                                                       d S N)r   _captured_stdout	__enter__supersetUpself	__class__s    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/cuda/tests/doc_examples/test_montecarlo.pyr   zTestMonteCarlo.setUp   s;     / 1 1'')))    c                     | j                             d d d            t                                                       d S r	   )r
   __exit__r   tearDownr   s    r   r   zTestMonteCarlo.tearDown   s:    &&tT4888r   c                   	
 dd l }dd lddl m ddlmm
 d}j        
fd            j        d             		fd}|j        d              |d	d
|            |d
d|           j        	                     |d	d
|          dd           j        	                     |d
d|          dd           d S )Nr   )cuda)create_xoroshiro128p_statesxoroshiro128p_uniform_float32i@B c                     t          |           }                    d          }||k     r) 
||          }|||z
  z  |z   } 	|          }|| |<   dS dS )z
            kernel to draw random samples and evaluate the function to
            be integrated at those sample values
               N)lengrid)out
rng_states	lower_lim	upper_limsizegidsampyr   funcr   s           r   mc_integrator_kernelz?TestMonteCarlo.test_ex_montecarlo.<locals>.mc_integrator_kernel)   ss     s88D))A,,CTzz44ZEE y945	A
 DJJC zr   c                     | |z   S r	    )abs     r   
sum_reducez5TestMonteCarlo.test_ex_montecarlo.<locals>.sum_reduceA   s    q5Lr   c                                          	                    |d                    } |d          }                     |          ||| |           || z
  |dz
  z  } 
|          |z  S )zq
            approximate the definite integral of `func` from
            `lower_lim` to `upper_lim`
            float32)dtype*   )seedr   )	to_devicezerosforall)r    r!   nsampsr   r   factorr   r   r'   npr,   s         r   mc_integratez7TestMonteCarlo.test_ex_montecarlo.<locals>.mc_integrateE   s    
 ..&	!B!BCCC44V"EEEJ 0 ''//ZI  
  )+
;F:c??V++r   c                     d| z  S )Ng      ?r)   )xs    r   r&   z/TestMonteCarlo.test_ex_montecarlo.<locals>.func[   s    7Nr   r         gH.?gMbP?)atolgʡE?)
numbanumpyr   numba.cuda.randomr   r   jitreducetestingassert_allclose)r   r>   r5   r8   r   r   r&   r'   r7   r,   r   s       @@@@@@@r   test_ex_montecarloz!TestMonteCarlo.test_ex_montecarlo   s   	
 	
 	
 	
 	
 	
 	
 	
  
	 	 	 	 	 	 
	. 
	 	 
		, 	, 	, 	, 	, 	, 	, 	, 	,, 
	 	 
	 	Q6"""Q6""" 	
""LAv&&e 	# 	
 	
 	
 	
""LAv&&U 	# 	
 	
 	
 	
 	
r   )__name__
__module____qualname____doc__r   r   rE   __classcell__)r   s   @r   r   r      sq                 
Q
 Q
 Q
 Q
 Q
 Q
 Q
r   r   __main__)	unittestnumba.cuda.testingr   r   numba.tests.supportr   r   rF   mainr)   r   r   <module>rP      s     < < < < < < < < / / / / / / GHHa
 a
 a
 a
 a
\ a
 a
 IHa
H zHMOOOOO r   