ClickHouse
49 строк · 879.0 Байт
1#include <Functions/FunctionMathUnary.h>
2#include <Functions/FunctionFactory.h>
3
4namespace DB
5{
6namespace
7{
8
9struct SigmoidName { static constexpr auto name = "sigmoid"; };
10
11#if USE_FASTOPS
12
13namespace
14{
15struct Impl
16{
17static constexpr auto name = SigmoidName::name;
18static constexpr auto rows_per_iteration = 0;
19static constexpr bool always_returns_float64 = false;
20
21template <typename T>
22static void execute(const T * src, size_t size, T * dst)
23{
24NFastOps::Sigmoid<>(src, size, dst);
25}
26};
27}
28
29using FunctionSigmoid = FunctionMathUnary<Impl>;
30
31#else
32
33double sigmoid(double x)
34{
35return 1.0 / (1.0 + exp(-x));
36}
37
38using FunctionSigmoid = FunctionMathUnary<UnaryFunctionVectorized<SigmoidName, sigmoid>>;
39
40#endif
41
42}
43
44REGISTER_FUNCTION(Sigmoid)
45{
46factory.registerFunction<FunctionSigmoid>();
47}
48
49}
50
51