Coverage Report

Created: 2026-05-29 13:56

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/function/function_math_unary.h
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionMathUnary.h
19
// and modified by Doris
20
21
#pragma once
22
23
#include "core/call_on_type_index.h"
24
#include "core/column/column_decimal.h"
25
#include "core/data_type/data_type_decimal.h"
26
#include "core/data_type/data_type_number.h"
27
#include "core/types.h"
28
#include "exprs/function/function.h"
29
#include "exprs/function/function_helpers.h"
30
31
namespace doris {
32
33
template <typename Impl>
34
class FunctionMathUnary : public IFunction {
35
public:
36
    using IFunction::execute;
37
38
    static constexpr auto name = Impl::name;
39
282
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE6createEv
Line
Count
Source
39
24
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE6createEv
Line
Count
Source
39
23
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE6createEv
Line
Count
Source
39
17
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE6createEv
Line
Count
Source
39
18
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE6createEv
Line
Count
Source
39
24
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE6createEv
Line
Count
Source
39
20
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE6createEv
Line
Count
Source
39
14
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE6createEv
Line
Count
Source
39
23
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE6createEv
Line
Count
Source
39
25
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE6createEv
Line
Count
Source
39
25
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE6createEv
Line
Count
Source
39
24
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE6createEv
Line
Count
Source
39
31
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE6createEv
Line
Count
Source
39
14
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
40
41
private:
42
13
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE8get_nameB5cxx11Ev
Line
Count
Source
42
1
    String get_name() const override { return name; }
43
165
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
15
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
14
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
8
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
9
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
15
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
11
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
5
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
14
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
16
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
16
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
15
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
22
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
5
    size_t get_number_of_arguments() const override { return 1; }
44
45
165
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
165
        return std::make_shared<typename Impl::Type>();
47
165
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
15
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
15
        return std::make_shared<typename Impl::Type>();
47
15
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
14
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
14
        return std::make_shared<typename Impl::Type>();
47
14
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
8
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
8
        return std::make_shared<typename Impl::Type>();
47
8
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
9
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
9
        return std::make_shared<typename Impl::Type>();
47
9
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
15
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
15
        return std::make_shared<typename Impl::Type>();
47
15
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
11
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
11
        return std::make_shared<typename Impl::Type>();
47
11
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
5
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
5
        return std::make_shared<typename Impl::Type>();
47
5
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
14
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
14
        return std::make_shared<typename Impl::Type>();
47
14
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
16
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
16
        return std::make_shared<typename Impl::Type>();
47
16
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
16
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
16
        return std::make_shared<typename Impl::Type>();
47
16
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
15
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
15
        return std::make_shared<typename Impl::Type>();
47
15
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
22
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
22
        return std::make_shared<typename Impl::Type>();
47
22
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
5
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
5
        return std::make_shared<typename Impl::Type>();
47
5
    }
48
49
149
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
384
        for (size_t i = 0; i < size; i++) {
51
235
            Impl::execute(&src_data[i], &dst_data[i]);
52
235
        }
53
149
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
14
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
32
        for (size_t i = 0; i < size; i++) {
51
18
            Impl::execute(&src_data[i], &dst_data[i]);
52
18
        }
53
14
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
12
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
28
        for (size_t i = 0; i < size; i++) {
51
16
            Impl::execute(&src_data[i], &dst_data[i]);
52
16
        }
53
12
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
7
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
14
        for (size_t i = 0; i < size; i++) {
51
7
            Impl::execute(&src_data[i], &dst_data[i]);
52
7
        }
53
7
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
9
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
22
        for (size_t i = 0; i < size; i++) {
51
13
            Impl::execute(&src_data[i], &dst_data[i]);
52
13
        }
53
9
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
14
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
32
        for (size_t i = 0; i < size; i++) {
51
18
            Impl::execute(&src_data[i], &dst_data[i]);
52
18
        }
53
14
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
10
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
23
        for (size_t i = 0; i < size; i++) {
51
13
            Impl::execute(&src_data[i], &dst_data[i]);
52
13
        }
53
10
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
5
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
13
        for (size_t i = 0; i < size; i++) {
51
8
            Impl::execute(&src_data[i], &dst_data[i]);
52
8
        }
53
5
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
11
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
22
        for (size_t i = 0; i < size; i++) {
51
11
            Impl::execute(&src_data[i], &dst_data[i]);
52
11
        }
53
11
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
15
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
47
        for (size_t i = 0; i < size; i++) {
51
32
            Impl::execute(&src_data[i], &dst_data[i]);
52
32
        }
53
15
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
15
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
47
        for (size_t i = 0; i < size; i++) {
51
32
            Impl::execute(&src_data[i], &dst_data[i]);
52
32
        }
53
15
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
14
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
46
        for (size_t i = 0; i < size; i++) {
51
32
            Impl::execute(&src_data[i], &dst_data[i]);
52
32
        }
53
14
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
19
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
42
        for (size_t i = 0; i < size; i++) {
51
23
            Impl::execute(&src_data[i], &dst_data[i]);
52
23
        }
53
19
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
4
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
16
        for (size_t i = 0; i < size; i++) {
51
12
            Impl::execute(&src_data[i], &dst_data[i]);
52
12
        }
53
4
    }
54
55
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
56
149
                        uint32_t result, size_t input_rows_count) const override {
57
149
        const auto* col =
58
149
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
149
        const auto& src_data = col->get_data();
61
149
        const size_t size = src_data.size();
62
63
149
        auto dst = ColumnFloat64::create();
64
149
        auto& dst_data = dst->get_data();
65
149
        dst_data.resize(size);
66
67
149
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
149
        block.replace_by_position(result, std::move(dst));
70
149
        return Status::OK();
71
149
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
14
                        uint32_t result, size_t input_rows_count) const override {
57
14
        const auto* col =
58
14
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
14
        const auto& src_data = col->get_data();
61
14
        const size_t size = src_data.size();
62
63
14
        auto dst = ColumnFloat64::create();
64
14
        auto& dst_data = dst->get_data();
65
14
        dst_data.resize(size);
66
67
14
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
14
        block.replace_by_position(result, std::move(dst));
70
14
        return Status::OK();
71
14
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
12
                        uint32_t result, size_t input_rows_count) const override {
57
12
        const auto* col =
58
12
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
12
        const auto& src_data = col->get_data();
61
12
        const size_t size = src_data.size();
62
63
12
        auto dst = ColumnFloat64::create();
64
12
        auto& dst_data = dst->get_data();
65
12
        dst_data.resize(size);
66
67
12
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
12
        block.replace_by_position(result, std::move(dst));
70
12
        return Status::OK();
71
12
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
7
                        uint32_t result, size_t input_rows_count) const override {
57
7
        const auto* col =
58
7
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
7
        const auto& src_data = col->get_data();
61
7
        const size_t size = src_data.size();
62
63
7
        auto dst = ColumnFloat64::create();
64
7
        auto& dst_data = dst->get_data();
65
7
        dst_data.resize(size);
66
67
7
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
7
        block.replace_by_position(result, std::move(dst));
70
7
        return Status::OK();
71
7
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
9
                        uint32_t result, size_t input_rows_count) const override {
57
9
        const auto* col =
58
9
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
9
        const auto& src_data = col->get_data();
61
9
        const size_t size = src_data.size();
62
63
9
        auto dst = ColumnFloat64::create();
64
9
        auto& dst_data = dst->get_data();
65
9
        dst_data.resize(size);
66
67
9
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
9
        block.replace_by_position(result, std::move(dst));
70
9
        return Status::OK();
71
9
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
14
                        uint32_t result, size_t input_rows_count) const override {
57
14
        const auto* col =
58
14
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
14
        const auto& src_data = col->get_data();
61
14
        const size_t size = src_data.size();
62
63
14
        auto dst = ColumnFloat64::create();
64
14
        auto& dst_data = dst->get_data();
65
14
        dst_data.resize(size);
66
67
14
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
14
        block.replace_by_position(result, std::move(dst));
70
14
        return Status::OK();
71
14
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
10
                        uint32_t result, size_t input_rows_count) const override {
57
10
        const auto* col =
58
10
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
10
        const auto& src_data = col->get_data();
61
10
        const size_t size = src_data.size();
62
63
10
        auto dst = ColumnFloat64::create();
64
10
        auto& dst_data = dst->get_data();
65
10
        dst_data.resize(size);
66
67
10
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
10
        block.replace_by_position(result, std::move(dst));
70
10
        return Status::OK();
71
10
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
5
                        uint32_t result, size_t input_rows_count) const override {
57
5
        const auto* col =
58
5
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
5
        const auto& src_data = col->get_data();
61
5
        const size_t size = src_data.size();
62
63
5
        auto dst = ColumnFloat64::create();
64
5
        auto& dst_data = dst->get_data();
65
5
        dst_data.resize(size);
66
67
5
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
5
        block.replace_by_position(result, std::move(dst));
70
5
        return Status::OK();
71
5
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
11
                        uint32_t result, size_t input_rows_count) const override {
57
11
        const auto* col =
58
11
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
11
        const auto& src_data = col->get_data();
61
11
        const size_t size = src_data.size();
62
63
11
        auto dst = ColumnFloat64::create();
64
11
        auto& dst_data = dst->get_data();
65
11
        dst_data.resize(size);
66
67
11
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
11
        block.replace_by_position(result, std::move(dst));
70
11
        return Status::OK();
71
11
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
15
                        uint32_t result, size_t input_rows_count) const override {
57
15
        const auto* col =
58
15
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
15
        const auto& src_data = col->get_data();
61
15
        const size_t size = src_data.size();
62
63
15
        auto dst = ColumnFloat64::create();
64
15
        auto& dst_data = dst->get_data();
65
15
        dst_data.resize(size);
66
67
15
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
15
        block.replace_by_position(result, std::move(dst));
70
15
        return Status::OK();
71
15
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
15
                        uint32_t result, size_t input_rows_count) const override {
57
15
        const auto* col =
58
15
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
15
        const auto& src_data = col->get_data();
61
15
        const size_t size = src_data.size();
62
63
15
        auto dst = ColumnFloat64::create();
64
15
        auto& dst_data = dst->get_data();
65
15
        dst_data.resize(size);
66
67
15
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
15
        block.replace_by_position(result, std::move(dst));
70
15
        return Status::OK();
71
15
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
14
                        uint32_t result, size_t input_rows_count) const override {
57
14
        const auto* col =
58
14
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
14
        const auto& src_data = col->get_data();
61
14
        const size_t size = src_data.size();
62
63
14
        auto dst = ColumnFloat64::create();
64
14
        auto& dst_data = dst->get_data();
65
14
        dst_data.resize(size);
66
67
14
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
14
        block.replace_by_position(result, std::move(dst));
70
14
        return Status::OK();
71
14
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
19
                        uint32_t result, size_t input_rows_count) const override {
57
19
        const auto* col =
58
19
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
19
        const auto& src_data = col->get_data();
61
19
        const size_t size = src_data.size();
62
63
19
        auto dst = ColumnFloat64::create();
64
19
        auto& dst_data = dst->get_data();
65
19
        dst_data.resize(size);
66
67
19
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
19
        block.replace_by_position(result, std::move(dst));
70
19
        return Status::OK();
71
19
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
4
                        uint32_t result, size_t input_rows_count) const override {
57
4
        const auto* col =
58
4
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
4
        const auto& src_data = col->get_data();
61
4
        const size_t size = src_data.size();
62
63
4
        auto dst = ColumnFloat64::create();
64
4
        auto& dst_data = dst->get_data();
65
4
        dst_data.resize(size);
66
67
4
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
4
        block.replace_by_position(result, std::move(dst));
70
4
        return Status::OK();
71
4
    }
72
};
73
74
template <typename Name, Float64(Function)(Float64)>
75
struct UnaryFunctionPlain {
76
    using Type = DataTypeFloat64;
77
    static constexpr auto name = Name::name;
78
79
    template <typename T, typename U>
80
235
    static void execute(const T* src, U* dst) {
81
235
        *dst = static_cast<Float64>(Function(*src));
82
235
    }
_ZN5doris18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
18
    static void execute(const T* src, U* dst) {
81
18
        *dst = static_cast<Float64>(Function(*src));
82
18
    }
_ZN5doris18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
16
    static void execute(const T* src, U* dst) {
81
16
        *dst = static_cast<Float64>(Function(*src));
82
16
    }
_ZN5doris18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
7
    static void execute(const T* src, U* dst) {
81
7
        *dst = static_cast<Float64>(Function(*src));
82
7
    }
_ZN5doris18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
13
    static void execute(const T* src, U* dst) {
81
13
        *dst = static_cast<Float64>(Function(*src));
82
13
    }
_ZN5doris18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
18
    static void execute(const T* src, U* dst) {
81
18
        *dst = static_cast<Float64>(Function(*src));
82
18
    }
_ZN5doris18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
13
    static void execute(const T* src, U* dst) {
81
13
        *dst = static_cast<Float64>(Function(*src));
82
13
    }
_ZN5doris18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
8
    static void execute(const T* src, U* dst) {
81
8
        *dst = static_cast<Float64>(Function(*src));
82
8
    }
_ZN5doris18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
11
    static void execute(const T* src, U* dst) {
81
11
        *dst = static_cast<Float64>(Function(*src));
82
11
    }
_ZN5doris18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
32
    static void execute(const T* src, U* dst) {
81
32
        *dst = static_cast<Float64>(Function(*src));
82
32
    }
_ZN5doris18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
32
    static void execute(const T* src, U* dst) {
81
32
        *dst = static_cast<Float64>(Function(*src));
82
32
    }
_ZN5doris18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
32
    static void execute(const T* src, U* dst) {
81
32
        *dst = static_cast<Float64>(Function(*src));
82
32
    }
_ZN5doris18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
23
    static void execute(const T* src, U* dst) {
81
23
        *dst = static_cast<Float64>(Function(*src));
82
23
    }
_ZN5doris18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
12
    static void execute(const T* src, U* dst) {
81
12
        *dst = static_cast<Float64>(Function(*src));
82
12
    }
83
};
84
85
} // namespace doris