U
    hd                     @   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    