ClickHouse

Форк
0
45 строк · 872.0 Байт
1
#include <Functions/FunctionMathUnary.h>
2
#include <Functions/FunctionFactory.h>
3

4
namespace DB
5
{
6
namespace
7
{
8

9
struct TanhName { static constexpr auto name = "tanh"; };
10

11
#if USE_FASTOPS
12

13
    struct Impl
14
    {
15
        static constexpr auto name = TanhName::name;
16
        static constexpr auto rows_per_iteration = 0;
17
        static constexpr bool always_returns_float64 = false;
18

19
        template <typename T>
20
        static void execute(const T * src, size_t size, T * dst)
21
        {
22
            NFastOps::Tanh<>(src, size, dst);
23
        }
24
    };
25

26
using FunctionTanh = FunctionMathUnary<Impl>;
27

28
#else
29

30
double tanh(double x)
31
{
32
    return 2 / (1.0 + exp(-2 * x)) - 1;
33
}
34

35
using FunctionTanh = FunctionMathUnary<UnaryFunctionVectorized<TanhName, tanh>>;
36
#endif
37

38
}
39

40
REGISTER_FUNCTION(Tanh)
41
{
42
    factory.registerFunction<FunctionTanh>({}, FunctionFactory::CaseInsensitive);
43
}
44

45
}
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.