// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include <cmath> #include "tensorflow/lite/core/c/common.h" #include "tensorflow/lite/kernels/internal/tensor_ctypes.h" #include "tensorflow/lite/kernels/kernel_util.h" namespace tflite { namespace ops { namespace builtin { namespace sign { // Performs common preparation for pointwise, unary ops, i.e., type checks and // output tensor resizing. TfLiteStatus PointwiseUnaryOpPrepare(TfLiteContext* context, TfLiteNode* node) { … } // Applies the operator Op pointwise to data of type T. template <typename Op, typename T> TfLiteStatus PointwiseUnaryOpDoEval( TfLiteContext* context, const TfLiteTensor* input, TfLiteTensor* output) { … } // A generic evaluation function where the actual data processing is handled // by the Op::Eval<T> function. template <typename Op> TfLiteStatus PointwiseUnaryOpEval(TfLiteContext* context, TfLiteNode* node) { … } // Operator that computes the sign function. struct Sign { … }; } // namespace sign TfLiteRegistration* Register_SIGN() { … } } // namespace builtin } // namespace ops } // namespace tflite