ClickHouse
41 строка · 873.0 Байт
1#include <Functions/FunctionMathUnary.h>
2#include <Functions/FunctionFactory.h>
3
4namespace DB
5{
6
7namespace
8{
9
10struct LogName { static constexpr auto name = "log"; };
11
12#if USE_FASTOPS
13
14struct Impl
15{
16static constexpr auto name = LogName::name;
17static constexpr auto rows_per_iteration = 0;
18static constexpr bool always_returns_float64 = false;
19
20template <typename T>
21static void execute(const T * src, size_t size, T * dst)
22{
23NFastOps::Log<true>(src, size, dst);
24}
25};
26
27using FunctionLog = FunctionMathUnary<Impl>;
28
29#else
30using FunctionLog = FunctionMathUnary<UnaryFunctionVectorized<LogName, log>>;
31#endif
32
33}
34
35REGISTER_FUNCTION(Log)
36{
37factory.registerFunction<FunctionLog>({}, FunctionFactory::CaseInsensitive);
38factory.registerAlias("ln", "log", FunctionFactory::CaseInsensitive);
39}
40
41}
42