B
     \                 @   s  d dl mZmZmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ e ZejZe
je
jfZdd Zdd	 Zd
d Zdd Zeeje
je
jed eeje
je
jed g Zeddejfg7 Zeddejfg7 Zg Zeddejfg7 Zeddejfg7 Zeddejfg7 Zeddejfg7 Zeddej fg7 Zeddej!fg7 Zed d!ej"fg7 Zed"d#ej#fg7 Zed$d%ej$fg7 Zed&d'ej%fg7 Zed(d)ej&fg7 Zed*d+ej'fg7 Zed,d-ej(fg7 Zed.d/ej)fg7 Zed0d1ej*fg7 Zed2d3ej+fg7 Zed4d5ej,fg7 Zed6d7ej-fg7 Zed8d9ej.fg7 Zed:d;ej/fg7 Zed<d=ej0fg7 Zed>d?ej1fg7 Zed@dAej2fg7 ZedBdCej3fg7 ZedDdEej4fg7 Zg Z5e5dFdGej6fg7 Z5e5dHdIej7fg7 Z5e5dJdKejfg7 Z5e5dLdMej8fg7 Z5e5dNdOej9fg7 Z5xLeD ]D\Z:Z;Z<ee:e
jZ=ee<e
je= ee;e
jZ>ee<e
je> q
W xLeD ]D\Z:Z;Z<ee:e
jZ=ee<e
je= ee;e
jZ>ee<e
je> qXW xTe5D ]L\Z:Z;Z<ee:e
jZ=ee<e
je
je= ee;e
jZ>ee<e
je
je> qW dS )P    )print_functionabsolute_importdivisionN)Type)cgutilstypes)Registryc                s    fdd}|S )Nc       	         sd   |j tjkst | }|j}tt |g}|j	| d}|
||}| ||tjtjS )N)name)Zreturn_typer   ZbooleanAssertionErrorget_value_typemoduler   functionintget_or_insert_functioncallcastint32)	contextbuildersigargsftylmodfntyfnresult)nvnamety 3lib/python3.7/site-packages/numba/cuda/libdevice.pycore   s    
zbool_implement.<locals>.corer   )r   r   r    r   )r   r   r   bool_implement   s    	r!   c                s    fdd}|S )Nc                s8   |  }|j}t||g}|j| d}|||S )N)r	   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r       s
    
zunary_implement.<locals>.corer   )r   r   r    r   )r   r   r   unary_implement   s    r"   c                s    fdd}|S )Nc                s:   |  }|j}t|||g}|j| d}|||S )N)r	   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r    (   s
    
zbinary_implement.<locals>.corer   )r   r   r    r   )r   r   r   binary_implement'   s    r#   c                s    fdd}|S )Nc                s\   |\}}|j \}}|j}| |}	| tj}
t|	|	|
g}|j| d}||||gS )N)r	   )	r   r   r   r   r   r   r   r   r   )r   r   r   r   basepowZbasetyZpowtyr   r   Zityr   r   )r   r   r   r    3   s    

zpowi_implement.<locals>.corer   )r   r    r   )r   r   powi_implement2   s    r&   Z
__nv_powifZ	__nv_powiZ__nv_isnandZ__nv_isnanfZ__nv_isinfdZ__nv_isinffZ	__nv_ceilZ
__nv_ceilfZ
__nv_floorZ__nv_floorfZ	__nv_fabsZ
__nv_fabsfZ__nv_expZ	__nv_expfZ
__nv_expm1Z__nv_expm1fZ__nv_erfZ	__nv_erffZ	__nv_erfcZ
__nv_erfcfZ__nv_tgammaZ__nv_tgammafZ__nv_lgammaZ__nv_lgammafZ	__nv_sqrtZ
__nv_sqrtfZ__nv_logZ	__nv_logfZ
__nv_log10Z__nv_log10fZ
__nv_log1pZ__nv_log1pfZ
__nv_acoshZ__nv_acoshfZ	__nv_acosZ
__nv_acosfZ__nv_cosZ	__nv_cosfZ	__nv_coshZ
__nv_coshfZ
__nv_asinhZ__nv_asinhfZ	__nv_asinZ
__nv_asinfZ__nv_sinZ	__nv_sinfZ	__nv_sinhZ
__nv_sinhfZ	__nv_atanZ
__nv_atanfZ
__nv_atanhZ__nv_atanhfZ__nv_tanZ	__nv_tanfZ	__nv_tanhZ
__nv_tanhfZ__nv_copysignZ__nv_copysignfZ
__nv_atan2Z__nv_atan2fZ__nv_powZ	__nv_powfZ	__nv_fmodZ
__nv_fmodfZ
__nv_hypotZ__nv_hypotf)?Z
__future__r   r   r   sysZmathZllvmlite.llvmpy.corer   Znumbar   r   Znumba.targets.imputilsr   registrylowerZfloat32Zfloat64Z	float_setr!   r"   r#   r&   r%   r   ZbooleansZisnanZisinfZunarysZceilZfloorZfabsZexpZexpm1ZerfZerfcZgammaZlgammaZsqrtlogZlog10Zlog1pZacoshZacosZcosZcoshZasinhZasinZsinZsinhZatanZatanhZtanZtanhZbinarysZcopysignZatan2ZfmodZhypotZname64Zname32keyZimpl64Zimpl32r   r   r   r   <module>   s   