Coverage Report

Created: 2025-05-29 01:31

/root/doris/be/src/vec/functions/math.cpp
Line
Count
Source (jump to first uncovered line)
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
18
#include <cstdint>
19
#include <cstring>
20
21
// IWYU pragma: no_include <bits/std_abs.h>
22
#include <dlfcn.h>
23
24
#include <cmath>
25
#include <string>
26
#include <type_traits>
27
28
#include "common/status.h"
29
#include "util/debug/leak_annotations.h"
30
#include "vec/columns/column.h"
31
#include "vec/columns/column_string.h"
32
#include "vec/columns/column_vector.h"
33
#include "vec/columns/columns_number.h"
34
#include "vec/core/types.h"
35
#include "vec/data_types/data_type_string.h"
36
#include "vec/data_types/number_traits.h"
37
#include "vec/functions/function_binary_arithmetic.h"
38
#include "vec/functions/function_const.h"
39
#include "vec/functions/function_math_log.h"
40
#include "vec/functions/function_math_unary.h"
41
#include "vec/functions/function_math_unary_alway_nullable.h"
42
#include "vec/functions/function_totype.h"
43
#include "vec/functions/function_unary_arithmetic.h"
44
#include "vec/functions/simple_function_factory.h"
45
#include "vec/utils/stringop_substring.h"
46
47
namespace doris::vectorized {
48
49
struct LnImpl;
50
struct Log10Impl;
51
struct Log2Impl;
52
53
struct AcosName {
54
    static constexpr auto name = "acos";
55
    // https://dev.mysql.com/doc/refman/8.4/en/mathematical-functions.html#function_acos
56
4
    static constexpr bool is_invalid_input(Float64 x) { return x < -1 || x > 1; }
57
};
58
using FunctionAcos =
59
        FunctionMathUnaryAlwayNullable<UnaryFunctionPlainAlwayNullable<AcosName, std::acos>>;
60
61
struct AcoshName {
62
    static constexpr auto name = "acosh";
63
10
    static constexpr bool is_invalid_input(Float64 x) { return x < 1; }
64
};
65
using FunctionAcosh =
66
        FunctionMathUnaryAlwayNullable<UnaryFunctionPlainAlwayNullable<AcoshName, std::acosh>>;
67
68
struct AsinName {
69
    static constexpr auto name = "asin";
70
    // https://dev.mysql.com/doc/refman/8.4/en/mathematical-functions.html#function_asin
71
4
    static constexpr bool is_invalid_input(Float64 x) { return x < -1 || x > 1; }
72
};
73
using FunctionAsin =
74
        FunctionMathUnaryAlwayNullable<UnaryFunctionPlainAlwayNullable<AsinName, std::asin>>;
75
76
struct AsinhName {
77
    static constexpr auto name = "asinh";
78
};
79
using FunctionAsinh = FunctionMathUnary<UnaryFunctionPlain<AsinhName, std::asinh>>;
80
81
struct AtanName {
82
    static constexpr auto name = "atan";
83
};
84
using FunctionAtan = FunctionMathUnary<UnaryFunctionPlain<AtanName, std::atan>>;
85
86
struct AtanhName {
87
    static constexpr auto name = "atanh";
88
10
    static constexpr bool is_invalid_input(Float64 x) { return x <= -1 || x >= 1; }
89
};
90
using FunctionAtanh =
91
        FunctionMathUnaryAlwayNullable<UnaryFunctionPlainAlwayNullable<AtanhName, std::atanh>>;
92
93
template <typename A, typename B>
94
struct Atan2Impl {
95
    static constexpr PrimitiveType ResultType = TYPE_DOUBLE;
96
    static const constexpr bool allow_decimal = false;
97
98
    template <typename type>
99
21
    static inline double apply(A a, B b) {
100
21
        return std::atan2((double)a, (double)b);
101
21
    }
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhhE5applyIdEEdhh
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhaE5applyIdEEdha
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhsE5applyIdEEdhs
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhiE5applyIdEEdhi
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhlE5applyIdEEdhl
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhnE5applyIdEEdhn
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhfE5applyIdEEdhf
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIhdE5applyIdEEdhd
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIahE5applyIdEEdah
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIaaE5applyIdEEdaa
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIasE5applyIdEEdas
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIaiE5applyIdEEdai
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIalE5applyIdEEdal
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIanE5applyIdEEdan
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIafE5applyIdEEdaf
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIadE5applyIdEEdad
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIshE5applyIdEEdsh
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIsaE5applyIdEEdsa
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIssE5applyIdEEdss
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIsiE5applyIdEEdsi
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIslE5applyIdEEdsl
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIsnE5applyIdEEdsn
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIsfE5applyIdEEdsf
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIsdE5applyIdEEdsd
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIihE5applyIdEEdih
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIiaE5applyIdEEdia
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIisE5applyIdEEdis
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIiiE5applyIdEEdii
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIilE5applyIdEEdil
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIinE5applyIdEEdin
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIifE5applyIdEEdif
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIidE5applyIdEEdid
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIlhE5applyIdEEdlh
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIlaE5applyIdEEdla
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIlsE5applyIdEEdls
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIliE5applyIdEEdli
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIllE5applyIdEEdll
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIlnE5applyIdEEdln
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIlfE5applyIdEEdlf
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIldE5applyIdEEdld
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplInhE5applyIdEEdnh
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplInaE5applyIdEEdna
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplInsE5applyIdEEdns
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIniE5applyIdEEdni
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplInlE5applyIdEEdnl
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplInnE5applyIdEEdnn
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplInfE5applyIdEEdnf
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIndE5applyIdEEdnd
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIfhE5applyIdEEdfh
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIfaE5applyIdEEdfa
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIfsE5applyIdEEdfs
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIfiE5applyIdEEdfi
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIflE5applyIdEEdfl
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIfnE5applyIdEEdfn
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIffE5applyIdEEdff
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIfdE5applyIdEEdfd
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIdhE5applyIdEEddh
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIdaE5applyIdEEdda
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIdsE5applyIdEEdds
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIdiE5applyIdEEddi
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIdlE5applyIdEEddl
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIdnE5applyIdEEddn
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIdfE5applyIdEEddf
_ZN5doris10vectorized9Atan2ImplIddE5applyIdEEddd
Line
Count
Source
99
21
    static inline double apply(A a, B b) {
100
21
        return std::atan2((double)a, (double)b);
101
21
    }
102
};
103
struct Atan2Name {
104
    static constexpr auto name = "atan2";
105
};
106
using FunctionAtan2 = FunctionBinaryArithmetic<Atan2Impl, Atan2Name, false>;
107
108
struct CosName {
109
    static constexpr auto name = "cos";
110
};
111
using FunctionCos = FunctionMathUnary<UnaryFunctionPlain<CosName, std::cos>>;
112
113
struct CoshName {
114
    static constexpr auto name = "cosh";
115
};
116
using FunctionCosh = FunctionMathUnary<UnaryFunctionPlain<CoshName, std::cosh>>;
117
118
struct EImpl {
119
    static constexpr auto name = "e";
120
    static constexpr double value = 2.7182818284590452353602874713526624977572470;
121
};
122
using FunctionE = FunctionMathConstFloat64<EImpl>;
123
124
struct PiImpl {
125
    static constexpr auto name = "pi";
126
    static constexpr double value = 3.1415926535897932384626433832795028841971693;
127
};
128
using FunctionPi = FunctionMathConstFloat64<PiImpl>;
129
130
struct ExpName {
131
    static constexpr auto name = "exp";
132
};
133
using FunctionExp = FunctionMathUnary<UnaryFunctionPlain<ExpName, std::exp>>;
134
135
struct LogName {
136
    static constexpr auto name = "log";
137
};
138
139
template <typename A, typename B>
140
struct LogImpl {
141
    static constexpr PrimitiveType ResultType = TYPE_DOUBLE;
142
    using Traits = NumberTraits::BinaryOperatorTraits<A, B>;
143
144
    static const constexpr bool allow_decimal = false;
145
    static constexpr double EPSILON = 1e-9;
146
147
    template <typename Result = typename PrimitiveTypeTraits<ResultType>::CppType>
148
    static void apply(const typename Traits::ArrayA& a, B b,
149
                      typename ColumnVector<Result>::Container& c,
150
0
                      typename Traits::ArrayNull& null_map) {
151
0
        size_t size = c.size();
152
0
        UInt8 is_null = b <= 0;
153
0
        memset(null_map.data(), is_null, size);
154
155
0
        if (!is_null) {
156
0
            for (size_t i = 0; i < size; i++) {
157
0
                if (a[i] <= 0 || std::fabs(a[i] - 1.0) < EPSILON) {
158
0
                    null_map[i] = 1;
159
0
                } else {
160
0
                    c[i] = static_cast<Float64>(std::log(static_cast<Float64>(b)) /
161
0
                                                std::log(static_cast<Float64>(a[i])));
162
0
                }
163
0
            }
164
0
        }
165
0
    }
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhhE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhaE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhsE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhiE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhlE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhnE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhfE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhdE5applyIdEEvRKNS0_8PODArrayIhLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIahE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIaaE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIasE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIaiE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIalE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIanE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIafE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIadE5applyIdEEvRKNS0_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIshE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsaE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIssE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsiE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIslE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsnE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsfE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsdE5applyIdEEvRKNS0_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIihE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIiaE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIisE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIiiE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIilE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIinE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIifE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIidE5applyIdEEvRKNS0_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlhE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlaE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlsE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIliE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIllE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlnE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlfE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIldE5applyIdEEvRKNS0_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInhE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInaE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInsE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIniE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInlE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInnE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInfE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIndE5applyIdEEvRKNS0_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfhE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfaE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfsE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfiE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIflE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfnE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIffE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfdE5applyIdEEvRKNS0_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdhE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdaE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdsE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdiE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdlE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdnE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdfE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIddE5applyIdEEvRKNS0_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_32NoTrackingDefaultMemoryAllocatorEEELm16ELm15EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm15EEE
166
167
    template <typename Result>
168
6
    static inline Result apply(A a, B b, UInt8& is_null) {
169
6
        is_null = a <= 0 || b <= 0 || std::fabs(a - 1.0) < EPSILON;
170
6
        return static_cast<Float64>(std::log(static_cast<Float64>(b)) /
171
6
                                    std::log(static_cast<Float64>(a)));
172
6
    }
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhhE5applyIdEET_hhRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhaE5applyIdEET_haRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhsE5applyIdEET_hsRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhiE5applyIdEET_hiRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhlE5applyIdEET_hlRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhnE5applyIdEET_hnRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhfE5applyIdEET_hfRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhdE5applyIdEET_hdRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIahE5applyIdEET_ahRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIaaE5applyIdEET_aaRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIasE5applyIdEET_asRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIaiE5applyIdEET_aiRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIalE5applyIdEET_alRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIanE5applyIdEET_anRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIafE5applyIdEET_afRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIadE5applyIdEET_adRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIshE5applyIdEET_shRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsaE5applyIdEET_saRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIssE5applyIdEET_ssRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsiE5applyIdEET_siRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIslE5applyIdEET_slRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsnE5applyIdEET_snRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsfE5applyIdEET_sfRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsdE5applyIdEET_sdRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIihE5applyIdEET_ihRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIiaE5applyIdEET_iaRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIisE5applyIdEET_isRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIiiE5applyIdEET_iiRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIilE5applyIdEET_ilRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIinE5applyIdEET_inRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIifE5applyIdEET_ifRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIidE5applyIdEET_idRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlhE5applyIdEET_lhRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlaE5applyIdEET_laRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlsE5applyIdEET_lsRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIliE5applyIdEET_liRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIllE5applyIdEET_llRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlnE5applyIdEET_lnRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlfE5applyIdEET_lfRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIldE5applyIdEET_ldRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInhE5applyIdEET_nhRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInaE5applyIdEET_naRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInsE5applyIdEET_nsRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIniE5applyIdEET_niRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInlE5applyIdEET_nlRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInnE5applyIdEET_nnRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInfE5applyIdEET_nfRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIndE5applyIdEET_ndRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfhE5applyIdEET_fhRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfaE5applyIdEET_faRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfsE5applyIdEET_fsRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfiE5applyIdEET_fiRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIflE5applyIdEET_flRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfnE5applyIdEET_fnRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIffE5applyIdEET_ffRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfdE5applyIdEET_fdRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdhE5applyIdEET_dhRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdaE5applyIdEET_daRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdsE5applyIdEET_dsRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdiE5applyIdEET_diRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdlE5applyIdEET_dlRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdnE5applyIdEET_dnRh
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdfE5applyIdEET_dfRh
_ZN5doris10vectorized7LogImplIddE5applyIdEET_ddRh
Line
Count
Source
168
6
    static inline Result apply(A a, B b, UInt8& is_null) {
169
6
        is_null = a <= 0 || b <= 0 || std::fabs(a - 1.0) < EPSILON;
170
6
        return static_cast<Float64>(std::log(static_cast<Float64>(b)) /
171
6
                                    std::log(static_cast<Float64>(a)));
172
6
    }
173
};
174
using FunctionLog = FunctionBinaryArithmetic<LogImpl, LogName, true>;
175
176
template <typename A>
177
struct SignImpl {
178
    static constexpr PrimitiveType ResultType = TYPE_TINYINT;
179
6
    static inline UInt8 apply(A a) {
180
6
        if constexpr (IsDecimalNumber<A> || std::is_floating_point_v<A>)
181
3
            return static_cast<UInt8>(a < A(0) ? -1 : a == A(0) ? 0 : 1);
182
3
        else if constexpr (std::is_signed_v<A>)
183
3
            return static_cast<UInt8>(a < 0 ? -1 : a == 0 ? 0 : 1);
184
0
        else if constexpr (std::is_unsigned_v<A>)
185
0
            return static_cast<UInt8>(a == 0 ? 0 : 1);
186
6
    }
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIsE5applyEs
_ZN5doris10vectorized8SignImplIiE5applyEi
Line
Count
Source
179
3
    static inline UInt8 apply(A a) {
180
3
        if constexpr (IsDecimalNumber<A> || std::is_floating_point_v<A>)
181
0
            return static_cast<UInt8>(a < A(0) ? -1 : a == A(0) ? 0 : 1);
182
3
        else if constexpr (std::is_signed_v<A>)
183
3
            return static_cast<UInt8>(a < 0 ? -1 : a == 0 ? 0 : 1);
184
3
        else if constexpr (std::is_unsigned_v<A>)
185
3
            return static_cast<UInt8>(a == 0 ? 0 : 1);
186
3
    }
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized8SignImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIfE5applyEf
_ZN5doris10vectorized8SignImplIdE5applyEd
Line
Count
Source
179
3
    static inline UInt8 apply(A a) {
180
3
        if constexpr (IsDecimalNumber<A> || std::is_floating_point_v<A>)
181
3
            return static_cast<UInt8>(a < A(0) ? -1 : a == A(0) ? 0 : 1);
182
3
        else if constexpr (std::is_signed_v<A>)
183
3
            return static_cast<UInt8>(a < 0 ? -1 : a == 0 ? 0 : 1);
184
3
        else if constexpr (std::is_unsigned_v<A>)
185
3
            return static_cast<UInt8>(a == 0 ? 0 : 1);
186
3
    }
187
};
188
189
struct NameSign {
190
    static constexpr auto name = "sign";
191
};
192
using FunctionSign = FunctionUnaryArithmetic<SignImpl, NameSign>;
193
194
template <typename A>
195
struct AbsImpl {
196
    static constexpr PrimitiveType ResultType = NumberTraits::ResultOfAbs<A>::Type;
197
198
12
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
199
12
        if constexpr (IsDecimalNumber<A>)
200
0
            return a < A(0) ? A(-a) : a;
201
12
        else if constexpr (std::is_integral_v<A> && std::is_signed_v<A>)
202
7
            return a < A(0) ? static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
203
3
                                      ~a) +
204
3
                                      1
205
5
                            : a;
206
5
        else if constexpr (std::is_integral_v<A> && std::is_unsigned_v<A>)
207
0
            return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a);
208
5
        else if constexpr (std::is_floating_point_v<A>)
209
5
            return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
210
5
                    std::abs(a));
211
12
    }
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIsE5applyEs
_ZN5doris10vectorized7AbsImplIiE5applyEi
Line
Count
Source
198
7
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
199
7
        if constexpr (IsDecimalNumber<A>)
200
0
            return a < A(0) ? A(-a) : a;
201
7
        else if constexpr (std::is_integral_v<A> && std::is_signed_v<A>)
202
7
            return a < A(0) ? static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
203
3
                                      ~a) +
204
3
                                      1
205
7
                            : a;
206
7
        else if constexpr (std::is_integral_v<A> && std::is_unsigned_v<A>)
207
7
            return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a);
208
7
        else if constexpr (std::is_floating_point_v<A>)
209
7
            return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
210
7
                    std::abs(a));
211
7
    }
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIfE5applyEf
_ZN5doris10vectorized7AbsImplIdE5applyEd
Line
Count
Source
198
5
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
199
5
        if constexpr (IsDecimalNumber<A>)
200
0
            return a < A(0) ? A(-a) : a;
201
5
        else if constexpr (std::is_integral_v<A> && std::is_signed_v<A>)
202
0
            return a < A(0) ? static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
203
5
                                      ~a) +
204
5
                                      1
205
5
                            : a;
206
5
        else if constexpr (std::is_integral_v<A> && std::is_unsigned_v<A>)
207
0
            return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a);
208
5
        else if constexpr (std::is_floating_point_v<A>)
209
5
            return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
210
5
                    std::abs(a));
211
5
    }
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalIiEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalIlEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalInEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_12Decimal128V3EE5applyES2_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalIN4wide7integerILm256EiEEEEE5applyES6_
212
};
213
214
struct NameAbs {
215
    static constexpr auto name = "abs";
216
};
217
218
template <typename A>
219
struct ResultOfUnaryFunc;
220
221
template <>
222
struct ResultOfUnaryFunc<UInt8> {
223
    static constexpr PrimitiveType ResultType = TYPE_BOOLEAN;
224
};
225
226
template <>
227
struct ResultOfUnaryFunc<Int8> {
228
    static constexpr PrimitiveType ResultType = TYPE_TINYINT;
229
};
230
231
template <>
232
struct ResultOfUnaryFunc<Int16> {
233
    static constexpr PrimitiveType ResultType = TYPE_SMALLINT;
234
};
235
236
template <>
237
struct ResultOfUnaryFunc<Int32> {
238
    static constexpr PrimitiveType ResultType = TYPE_INT;
239
};
240
241
template <>
242
struct ResultOfUnaryFunc<Int64> {
243
    static constexpr PrimitiveType ResultType = TYPE_BIGINT;
244
};
245
246
template <>
247
struct ResultOfUnaryFunc<Int128> {
248
    static constexpr PrimitiveType ResultType = TYPE_LARGEINT;
249
};
250
251
template <>
252
struct ResultOfUnaryFunc<Decimal32> {
253
    static constexpr PrimitiveType ResultType = TYPE_DECIMAL32;
254
};
255
256
template <>
257
struct ResultOfUnaryFunc<Decimal64> {
258
    static constexpr PrimitiveType ResultType = TYPE_DECIMAL64;
259
};
260
261
template <>
262
struct ResultOfUnaryFunc<Decimal128V3> {
263
    static constexpr PrimitiveType ResultType = TYPE_DECIMAL128I;
264
};
265
266
template <>
267
struct ResultOfUnaryFunc<Decimal128V2> {
268
    static constexpr PrimitiveType ResultType = TYPE_DECIMALV2;
269
};
270
271
template <>
272
struct ResultOfUnaryFunc<Decimal256> {
273
    static constexpr PrimitiveType ResultType = TYPE_DECIMAL256;
274
};
275
276
template <>
277
struct ResultOfUnaryFunc<float> {
278
    static constexpr PrimitiveType ResultType = TYPE_FLOAT;
279
};
280
281
template <>
282
struct ResultOfUnaryFunc<double> {
283
    static constexpr PrimitiveType ResultType = TYPE_DOUBLE;
284
};
285
286
using FunctionAbs = FunctionUnaryArithmetic<AbsImpl, NameAbs>;
287
288
template <typename A>
289
struct NegativeImpl {
290
    static constexpr PrimitiveType ResultType = ResultOfUnaryFunc<A>::ResultType;
291
292
8
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) { return -a; }
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIsE5applyEs
_ZN5doris10vectorized12NegativeImplIiE5applyEi
Line
Count
Source
292
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) { return -a; }
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIfE5applyEf
_ZN5doris10vectorized12NegativeImplIdE5applyEd
Line
Count
Source
292
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) { return -a; }
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplINS0_7DecimalIiEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplINS0_7DecimalIlEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplINS0_7DecimalInEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplINS0_12Decimal128V3EE5applyES2_
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplINS0_7DecimalIN4wide7integerILm256EiEEEEE5applyES6_
293
};
294
295
struct NameNegative {
296
    static constexpr auto name = "negative";
297
};
298
299
using FunctionNegative = FunctionUnaryArithmetic<NegativeImpl, NameNegative>;
300
301
template <typename A>
302
struct PositiveImpl {
303
    static constexpr PrimitiveType ResultType = ResultOfUnaryFunc<A>::ResultType;
304
305
12
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
306
12
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a);
307
12
    }
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIsE5applyEs
_ZN5doris10vectorized12PositiveImplIiE5applyEi
Line
Count
Source
305
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
306
4
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a);
307
4
    }
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIfE5applyEf
_ZN5doris10vectorized12PositiveImplIdE5applyEd
Line
Count
Source
305
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
306
4
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a);
307
4
    }
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_7DecimalIiEEE5applyES3_
_ZN5doris10vectorized12PositiveImplINS0_7DecimalIlEEE5applyES3_
Line
Count
Source
305
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
306
4
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a);
307
4
    }
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_7DecimalInEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_12Decimal128V3EE5applyES2_
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_7DecimalIN4wide7integerILm256EiEEEEE5applyES6_
308
};
309
310
struct NamePositive {
311
    static constexpr auto name = "positive";
312
};
313
314
using FunctionPositive = FunctionUnaryArithmetic<PositiveImpl, NamePositive>;
315
316
struct UnaryFunctionPlainSin {
317
    using Type = DataTypeFloat64;
318
    static constexpr auto name = "sin";
319
    using FuncType = double (*)(double);
320
321
1
    static FuncType get_sin_func() {
322
#ifndef BE_TEST
323
        void* handle = dlopen("libm.so.6", RTLD_LAZY);
324
        if (handle) {
325
            if (auto sin_func = (double (*)(double))dlsym(handle, "sin"); sin_func) {
326
                return sin_func;
327
            }
328
            dlclose(handle);
329
        }
330
#endif
331
1
        return std::sin;
332
1
    }
333
334
5
    static void execute(const double* src, double* dst) {
335
5
        static auto sin_func = get_sin_func();
336
5
        *dst = sin_func(*src);
337
5
    }
338
};
339
340
using FunctionSin = FunctionMathUnary<UnaryFunctionPlainSin>;
341
342
struct SinhName {
343
    static constexpr auto name = "sinh";
344
};
345
using FunctionSinh = FunctionMathUnary<UnaryFunctionPlain<SinhName, std::sinh>>;
346
347
struct SqrtName {
348
    static constexpr auto name = "sqrt";
349
    // https://dev.mysql.com/doc/refman/8.4/en/mathematical-functions.html#function_sqrt
350
4
    static constexpr bool is_invalid_input(Float64 x) { return x < 0; }
351
};
352
using FunctionSqrt =
353
        FunctionMathUnaryAlwayNullable<UnaryFunctionPlainAlwayNullable<SqrtName, std::sqrt>>;
354
355
struct CbrtName {
356
    static constexpr auto name = "cbrt";
357
};
358
using FunctionCbrt = FunctionMathUnary<UnaryFunctionPlain<CbrtName, std::cbrt>>;
359
360
struct TanName {
361
    static constexpr auto name = "tan";
362
};
363
using FunctionTan = FunctionMathUnary<UnaryFunctionPlain<TanName, std::tan>>;
364
365
struct TanhName {
366
    static constexpr auto name = "tanh";
367
};
368
using FunctionTanh = FunctionMathUnary<UnaryFunctionPlain<TanhName, std::tanh>>;
369
370
template <typename A>
371
struct RadiansImpl {
372
    static constexpr PrimitiveType ResultType = ResultOfUnaryFunc<A>::ResultType;
373
374
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
375
4
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
376
4
                a * PiImpl::value / 180.0);
377
4
    }
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIsE5applyEs
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIiE5applyEi
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIfE5applyEf
_ZN5doris10vectorized11RadiansImplIdE5applyEd
Line
Count
Source
374
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
375
4
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(
376
4
                a * PiImpl::value / 180.0);
377
4
    }
378
};
379
380
struct NameRadians {
381
    static constexpr auto name = "radians";
382
};
383
384
using FunctionRadians = FunctionUnaryArithmetic<RadiansImpl, NameRadians>;
385
386
template <typename A>
387
struct DegreesImpl {
388
    static constexpr PrimitiveType ResultType = ResultOfUnaryFunc<A>::ResultType;
389
390
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
391
4
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a * 180.0 /
392
4
                                                                                     PiImpl::value);
393
4
    }
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIsE5applyEs
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIiE5applyEi
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIfE5applyEf
_ZN5doris10vectorized11DegreesImplIdE5applyEd
Line
Count
Source
390
4
    static inline typename PrimitiveTypeTraits<ResultType>::ColumnItemType apply(A a) {
391
4
        return static_cast<typename PrimitiveTypeTraits<ResultType>::ColumnItemType>(a * 180.0 /
392
4
                                                                                     PiImpl::value);
393
4
    }
394
};
395
396
struct NameDegrees {
397
    static constexpr auto name = "degrees";
398
};
399
400
using FunctionDegrees = FunctionUnaryArithmetic<DegreesImpl, NameDegrees>;
401
402
struct NameBin {
403
    static constexpr auto name = "bin";
404
};
405
struct BinImpl {
406
    using ReturnType = DataTypeString;
407
    static constexpr auto PrimitiveTypeImpl = PrimitiveType::TYPE_BIGINT;
408
    using Type = Int64;
409
    using ReturnColumnType = ColumnString;
410
411
4
    static std::string bin_impl(Int64 value) {
412
4
        uint64_t n = static_cast<uint64_t>(value);
413
4
        const size_t max_bits = sizeof(uint64_t) * 8;
414
4
        char result[max_bits];
415
4
        uint32_t index = max_bits;
416
7
        do {
417
7
            result[--index] = '0' + (n & 1);
418
7
        } while (n >>= 1);
419
4
        return std::string(result + index, max_bits - index);
420
4
    }
421
422
    static Status vector(const ColumnInt64::Container& data, ColumnString::Chars& res_data,
423
1
                         ColumnString::Offsets& res_offsets) {
424
1
        res_offsets.resize(data.size());
425
1
        size_t input_size = res_offsets.size();
426
427
5
        for (size_t i = 0; i < input_size; ++i) {
428
4
            StringOP::push_value_string(bin_impl(data[i]), i, res_data, res_offsets);
429
4
        }
430
1
        return Status::OK();
431
1
    }
432
};
433
434
using FunctionBin = FunctionUnaryToType<BinImpl, NameBin>;
435
436
template <typename A, typename B>
437
struct PowImpl {
438
    static constexpr PrimitiveType ResultType = TYPE_DOUBLE;
439
    static const constexpr bool allow_decimal = false;
440
441
    template <typename type>
442
4
    static inline double apply(A a, B b) {
443
        /// Next everywhere, static_cast - so that there is no wrong result in expressions of the form Int64 c = UInt32(a) * Int32(-1).
444
4
        return std::pow((double)a, (double)b);
445
4
    }
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhhE5applyIdEEdhh
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhaE5applyIdEEdha
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhsE5applyIdEEdhs
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhiE5applyIdEEdhi
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhlE5applyIdEEdhl
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhnE5applyIdEEdhn
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhfE5applyIdEEdhf
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIhdE5applyIdEEdhd
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIahE5applyIdEEdah
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIaaE5applyIdEEdaa
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIasE5applyIdEEdas
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIaiE5applyIdEEdai
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIalE5applyIdEEdal
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIanE5applyIdEEdan
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIafE5applyIdEEdaf
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIadE5applyIdEEdad
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIshE5applyIdEEdsh
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIsaE5applyIdEEdsa
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIssE5applyIdEEdss
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIsiE5applyIdEEdsi
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIslE5applyIdEEdsl
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIsnE5applyIdEEdsn
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIsfE5applyIdEEdsf
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIsdE5applyIdEEdsd
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIihE5applyIdEEdih
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIiaE5applyIdEEdia
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIisE5applyIdEEdis
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIiiE5applyIdEEdii
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIilE5applyIdEEdil
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIinE5applyIdEEdin
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIifE5applyIdEEdif
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIidE5applyIdEEdid
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIlhE5applyIdEEdlh
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIlaE5applyIdEEdla
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIlsE5applyIdEEdls
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIliE5applyIdEEdli
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIllE5applyIdEEdll
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIlnE5applyIdEEdln
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIlfE5applyIdEEdlf
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIldE5applyIdEEdld
Unexecuted instantiation: _ZN5doris10vectorized7PowImplInhE5applyIdEEdnh
Unexecuted instantiation: _ZN5doris10vectorized7PowImplInaE5applyIdEEdna
Unexecuted instantiation: _ZN5doris10vectorized7PowImplInsE5applyIdEEdns
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIniE5applyIdEEdni
Unexecuted instantiation: _ZN5doris10vectorized7PowImplInlE5applyIdEEdnl
Unexecuted instantiation: _ZN5doris10vectorized7PowImplInnE5applyIdEEdnn
Unexecuted instantiation: _ZN5doris10vectorized7PowImplInfE5applyIdEEdnf
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIndE5applyIdEEdnd
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIfhE5applyIdEEdfh
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIfaE5applyIdEEdfa
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIfsE5applyIdEEdfs
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIfiE5applyIdEEdfi
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIflE5applyIdEEdfl
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIfnE5applyIdEEdfn
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIffE5applyIdEEdff
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIfdE5applyIdEEdfd
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIdhE5applyIdEEddh
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIdaE5applyIdEEdda
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIdsE5applyIdEEdds
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIdiE5applyIdEEddi
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIdlE5applyIdEEddl
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIdnE5applyIdEEddn
Unexecuted instantiation: _ZN5doris10vectorized7PowImplIdfE5applyIdEEddf
_ZN5doris10vectorized7PowImplIddE5applyIdEEddd
Line
Count
Source
442
4
    static inline double apply(A a, B b) {
443
        /// Next everywhere, static_cast - so that there is no wrong result in expressions of the form Int64 c = UInt32(a) * Int32(-1).
444
4
        return std::pow((double)a, (double)b);
445
4
    }
446
};
447
struct PowName {
448
    static constexpr auto name = "pow";
449
};
450
using FunctionPow = FunctionBinaryArithmetic<PowImpl, PowName, false>;
451
452
class FunctionNormalCdf : public IFunction {
453
public:
454
    static constexpr auto name = "normal_cdf";
455
456
1
    String get_name() const override { return name; }
457
458
2
    static FunctionPtr create() { return std::make_shared<FunctionNormalCdf>(); }
459
460
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
461
0
        return make_nullable(std::make_shared<DataTypeFloat64>());
462
0
    }
463
464
1
    DataTypes get_variadic_argument_types_impl() const override {
465
1
        return {std::make_shared<DataTypeFloat64>(), std::make_shared<DataTypeFloat64>(),
466
1
                std::make_shared<DataTypeFloat64>()};
467
1
    }
468
0
    size_t get_number_of_arguments() const override { return 3; }
469
470
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
471
0
                        uint32_t result, size_t input_rows_count) const override {
472
0
        auto result_column = ColumnFloat64::create(input_rows_count);
473
0
        auto result_null_map_column = ColumnUInt8::create(input_rows_count, 0);
474
475
0
        auto& result_data = result_column->get_data();
476
0
        NullMap& result_null_map =
477
0
                assert_cast<ColumnUInt8*>(result_null_map_column.get())->get_data();
478
479
0
        ColumnPtr argument_columns[3];
480
0
        bool col_const[3];
481
0
        size_t argument_size = arguments.size();
482
0
        for (int i = 0; i < argument_size; ++i) {
483
0
            argument_columns[i] = block.get_by_position(arguments[i]).column;
484
0
            col_const[i] = is_column_const(*argument_columns[i]);
485
0
            if (col_const[i]) {
486
0
                argument_columns[i] =
487
0
                        static_cast<const ColumnConst&>(*argument_columns[i]).get_data_column_ptr();
488
0
            }
489
0
        }
490
491
0
        auto* mean_col = assert_cast<const ColumnFloat64*>(argument_columns[0].get());
492
0
        auto* sd_col = assert_cast<const ColumnFloat64*>(argument_columns[1].get());
493
0
        auto* value_col = assert_cast<const ColumnFloat64*>(argument_columns[2].get());
494
495
0
        result_column->reserve(input_rows_count);
496
0
        for (size_t i = 0; i < input_rows_count; ++i) {
497
0
            double mean = mean_col->get_element(index_check_const(i, col_const[0]));
498
0
            double sd = sd_col->get_element(index_check_const(i, col_const[1]));
499
0
            double v = value_col->get_element(index_check_const(i, col_const[2]));
500
501
0
            if (!check_argument(sd)) [[unlikely]] {
502
0
                result_null_map[i] = true;
503
0
                continue;
504
0
            }
505
0
            result_data[i] = calculate_cell(mean, sd, v);
506
0
        }
507
508
0
        block.get_by_position(result).column =
509
0
                ColumnNullable::create(std::move(result_column), std::move(result_null_map_column));
510
0
        return Status::OK();
511
0
    }
512
513
0
    static bool check_argument(double sd) { return sd > 0; }
514
0
    static double calculate_cell(double mean, double sd, double v) {
515
#ifdef __APPLE__
516
        const double sqrt2 = std::sqrt(2);
517
#else
518
0
        constexpr double sqrt2 = std::numbers::sqrt2;
519
0
#endif
520
521
0
        return 0.5 * (std::erf((v - mean) / (sd * sqrt2)) + 1);
522
0
    }
523
};
524
525
// TODO: Now math may cause one thread compile time too long, because the function in math
526
// so mush. Split it to speed up compile time in the future
527
1
void register_function_math(SimpleFunctionFactory& factory) {
528
1
    factory.register_function<FunctionAcos>();
529
1
    factory.register_function<FunctionAcosh>();
530
1
    factory.register_function<FunctionAsin>();
531
1
    factory.register_function<FunctionAsinh>();
532
1
    factory.register_function<FunctionAtan>();
533
1
    factory.register_function<FunctionAtanh>();
534
1
    factory.register_function<FunctionAtan2>();
535
1
    factory.register_function<FunctionCos>();
536
1
    factory.register_function<FunctionCosh>();
537
1
    factory.register_function<FunctionE>();
538
1
    factory.register_alias("ln", "dlog1");
539
1
    factory.register_function<FunctionLog>();
540
1
    factory.register_function<FunctionMathLog<ImplLn>>();
541
1
    factory.register_function<FunctionMathLog<ImplLog2>>();
542
1
    factory.register_function<FunctionMathLog<ImplLog10>>();
543
1
    factory.register_alias("log10", "dlog10");
544
1
    factory.register_function<FunctionPi>();
545
1
    factory.register_function<FunctionSign>();
546
1
    factory.register_function<FunctionAbs>();
547
1
    factory.register_function<FunctionNegative>();
548
1
    factory.register_function<FunctionPositive>();
549
1
    factory.register_function<FunctionSin>();
550
1
    factory.register_function<FunctionSinh>();
551
1
    factory.register_function<FunctionSqrt>();
552
1
    factory.register_alias("sqrt", "dsqrt");
553
1
    factory.register_function<FunctionCbrt>();
554
1
    factory.register_function<FunctionTan>();
555
1
    factory.register_function<FunctionTanh>();
556
1
    factory.register_function<FunctionPow>();
557
1
    factory.register_alias("pow", "power");
558
1
    factory.register_alias("pow", "dpow");
559
1
    factory.register_alias("pow", "fpow");
560
1
    factory.register_function<FunctionExp>();
561
1
    factory.register_alias("exp", "dexp");
562
1
    factory.register_function<FunctionRadians>();
563
1
    factory.register_function<FunctionDegrees>();
564
1
    factory.register_function<FunctionBin>();
565
1
    factory.register_function<FunctionNormalCdf>();
566
1
}
567
} // namespace doris::vectorized