Coverage Report

Created: 2026-02-06 12:16

/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 <cmath>
23
#include <string>
24
#include <type_traits>
25
26
#include "common/status.h"
27
#include "vec/columns/column.h"
28
#include "vec/columns/column_string.h"
29
#include "vec/columns/column_vector.h"
30
#include "vec/columns/columns_number.h"
31
#include "vec/core/types.h"
32
#include "vec/data_types/data_type_string.h"
33
#include "vec/data_types/number_traits.h"
34
#include "vec/functions/function_binary_arithmetic.h"
35
#include "vec/functions/function_const.h"
36
#include "vec/functions/function_math_log.h"
37
#include "vec/functions/function_math_unary.h"
38
#include "vec/functions/function_math_unary_alway_nullable.h"
39
#include "vec/functions/function_string.h"
40
#include "vec/functions/function_totype.h"
41
#include "vec/functions/function_unary_arithmetic.h"
42
#include "vec/functions/simple_function_factory.h"
43
44
namespace doris {
45
namespace vectorized {
46
struct LnImpl;
47
struct Log10Impl;
48
struct Log2Impl;
49
} // namespace vectorized
50
} // namespace doris
51
52
namespace doris::vectorized {
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 AsinName {
62
    static constexpr auto name = "asin";
63
    // https://dev.mysql.com/doc/refman/8.4/en/mathematical-functions.html#function_asin
64
4
    static constexpr bool is_invalid_input(Float64 x) { return x < -1 || x > 1; }
65
};
66
using FunctionAsin =
67
        FunctionMathUnaryAlwayNullable<UnaryFunctionPlainAlwayNullable<AsinName, std::asin>>;
68
69
struct AtanName {
70
    static constexpr auto name = "atan";
71
};
72
using FunctionAtan = FunctionMathUnary<UnaryFunctionPlain<AtanName, std::atan>>;
73
74
template <typename A, typename B>
75
struct Atan2Impl {
76
    using ResultType = double;
77
    static const constexpr bool allow_decimal = false;
78
79
    template <typename type>
80
0
    static inline double apply(A a, B b) {
81
0
        return std::atan2((double)a, (double)b);
82
0
    }
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
Unexecuted instantiation: _ZN5doris10vectorized9Atan2ImplIddE5applyIdEEddd
83
};
84
struct Atan2Name {
85
    static constexpr auto name = "atan2";
86
};
87
using FunctionAtan2 = FunctionBinaryArithmetic<Atan2Impl, Atan2Name, false>;
88
89
struct CosName {
90
    static constexpr auto name = "cos";
91
};
92
using FunctionCos = FunctionMathUnary<UnaryFunctionPlain<CosName, std::cos>>;
93
94
struct CoshName {
95
    static constexpr auto name = "cosh";
96
};
97
using FunctionCosh = FunctionMathUnary<UnaryFunctionPlain<CoshName, std::cosh>>;
98
99
struct EImpl {
100
    static constexpr auto name = "e";
101
    static constexpr double value = 2.7182818284590452353602874713526624977572470;
102
};
103
using FunctionE = FunctionMathConstFloat64<EImpl>;
104
105
struct PiImpl {
106
    static constexpr auto name = "pi";
107
    static constexpr double value = 3.1415926535897932384626433832795028841971693;
108
};
109
using FunctionPi = FunctionMathConstFloat64<PiImpl>;
110
111
struct ExpName {
112
    static constexpr auto name = "exp";
113
};
114
using FunctionExp = FunctionMathUnary<UnaryFunctionPlain<ExpName, std::exp>>;
115
116
struct LogName {
117
    static constexpr auto name = "log";
118
};
119
120
template <typename A, typename B>
121
struct LogImpl {
122
    using ResultType = Float64;
123
    using Traits = NumberTraits::BinaryOperatorTraits<A, B>;
124
125
    static const constexpr bool allow_decimal = false;
126
    static constexpr double EPSILON = 1e-9;
127
128
    template <typename Result = ResultType>
129
    static void apply(const typename Traits::ArrayA& a, B b,
130
                      typename ColumnVector<Result>::Container& c,
131
0
                      typename Traits::ArrayNull& null_map) {
132
0
        size_t size = c.size();
133
0
        UInt8 is_null = b <= 0;
134
0
        memset(null_map.data(), is_null, size);
135
136
0
        if (!is_null) {
137
0
            for (size_t i = 0; i < size; i++) {
138
0
                if (a[i] <= 0 || std::fabs(a[i] - 1.0) < EPSILON) {
139
0
                    null_map[i] = 1;
140
0
                } else {
141
0
                    c[i] = static_cast<Float64>(std::log(static_cast<Float64>(b)) /
142
0
                                                std::log(static_cast<Float64>(a[i])));
143
0
                }
144
0
            }
145
0
        }
146
0
    }
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhhE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhaE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhsE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhiE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhlE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhnE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhfE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIhdE5applyIdEEvRKNS0_8PODArrayIhLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERS8_
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIahE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIaaE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIasE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIaiE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIalE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIanE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIafE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIadE5applyIdEEvRKNS0_8PODArrayIaLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIshE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsaE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIssE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsiE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIslE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsnE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsfE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIsdE5applyIdEEvRKNS0_8PODArrayIsLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIihE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIiaE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIisE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIiiE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIilE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIinE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIifE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIidE5applyIdEEvRKNS0_8PODArrayIiLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlhE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlaE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlsE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIliE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIllE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlnE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIlfE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIldE5applyIdEEvRKNS0_8PODArrayIlLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInhE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInaE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInsE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIniE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInlE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInnE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplInfE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIndE5applyIdEEvRKNS0_8PODArrayInLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfhE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfaE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfsE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfiE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIflE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfnE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIffE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIfdE5applyIdEEvRKNS0_8PODArrayIfLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdhE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEhRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdaE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEaRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdsE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEsRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdiE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEiRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdlE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEElRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdnE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEnRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIdfE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEfRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
Unexecuted instantiation: _ZN5doris10vectorized7LogImplIddE5applyIdEEvRKNS0_8PODArrayIdLm4096E9AllocatorILb0ELb0ELb0E22DefaultMemoryAllocatorELm16ELm16EEEdRNS0_12ColumnVectorIT_E9ContainerERNS4_IhLm4096ES7_Lm16ELm16EEE
147
148
    template <typename Result>
149
6
    static inline Result apply(A a, B b, UInt8& is_null) {
150
6
        is_null = a <= 0 || b <= 0 || std::fabs(a - 1.0) < EPSILON;
151
6
        return static_cast<Float64>(std::log(static_cast<Float64>(b)) /
152
6
                                    std::log(static_cast<Float64>(a)));
153
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
149
6
    static inline Result apply(A a, B b, UInt8& is_null) {
150
6
        is_null = a <= 0 || b <= 0 || std::fabs(a - 1.0) < EPSILON;
151
6
        return static_cast<Float64>(std::log(static_cast<Float64>(b)) /
152
6
                                    std::log(static_cast<Float64>(a)));
153
6
    }
154
};
155
using FunctionLog = FunctionBinaryArithmetic<LogImpl, LogName, true>;
156
157
template <typename A>
158
struct SignImpl {
159
    using ResultType = Int8;
160
6
    static inline ResultType apply(A a) {
161
6
        if constexpr (IsDecimalNumber<A> || std::is_floating_point_v<A>)
162
3
            return static_cast<ResultType>(a < A(0) ? -1 : a == A(0) ? 0 : 1);
163
3
        else if constexpr (std::is_signed_v<A>)
164
3
            return static_cast<ResultType>(a < 0 ? -1 : a == 0 ? 0 : 1);
165
0
        else if constexpr (std::is_unsigned_v<A>)
166
0
            return static_cast<ResultType>(a == 0 ? 0 : 1);
167
6
    }
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized8SignImplItE5applyEt
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIjE5applyEj
Unexecuted instantiation: _ZN5doris10vectorized8SignImplImE5applyEm
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIsE5applyEs
_ZN5doris10vectorized8SignImplIiE5applyEi
Line
Count
Source
160
3
    static inline ResultType apply(A a) {
161
3
        if constexpr (IsDecimalNumber<A> || std::is_floating_point_v<A>)
162
0
            return static_cast<ResultType>(a < A(0) ? -1 : a == A(0) ? 0 : 1);
163
3
        else if constexpr (std::is_signed_v<A>)
164
3
            return static_cast<ResultType>(a < 0 ? -1 : a == 0 ? 0 : 1);
165
3
        else if constexpr (std::is_unsigned_v<A>)
166
3
            return static_cast<ResultType>(a == 0 ? 0 : 1);
167
3
    }
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized8SignImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized8SignImplIfE5applyEf
_ZN5doris10vectorized8SignImplIdE5applyEd
Line
Count
Source
160
3
    static inline ResultType apply(A a) {
161
3
        if constexpr (IsDecimalNumber<A> || std::is_floating_point_v<A>)
162
3
            return static_cast<ResultType>(a < A(0) ? -1 : a == A(0) ? 0 : 1);
163
3
        else if constexpr (std::is_signed_v<A>)
164
3
            return static_cast<ResultType>(a < 0 ? -1 : a == 0 ? 0 : 1);
165
3
        else if constexpr (std::is_unsigned_v<A>)
166
3
            return static_cast<ResultType>(a == 0 ? 0 : 1);
167
3
    }
168
};
169
170
struct NameSign {
171
    static constexpr auto name = "sign";
172
};
173
using FunctionSign = FunctionUnaryArithmetic<SignImpl, NameSign>;
174
175
template <typename A>
176
struct AbsImpl {
177
    using ResultType =
178
            std::conditional_t<IsDecimalNumber<A>, A, typename NumberTraits::ResultOfAbs<A>::Type>;
179
180
12
    static inline ResultType apply(A a) {
181
12
        if constexpr (IsDecimalNumber<A>)
182
0
            return a < A(0) ? A(-a) : a;
183
12
        else if constexpr (std::is_integral_v<A> && std::is_signed_v<A>)
184
7
            return a < A(0) ? static_cast<ResultType>(~a) + 1 : a;
185
5
        else if constexpr (std::is_integral_v<A> && std::is_unsigned_v<A>)
186
0
            return static_cast<ResultType>(a);
187
5
        else if constexpr (std::is_floating_point_v<A>)
188
5
            return static_cast<ResultType>(std::abs(a));
189
12
    }
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplItE5applyEt
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIjE5applyEj
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplImE5applyEm
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIsE5applyEs
_ZN5doris10vectorized7AbsImplIiE5applyEi
Line
Count
Source
180
7
    static inline ResultType apply(A a) {
181
7
        if constexpr (IsDecimalNumber<A>)
182
0
            return a < A(0) ? A(-a) : a;
183
7
        else if constexpr (std::is_integral_v<A> && std::is_signed_v<A>)
184
7
            return a < A(0) ? static_cast<ResultType>(~a) + 1 : a;
185
7
        else if constexpr (std::is_integral_v<A> && std::is_unsigned_v<A>)
186
7
            return static_cast<ResultType>(a);
187
7
        else if constexpr (std::is_floating_point_v<A>)
188
7
            return static_cast<ResultType>(std::abs(a));
189
7
    }
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplIfE5applyEf
_ZN5doris10vectorized7AbsImplIdE5applyEd
Line
Count
Source
180
5
    static inline ResultType apply(A a) {
181
5
        if constexpr (IsDecimalNumber<A>)
182
0
            return a < A(0) ? A(-a) : a;
183
5
        else if constexpr (std::is_integral_v<A> && std::is_signed_v<A>)
184
0
            return a < A(0) ? static_cast<ResultType>(~a) + 1 : a;
185
5
        else if constexpr (std::is_integral_v<A> && std::is_unsigned_v<A>)
186
0
            return static_cast<ResultType>(a);
187
5
        else if constexpr (std::is_floating_point_v<A>)
188
5
            return static_cast<ResultType>(std::abs(a));
189
5
    }
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalIiEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalIlEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalInEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_12Decimal128V3EE5applyES2_
Unexecuted instantiation: _ZN5doris10vectorized7AbsImplINS0_7DecimalIN4wide7integerILm256EiEEEEE5applyES6_
190
};
191
192
struct NameAbs {
193
    static constexpr auto name = "abs";
194
};
195
196
using FunctionAbs = FunctionUnaryArithmetic<AbsImpl, NameAbs>;
197
198
template <typename A>
199
struct NegativeImpl {
200
    using ResultType = A;
201
202
8
    static inline ResultType apply(A a) { return -a; }
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplItE5applyEt
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIjE5applyEj
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplImE5applyEm
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIsE5applyEs
_ZN5doris10vectorized12NegativeImplIiE5applyEi
Line
Count
Source
202
4
    static inline ResultType apply(A a) { return -a; }
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized12NegativeImplIfE5applyEf
_ZN5doris10vectorized12NegativeImplIdE5applyEd
Line
Count
Source
202
4
    static inline ResultType 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_
203
};
204
205
struct NameNegative {
206
    static constexpr auto name = "negative";
207
};
208
209
using FunctionNegative = FunctionUnaryArithmetic<NegativeImpl, NameNegative>;
210
211
template <typename A>
212
struct PositiveImpl {
213
    using ResultType = A;
214
215
8
    static inline ResultType apply(A a) { return static_cast<ResultType>(a); }
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplItE5applyEt
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIjE5applyEj
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplImE5applyEm
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIsE5applyEs
_ZN5doris10vectorized12PositiveImplIiE5applyEi
Line
Count
Source
215
4
    static inline ResultType apply(A a) { return static_cast<ResultType>(a); }
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplIfE5applyEf
_ZN5doris10vectorized12PositiveImplIdE5applyEd
Line
Count
Source
215
4
    static inline ResultType apply(A a) { return static_cast<ResultType>(a); }
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_7DecimalIiEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_7DecimalIlEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_7DecimalInEEE5applyES3_
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_12Decimal128V3EE5applyES2_
Unexecuted instantiation: _ZN5doris10vectorized12PositiveImplINS0_7DecimalIN4wide7integerILm256EiEEEEE5applyES6_
216
};
217
218
struct NamePositive {
219
    static constexpr auto name = "positive";
220
};
221
222
using FunctionPositive = FunctionUnaryArithmetic<PositiveImpl, NamePositive>;
223
224
struct SinName {
225
    static constexpr auto name = "sin";
226
};
227
using FunctionSin = FunctionMathUnary<UnaryFunctionPlain<SinName, std::sin>>;
228
229
struct SqrtName {
230
    static constexpr auto name = "sqrt";
231
    // https://dev.mysql.com/doc/refman/8.4/en/mathematical-functions.html#function_sqrt
232
4
    static constexpr bool is_invalid_input(Float64 x) { return x < 0; }
233
};
234
using FunctionSqrt =
235
        FunctionMathUnaryAlwayNullable<UnaryFunctionPlainAlwayNullable<SqrtName, std::sqrt>>;
236
237
struct CbrtName {
238
    static constexpr auto name = "cbrt";
239
};
240
using FunctionCbrt = FunctionMathUnary<UnaryFunctionPlain<CbrtName, std::cbrt>>;
241
242
struct TanName {
243
    static constexpr auto name = "tan";
244
};
245
using FunctionTan = FunctionMathUnary<UnaryFunctionPlain<TanName, std::tan>>;
246
247
struct TanhName {
248
    static constexpr auto name = "tanh";
249
};
250
using FunctionTanh = FunctionMathUnary<UnaryFunctionPlain<TanhName, std::tanh>>;
251
252
template <typename A>
253
struct RadiansImpl {
254
    using ResultType = A;
255
256
4
    static inline ResultType apply(A a) {
257
4
        return static_cast<ResultType>(a * PiImpl::value / 180.0);
258
4
    }
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplItE5applyEt
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIjE5applyEj
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplImE5applyEm
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIsE5applyEs
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIiE5applyEi
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized11RadiansImplIfE5applyEf
_ZN5doris10vectorized11RadiansImplIdE5applyEd
Line
Count
Source
256
4
    static inline ResultType apply(A a) {
257
4
        return static_cast<ResultType>(a * PiImpl::value / 180.0);
258
4
    }
259
};
260
261
struct NameRadians {
262
    static constexpr auto name = "radians";
263
};
264
265
using FunctionRadians = FunctionUnaryArithmetic<RadiansImpl, NameRadians>;
266
267
template <typename A>
268
struct DegreesImpl {
269
    using ResultType = A;
270
271
4
    static inline ResultType apply(A a) {
272
4
        return static_cast<ResultType>(a * 180.0 / PiImpl::value);
273
4
    }
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIhE5applyEh
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplItE5applyEt
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIjE5applyEj
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplImE5applyEm
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIaE5applyEa
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIsE5applyEs
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIiE5applyEi
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIlE5applyEl
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplInE5applyEn
Unexecuted instantiation: _ZN5doris10vectorized11DegreesImplIfE5applyEf
_ZN5doris10vectorized11DegreesImplIdE5applyEd
Line
Count
Source
271
4
    static inline ResultType apply(A a) {
272
4
        return static_cast<ResultType>(a * 180.0 / PiImpl::value);
273
4
    }
274
};
275
276
struct NameDegrees {
277
    static constexpr auto name = "degrees";
278
};
279
280
using FunctionDegrees = FunctionUnaryArithmetic<DegreesImpl, NameDegrees>;
281
282
struct NameBin {
283
    static constexpr auto name = "bin";
284
};
285
struct BinImpl {
286
    using ReturnType = DataTypeString;
287
    static constexpr auto TYPE_INDEX = TypeIndex::Int64;
288
    using Type = Int64;
289
    using ReturnColumnType = ColumnString;
290
291
4
    static std::string bin_impl(Int64 value) {
292
4
        uint64_t n = static_cast<uint64_t>(value);
293
4
        const size_t max_bits = sizeof(uint64_t) * 8;
294
4
        char result[max_bits];
295
4
        uint32_t index = max_bits;
296
7
        do {
297
7
            result[--index] = '0' + (n & 1);
298
7
        } while (n >>= 1);
299
4
        return std::string(result + index, max_bits - index);
300
4
    }
301
302
    static Status vector(const ColumnInt64::Container& data, ColumnString::Chars& res_data,
303
1
                         ColumnString::Offsets& res_offsets) {
304
1
        res_offsets.resize(data.size());
305
1
        size_t input_size = res_offsets.size();
306
307
5
        for (size_t i = 0; i < input_size; ++i) {
308
4
            StringOP::push_value_string(bin_impl(data[i]), i, res_data, res_offsets);
309
4
        }
310
1
        return Status::OK();
311
1
    }
312
};
313
314
using FunctionBin = FunctionUnaryToType<BinImpl, NameBin>;
315
316
template <typename A, typename B>
317
struct PowImpl {
318
    using ResultType = double;
319
    static const constexpr bool allow_decimal = false;
320
321
    template <typename type>
322
4
    static inline double apply(A a, B b) {
323
        /// Next everywhere, static_cast - so that there is no wrong result in expressions of the form Int64 c = UInt32(a) * Int32(-1).
324
4
        return std::pow((double)a, (double)b);
325
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
322
4
    static inline double apply(A a, B b) {
323
        /// Next everywhere, static_cast - so that there is no wrong result in expressions of the form Int64 c = UInt32(a) * Int32(-1).
324
4
        return std::pow((double)a, (double)b);
325
4
    }
326
};
327
struct PowName {
328
    static constexpr auto name = "pow";
329
};
330
using FunctionPow = FunctionBinaryArithmetic<PowImpl, PowName, false>;
331
332
class FunctionNormalCdf : public IFunction {
333
public:
334
    static constexpr auto name = "normal_cdf";
335
336
1
    String get_name() const override { return name; }
337
338
2
    static FunctionPtr create() { return std::make_shared<FunctionNormalCdf>(); }
339
340
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
341
0
        return make_nullable(std::make_shared<DataTypeFloat64>());
342
0
    }
343
344
1
    DataTypes get_variadic_argument_types_impl() const override {
345
1
        return {std::make_shared<DataTypeFloat64>(), std::make_shared<DataTypeFloat64>(),
346
1
                std::make_shared<DataTypeFloat64>()};
347
1
    }
348
0
    size_t get_number_of_arguments() const override { return 3; }
349
350
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
351
0
                        size_t result, size_t input_rows_count) const override {
352
0
        auto result_column = ColumnFloat64::create(input_rows_count);
353
0
        auto result_null_map_column = ColumnUInt8::create(input_rows_count, 0);
354
355
0
        auto& result_data = result_column->get_data();
356
0
        NullMap& result_null_map =
357
0
                assert_cast<ColumnUInt8*>(result_null_map_column.get())->get_data();
358
359
0
        ColumnPtr argument_columns[3];
360
0
        bool col_const[3];
361
0
        size_t argument_size = arguments.size();
362
0
        for (int i = 0; i < argument_size; ++i) {
363
0
            argument_columns[i] = block.get_by_position(arguments[i]).column;
364
0
            col_const[i] = is_column_const(*argument_columns[i]);
365
0
            if (col_const[i]) {
366
0
                argument_columns[i] =
367
0
                        static_cast<const ColumnConst&>(*argument_columns[i]).get_data_column_ptr();
368
0
            }
369
0
        }
370
371
0
        auto* mean_col = assert_cast<const ColumnFloat64*>(argument_columns[0].get());
372
0
        auto* sd_col = assert_cast<const ColumnFloat64*>(argument_columns[1].get());
373
0
        auto* value_col = assert_cast<const ColumnFloat64*>(argument_columns[2].get());
374
375
0
        result_column->reserve(input_rows_count);
376
0
        for (size_t i = 0; i < input_rows_count; ++i) {
377
0
            double mean = mean_col->get_element(index_check_const(i, col_const[0]));
378
0
            double sd = sd_col->get_element(index_check_const(i, col_const[1]));
379
0
            double v = value_col->get_element(index_check_const(i, col_const[2]));
380
381
0
            if (!check_argument(sd)) [[unlikely]] {
382
0
                result_null_map[i] = true;
383
0
                continue;
384
0
            }
385
0
            result_data[i] = calculate_cell(mean, sd, v);
386
0
        }
387
388
0
        block.get_by_position(result).column =
389
0
                ColumnNullable::create(std::move(result_column), std::move(result_null_map_column));
390
0
        return Status::OK();
391
0
    }
392
393
0
    static bool check_argument(double sd) { return sd > 0; }
394
0
    static double calculate_cell(double mean, double sd, double v) {
395
#ifdef __APPLE__
396
        const double sqrt2 = std::sqrt(2);
397
#else
398
0
        constexpr double sqrt2 = std::numbers::sqrt2;
399
0
#endif
400
401
0
        return 0.5 * (std::erf((v - mean) / (sd * sqrt2)) + 1);
402
0
    }
403
};
404
405
// TODO: Now math may cause one thread compile time too long, because the function in math
406
// so mush. Split it to speed up compile time in the future
407
1
void register_function_math(SimpleFunctionFactory& factory) {
408
1
    factory.register_function<FunctionAcos>();
409
1
    factory.register_function<FunctionAsin>();
410
1
    factory.register_function<FunctionAtan>();
411
1
    factory.register_function<FunctionAtan2>();
412
1
    factory.register_function<FunctionCos>();
413
1
    factory.register_function<FunctionCosh>();
414
1
    factory.register_function<FunctionE>();
415
1
    factory.register_alias("ln", "dlog1");
416
1
    factory.register_function<FunctionLog>();
417
1
    factory.register_function<FunctionMathLog<ImplLn>>();
418
1
    factory.register_function<FunctionMathLog<ImplLog2>>();
419
1
    factory.register_function<FunctionMathLog<ImplLog10>>();
420
1
    factory.register_alias("log10", "dlog10");
421
1
    factory.register_function<FunctionPi>();
422
1
    factory.register_function<FunctionSign>();
423
1
    factory.register_function<FunctionAbs>();
424
1
    factory.register_function<FunctionNegative>();
425
1
    factory.register_function<FunctionPositive>();
426
1
    factory.register_function<FunctionSin>();
427
1
    factory.register_function<FunctionSqrt>();
428
1
    factory.register_alias("sqrt", "dsqrt");
429
1
    factory.register_function<FunctionCbrt>();
430
1
    factory.register_function<FunctionTan>();
431
1
    factory.register_function<FunctionTanh>();
432
1
    factory.register_function<FunctionPow>();
433
1
    factory.register_alias("pow", "power");
434
1
    factory.register_alias("pow", "dpow");
435
1
    factory.register_alias("pow", "fpow");
436
1
    factory.register_function<FunctionExp>();
437
1
    factory.register_alias("exp", "dexp");
438
1
    factory.register_function<FunctionRadians>();
439
1
    factory.register_function<FunctionDegrees>();
440
1
    factory.register_function<FunctionBin>();
441
1
    factory.register_function<FunctionNormalCdf>();
442
1
}
443
} // namespace doris::vectorized