
    sh[                     F    S r SSKrSSKrSSKJr  SSKJr  S r\S 5       r	g)aD  Contains information on how to translate different ufuncs for the CUDA
target. It is a database of different ufuncs and how each of its loops maps to
a function that implements the inner kernel of that ufunc (the inner kernel
being the per-element function).

Use get_ufunc_info() to get the information related to a ufunc.
    N)	lru_cache)typingc                     [        5       U    $ N)ufunc_db)	ufunc_keys    e/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/ufuncs.pyget_ufunc_infor
      s    :i      c                  %  ^^^^^^^^^ SSK Jn JnJn  SSKJm  SSKJn  SSKJ	mJ
m  UU4S jmUU4S jmU4S jnU4S	 jnU4S
 jnU4S jmU4S jmU4S jnU4S jnU4S jn	U4S jn
U4S jnU4S jnU4S jmUUUUU4S jnU4S jmUUUUU4S jnU4S jnUUUUU4S jnU4S jnU4S jnU4S jn0 nTTTR                  TR                  S.U[        R                  '   TTTR                  TR                  S.U[        R                  '   UUU R                   U R                   S.U[        R"                  '   UUU R$                  U R$                  S.U[        R&                  '   U	U	U R(                  U R(                  S.U[        R*                  '   U
U
U R,                  U R,                  S.U[        R.                  '   UUS.U[        R0                  '   UUS.U[        R2                  '   TTUUS.U[        R4                  '   TTUUS.U[        R6                  '   UUUUS.U[        R8                  '   UUU R:                  U R:                  S.U[        R<                  '   UUTR>                  TR>                  S.U[        R@                  '   UUU RB                  U RB                  S.U[        RD                  '   URF                  URF                  S.U[        RH                  '   U[        RH                     U[        RJ                  '   URL                  URL                  S.U[        RN                  '   U[        RN                     U[        RP                  '   URR                  URT                  URR                  URT                  URR                  URT                  URR                  URT                  URR                  URT                  URR                  URV                  URV                  TRX                  TRX                  S.U[        RZ                  '   US :  aC  U[        RZ                     R]                  UR_                  S!5      URa                  S!5      S".5        URb                  URd                  URb                  URd                  URb                  URd                  URb                  URd                  URb                  URd                  URb                  URf                  URf                  TRh                  TRh                  S.U[        Rj                  '   US :  aC  U[        Rj                     R]                  UR_                  S#5      URa                  S#5      S".5        URl                  URn                  URl                  URn                  URl                  URn                  URl                  URn                  URl                  URn                  URl                  URp                  URp                  TRr                  TRr                  S.U[        Rt                  '   US :  aC  U[        Rt                     R]                  UR_                  S$5      URa                  S$5      S".5        URv                  URx                  URv                  URx                  URv                  URx                  URv                  URx                  URv                  URx                  URv                  URz                  URz                  TR|                  TR|                  S.U[        R~                  '   US :  aC  U[        R~                     R]                  UR_                  S%5      URa                  S%5      S".5        UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  TR                  TR                  S.U[        R                  '   US :  aC  U[        R                     R]                  UR_                  S&5      URa                  S&5      S".5        UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  TR                  TR                  S.U[        R                  '   US :  aC  U[        R                     R]                  UR_                  S'5      URa                  S'5      S".5        TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S.U[        R                  '   TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S.U[        R                  '   TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S.U[        R                  '   TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S(.U[        R                  '   TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S).U[        R                  '   TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S).U[        R                  '   TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S).U[        R                  '   TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  TR                  S).U[        R                  '   UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  S*.U[        R                  '   UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  S*.U[        R                  '   UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  S*.U[        R                  '   UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  S+.U[        R                  '   UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  S,.
U[        R                  '   UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  S,.
U[        R                  '   UUTR                  TR                  S.U[        R                  '   UUTR                  TR                  S.U[        R                  '   UUTR                  TR                  S.U[        R                  '   U$ )-Nr   )	cmathimplmathimplnumbers)npyfuncs)numpy_version)get_unary_impl_for_fn_and_tyget_binary_impl_for_fn_and_tyc                 d   > TR                  X4S5        T" XR                  S   5      nU" XX45      $ )N   r   _check_arity_and_homogeneityargs)fncontextbuildersigr   implr   r   s         r	   np_unary_implufunc_db.<locals>.np_unary_impl   s2    --c;+B<Gc00r   c                 d   > TR                  X4S5        T" XR                  S   5      nU" XX45      $ )N   r   r   )r   r   r   r   r   r   r   r   s         r	   np_binary_impl ufunc_db.<locals>.np_binary_impl!   s2    --c;,R!=Gc00r   c                 4   > T" [         R                  XX#5      $ r   )mathlogr   r   r   r   r   s       r	   np_real_log_impl"ufunc_db.<locals>.np_real_log_impl&       TXXwCCr   c                 4   > T" [         R                  XX#5      $ r   )r%   log2r'   s       r	   np_real_log2_impl#ufunc_db.<locals>.np_real_log2_impl)       TYY#DDr   c                 4   > T" [         R                  XX#5      $ r   )r%   log10r'   s       r	   np_real_log10_impl$ufunc_db.<locals>.np_real_log10_impl,       TZZ3EEr   c                 4   > T" [         R                  XX#5      $ r   )r%   sinr'   s       r	   np_real_sin_impl"ufunc_db.<locals>.np_real_sin_impl/   r*   r   c                 4   > T" [         R                  XX#5      $ r   )r%   cosr'   s       r	   np_real_cos_impl"ufunc_db.<locals>.np_real_cos_impl2   r*   r   c                 4   > T" [         R                  XX#5      $ r   )r%   tanr'   s       r	   np_real_tan_impl"ufunc_db.<locals>.np_real_tan_impl5   r*   r   c                 4   > T" [         R                  XX#5      $ r   )r%   asinr'   s       r	   np_real_asin_impl#ufunc_db.<locals>.np_real_asin_impl8   r/   r   c                 4   > T" [         R                  XX#5      $ r   )r%   acosr'   s       r	   np_real_acos_impl#ufunc_db.<locals>.np_real_acos_impl;   r/   r   c                 4   > T" [         R                  XX#5      $ r   )r%   atanr'   s       r	   np_real_atan_impl#ufunc_db.<locals>.np_real_atan_impl>   r/   r   c                 4   > T" [         R                  XX#5      $ r   )r%   atan2r   r   r   r   r"   s       r	   np_real_atan2_impl$ufunc_db.<locals>.np_real_atan2_implA       djj'CFFr   c                 4   > T" [         R                  XX#5      $ r   )r%   hypotrO   s       r	   np_real_hypot_impl$ufunc_db.<locals>.np_real_hypot_implD   rR   r   c                 4   > T" [         R                  XX#5      $ r   )r%   sinhr'   s       r	   np_real_sinh_impl#ufunc_db.<locals>.np_real_sinh_implG   r/   r   c                   > TR                  X#S5        UR                  S   nUR                  n[        R                  " U/S-  6 nU R                  XUS   5      nU R                  X5      nUR                  n	UR                  n
T" XXj/5      nT" XXi/5      nT" XXj/5      nT" XXi/5      nUR                  X5      Ul        UR                  X5      Ul        UR                  5       $ Nr   r   r!   
r   r   underlying_floatr   	signaturemake_complexrealimagfmul	_getvalue)r   r   r   r   tyftyfsig1xoutxrxisxishxrcxichxrr;   np_real_cosh_implr7   rY   r   s                  r	   np_complex_sinh_impl&ufunc_db.<locals>.np_complex_sinh_implJ        	--c;XXa[!!  3%!),  d1g6""7/VVVVw= 5$?w= 5$?<<*<<*}}r   c                 4   > T" [         R                  XX#5      $ r   )r%   coshr'   s       r	   rp   #ufunc_db.<locals>.np_real_cosh_impla   r/   r   c                   > TR                  X#S5        UR                  S   nUR                  n[        R                  " U/S-  6 nU R                  XUS   5      nU R                  X5      nUR                  n	UR                  n
T" XXj/5      nT" XXi/5      nT" XXj/5      nT" XXi/5      nUR                  X5      Ul        UR                  X5      Ul        UR                  5       $ r\   r]   )r   r   r   r   re   rf   rg   rh   ri   rj   rk   rn   ro   rl   rm   r;   rp   r7   rY   r   s                  r	   np_complex_cosh_impl&ufunc_db.<locals>.np_complex_cosh_impld   rs   r   c                 4   > T" [         R                  XX#5      $ r   )r%   tanhr'   s       r	   np_real_tanh_impl#ufunc_db.<locals>.np_real_tanh_impl{   r/   r   c                   > T"R                  X#S5        UR                  S   nUR                  n[        R                  " U/S-  6 nU R                  US5      nU R                  XUS   5      nU R                  X5      n	UR                  n
UR                  nT " XXk/5      nT" XXk/5      nT!" XXj/5      nT" XXj/5      nUR                  X5      nUR                  X5      nUR                  X5      nUR                  X5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      nUR                  UU5      U	l        UR                  UU5      U	l        U	R                  5       $ )Nr   r   r!   g      ?)r   r   r^   r   r_   get_constantr`   ra   rb   rc   faddfdivfsubrd   )#r   r   r   r   re   rf   rg   ONErh   ri   rj   rk   sicishrchr_rsis_rcicsqr_rcsqr_icdinv_drs_rcis_icis_rcrs_icnumrnumir;   rp   r7   rY   r   s#                                 r	   np_complex_tanh_impl&ufunc_db.<locals>.np_complex_tanh_impl~   s    	--c;XXa[!!  3%!),""3,  d1g6""7/VVVVgt<gt<%> 5$?\\""ll2$\\"#\\""b"%b"%LL(S!$R$S"%S"%R$||E5)||E5)<<e,<<e,}}r   c                 4   > T" [         R                  XX#5      $ r   )r%   asinhr'   s       r	   np_real_asinh_impl$ufunc_db.<locals>.np_real_asinh_impl   r4   r   c                 4   > T" [         R                  XX#5      $ r   )r%   acoshr'   s       r	   np_real_acosh_impl$ufunc_db.<locals>.np_real_acosh_impl   r4   r   c                 4   > T" [         R                  XX#5      $ r   )r%   atanhr'   s       r	   np_real_atanh_impl$ufunc_db.<locals>.np_real_atanh_impl   r4   r   )f->fd->dzF->FzD->D)ff->fdd->d)r   r   )??->?zbb->?zBB->?zhh->?zHH->?zii->?zII->?zll->?zLL->?zqq->?zQQ->?zff->?zdd->?zFF->?zDD->?)r      >)zqQ->?zQq->?z>=<z<=z!=z==)?->?zb->?zB->?zh->?zH->?zi->?zI->?zl->?zL->?zq->?zQ->?zf->?zd->?zF->?zD->?)r   bb->bBB->Bhh->hHH->Hii->iII->Ill->lLL->Lqq->qQQ->Qr   r   zFF->FzDD->D)r   r   r   r   r   r   r   r   r   r   r   )r   zb->bzB->Bzh->hzH->Hzi->izI->Izl->lzL->Lzq->qzQ->Q)
r   r   r   r   r   r   r   r   r   r   )vnumba.cpythonr   r   r   numba.npr   numba.np.numpy_supportr   numba.cuda.mathimplr   r   np_complex_sin_implnpr6   np_complex_cos_implr:   tan_implr>   	asin_implarcsin	acos_implarccos	atan_implarctanarctan2rT   rX   ru   r{   
asinh_implarcsinhnp_complex_acosh_implarccosh
atanh_implarctanhradians_float_impldeg2radradiansdegrees_float_implrad2degdegreesint_ugt_implint_sgt_implreal_gt_implnp_complex_gt_implgreaterupdateint_signed_unsigned_cmpint_unsigned_signed_cmpint_uge_implint_sge_implreal_ge_implnp_complex_ge_implgreater_equalint_ult_implint_slt_implreal_lt_implnp_complex_lt_impllessint_ule_implint_sle_implreal_le_implnp_complex_le_impl
less_equalint_ne_implreal_ne_implnp_complex_ne_impl	not_equalint_eq_implreal_eq_implnp_complex_eq_implequalnp_logical_and_implnp_complex_logical_and_impllogical_andnp_logical_or_implnp_complex_logical_or_impl
logical_ornp_logical_xor_implnp_complex_logical_xor_impllogical_xornp_logical_not_implnp_complex_logical_not_impllogical_notnp_int_smax_implnp_int_umax_implnp_real_maximum_implnp_complex_maximum_implmaximumnp_int_smin_implnp_int_umin_implnp_real_minimum_implnp_complex_minimum_implminimumnp_real_fmax_implnp_complex_fmax_implfmaxnp_real_fmin_implnp_complex_fmin_implfminint_and_implbitwise_andint_or_impl
bitwise_orint_xor_implbitwise_xorint_invert_implinvertint_shl_impl
left_shiftint_shr_implright_shiftnp_complex_log_implr&   np_complex_log2_implr,   np_complex_log10_implr1   )r   r   r   r   r(   r-   r2   r?   rC   rG   rK   rP   rU   rq   rx   r|   r   r   r   r   dbr   r   r"   r;   rp   r7   rY   r   r   s                        @@@@@@@@@r	   r   r      s)    ;:!4D1
1
DEFDDDEEEGGE .E .E$ $LFFF 
B ! ,,,,	BrvvJ ! ,,,,	BrvvJ ! """"	BrvvJ "!####	BryyM "!####	BryyM "!####	BryyM $#BrzzN $#BrxxL "!$$	BrwwK "!$$	BrwwK "!$$	BrwwK #"$$$$	BrzzN #"....	BrzzN #"$$$$	BrzzN ++++BrzzN
 

^BrzzN ++++BrzzN
 

^BrzzN %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,BrzzN" 
2::44S944S9; 	<
 %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,Br" 
2##44T:44T:%< 	=
 %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,BrwwK" 
27744S944S9; 	<
 %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,Br}}" 
2==  44T:44T:"< 	=
 $$$$$$$$$$$$$$$$$$$$$$%%%%,,,,Br||" 
2<<44T:44T:!< 	=
 $$$$$$$$$$$$$$$$$$$$$$%%%%,,,,BrxxL" 
28844T:44T:< 	=
 --------------------------5555Br~~& ,,,,,,,,,,,,,,,,,,,,,,,,,,4444Br}}& --------------------------5555Br~~& ,,,,,,,,,,,,,,,,,,,,,,,,,,4444Br~~& ,,********************....1111BrzzN& --********************....1111BrzzN& ,,********************++++....BrwwK& --********************++++....BrwwK& %%%%%%%%%%%%%%%%%%%%%%Br~~ $$$$$$$$$$$$$$$$$$$$$$Br}} %%%%%%%%%%%%%%%%%%%%%%Br~~ ''''''''''''''''''''''BryyM %%%%%%%%%%%%%%%%%%%%Br}} %%%%%%%%%%%%%%%%%%%%Br~~ ! ,,,,	BrvvJ "!----	BrwwK #"....	BrxxL Ir   )
__doc__r%   numpyr   	functoolsr   
numba.corer   r
   r    r   r	   <module>r"     s3       ! B
 B
r   