U
    hâËd¿  ã                   @   sr   d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ dd„ ZG dd„ dee	ƒZed	krne ¡  dS )
é    N)ÚconfigÚcudaÚtypes)ÚTestCase)ÚBasicUFuncTestc                 C   s`   i }d  dd„ t| jƒD ƒ¡}d|› d| j› d|› d�}t|tƒ |ƒ |d }d	 | j¡|_|S )
Nú,c                 S   s   g | ]}d   |¡‘qS )za{0})Úformat)Ú.0Úi© r   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_ufuncs.pyÚ
<listcomp>   s     z'_make_ufunc_usecase.<locals>.<listcomp>zdef fn(z
):
    np.ú(ú)Úfnz{0}_usecase)ÚjoinÚrangeÚnargsÚ__name__ÚexecÚglobalsr   )ÚufuncZldictZarg_strZfunc_strr   r   r   r   Ú_make_ufunc_usecase
   s    r   c                   @   sÌ   e Zd ZdZdd„ Zdd„ Zdd„ Zejdd	�d
d„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ ZdS )0Ú
TestUFuncsFc                 C   sb  t  | ¡ | j t d¡tjft d¡tjft d¡tjft d¡tjft d¡tjft d¡tjftjdddgdd�t 	tjdd¡ftjdddgdd�t 	tjdd¡fg¡ | j t 
d	d¡ d
¡t 	tjdd¡ft 
d	d¡ d¡t 	tjdd¡ft 
d	d¡ dd¡t 	tjdd¡ft t 
d	d¡ d
¡¡t 	tjdd¡fg¡ tj| _tj| _d	t_d	t_d S )Ny      à¿      à¿g        y      à?      à?Zc8)Zdtypeé   ÚCZc16r   )é   éÿÿÿÿé   )r   r   r   é   y      ð?      ð?r   r   ÚF)r   ÚsetUpÚinputsÚextendÚnpZ	complex64r   Z
complex128ÚarrayÚArrayZlinspaceZreshapeZfloat64Zasfortranarrayr   ÚCUDA_LOW_OCCUPANCY_WARNINGSÚ_low_occupancy_warningsÚCUDA_WARN_ON_IMPLICIT_COPYÚ_warn_on_implicit_copy©Úselfr   r   r   r!      sB    
ÿÿõÿÿÿÿözTestUFuncs.setUpc                 C   s   | j t_| jt_d S ©N)r(   r   r'   r*   r)   r+   r   r   r   ÚtearDownI   s    zTestUFuncs.tearDownc                 C   s   t |ƒS r-   )r   )r,   r   r   r   r   r   N   s    zTestUFuncs._make_ufunc_usecaseN)Úmaxsizec                 C   s   t  |¡|ƒd S )N)r   r   )r   Zjit)r,   ZpyfuncÚargsr   r   r   Ú_compileQ   s    zTestUFuncs._compilec                 C   s   | j tjdd� d S ©NÚcf©Úkinds)Úbasic_ufunc_testr$   Úsinr+   r   r   r   Útest_sin_ufuncZ   s    zTestUFuncs.test_sin_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Úcosr+   r   r   r   Útest_cos_ufunc]   s    zTestUFuncs.test_cos_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Útanr+   r   r   r   Útest_tan_ufunc`   s    zTestUFuncs.test_tan_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Zarcsinr+   r   r   r   Útest_arcsin_ufuncc   s    zTestUFuncs.test_arcsin_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Zarccosr+   r   r   r   Útest_arccos_ufuncf   s    zTestUFuncs.test_arccos_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Zarctanr+   r   r   r   Útest_arctan_ufunci   s    zTestUFuncs.test_arctan_ufuncc                 C   s   | j tjdd� d S ©NÚfr4   )r6   r$   Zarctan2r+   r   r   r   Útest_arctan2_ufuncl   s    zTestUFuncs.test_arctan2_ufuncc                 C   s   | j tjdd� d S r@   )r6   r$   Úhypotr+   r   r   r   Útest_hypot_ufunco   s    zTestUFuncs.test_hypot_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Úsinhr+   r   r   r   Útest_sinh_ufuncr   s    zTestUFuncs.test_sinh_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Úcoshr+   r   r   r   Útest_cosh_ufuncu   s    zTestUFuncs.test_cosh_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Útanhr+   r   r   r   Útest_tanh_ufuncx   s    zTestUFuncs.test_tanh_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Zarcsinhr+   r   r   r   Útest_arcsinh_ufunc{   s    zTestUFuncs.test_arcsinh_ufuncc                 C   s   | j tjdd� d S r2   )r6   r$   Zarccoshr+   r   r   r   Útest_arccosh_ufunc~   s    zTestUFuncs.test_arccosh_ufuncc                 C   sb   t  t jdd¡t jt  t jdd¡t jt  t jdd¡t jt  t jdd¡t jg}| jtj|dd� d S )Nr   r   r3   )Zskip_inputsr5   )	r   r&   Zuint32Zint32Zuint64Zint64r6   r$   Zarctanh)r,   Zto_skipr   r   r   Útest_arctanh_ufunc�   s    	   ýzTestUFuncs.test_arctanh_ufuncc                 C   s   | j tjdd� d S r@   )r6   r$   Zdeg2radr+   r   r   r   Útest_deg2rad_ufunc‘   s    zTestUFuncs.test_deg2rad_ufuncc                 C   s   | j tjdd� d S r@   )r6   r$   Zrad2degr+   r   r   r   Útest_rad2deg_ufunc”   s    zTestUFuncs.test_rad2deg_ufuncc                 C   s   | j tjdd� d S r@   )r6   r$   Údegreesr+   r   r   r   Útest_degrees_ufunc—   s    zTestUFuncs.test_degrees_ufuncc                 C   s   | j tjdd� d S r@   )r6   r$   Úradiansr+   r   r   r   Útest_radians_ufuncš   s    zTestUFuncs.test_radians_ufunc)r   Ú
__module__Ú__qualname__Z_numba_parallel_test_r!   r.   r   Ú	functoolsÚ	lru_cacher1   r8   r:   r<   r=   r>   r?   rB   rD   rF   rH   rJ   rK   rL   rM   rN   rO   rQ   rS   r   r   r   r   r      s0   +

r   Ú__main__)rV   Únumpyr$   ZunittestZnumbar   r   r   Znumba.tests.supportr   Znumba.tests.test_ufuncsr   r   r   r   Úmainr   r   r   r   Ú<module>   s    