
    J/Ph                     |    d Z ddlZddlmZmZ ddlmZmZ  G d de          Z	e
dk    r ej                     dS dS )z
Test basic language features

    N)cudafloat64)unittestCUDATestCasec                        e Zd Zd Zd Zd ZdS )TestLangc                    dt          j        d          fd            }t          j        t	                              } |d         |           |                     t          j        |k                         d S )N)      ?g      @g      @void(float64[:])c                 <    t                    D ]
\  }}|| |<   d S )N)	enumerate)aivtups      a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_lang.pyfooz$TestLang.test_enumerate.<locals>.foo   s1    !#  1!        r   )r   jitnpzeroslen
assertTrueall)selfr   r   r   s      @r   test_enumeratezTestLang.test_enumerate   s    	$	%	%	 	 	 	 
&	%	 HSXXD	!qCx(()))))r   c                 l   ddt          j        d          fd            }t          j        d          } |d         |           t          j                  }t          j                  }|                     t          j        |||z                                   k                         d S )N)r         )g      @gffffff@g@r   c                 R    d}t                    D ]\  }}|||z   z  }|| d<   d S )Nr   )zip)r   cr   jt1t2s       r   r   zTestLang.test_zip.<locals>.foo   s?    AB  1QU
AaDDDr   r   r   )r   r   r   r   arrayr   r   sum)r   r   r   br$   r&   r'   s        @@r   test_zipzTestLang.test_zip   s    	$	%	%	 	 	 	 	 
&	%	 HQKKD	!HRLLHRLLqQUKKMM12233333r   c                     t          j        d          d             }t          j        d          } |d         |           dS )a?  
        Ensure that typing and lowering of CUDA kernel API primitives works in
        more than one block. Was originally to ensure that macro expansion works
        for more than one block (issue #872), but macro expansion has been
        replaced by a "proper" implementation of all kernel API functions.
        zvoid(float64[:,:])c                    t          d          D ]}t          j        j        }t          d          D ]}t          j        j        }t          j                            dt                    }d|||f<   |||f         | ||f<   d S )Nr    r!   r    r!   r
   )ranger   	threadIdxxysharedr(   r   )aryr   txr%   tysms         r   "cuda_kernel_api_in_multiple_blockszCTestLang.test_issue_872.<locals>.cuda_kernel_api_in_multiple_blocks1   s    1XX & &^%1XX & &^%""6733BBr2vJRV*CBKKKr   r.   )r   r.   N)r   r   r   r   )r   r8   r   s      r   test_issue_872zTestLang.test_issue_872)   sV     
&	'	'	% 	% 
(	'	% HV5*95a88888r   N)__name__
__module____qualname__r   r+   r9    r   r   r   r      sA        
* 
* 
*4 4 4"9 9 9 9 9r   r   __main__)__doc__numpyr   numbar   r   numba.cuda.testingr   r   r   r:   mainr=   r   r   <module>rD      s    
             5 5 5 5 5 5 5 519 19 19 19 19| 19 19 19h zHMOOOOO r   