
    J/Ph[                     N    d Z ddlZddlZddlmZ ddlmZ d Zed             Z	dS )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                 *    t                      |          S N)ufunc_db)	ufunc_keys    Q/var/www/html/test/jupyter/venv/lib/python3.11/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} ddlm	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          j        <   ||||d|t          j        <   ||| j        | j        d|t          j        <   ||j        j        d|t          j         <   ||| j!        | j!        d|t          j"        <   |j#        |j#        d|t          j$        <   |t          j$                 |t          j%        <   |j&        |j&        d|t          j'        <   |t          j'                 |t          j(        <   |j)        |j*        |j)        |j*        |j)        |j*        |j)        |j*        |j)        |j*        |j)        |j+        |j+        j,        j,        d|t          j-        <   |d k    rN|t          j-                 .                    |/                    d!          |0                    d!          d"           |j1        |j2        |j1        |j2        |j1        |j2        |j1        |j2        |j1        |j2        |j1        |j3        |j3        j4        j4        d|t          j5        <   |d k    rN|t          j5                 .                    |/                    d#          |0                    d#          d"           |j6        |j7        |j6        |j7        |j6        |j7        |j6        |j7        |j6        |j7        |j6        |j8        |j8        j9        j9        d|t          j:        <   |d k    rN|t          j:                 .                    |/                    d$          |0                    d$          d"           |j;        |j<        |j;        |j<        |j;        |j<        |j;        |j<        |j;        |j<        |j;        |j=        |j=        j>        j>        d|t          j?        <   |d k    rN|t          j?                 .                    |/                    d%          |0                    d%          d"           |j@        |j@        |j@        |j@        |j@        |j@        |j@        |j@        |j@        |j@        |j@        |jA        |jA        jB        jB        d|t          jC        <   |d k    rN|t          jC                 .                    |/                    d&          |0                    d&          d"           |jD        |jD        |jD        |jD        |jD        |jD        |jD        |jD        |jD        |jD        |jD        |jE        |jE        jF        jF        d|t          jG        <   |d k    rN|t          jG                 .                    |/                    d'          |0                    d'          d"           jH        jH        jH        jH        jH        jH        jH        jH        jH        jH        jH        jH        jH        jI        jI        d|t          jJ        <   jK        jK        jK        jK        jK        jK        jK        jK        jK        jK        jK        jK        jK        jL        jL        d|t          jM        <   jN        jN        jN        jN        jN        jN        jN        jN        jN        jN        jN        jN        jN        jO        jO        d|t          jP        <   jQ        jQ        jQ        jQ        jQ        jQ        jQ        jQ        jQ        jQ        jQ        jQ        jQ        jR        jR        d(|t          jS        <   jK        jT        jU        jT        jU        jT        jU        jT        jU        jT        jU        jV        jV        jW        jW        d)|t          jX        <   jH        jY        jZ        jY        jZ        jY        jZ        jY        jZ        jY        jZ        j[        j[        j\        j\        d)|t          j]        <   jK        jT        jU        jT        jU        jT        jU        jT        jU        jT        jU        j^        j^        j_        j_        d)|t          j`        <   jH        jY        jZ        jY        jZ        jY        jZ        jY        jZ        jY        jZ        ja        ja        jb        jb        d)|t          jc        <   |jd        |jd        |jd        |jd        |jd        |jd        |jd        |jd        |jd        |jd        |jd        d*|t          je        <   |jf        |jf        |jf        |jf        |jf        |jf        |jf        |jf        |jf        |jf        |jf        d*|t          jg        <   |jh        |jh        |jh        |jh        |jh        |jh        |jh        |jh        |jh        |jh        |jh        d*|t          ji        <   |jj        |jj        |jj        |jj        |jj        |jj        |jj        |jj        |jj        |jj        |jj        d+|t          jk        <   |jl        |jl        |jl        |jl        |jl        |jl        |jl        |jl        |jl        |jl        d,
|t          jm        <   |jn        |jn        |jn        |jn        |jn        |jn        |jn        |jn        |jn        |jn        d,
|t          jo        <   ||jp        jp        d|t          jq        <   ||jr        jr        d|t          js        <   ||jt        jt        d|t          ju        <   |S )-Nr   )	cmathimplmathimplnumbers)npyfuncs)numpy_version)get_unary_impl_for_fn_and_tyget_binary_impl_for_fn_and_tyc                 |                         ||d            | |j        d                   } |||||          S )N   r   _check_arity_and_homogeneityargs)fncontextbuildersigr   implr   r   s         r	   np_unary_implzufunc_db.<locals>.np_unary_impl   sI    --c4;;;++B<<tGWc4000r   c                 |                         ||d            | |j        d                   } |||||          S )N   r   r   )r   r   r   r   r   r   r   r   s         r	   np_binary_implz ufunc_db.<locals>.np_binary_impl!   sI    --c4;;;,,R!==tGWc4000r   c                 6     t           j        | |||          S r   )mathlogr   r   r   r   r   s       r	   np_real_log_implz"ufunc_db.<locals>.np_real_log_impl&       }TXwdCCCr   c                 6     t           j        | |||          S r   )r#   log2r%   s       r	   np_real_log2_implz#ufunc_db.<locals>.np_real_log2_impl)       }TY#tDDDr   c                 6     t           j        | |||          S r   )r#   log10r%   s       r	   np_real_log10_implz$ufunc_db.<locals>.np_real_log10_impl,       }TZ'3EEEr   c                 6     t           j        | |||          S r   )r#   sinr%   s       r	   np_real_sin_implz"ufunc_db.<locals>.np_real_sin_impl/   r'   r   c                 6     t           j        | |||          S r   )r#   cosr%   s       r	   np_real_cos_implz"ufunc_db.<locals>.np_real_cos_impl2   r'   r   c                 6     t           j        | |||          S r   )r#   tanr%   s       r	   np_real_tan_implz"ufunc_db.<locals>.np_real_tan_impl5   r'   r   c                 6     t           j        | |||          S r   )r#   asinr%   s       r	   np_real_asin_implz#ufunc_db.<locals>.np_real_asin_impl8   r+   r   c                 6     t           j        | |||          S r   )r#   acosr%   s       r	   np_real_acos_implz#ufunc_db.<locals>.np_real_acos_impl;   r+   r   c                 6     t           j        | |||          S r   )r#   atanr%   s       r	   np_real_atan_implz#ufunc_db.<locals>.np_real_atan_impl>   r+   r   c                 6     t           j        | |||          S r   )r#   atan2r   r   r   r   r!   s       r	   np_real_atan2_implz$ufunc_db.<locals>.np_real_atan2_implA       ~dj'7CFFFr   c                 6     t           j        | |||          S r   )r#   hypotrD   s       r	   np_real_hypot_implz$ufunc_db.<locals>.np_real_hypot_implD   rF   r   c                 6     t           j        | |||          S r   )r#   sinhr%   s       r	   np_real_sinh_implz#ufunc_db.<locals>.np_real_sinh_implG   r+   r   c                                         ||d           |j        d         }|j        }t          j        |gdz   }|                     |||d                   }|                     ||          }|j        }	|j        }
 | |||
g          } | |||	g          } | |||
g          } | |||	g          }|                    ||          |_        |                    ||          |_        |	                                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;;;Xa[! 3%!),  "d1g66""7B//VVw==  '52$??w==  '52$??<<T**<<T**}}r   c                 6     t           j        | |||          S r   )r#   coshr%   s       r	   rb   z#ufunc_db.<locals>.np_real_cosh_impla   r+   r   c                                         ||d           |j        d         }|j        }t          j        |gdz   }|                     |||d                   }|                     ||          }|j        }	|j        }
 | |||
g          } | |||	g          } | |||
g          } | |||	g          }|                    ||          |_        |                    ||          |_        |	                                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                 6     t           j        | |||          S r   )r#   tanhr%   s       r	   np_real_tanh_implz#ufunc_db.<locals>.np_real_tanh_impl{   r+   r   c                    "                     ||d           |j        d         }|j        }t          j        |gdz   }|                     |d          }|                     |||d                   }|                     ||          }	|j        }
|j        }  | |||g          } | |||g          } !| |||
g          } | |||
g          }|	                    ||          }|	                    ||          }|	                    ||          }|	                    ||          }|	                    ||          }|	                    ||          }|
                    ||          }|                    ||          }|	                    ||          }|	                    ||          }|	                    ||          }|	                    ||          }|
                    ||          }|                    ||          }|	                    ||          |	_        |	                    ||          |	_        |	                                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~   s8    	--c4;;;Xa[! 3%!),""3,,  "d1g66""7B//VVgwt<<gwt<<%">>  '52$??\\"c""ll2t$$\\"d##\\"c""b"%%b"%%LL((S!$$R$$S"%%S"%%R$$||E5))||E5))<<e,,<<e,,}}r   c                 6     t           j        | |||          S r   )r#   asinhr%   s       r	   np_real_asinh_implz$ufunc_db.<locals>.np_real_asinh_impl   r/   r   c                 6     t           j        | |||          S r   )r#   acoshr%   s       r	   np_real_acosh_implz$ufunc_db.<locals>.np_real_acosh_impl   r/   r   c                 6     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   )vnumba.cpythonr   r   r   numba.npr   numba.np.numpy_supportr   numba.cuda.mathimplr   r   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   r   r!   r5   rb   r2   rL   r   r   s                        @@@@@@@@@r	   r   r      s(    ;:::::::::!!!!!!444444D D D D D D D D1 1 1 1 1 1
1 1 1 1 1 1
D D D D DE E E E EF F F F FD D D D DD D D D DD D D D DE E E E EE E E E EE E E E EG G G G GG G G G GE E E E E        .E E E E E        .E E E E E$ $ $ $ $ $ $ $ $LF F F F FF F F F FF F F F F 
B ! ,,	 BrvJ ! ,,	 BrvJ ! ""	 BrvJ "!##	 BryM "!##	 BryM "!##	 BryM $# BrzN $# BrxL "!$$	 BrwK "!$$	 BrwK "!$$	 BrwK #"$$	 BrzN #"..	 BrzN #"$$	 BrzN ++ BrzN
 
^BrzN ++ BrzN
 
^BrzN %%%%%%%%%%%%%,, BrzN" 
2:44S9944S99; ; 	< 	< 	<
 %%%%%%%%%%%%%,, Br" 
2##44T::44T::%< %< 	= 	= 	=
 %%%%%%%%%%%%%,, BrwK" 
2744S9944S99; ; 	< 	< 	<
 %%%%%%%%%%%%%,, Br}" 
2=  44T::44T::"< "< 	= 	= 	=
 $$$$$$$$$$$%%,, Br|" 
2<44T::44T::!< !< 	= 	= 	=
 $$$$$$$$$$$%%,, BrxL" 
2844T::44T::< < 	= 	= 	=
 -------------55 Br~& ,,,,,,,,,,,,,44 Br}& -------------55 Br~& ,,,,,,,,,,,,,44 Br~& ,**********..11 BrzN& -**********..11 BrzN& ,**********++.. BrwK& -**********++.. BrwK& %%%%%%%%%%% Br~ $$$$$$$$$$$ Br} %%%%%%%%%%% Br~ ''''''''''' BryM %%%%%%%%%% Br} %%%%%%%%%% Br~ ! ,,	 BrvJ "!--	 BrwK #"..	 BrxL Ir   )
__doc__r#   numpyr   	functoolsr   
numba.corer   r
   r    r   r	   <module>r     s                     ! ! ! B
 B
 B
 B
 B
r   