Coverage Report

Created: 2026-03-18 14:54

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
433
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE6createEv
Line
Count
Source
39
31
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE6createEv
Line
Count
Source
39
122
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE6createEv
Line
Count
Source
39
22
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE6createEv
Line
Count
Source
39
23
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE6createEv
Line
Count
Source
39
27
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE6createEv
Line
Count
Source
39
25
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE6createEv
Line
Count
Source
39
19
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE6createEv
Line
Count
Source
39
28
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE6createEv
Line
Count
Source
39
28
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE6createEv
Line
Count
Source
39
28
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE6createEv
Line
Count
Source
39
27
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE6createEv
Line
Count
Source
39
37
    static FunctionPtr create() { return std::make_shared<FunctionMathUnary>(); }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE6createEv
Line
Count
Source
39
16
    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
316
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
22
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
113
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
13
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
14
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
18
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
16
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
10
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
19
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
19
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
19
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
18
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
28
    size_t get_number_of_arguments() const override { return 1; }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE23get_number_of_argumentsEv
Line
Count
Source
43
7
    size_t get_number_of_arguments() const override { return 1; }
44
45
316
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
316
        return std::make_shared<typename Impl::Type>();
47
316
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE20get_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_7CosNameEXadL_Z3cosEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
113
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
113
        return std::make_shared<typename Impl::Type>();
47
113
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
13
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
13
        return std::make_shared<typename Impl::Type>();
47
13
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE20get_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_8SinhNameEXadL_Z4sinhEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
18
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
18
        return std::make_shared<typename Impl::Type>();
47
18
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE20get_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_7TanNameEXadL_Z3tanEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
10
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
10
        return std::make_shared<typename Impl::Type>();
47
10
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
19
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
19
        return std::make_shared<typename Impl::Type>();
47
19
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
19
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
19
        return std::make_shared<typename Impl::Type>();
47
19
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
19
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
19
        return std::make_shared<typename Impl::Type>();
47
19
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
18
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
18
        return std::make_shared<typename Impl::Type>();
47
18
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
28
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
28
        return std::make_shared<typename Impl::Type>();
47
28
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
45
7
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
46
7
        return std::make_shared<typename Impl::Type>();
47
7
    }
48
49
357
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
963
        for (size_t i = 0; i < size; i++) {
51
606
            Impl::execute(&src_data[i], &dst_data[i]);
52
606
        }
53
357
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
21
    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
25
            Impl::execute(&src_data[i], &dst_data[i]);
52
25
        }
53
21
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
116
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
253
        for (size_t i = 0; i < size; i++) {
51
137
            Impl::execute(&src_data[i], &dst_data[i]);
52
137
        }
53
116
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
18
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
53
        for (size_t i = 0; i < size; i++) {
51
35
            Impl::execute(&src_data[i], &dst_data[i]);
52
35
        }
53
18
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
20
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
61
        for (size_t i = 0; i < size; i++) {
51
41
            Impl::execute(&src_data[i], &dst_data[i]);
52
41
        }
53
20
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
17
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
38
        for (size_t i = 0; i < size; i++) {
51
21
            Impl::execute(&src_data[i], &dst_data[i]);
52
21
        }
53
17
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
21
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
62
        for (size_t i = 0; i < size; i++) {
51
41
            Impl::execute(&src_data[i], &dst_data[i]);
52
41
        }
53
21
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
16
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
52
        for (size_t i = 0; i < size; i++) {
51
36
            Impl::execute(&src_data[i], &dst_data[i]);
52
36
        }
53
16
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
22
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
61
        for (size_t i = 0; i < size; i++) {
51
39
            Impl::execute(&src_data[i], &dst_data[i]);
52
39
        }
53
22
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
18
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
53
        for (size_t i = 0; i < size; i++) {
51
35
            Impl::execute(&src_data[i], &dst_data[i]);
52
35
        }
53
18
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
18
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
53
        for (size_t i = 0; i < size; i++) {
51
35
            Impl::execute(&src_data[i], &dst_data[i]);
52
35
        }
53
18
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
17
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
52
        for (size_t i = 0; i < size; i++) {
51
35
            Impl::execute(&src_data[i], &dst_data[i]);
52
35
        }
53
17
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
41
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
130
        for (size_t i = 0; i < size; i++) {
51
89
            Impl::execute(&src_data[i], &dst_data[i]);
52
89
        }
53
41
    }
_ZN5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE21execute_in_iterationsEPKdPdm
Line
Count
Source
49
12
    static void execute_in_iterations(const double* src_data, double* dst_data, size_t size) {
50
49
        for (size_t i = 0; i < size; i++) {
51
37
            Impl::execute(&src_data[i], &dst_data[i]);
52
37
        }
53
12
    }
54
55
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
56
357
                        uint32_t result, size_t input_rows_count) const override {
57
357
        const auto* col =
58
357
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
357
        const auto& src_data = col->get_data();
61
357
        const size_t size = src_data.size();
62
63
357
        auto dst = ColumnFloat64::create();
64
357
        auto& dst_data = dst->get_data();
65
357
        dst_data.resize(size);
66
67
357
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
357
        block.replace_by_position(result, std::move(dst));
70
357
        return Status::OK();
71
357
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
21
                        uint32_t result, size_t input_rows_count) const override {
57
21
        const auto* col =
58
21
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
21
        const auto& src_data = col->get_data();
61
21
        const size_t size = src_data.size();
62
63
21
        auto dst = ColumnFloat64::create();
64
21
        auto& dst_data = dst->get_data();
65
21
        dst_data.resize(size);
66
67
21
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
21
        block.replace_by_position(result, std::move(dst));
70
21
        return Status::OK();
71
21
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
116
                        uint32_t result, size_t input_rows_count) const override {
57
116
        const auto* col =
58
116
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
116
        const auto& src_data = col->get_data();
61
116
        const size_t size = src_data.size();
62
63
116
        auto dst = ColumnFloat64::create();
64
116
        auto& dst_data = dst->get_data();
65
116
        dst_data.resize(size);
66
67
116
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
116
        block.replace_by_position(result, std::move(dst));
70
116
        return Status::OK();
71
116
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
18
                        uint32_t result, size_t input_rows_count) const override {
57
18
        const auto* col =
58
18
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
18
        const auto& src_data = col->get_data();
61
18
        const size_t size = src_data.size();
62
63
18
        auto dst = ColumnFloat64::create();
64
18
        auto& dst_data = dst->get_data();
65
18
        dst_data.resize(size);
66
67
18
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
18
        block.replace_by_position(result, std::move(dst));
70
18
        return Status::OK();
71
18
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
20
                        uint32_t result, size_t input_rows_count) const override {
57
20
        const auto* col =
58
20
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
20
        const auto& src_data = col->get_data();
61
20
        const size_t size = src_data.size();
62
63
20
        auto dst = ColumnFloat64::create();
64
20
        auto& dst_data = dst->get_data();
65
20
        dst_data.resize(size);
66
67
20
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
20
        block.replace_by_position(result, std::move(dst));
70
20
        return Status::OK();
71
20
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
17
                        uint32_t result, size_t input_rows_count) const override {
57
17
        const auto* col =
58
17
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
17
        const auto& src_data = col->get_data();
61
17
        const size_t size = src_data.size();
62
63
17
        auto dst = ColumnFloat64::create();
64
17
        auto& dst_data = dst->get_data();
65
17
        dst_data.resize(size);
66
67
17
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
17
        block.replace_by_position(result, std::move(dst));
70
17
        return Status::OK();
71
17
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
21
                        uint32_t result, size_t input_rows_count) const override {
57
21
        const auto* col =
58
21
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
21
        const auto& src_data = col->get_data();
61
21
        const size_t size = src_data.size();
62
63
21
        auto dst = ColumnFloat64::create();
64
21
        auto& dst_data = dst->get_data();
65
21
        dst_data.resize(size);
66
67
21
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
21
        block.replace_by_position(result, std::move(dst));
70
21
        return Status::OK();
71
21
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
16
                        uint32_t result, size_t input_rows_count) const override {
57
16
        const auto* col =
58
16
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
16
        const auto& src_data = col->get_data();
61
16
        const size_t size = src_data.size();
62
63
16
        auto dst = ColumnFloat64::create();
64
16
        auto& dst_data = dst->get_data();
65
16
        dst_data.resize(size);
66
67
16
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
16
        block.replace_by_position(result, std::move(dst));
70
16
        return Status::OK();
71
16
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
22
                        uint32_t result, size_t input_rows_count) const override {
57
22
        const auto* col =
58
22
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
22
        const auto& src_data = col->get_data();
61
22
        const size_t size = src_data.size();
62
63
22
        auto dst = ColumnFloat64::create();
64
22
        auto& dst_data = dst->get_data();
65
22
        dst_data.resize(size);
66
67
22
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
22
        block.replace_by_position(result, std::move(dst));
70
22
        return Status::OK();
71
22
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
18
                        uint32_t result, size_t input_rows_count) const override {
57
18
        const auto* col =
58
18
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
18
        const auto& src_data = col->get_data();
61
18
        const size_t size = src_data.size();
62
63
18
        auto dst = ColumnFloat64::create();
64
18
        auto& dst_data = dst->get_data();
65
18
        dst_data.resize(size);
66
67
18
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
18
        block.replace_by_position(result, std::move(dst));
70
18
        return Status::OK();
71
18
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
18
                        uint32_t result, size_t input_rows_count) const override {
57
18
        const auto* col =
58
18
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
18
        const auto& src_data = col->get_data();
61
18
        const size_t size = src_data.size();
62
63
18
        auto dst = ColumnFloat64::create();
64
18
        auto& dst_data = dst->get_data();
65
18
        dst_data.resize(size);
66
67
18
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
18
        block.replace_by_position(result, std::move(dst));
70
18
        return Status::OK();
71
18
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
17
                        uint32_t result, size_t input_rows_count) const override {
57
17
        const auto* col =
58
17
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
17
        const auto& src_data = col->get_data();
61
17
        const size_t size = src_data.size();
62
63
17
        auto dst = ColumnFloat64::create();
64
17
        auto& dst_data = dst->get_data();
65
17
        dst_data.resize(size);
66
67
17
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
17
        block.replace_by_position(result, std::move(dst));
70
17
        return Status::OK();
71
17
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
56
41
                        uint32_t result, size_t input_rows_count) const override {
57
41
        const auto* col =
58
41
                assert_cast<const ColumnFloat64*>(block.get_by_position(arguments[0]).column.get());
59
60
41
        const auto& src_data = col->get_data();
61
41
        const size_t size = src_data.size();
62
63
41
        auto dst = ColumnFloat64::create();
64
41
        auto& dst_data = dst->get_data();
65
41
        dst_data.resize(size);
66
67
41
        execute_in_iterations(col->get_data().data(), dst_data.data(), size);
68
69
41
        block.replace_by_position(result, std::move(dst));
70
41
        return Status::OK();
71
41
    }
_ZNK5doris17FunctionMathUnaryINS_18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEEEE12execute_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
    }
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
606
    static void execute(const T* src, U* dst) {
81
606
        *dst = static_cast<Float64>(Function(*src));
82
606
    }
_ZN5doris18UnaryFunctionPlainINS_9AsinhNameEXadL_Z5asinhEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
25
    static void execute(const T* src, U* dst) {
81
25
        *dst = static_cast<Float64>(Function(*src));
82
25
    }
_ZN5doris18UnaryFunctionPlainINS_7CosNameEXadL_Z3cosEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
137
    static void execute(const T* src, U* dst) {
81
137
        *dst = static_cast<Float64>(Function(*src));
82
137
    }
_ZN5doris18UnaryFunctionPlainINS_8CoshNameEXadL_Z4coshEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
35
    static void execute(const T* src, U* dst) {
81
35
        *dst = static_cast<Float64>(Function(*src));
82
35
    }
_ZN5doris18UnaryFunctionPlainINS_7SinNameEXadL_Z3sinEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
41
    static void execute(const T* src, U* dst) {
81
41
        *dst = static_cast<Float64>(Function(*src));
82
41
    }
_ZN5doris18UnaryFunctionPlainINS_8SinhNameEXadL_Z4sinhEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
21
    static void execute(const T* src, U* dst) {
81
21
        *dst = static_cast<Float64>(Function(*src));
82
21
    }
_ZN5doris18UnaryFunctionPlainINS_8CbrtNameEXadL_Z4cbrtEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
41
    static void execute(const T* src, U* dst) {
81
41
        *dst = static_cast<Float64>(Function(*src));
82
41
    }
_ZN5doris18UnaryFunctionPlainINS_7TanNameEXadL_Z3tanEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
36
    static void execute(const T* src, U* dst) {
81
36
        *dst = static_cast<Float64>(Function(*src));
82
36
    }
_ZN5doris18UnaryFunctionPlainINS_8TanhNameEXadL_Z4tanhEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
39
    static void execute(const T* src, U* dst) {
81
39
        *dst = static_cast<Float64>(Function(*src));
82
39
    }
_ZN5doris18UnaryFunctionPlainINS_7CotNameEXadL_ZNS_3cotEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
35
    static void execute(const T* src, U* dst) {
81
35
        *dst = static_cast<Float64>(Function(*src));
82
35
    }
_ZN5doris18UnaryFunctionPlainINS_7SecNameEXadL_ZNS_3secEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
35
    static void execute(const T* src, U* dst) {
81
35
        *dst = static_cast<Float64>(Function(*src));
82
35
    }
_ZN5doris18UnaryFunctionPlainINS_7CscNameEXadL_ZNS_3cscEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
35
    static void execute(const T* src, U* dst) {
81
35
        *dst = static_cast<Float64>(Function(*src));
82
35
    }
_ZN5doris18UnaryFunctionPlainINS_7ExpNameEXadL_Z3expEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
89
    static void execute(const T* src, U* dst) {
81
89
        *dst = static_cast<Float64>(Function(*src));
82
89
    }
_ZN5doris18UnaryFunctionPlainINS_8NameEvenEXadL_ZNS_8EvenImplEdEEE7executeIddEEvPKT_PT0_
Line
Count
Source
80
37
    static void execute(const T* src, U* dst) {
81
37
        *dst = static_cast<Float64>(Function(*src));
82
37
    }
83
};
84
85
} // namespace doris