o
    Td_                     @   s6"  d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZ d dlmZ eddZi deeded	dgfd
eeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfde	ede	d	dgfi deeded	deded	deded	dgfdeeded	dgfdeeded	dgfdeeded	dgfd eeded	dgfd!eeded	dgfd"eede	d	dgfd#eeded	deded	dgfd$eeded	deded	dgfd%eeded	dgfd&eeded	dgfd'eeded	dgfd(eeded	dgfd)eeded	dgfd*eeded	dgfd+eeded	deded	dgfd,eeded	deded	dgfi d-eeded	deded	dgfd.eeded	deded	dgfd/eeded	deded	dgfd0eeded	deded	dgfd1eeded	deded	dgfd2eeded	deded	dgfd3eeded	deded	dgfd4eeded	deded	dgfd5eeded	deded	dgfd6eeded	deded	dgfd7eed8ed	dgfd9eed8ed	dgfd:eed8ed	dgfd;eed8ed	dgfd<eed8ed	dgfd=eed8ed	dgfd>eed8ed	dgfi d?eed8ed	dgfd@eed8ed	dgfdAe	edBed	dgfdCe	edBed	dgfdDe	edBed	dgfdEe	edBed	dgfdFeed8ed	dgfdGeed8ed	dgfdHeed8ed	dgfdIeed8ed	dgfdJeed8ed	dgfdKe	edBed	dgfdLe	edBed	dgfdMe	edBed	dgfdNe	edBed	dgfdOe	eded	dgfdPeeded	dgfi dQeeded	dgfdReeded	dgfdSeeded	dgfdTeeded	dgfdUeeded	dgfdVeeded	dgfdWeeded	dgfdXeeded	dgfdYeeded	dgfdZeeded	dgfd[eeded	dgfd\eeded	dgfd]eeded	dgfd^eeded	dgfd_eeded	dgfd`eeded	dgfdaeeded	dgfi dbeeded	dgfdceeded	dgfddeeded	dgfdeeeded	dgfdfeeded	dgfdgeeded	dgfdheeded	dgfdieeded	dgfdjeedBed	dgfdkeedBed	dgfdleeded	deded	dgfdmeeded	deded	dgfdneeded	deded	dgfdoeeded	deded	dgfdpeeded	dgfdqeeded	dgfdreeded	dgfi dseeded	deded	dgfdteeded	dgfdueeded	dgfdveeded	dgfdweeded	deded	dgfdxe
eded	dedyedzded{edzdgfd|eeded	dgfd}eeded	dgfd~eeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dgfdeede	d	dgfdeeded	dgfi deedBed	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfde	edBed	dgfde	edBed	dgfde	edBed	dgfde	edBed	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfde	edBed	dgfde	edBed	dgfde	edBed	dgfde	edBed	dgfi deeded	dgfdeedBed	dgfdeedBed	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfi deeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dededzdgfdeeded	dededzdgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfi deeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfi deeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dgfdeeded	dgfdeede	d	dgfdeede	d	dgfi deede	d	dgfdeede	d	dgfdeede	d	dgfdeede	d	dgfdeede	d	dgfdeede	d	dgfde	ede	d	dgfde	ede	d	dede	d	dgfde	ede	d	dede	d	dgfde	eded	dgfde	eded	dgfde	eded	dgfde	eded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfi deeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeede	d	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dededzdgfdeeded	dededzdgfdeeded	deded	dgfde	ede	d	dede	d	dgfd eeded	deded	dgfdeeded	dgfdeeded	dgfdeeded	deded	dgfi deeded	deded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfd	eeded	dgfd
eede	d	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	dgfdeeded	dgfdeeded	deded	dgfdeeded	deded	dgfdeeded	deded	dededzdgfdeeded	deded	dededzdgfi deeded	deded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	dgfdeeded	deded	deded	dgfdeeded	dgfd eeded	deded	dgfd!eeded	deded	dgfd"eeded	dgfd#eeded	dgfd$eeded	dgfd%e
eded	dedyedzded{edzdgfd&e
eded	dedyedzded{edzdgfd'e
eded	dedyedzded{edzdgfi d(e
eded	dedyedzded{edzdgfd)eeded	dgfd*eeded	dgfd+eeded	dgfd,eeded	dgfd-eeded	dgfd.eeded	dgfd/eeded	dgfd0eeded	dgfd1eeded	dgfd2eeded	dgfd3eeded	dgfd4eeded	dgfd5eeded	dgfd6eeded	dgfd7eeded	dgfd8eeded	deded	dgfi d9eeded	dgfd:eeded	dgfd;eeded	dgfd<eeded	dgfd=eeded	dgfd>eede	d	dgfd?eede	d	dgfd@eede	d	dgfdAeede	d	dgfdBeede	d	dgfdCeede	d	dgfdDeede	d	dgfdEeede	d	dgfdFe	ede	d	dede	d	dgfdGe	ede	d	dede	d	dgfdHeeded	deded	dgfdIeeded	deded	dgfeeded	deded	dgfe	ede	d	dede	d	dgfeeded	deded	dgfeeded	deded	dgfeeded	deded	deded	dgfeeded	dgfeeded	dgfeeded	dgfeeded	dgfeeded	deded	dgfeeded	deded	dgfdJZdKdL ZdMZdNZdOdP ZdQS (R      )
namedtuple)indent)float32float64int16int32int64voidTuple)	signaturearg)nametyis_ptr__nv_absxF	__nv_acos
__nv_acosf
__nv_acosh__nv_acoshf	__nv_asin
__nv_asinf
__nv_asinh__nv_asinhf	__nv_atan
__nv_atan2y__nv_atan2f
__nv_atanf
__nv_atanh__nv_atanhf	__nv_brev__nv_brevll__nv_byte_permz	__nv_cbrt
__nv_cbrtf	__nv_ceil
__nv_ceilf__nv_clz
__nv_clzll__nv_copysign__nv_copysignf__nv_cos	__nv_cosf	__nv_cosh
__nv_coshf
__nv_cospi__nv_cospif__nv_dadd_rd__nv_dadd_rn__nv_dadd_ru__nv_dadd_rz__nv_ddiv_rd__nv_ddiv_rn__nv_ddiv_ru__nv_ddiv_rz__nv_dmul_rd__nv_dmul_rn__nv_dmul_ru__nv_dmul_rz__nv_double2float_rdd__nv_double2float_rn__nv_double2float_ru__nv_double2float_rz__nv_double2hiint__nv_double2int_rd__nv_double2int_rn__nv_double2int_ru__nv_double2int_rz__nv_double2ll_rdf__nv_double2ll_rn__nv_double2ll_ru__nv_double2ll_rz__nv_double2loint__nv_double2uint_rd__nv_double2uint_rn__nv_double2uint_ru__nv_double2uint_rz__nv_double2ull_rd__nv_double2ull_rn__nv_double2ull_ru__nv_double2ull_rz__nv_double_as_longlong__nv_drcp_rd__nv_drcp_rn__nv_drcp_ru__nv_drcp_rz__nv_dsqrt_rd__nv_dsqrt_rn__nv_dsqrt_ru__nv_dsqrt_rz__nv_erf	__nv_erfc
__nv_erfcf__nv_erfcinv__nv_erfcinvf
__nv_erfcx__nv_erfcxf	__nv_erff__nv_erfinv__nv_erfinvf__nv_exp
__nv_exp10__nv_exp10f	__nv_exp2
__nv_exp2f	__nv_expf
__nv_expm1__nv_expm1f	__nv_fabs
__nv_fabsf__nv_fadd_rd__nv_fadd_rn__nv_fadd_ru__nv_fadd_rz__nv_fast_cosf__nv_fast_exp10f__nv_fast_expf__nv_fast_fdividef__nv_fast_log10f__nv_fast_log2f__nv_fast_logf__nv_fast_powf__nv_fast_sincosfsptrTcptr__nv_fast_sinf__nv_fast_tanf	__nv_fdim
__nv_fdimf__nv_fdiv_rd__nv_fdiv_rn__nv_fdiv_ru__nv_fdiv_rz__nv_ffs
__nv_ffsll__nv_finitef__nv_float2half_rn__nv_float2int_rdin__nv_float2int_rn__nv_float2int_ru__nv_float2int_rz__nv_float2ll_rd__nv_float2ll_rn__nv_float2ll_ru__nv_float2ll_rz__nv_float2uint_rd__nv_float2uint_rn__nv_float2uint_ru__nv_float2uint_rz__nv_float2ull_rd__nv_float2ull_rn__nv_float2ull_ru__nv_float2ull_rz__nv_float_as_int
__nv_floor__nv_floorf__nv_fma__nv_fma_rd__nv_fma_rn__nv_fma_ru__nv_fma_rz	__nv_fmaf__nv_fmaf_rd__nv_fmaf_rn__nv_fmaf_ru__nv_fmaf_rz	__nv_fmax
__nv_fmaxf	__nv_fmin
__nv_fminf	__nv_fmod
__nv_fmodf__nv_fmul_rd__nv_fmul_rn__nv_fmul_ru__nv_fmul_rz__nv_frcp_rd__nv_frcp_rn__nv_frcp_ru__nv_frcp_rz
__nv_frexpb__nv_frexpf__nv_frsqrt_rn__nv_fsqrt_rd__nv_fsqrt_rn__nv_fsqrt_ru__nv_fsqrt_rz__nv_fsub_rd__nv_fsub_rn__nv_fsub_ru__nv_fsub_rz	__nv_hadd__nv_half2floath__nv_hiloint2double
__nv_hypot__nv_hypotf
__nv_ilogb__nv_ilogbf__nv_int2double_rni__nv_int2float_rd__nv_int2float_rn__nv_int2float_ru__nv_int2float_rz__nv_int_as_float__nv_isfinited__nv_isinfd__nv_isinff__nv_isnand__nv_isnanf__nv_j0__nv_j0f__nv_j1__nv_j1f__nv_jnn__nv_jnf
__nv_ldexp__nv_ldexpf__nv_lgamma__nv_lgammaf__nv_ll2double_rdl__nv_ll2double_rn__nv_ll2double_ru__nv_ll2double_rz__nv_ll2float_rd__nv_ll2float_rn__nv_ll2float_ru__nv_ll2float_rz
__nv_llabs
__nv_llmax
__nv_llmin__nv_llrint__nv_llrintf__nv_llround__nv_llroundf__nv_log
__nv_log10__nv_log10f
__nv_log1p__nv_log1pf	__nv_log2
__nv_log2f	__nv_logb
__nv_logbf	__nv_logf__nv_longlong_as_double__nv_max__nv_min	__nv_modf
__nv_modff
__nv_mul24__nv_mul64hi
__nv_mulhi__nv_nearbyint__nv_nearbyintf__nv_nextafter__nv_nextafterf__nv_normcdf__nv_normcdff__nv_normcdfinv__nv_normcdfinvf	__nv_popc__nv_popcll__nv_pow	__nv_powf	__nv_powi
__nv_powif
__nv_rcbrt__nv_rcbrtf__nv_remainder__nv_remainderf__nv_remquoc__nv_remquofquo
__nv_rhadd	__nv_rint
__nv_rintf
__nv_round__nv_roundf
__nv_rsqrt__nv_rsqrtf__nv_sad__nv_saturatef__nv_scalbn__nv_scalbnf__nv_signbitd__nv_signbitf__nv_sin__nv_sincos__nv_sincosf__nv_sincospi__nv_sincospif	__nv_sinf	__nv_sinh
__nv_sinhf
__nv_sinpi__nv_sinpif	__nv_sqrt
__nv_sqrtf__nv_tan	__nv_tanf	__nv_tanh
__nv_tanhf__nv_tgamma__nv_tgammaf
__nv_trunc__nv_truncf
__nv_uhadd__nv_uint2double_rn__nv_uint2float_rd__nv_uint2float_rn__nv_uint2float_ru__nv_uint2float_rz__nv_ull2double_rd__nv_ull2double_rn__nv_ull2double_ru__nv_ull2double_rz__nv_ull2float_rd__nv_ull2float_rn__nv_ull2float_ru__nv_ull2float_rz__nv_ullmax__nv_ullmin	__nv_umax	__nv_umin)__nv_umul24__nv_umul64hi__nv_umulhi__nv_urhadd	__nv_usad__nv_y0__nv_y0f__nv_y1__nv_y1f__nv_yn__nv_ynfc                 C   s^   dd |D }| t kr|d|  t|dkrt|} n|d } dd |D }t| g|R  S )z
    Given the return type and arguments for a libdevice function, return the
    signature of the stub function used to call it from CUDA Python.
    c                 S   s   g | ]}|j r|jqS  r   r   .0r   r\  r\  l/home/ncw/WWW/www-new/content/articles/pi-bbp/venv/lib/python3.10/site-packages/numba/cuda/libdevicefuncs.py
<listcomp>      z$create_signature.<locals>.<listcomp>r      c                 S   s   g | ]}|j s|jqS r\  r]  r^  r\  r\  r`  ra    rb  )r	   insertlenr
   r   )rettyargsreturn_typesargtypesr\  r\  r`  create_signature  s   
rj  zc
See https://docs.nvidia.com/cuda/libdevice-users-guide/{func}.html

{param_types}
:rtype: {retty}
z1:param {a.name}: Argument.
:type {a.name}: {a.ty}c               	      s   t  D ]G\} \}}dd   fdd|D }d|}t||}ddd |D }tj||j| d}t|d	}td
| dd   d| d| d qd S )Nc                 S   s   | j dkrdS | j S )Nr   r   )r   )r   r\  r\  r`  argname  s   
zgenerate_stubs.<locals>.argnamec                    s   g | ]	}|j s |qS r\  )r   r_  ark  r\  r`  ra    s    z"generate_stubs.<locals>.<listcomp>z, 
c                 S   s   g | ]}|j stj|d qS ))rm  )r   param_templateformatrl  r\  r\  r`  ra    s    )param_typesrf  funcz    zdef    (z
):
    """z"""

)		functionsitemsjoinrj  docstring_templaterq  return_typer   print)r   rf  rg  argnamesargstrr   rr  	docstringr\  rn  r`  generate_stubs  s   


&r  N)collectionsr   textwrapr   numba.typesr   r   r   r   r   r	   r
   numba.core.typing.templatesr   r   rv  rj  ry  rp  r  r\  r\  r\  r`  <module>   s   $
	
&'()*+,3:;<=>?@GNU\cjqx           !  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  ^  e  l  s  t  u  v  }  ~                                  '    .    5    <    =    >    ?    @    A    B    C    D    E    F    G    H    I    J    K    L    M    N    O    P    Q    R    S    [    c    k    s    {                             $      +      2      9      @      G      N      U      \      c      j      k      l      m      n      u      |      }      ~                             	                                %        &        -        4        ;        <        =        >        ?        @        A        B        C        D        E        F        G        H        I        J        K        L        S        Z        a        h        i        j        k        l        m        n        o        p        q        r        s        z                                                                               	          
                                                                                          "          )          0          7          >          M          N          O          V          ]          ^          _          `          a          b          c          j          q          x                                             	                                                 '            (            )            *            +            ,            -            5            6            =            D            E            F            G            O            W            _            g            h            i            j            k            l            m            n            o            p            q            r            s            t            u            v            }            ~                                                                                                                                         	              
                                                                       (       
       `