o
    i%                     @   sv   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r9e  dS 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   a/home/ubuntu/transcripts/venv/lib/python3.10/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   )ufuncldictarg_str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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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/dXdY Z0dZd[ Z1d\d] Z2dS )_
TestUFuncsFc                 C   sV  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 | 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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gtjdt	tjddftjd
dgtjdt	tjddfg tj| _tj| _d
t_d
t_d S )N                          ?      ?)r   r   r   c8)dtype   Cc16r   )      )r'   r%   r&      y      ?      ?r%   r&   F)r   setUpinputsextendnp	complex64r   
complex128arrayArraylinspacereshapefloat64asfortranarrayuint8int8uint16int16	ulonglonglonglongr   CUDA_LOW_OCCUPANCY_WARNINGS_low_occupancy_warningsCUDA_WARN_ON_IMPLICIT_COPY_warn_on_implicit_copyselfr   r   r   r*      sj   

zTestUFuncs.setUpc                 C   s   | j t_| jt_d S N)r=   r   r<   r?   r>   r@   r   r   r   tearDown`   s   zTestUFuncs.tearDownc                 C   s   t |S rB   )r   )rA   r   r   r   r   r   e   s   zTestUFuncs._make_ufunc_usecaseN)maxsizec                 C   s   t ||d S )N)r"   r"   )r   jit)rA   pyfuncargsr   r   r   _compileh   s   zTestUFuncs._compilec                 C   s   t jt jt t jddt t jddt t jddt t jddt t jddt t jddt jt jt t jddt t jddt t jddt t jddg}| j||d d S )Nr"   r#   r'   r(   r)   )skip_inputs)r   float32r4   r1   r.   r/   basic_ufunc_test)rA   namerI   r   r   r   basic_int_ufunc_testn   s    zTestUFuncs.basic_int_ufunc_testc                 C      | j tjdd d S Ncfkinds)rK   r-   sinr@   r   r   r   test_sin_ufunc      zTestUFuncs.test_sin_ufuncc                 C   rN   rO   )rK   r-   cosr@   r   r   r   test_cos_ufunc   rU   zTestUFuncs.test_cos_ufuncc                 C   rN   rO   )rK   r-   tanr@   r   r   r   test_tan_ufunc   rU   zTestUFuncs.test_tan_ufuncc                 C   rN   rO   )rK   r-   arcsinr@   r   r   r   test_arcsin_ufunc   rU   zTestUFuncs.test_arcsin_ufuncc                 C   rN   rO   )rK   r-   arccosr@   r   r   r   test_arccos_ufunc   rU   zTestUFuncs.test_arccos_ufuncc                 C   rN   rO   )rK   r-   arctanr@   r   r   r   test_arctan_ufunc   rU   zTestUFuncs.test_arctan_ufuncc                 C   rN   NfrQ   )rK   r-   arctan2r@   r   r   r   test_arctan2_ufunc   rU   zTestUFuncs.test_arctan2_ufuncc                 C   rN   r`   )rK   r-   hypotr@   r   r   r   test_hypot_ufunc   rU   zTestUFuncs.test_hypot_ufuncc                 C   rN   rO   )rK   r-   sinhr@   r   r   r   test_sinh_ufunc   rU   zTestUFuncs.test_sinh_ufuncc                 C   rN   rO   )rK   r-   coshr@   r   r   r   test_cosh_ufunc   rU   zTestUFuncs.test_cosh_ufuncc                 C   rN   rO   )rK   r-   tanhr@   r   r   r   test_tanh_ufunc   rU   zTestUFuncs.test_tanh_ufuncc                 C   rN   rO   )rK   r-   arcsinhr@   r   r   r   test_arcsinh_ufunc   rU   zTestUFuncs.test_arcsinh_ufuncc                 C   rN   rO   )rK   r-   arccoshr@   r   r   r   test_arccosh_ufunc   rU   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#   rP   )rI   rR   )	r   r1   uint32int32uint64int64rK   r-   arctanh)rA   to_skipr   r   r   test_arctanh_ufunc   s   	zTestUFuncs.test_arctanh_ufuncc                 C   rN   r`   )rK   r-   deg2radr@   r   r   r   test_deg2rad_ufunc   rU   zTestUFuncs.test_deg2rad_ufuncc                 C   rN   r`   )rK   r-   rad2degr@   r   r   r   test_rad2deg_ufunc   rU   zTestUFuncs.test_rad2deg_ufuncc                 C   rN   r`   )rK   r-   degreesr@   r   r   r   test_degrees_ufunc   rU   zTestUFuncs.test_degrees_ufuncc                 C   rN   r`   )rK   r-   radiansr@   r   r   r   test_radians_ufunc   rU   zTestUFuncs.test_radians_ufuncc                 C      |  tj d S rB   )signed_unsigned_cmp_testr-   greaterr@   r   r   r   test_greater_ufunc      zTestUFuncs.test_greater_ufuncc                 C   r   rB   )r   r-   greater_equalr@   r   r   r   test_greater_equal_ufunc   r   z#TestUFuncs.test_greater_equal_ufuncc                 C   r   rB   )r   r-   lessr@   r   r   r   test_less_ufunc   r   zTestUFuncs.test_less_ufuncc                 C   r   rB   )r   r-   
less_equalr@   r   r   r   test_less_equal_ufunc   r   z TestUFuncs.test_less_equal_ufuncc                 C   r   rB   )r   r-   	not_equalr@   r   r   r   test_not_equal_ufunc   r   zTestUFuncs.test_not_equal_ufuncc                 C   r   rB   )r   r-   equalr@   r   r   r   test_equal_ufunc   r   zTestUFuncs.test_equal_ufuncc                 C   r   rB   )rK   r-   logical_andr@   r   r   r   test_logical_and_ufunc   r   z!TestUFuncs.test_logical_and_ufuncc                 C   r   rB   )rK   r-   
logical_orr@   r   r   r   test_logical_or_ufunc   r   z TestUFuncs.test_logical_or_ufuncc                 C   r   rB   )rK   r-   logical_xorr@   r   r   r   test_logical_xor_ufunc   r   z!TestUFuncs.test_logical_xor_ufuncc                 C   r   rB   )rK   r-   logical_notr@   r   r   r   test_logical_not_ufunc   r   z!TestUFuncs.test_logical_not_ufuncc                 C   r   rB   )rK   r-   maximumr@   r   r   r   test_maximum_ufunc   r   zTestUFuncs.test_maximum_ufuncc                 C   r   rB   )rK   r-   minimumr@   r   r   r   test_minimum_ufunc   r   zTestUFuncs.test_minimum_ufuncc                 C   r   rB   )rK   r-   fmaxr@   r   r   r   test_fmax_ufunc   r   zTestUFuncs.test_fmax_ufuncc                 C   r   rB   )rK   r-   fminr@   r   r   r   test_fmin_ufunc   r   zTestUFuncs.test_fmin_ufuncc                 C   r   rB   )rM   r-   bitwise_andr@   r   r   r   test_bitwise_and_ufunc   r   z!TestUFuncs.test_bitwise_and_ufuncc                 C   r   rB   )rM   r-   
bitwise_orr@   r   r   r   test_bitwise_or_ufunc   r   z TestUFuncs.test_bitwise_or_ufuncc                 C   r   rB   )rM   r-   bitwise_xorr@   r   r   r   test_bitwise_xor_ufunc   r   z!TestUFuncs.test_bitwise_xor_ufuncc                 C   r   rB   )rM   r-   invertr@   r   r   r   test_invert_ufunc   r   zTestUFuncs.test_invert_ufuncc                 C   r   rB   )rM   r-   bitwise_notr@   r   r   r   test_bitwise_not_ufunc   r   z!TestUFuncs.test_bitwise_not_ufuncc                 C   rN   rO   )rK   r-   logr@   r   r   r   test_log_ufunc
  rU   zTestUFuncs.test_log_ufuncc                 C   rN   rO   )rK   r-   log2r@   r   r   r   test_log2_ufunc  rU   zTestUFuncs.test_log2_ufuncc                 C   rN   rO   )rK   r-   log10r@   r   r   r   test_log10_ufunc  rU   zTestUFuncs.test_log10_ufuncrB   )3r   
__module____qualname___numba_parallel_test_r*   rC   r   	functools	lru_cacherH   rM   rT   rW   rY   r[   r]   r_   rc   re   rg   ri   rk   rm   ro   rv   rx   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s`    B


r   __main__)r   numpyr-   unittestnumbar   r   r   numba.tests.supportr   numba.tests.test_ufuncsr   r   r   r   mainr   r   r   r   <module>   s     z