
    sh                         S SK r S SKJrJr  S SKJr  \" S5       " S S\5      5       r\S:X  a  \ R                  " 5         gg)    N)CUDATestCaseskip_on_cudasim)captured_stdoutz4cudasim doesn't support cuda import at non-top-levelc                   >   ^  \ rS rSrSrU 4S jrU 4S jrS rSrU =r	$ )TestMonteCarlo   z
Test monte-carlo integration
c                 t   > [        5       U l        U R                  R                  5         [        TU ]  5         g N)r   _captured_stdout	__enter__supersetUpself	__class__s    ځ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/doc_examples/test_montecarlo.pyr   TestMonteCarlo.setUp   s)     / 1'')    c                 \   > U R                   R                  S S S 5        [        TU ]  5         g r
   )r   __exit__r   tearDownr   s    r   r   TestMonteCarlo.tearDown   s&    &&tT48r   c                   ^^^^^^	^
 SS K nSS KmSSK Jm  SSKJmJm
  SnTR                  UUU
4S j5       mTR                  S 5       m	UUUUU	4S jnUR                  S 5       mU" S	S
U5        U" S
SU5        TR                  R                  U" S	S
U5      SSS9  TR                  R                  U" S
SU5      SSS9  g )Nr   )cuda)create_xoroshiro128p_statesxoroshiro128p_uniform_float32i@B c                    > [        U 5      nTR                  S5      nXT:  a  T
" X5      nXcU-
  -  U-   nT	" U5      nXpU'   gg)za
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_kernel?TestMonteCarlo.test_ex_montecarlo.<locals>.mc_integrator_kernel)   sU     s8D))A,Cz4ZE 945	A
 JC r   c                 
    X-   $ r
    )abs     r   
sum_reduce5TestMonteCarlo.test_ex_montecarlo.<locals>.sum_reduceA   s	    5Lr   c                    > TR                  T	R                  USS95      nT" USS9nTR                  U5      " X4X5        X-
  US-
  -  nT
" U5      U-  $ )zM
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*   npr0   s         r   mc_integrate7TestMonteCarlo.test_ex_montecarlo.<locals>.mc_integrateE   sh    
 ..&	!BCC4V"EJ !''/
  +
;Fc?V++r   c                     SU -  $ )Ng      ?r-   )xs    r   r)   /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   rE   r:   r=   r   r   r)   r*   r<   r0   r   s       @@@@@@@r   test_ex_montecarlo!TestMonteCarlo.test_ex_montecarlo   s    	
  
	 
	. 
	 
		, 	,, 
	 
	 	Q6"Q6" 	

""Av&e 	# 	
 	

""Av&U 	# 	
r   )r   )
__name__
__module____qualname____firstlineno____doc__r   r   rL   __static_attributes____classcell__)r   s   @r   r   r      s    
Q
 Q
r   r   __main__)	unittestnumba.cuda.testingr   r   numba.tests.supportr   r   rN   mainr-   r   r   <module>rZ      sL     < / GHa
\ a
 Ia
H zMMO r   