// // Created by xiangzhou on 11/9/23. // #pragma once #include "C_Tensor.h" #ifdef __cplusplus extern "C" { #endif typedef float (*ele_opfn)(const float x, float para1, float para2); struct ElementUnaryOpAttribute{ const char* name_; ele_opfn fn_; float para1_; float para2_; }; typedef struct ElementUnaryOpAttribute ElementUnaryOpAttribute; void ElementUnaryOperator_Run(const C_Tensors* inputs, const C_Tensors* weights, C_Tensors* outputs, const ElementUnaryOpAttribute* p_attr); // cast, dropout, flatten, identify, reshape, squeeze, unsqueeze, float copy_fn(const float x, float , float ); float abs_fn(const float x, float , float ) ; float cos_fn(const float x, float, float ) ; float cosh_fn(const float x, float, float ) ; float acos_fn(const float x, float , float ); float acosh_fn(const float x, float , float ) ; float tan_fn(const float x, float , float ) ; float tanh_fn(const float x, float , float ) ; float atan_fn(const float x, float , float ) ; float atanh_fn(const float x, float , float ) ; float sin_fn(const float x, float, float); float sinh_fn(const float x, float, float); float asin_fn(const float x, float , float ) ; float asinh_fn(const float x, float , float ) ; float bitwise_not_fn(const float x, float , float ) ; float ceil_fn(const float x, float , float ) ; float celu_fn(const float x, float alpha, float) ; float clip_fn(const float x, float , float ); float elu_fn(const float x, float alpha, float); float erf_fn(const float x, float, float ); float exp_fn(const float x, float, float ); float floor_fn(const float x, float, float ); float hardsigmoid_fn(const float x, float alpha, float beta); float isinf_fn(const float x, float detect_positive, float detect_negative); float isnan_fn(const float x, float, float ); float kneron_logexp_fn(const float x, float, float); float kneron_pow2_fn(const float x, float, float); float kneron_square_fn(const float x, float, float); float kneron_swish_fn(const float x, float, float); float kneron_hardswish_fn(const float x, float, float); float kneron_log2_fn(const float x, float eps, float); float leakyrelu_fn(const float x, float alpha, float ); float log_fn(const float x, float , float ); float neg_fn(const float x, float, float ); float not_fn(const float x, float, float); float reciprocal_fn(const float x, float, float); float relu_fn(const float x, float, float); float selu_fn(const float x, float alpha, float gamma); float sigmoid_fn(const float x, float, float); float soft_sign_fn(const float x, float, float); float shrink_fn(const float x, float bias, float lambd); float soft_plus_fn(const float x, float, float); float sqrt_fn(const float x, float, float); float threshold_relu_fn(const float x, float alpha, float); float sign_fn(const float x, float, float); float round_fn(const float x, float, float); #ifdef __cplusplus } // C++ supplemental interfaces template T copy_fn(const T x, float , float ) { return x;} #endif