U
    9%eh$                     @   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   b/var/www/html/Darija-Ai-API/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                   @   sn  e Zd ZdZdd Zdd Zdd Zejdd	d
d Z	dXd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/dS )Y
TestUFuncsFc                 C   sZ  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 | 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 )Ny            g        y      ?      ?Zc8)Zdtype   CZc16r   )      )r   r   r      y      ?      ?r   r   F)r   setUpinputsextendnp	complex64r   
complex128arrayArrayZlinspaceZreshapefloat64ZasfortranarrayZuint8Zint8Zuint16Zint16Z	ulonglongZ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 r0   )r   )r/   r   r   r   r   r   e   s    zTestUFuncs._make_ufunc_usecaseN)maxsizec                 C   s   t ||d S )N)r   r   )r   Zjit)r/   Z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   Zfloat32r)   r(   r%   r&   basic_ufunc_test)r/   namer5   r   r   r   basic_int_ufunc_testn   s     zTestUFuncs.basic_int_ufunc_testc                 C   s   | j tjdd d S Ncfkinds)r6   r$   sinr.   r   r   r   test_sin_ufunc   s    zTestUFuncs.test_sin_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   cosr.   r   r   r   test_cos_ufunc   s    zTestUFuncs.test_cos_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   tanr.   r   r   r   test_tan_ufunc   s    zTestUFuncs.test_tan_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   Zarcsinr.   r   r   r   test_arcsin_ufunc   s    zTestUFuncs.test_arcsin_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   Zarccosr.   r   r   r   test_arccos_ufunc   s    zTestUFuncs.test_arccos_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   Zarctanr.   r   r   r   test_arctan_ufunc   s    zTestUFuncs.test_arctan_ufuncc                 C   s   | j tjdd d S Nfr;   )r6   r$   Zarctan2r.   r   r   r   test_arctan2_ufunc   s    zTestUFuncs.test_arctan2_ufuncc                 C   s   | j tjdd d S rF   )r6   r$   hypotr.   r   r   r   test_hypot_ufunc   s    zTestUFuncs.test_hypot_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   sinhr.   r   r   r   test_sinh_ufunc   s    zTestUFuncs.test_sinh_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   coshr.   r   r   r   test_cosh_ufunc   s    zTestUFuncs.test_cosh_ufuncc                 C   s   | j tjdd d S r9   )r6   r$   tanhr.   r   r   r   test_tanh_ufunc   s    zTestUFuncs.test_tanh_ufuncc                 C   s   | j tjdd d S r9   )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 r9   )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   r:   )r5   r<   )	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 rF   )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 rF   )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 rF   )r6   r$   degreesr.   r   r   r   test_degrees_ufunc   s    zTestUFuncs.test_degrees_ufuncc                 C   s   | j tjdd d S rF   )r6   r$   radiansr.   r   r   r   test_radians_ufunc   s    zTestUFuncs.test_radians_ufuncc                 C   s   |  tj d S r0   )signed_unsigned_cmp_testr$   Zgreaterr.   r   r   r   test_greater_ufunc   s    zTestUFuncs.test_greater_ufuncc                 C   s   |  tj d S r0   )rZ   r$   Zgreater_equalr.   r   r   r   test_greater_equal_ufunc   s    z#TestUFuncs.test_greater_equal_ufuncc                 C   s   |  tj d S r0   )rZ   r$   lessr.   r   r   r   test_less_ufunc   s    zTestUFuncs.test_less_ufuncc                 C   s   |  tj d S r0   )rZ   r$   Z
less_equalr.   r   r   r   test_less_equal_ufunc   s    z TestUFuncs.test_less_equal_ufuncc                 C   s   |  tj d S r0   )rZ   r$   	not_equalr.   r   r   r   test_not_equal_ufunc   s    zTestUFuncs.test_not_equal_ufuncc                 C   s   |  tj d S r0   )rZ   r$   equalr.   r   r   r   test_equal_ufunc   s    zTestUFuncs.test_equal_ufuncc                 C   s   |  tj d S r0   )r6   r$   logical_andr.   r   r   r   test_logical_and_ufunc   s    z!TestUFuncs.test_logical_and_ufuncc                 C   s   |  tj d S r0   )r6   r$   
logical_orr.   r   r   r   test_logical_or_ufunc   s    z TestUFuncs.test_logical_or_ufuncc                 C   s   |  tj d S r0   )r6   r$   logical_xorr.   r   r   r   test_logical_xor_ufunc   s    z!TestUFuncs.test_logical_xor_ufuncc                 C   s   |  tj d S r0   )r6   r$   Zlogical_notr.   r   r   r   test_logical_not_ufunc   s    z!TestUFuncs.test_logical_not_ufuncc                 C   s   |  tj d S r0   )r6   r$   maximumr.   r   r   r   test_maximum_ufunc   s    zTestUFuncs.test_maximum_ufuncc                 C   s   |  tj d S r0   )r6   r$   minimumr.   r   r   r   test_minimum_ufunc   s    zTestUFuncs.test_minimum_ufuncc                 C   s   |  tj d S r0   )r6   r$   Zfmaxr.   r   r   r   test_fmax_ufunc   s    zTestUFuncs.test_fmax_ufuncc                 C   s   |  tj d S r0   )r6   r$   Zfminr.   r   r   r   test_fmin_ufunc   s    zTestUFuncs.test_fmin_ufuncc                 C   s   |  tj d S r0   )r8   r$   Zbitwise_andr.   r   r   r   test_bitwise_and_ufunc   s    z!TestUFuncs.test_bitwise_and_ufuncc                 C   s   |  tj d S r0   )r8   r$   Z
bitwise_orr.   r   r   r   test_bitwise_or_ufunc   s    z TestUFuncs.test_bitwise_or_ufuncc                 C   s   |  tj d S r0   )r8   r$   Zbitwise_xorr.   r   r   r   test_bitwise_xor_ufunc   s    z!TestUFuncs.test_bitwise_xor_ufuncc                 C   s   |  tj d S r0   )r8   r$   invertr.   r   r   r   test_invert_ufunc   s    zTestUFuncs.test_invert_ufuncc                 C   s   |  tj d S r0   )r8   r$   Zbitwise_notr.   r   r   r   test_bitwise_not_ufunc   s    z!TestUFuncs.test_bitwise_not_ufunc)N)0r   
__module____qualname__Z_numba_parallel_test_r!   r1   r   	functools	lru_cacher4   r8   r>   r@   rB   rC   rD   rE   rH   rJ   rL   rN   rP   rQ   rR   rS   rT   rU   rW   rY   r[   r\   r^   r_   ra   rc   re   rg   ri   rj   rl   rn   ro   rp   rq   rr   rs   ru   rv   r   r   r   r   r      sX   B


r   __main__)ry   numpyr$   ZunittestZnumbar   r   r   Znumba.tests.supportr   Znumba.tests.test_ufuncsr   r   r   r   mainr   r   r   r   <module>   s    n