
    xKg[                     V    d Z ddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 d Zed        Zy)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)typing)get_unary_impl_for_fn_and_tyget_binary_impl_for_fn_and_tyc                     t               |    S N)ufunc_db)	ufunc_keys    U/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/ufuncs.pyget_ufunc_infor      s    :i      c                  %   ddl m} m}m} ddlm ddlm} fdfdfd}fd}fd	}fd
fdfd}fd}fd}	fd}
fd}fd}fdfd}fdfd}fd}fd}fd}fd}fd}i }j                  j                  d|t        j                  <   j                  j                  d|t        j                  <   ||| j                  | j                  d|t        j                  <   ||| j                  | j                  d|t        j                   <   |	|	| j"                  | j"                  d|t        j$                  <   |
|
| j&                  | j&                  d|t        j(                  <   ||d|t        j*                  <   ||d|t        j,                  <   ||d|t        j.                  <   ||d|t        j0                  <   ||||d|t        j2                  <   ||| j4                  | j4                  d|t        j6                  <   ||j8                  j8                  d|t        j:                  <   ||| j<                  | j<                  d|t        j>                  <   |j@                  |j@                  d|t        jB                  <   |t        jB                     |t        jD                  <   |jF                  |jF                  d|t        jH                  <   |t        jH                     |t        jJ                  <   |jL                  |jN                  |jL                  |jN                  |jL                  |jN                  |jL                  |jN                  |jL                  |jN                  |jL                  |jP                  |jP                  jR                  jR                  d|t        jT                  <   |dk\  rC|t        jT                     jW                  |jY                  d       |j[                  d       d!       |j\                  |j^                  |j\                  |j^                  |j\                  |j^                  |j\                  |j^                  |j\                  |j^                  |j\                  |j`                  |j`                  jb                  jb                  d|t        jd                  <   |dk\  rC|t        jd                     jW                  |jY                  d"      |j[                  d"      d!       |jf                  |jh                  |jf                  |jh                  |jf                  |jh                  |jf                  |jh                  |jf                  |jh                  |jf                  |jj                  |jj                  jl                  jl                  d|t        jn                  <   |dk\  rC|t        jn                     jW                  |jY                  d#      |j[                  d#      d!       |jp                  |jr                  |jp                  |jr                  |jp                  |jr                  |jp                  |jr                  |jp                  |jr                  |jp                  |jt                  |jt                  jv                  jv                  d|t        jx                  <   |dk\  rC|t        jx                     jW                  |jY                  d$      |j[                  d$      d!       |jz                  |jz                  |jz                  |jz                  |jz                  |jz                  |jz                  |jz                  |jz                  |jz                  |jz                  |j|                  |j|                  j~                  j~                  d|t        j                  <   |dk\  rC|t        j                     jW                  |jY                  d%      |j[                  d%      d!       |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  j                  j                  d|t        j                  <   |dk\  rC|t        j                     jW                  |jY                  d&      |j[                  d&      d!       j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d|t        j                  <   j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d|t        j                  <   j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d|t        j                  <   j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d'|t        j                  <   j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d(|t        j                  <   j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d(|t        j                  <   j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d(|t        j                  <   j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  d(|t        j                  <   |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d)|t        j                  <   |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d)|t        j                  <   |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d)|t        j                  <   |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d*|t        j                  <   |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d+
|t        j                  <   |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d+
|t        j                  <   ||j                  j                  d|t        j                  <   ||j                  j                  d|t        j                  <   ||j                  j                  d|t        j                  <   |S ),Nr   )	cmathimplmathimplnumbers)npyfuncs)numpy_versionc                 r    j                  ||d       t        | |j                  d         } |||||      S )N   r   )_check_arity_and_homogeneityr   argsfncontextbuildersigr   implr   s         r   np_unary_implzufunc_db.<locals>.np_unary_impl   s:    --c4;+B<GWc400r   c                 r    j                  ||d       t        | |j                  d         } |||||      S )N   r   )r   r   r   r   s         r   np_binary_implz ufunc_db.<locals>.np_binary_impl!   s:    --c4;,R!=GWc400r   c                 8     t         j                  | |||      S r   )mathlogr   r   r   r   r   s       r   np_real_log_implz"ufunc_db.<locals>.np_real_log_impl&       TXXwdCCr   c                 8     t         j                  | |||      S r   )r#   log2r%   s       r   np_real_log2_implz#ufunc_db.<locals>.np_real_log2_impl)       TYY#tDDr   c                 8     t         j                  | |||      S r   )r#   log10r%   s       r   np_real_log10_implz$ufunc_db.<locals>.np_real_log10_impl,       TZZ'3EEr   c                 8     t         j                  | |||      S r   )r#   sinr%   s       r   np_real_sin_implz"ufunc_db.<locals>.np_real_sin_impl/   r'   r   c                 8     t         j                  | |||      S r   )r#   cosr%   s       r   np_real_cos_implz"ufunc_db.<locals>.np_real_cos_impl2   r'   r   c                 8     t         j                  | |||      S r   )r#   tanr%   s       r   np_real_tan_implz"ufunc_db.<locals>.np_real_tan_impl5   r'   r   c                 8     t         j                  | |||      S r   )r#   asinr%   s       r   np_real_asin_implz#ufunc_db.<locals>.np_real_asin_impl8   r+   r   c                 8     t         j                  | |||      S r   )r#   acosr%   s       r   np_real_acos_implz#ufunc_db.<locals>.np_real_acos_impl;   r+   r   c                 8     t         j                  | |||      S r   )r#   atanr%   s       r   np_real_atan_implz#ufunc_db.<locals>.np_real_atan_impl>   r+   r   c                 8     t         j                  | |||      S r   )r#   atan2r   r   r   r   r!   s       r   np_real_atan2_implz$ufunc_db.<locals>.np_real_atan2_implA       djj'7CFFr   c                 8     t         j                  | |||      S r   )r#   hypotrD   s       r   np_real_hypot_implz$ufunc_db.<locals>.np_real_hypot_implD   rF   r   c                 8     t         j                  | |||      S r   )r#   sinhr%   s       r   np_real_sinh_implz#ufunc_db.<locals>.np_real_sinh_implG   r+   r   c                    j                  ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |||d         }| j                  ||      }|j                  }	|j                  }
 | |||
g      } | |||	g      } | |||
g      } | |||	g      }|j                  ||      |_        |j                  ||      |_        |j                         S 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chxrr5   np_real_cosh_implr2   rL   r   s                  r   np_complex_sinh_implz&ufunc_db.<locals>.np_complex_sinh_implJ        	--c4;XXa[!!  3%!),  "d1g6""7B/VVVVw= '52$?w= '52$?<<T*<<T*}}r   c                 8     t         j                  | |||      S r   )r#   coshr%   s       r   rb   z#ufunc_db.<locals>.np_real_cosh_impla   r+   r   c                    j                  ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |||d         }| j                  ||      }|j                  }	|j                  }
 | |||
g      } | |||	g      } | |||
g      } | |||	g      }|j                  ||      |_        |j                  ||      |_        |j                         S rN   rO   )r   r   r   r   rW   rX   rY   rZ   r[   r\   r]   r`   ra   r^   r_   r5   rb   r2   rL   r   s                  r   np_complex_cosh_implz&ufunc_db.<locals>.np_complex_cosh_impld   rd   r   c                 8     t         j                  | |||      S r   )r#   tanhr%   s       r   np_real_tanh_implz#ufunc_db.<locals>.np_real_tanh_impl{   r+   r   c                    "j                  ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |d      }| j                  |||d         }| j                  ||      }	|j                  }
|j                  }  | |||g      } | |||g      } !| |||
g      } | |||
g      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      |	_        |j                  ||      |	_        |	j                         S )Nr   r   r    g      ?)r   r   rP   r   rQ   get_constantrR   rS   rT   rU   faddfdivfsubrV   )#r   r   r   r   rW   rX   rY   ONErZ   r[   r\   r]   sicishrchr_rsis_rcicsqr_rcsqr_icdinv_drs_rcis_icis_rcrs_icnumrnumir5   rb   r2   rL   r   s#                                 r   np_complex_tanh_implz&ufunc_db.<locals>.np_complex_tanh_impl~   s    	--c4;XXa[!!  3%!),""3,  "d1g6""7B/VVVVgwt<gwt<%"> '52$?\\"c"ll2t$\\"d#\\"c"b"%b"%LL(S!$R$S"%S"%R$||E5)||E5)<<e,<<e,}}r   c                 8     t         j                  | |||      S r   )r#   asinhr%   s       r   np_real_asinh_implz$ufunc_db.<locals>.np_real_asinh_impl   r/   r   c                 8     t         j                  | |||      S r   )r#   acoshr%   s       r   np_real_acosh_implz$ufunc_db.<locals>.np_real_acosh_impl   r/   r   c                 8     t         j                  | |||      S r   )r#   atanhr%   s       r   np_real_atanh_implz$ufunc_db.<locals>.np_real_atanh_impl   r/   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   )snumba.cpythonr   r   r   numba.npr   numba.np.numpy_supportr   np_complex_sin_implnpr1   np_complex_cos_implr4   tan_implr7   	asin_implarcsin	acos_implarccos	atan_implarctanarctan2rH   rK   rf   rj   
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_implr-   )r   r   r   r   r&   r*   r.   r8   r;   r>   rA   rE   rI   rc   rh   rk   r   r   r   r   dbr!   r5   rb   r2   rL   r   r   s                        @@@@@@@r   r	   r	      s"    ;:!4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   numba.cuda.mathimplr   r   r   r	    r   r   <module>r     s9       @! @
 @
r   