a
    
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   l/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/cuda/tests/cudapy/test_ufuncs.py
<listcomp>       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   s^  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g dddt	tjddftjg d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 )N                          ?      ?)r   r   r   Zc8)Zdtype   CZc16r   )      )r"   r    r!      y      ?      ?r    r!   F)r   setUpinputsextendnpZ	complex64r   Z
complex128arrayArrayZlinspaceZreshape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.   r0   r   r   r   tearDownI   s    zTestUFuncs.tearDownc                 C   s   t |S r2   )r   )r1   r   r   r   r   r   N   s    zTestUFuncs._make_ufunc_usecaseN)maxsizec                 C   s   t ||d S )N)r   r   )r   Zjit)r1   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(   sinr0   r   r   r   test_sin_ufuncZ   s    zTestUFuncs.test_sin_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   cosr0   r   r   r   test_cos_ufunc]   s    zTestUFuncs.test_cos_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   tanr0   r   r   r   test_tan_ufunc`   s    zTestUFuncs.test_tan_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   Zarcsinr0   r   r   r   test_arcsin_ufuncc   s    zTestUFuncs.test_arcsin_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   Zarccosr0   r   r   r   test_arccos_ufuncf   s    zTestUFuncs.test_arccos_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   Zarctanr0   r   r   r   test_arctan_ufunci   s    zTestUFuncs.test_arctan_ufuncc                 C   s   | j tjdd d S Nfr9   )r;   r(   Zarctan2r0   r   r   r   test_arctan2_ufuncl   s    zTestUFuncs.test_arctan2_ufuncc                 C   s   | j tjdd d S rE   )r;   r(   hypotr0   r   r   r   test_hypot_ufunco   s    zTestUFuncs.test_hypot_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   sinhr0   r   r   r   test_sinh_ufuncr   s    zTestUFuncs.test_sinh_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   coshr0   r   r   r   test_cosh_ufuncu   s    zTestUFuncs.test_cosh_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   tanhr0   r   r   r   test_tanh_ufuncx   s    zTestUFuncs.test_tanh_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   Zarcsinhr0   r   r   r   test_arcsinh_ufunc{   s    zTestUFuncs.test_arcsinh_ufuncc                 C   s   | j tjdd d S r7   )r;   r(   Zarccoshr0   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   r8   )Zskip_inputsr:   )	r   r*   Zuint32int32Zuint64int64r;   r(   Zarctanh)r1   Zto_skipr   r   r   test_arctanh_ufunc   s    	zTestUFuncs.test_arctanh_ufuncc                 C   s   | j tjdd d S rE   )r;   r(   Zdeg2radr0   r   r   r   test_deg2rad_ufunc   s    zTestUFuncs.test_deg2rad_ufuncc                 C   s   | j tjdd d S rE   )r;   r(   Zrad2degr0   r   r   r   test_rad2deg_ufunc   s    zTestUFuncs.test_rad2deg_ufuncc                 C   s   | j tjdd d S rE   )r;   r(   degreesr0   r   r   r   test_degrees_ufunc   s    zTestUFuncs.test_degrees_ufuncc                 C   s   | j tjdd d S rE   )r;   r(   radiansr0   r   r   r   test_radians_ufunc   s    zTestUFuncs.test_radians_ufunc)r   
__module____qualname__Z_numba_parallel_test_r%   r3   r   	functools	lru_cacher6   r=   r?   rA   rB   rC   rD   rG   rI   rK   rM   rO   rP   rQ   rT   rU   rV   rX   rZ   r   r   r   r   r      s0   +

r   __main__)r]   numpyr(   ZunittestZnumbar   r   r   Znumba.tests.supportr   Znumba.tests.test_ufuncsr   r   r   r   mainr   r   r   r   <module>   s    