diff options
author | vvvv <[email protected]> | 2025-10-06 13:26:25 +0300 |
---|---|---|
committer | vvvv <[email protected]> | 2025-10-06 14:06:25 +0300 |
commit | eca8ce9cb1613d5c983185c4e43c20651a9638aa (patch) | |
tree | 61ee5ae779948e61af9a7691d19eaa2c09869121 /yql/essentials/udfs/common/math/lib | |
parent | 4adf7eecae16a9b228b28cc5f64c27ef69ad5ec2 (diff) |
YQL-20086 udfs
init
commit_hash:f9684778bf1ea956965f2360b80b91edb7d4ffbe
Diffstat (limited to 'yql/essentials/udfs/common/math/lib')
-rw-r--r-- | yql/essentials/udfs/common/math/lib/erfinv.cpp | 6 | ||||
-rw-r--r-- | yql/essentials/udfs/common/math/lib/erfinv.h | 2 | ||||
-rw-r--r-- | yql/essentials/udfs/common/math/lib/round.h | 24 | ||||
-rw-r--r-- | yql/essentials/udfs/common/math/lib/round_ut.cpp | 98 | ||||
-rw-r--r-- | yql/essentials/udfs/common/math/lib/ut/ya.make | 2 | ||||
-rw-r--r-- | yql/essentials/udfs/common/math/lib/ya.make | 2 |
6 files changed, 69 insertions, 65 deletions
diff --git a/yql/essentials/udfs/common/math/lib/erfinv.cpp b/yql/essentials/udfs/common/math/lib/erfinv.cpp index def902860c3..c7626b8faf0 100644 --- a/yql/essentials/udfs/common/math/lib/erfinv.cpp +++ b/yql/essentials/udfs/common/math/lib/erfinv.cpp @@ -8,8 +8,8 @@ template <size_t N> static double PolEval(double x, const std::array<double, N>& coef) { static_assert(N > 0, "Array coef[] should not be empty."); return std::accumulate(coef.crbegin() + 1, coef.crend(), coef[N - 1], - [x] (auto init, auto cur) { - return std::move(init) * x + cur; + [x](auto init, auto cur) { + return std::move(init) * x + cur; }); } @@ -111,4 +111,4 @@ double ErfInv(double x) { return ans * sign; } -} +} // namespace NMathUdf diff --git a/yql/essentials/udfs/common/math/lib/erfinv.h b/yql/essentials/udfs/common/math/lib/erfinv.h index 1ced5a07e65..23c129e6572 100644 --- a/yql/essentials/udfs/common/math/lib/erfinv.h +++ b/yql/essentials/udfs/common/math/lib/erfinv.h @@ -4,4 +4,4 @@ namespace NMathUdf { double ErfInv(double x); -} +} // namespace NMathUdf diff --git a/yql/essentials/udfs/common/math/lib/round.h b/yql/essentials/udfs/common/math/lib/round.h index f59700da88f..815c3f6173a 100644 --- a/yql/essentials/udfs/common/math/lib/round.h +++ b/yql/essentials/udfs/common/math/lib/round.h @@ -55,23 +55,23 @@ inline std::optional<i64> NearbyIntImpl(double value, decltype(FE_DOWNWARD) mode if (res < double(std::numeric_limits<i64>::min() + 513) || res > double(std::numeric_limits<i64>::max() - 512)) { return {}; } - + return static_cast<i64>(res); } inline std::optional<i64> NearbyInt(double value, ui32 mode) { switch (mode) { - case 0: - return NearbyIntImpl(value, FE_DOWNWARD); - case 1: - return NearbyIntImpl(value, FE_TONEAREST); - case 2: - return NearbyIntImpl(value, FE_TOWARDZERO); - case 3: - return NearbyIntImpl(value, FE_UPWARD); - default: - return {}; + case 0: + return NearbyIntImpl(value, FE_DOWNWARD); + case 1: + return NearbyIntImpl(value, FE_TONEAREST); + case 2: + return NearbyIntImpl(value, FE_TOWARDZERO); + case 3: + return NearbyIntImpl(value, FE_UPWARD); + default: + return {}; } } -} +} // namespace NMathUdf diff --git a/yql/essentials/udfs/common/math/lib/round_ut.cpp b/yql/essentials/udfs/common/math/lib/round_ut.cpp index 4d0e96e4dc3..d791086fa8c 100644 --- a/yql/essentials/udfs/common/math/lib/round_ut.cpp +++ b/yql/essentials/udfs/common/math/lib/round_ut.cpp @@ -7,64 +7,64 @@ using namespace NMathUdf; Y_UNIT_TEST_SUITE(TRound) { - Y_UNIT_TEST(Basic) { - double value = 1930.0 / 3361.0; - double result = RoundToDecimal<long double>(value, -3); - double answer = 0.574; - UNIT_ASSERT_VALUES_EQUAL( - HexEncode(&result, sizeof(double)), - HexEncode(&answer, sizeof(double))); - } +Y_UNIT_TEST(Basic) { + double value = 1930.0 / 3361.0; + double result = RoundToDecimal<long double>(value, -3); + double answer = 0.574; + UNIT_ASSERT_VALUES_EQUAL( + HexEncode(&result, sizeof(double)), + HexEncode(&answer, sizeof(double))); +} - Y_UNIT_TEST(Mod) { - UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, 7), 6); - UNIT_ASSERT_VALUES_EQUAL(*Mod(1, 7), 1); - UNIT_ASSERT_VALUES_EQUAL(*Mod(0, 7), 0); +Y_UNIT_TEST(Mod) { + UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, 7), 6); + UNIT_ASSERT_VALUES_EQUAL(*Mod(1, 7), 1); + UNIT_ASSERT_VALUES_EQUAL(*Mod(0, 7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, -7), -1); - UNIT_ASSERT_VALUES_EQUAL(*Mod(1, -7), -6); - UNIT_ASSERT_VALUES_EQUAL(*Mod(0, -7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, -7), -1); + UNIT_ASSERT_VALUES_EQUAL(*Mod(1, -7), -6); + UNIT_ASSERT_VALUES_EQUAL(*Mod(0, -7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, 7), 6); - UNIT_ASSERT_VALUES_EQUAL(*Mod(15, 7), 1); - UNIT_ASSERT_VALUES_EQUAL(*Mod(14, 7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, 7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, 7), 6); + UNIT_ASSERT_VALUES_EQUAL(*Mod(15, 7), 1); + UNIT_ASSERT_VALUES_EQUAL(*Mod(14, 7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, 7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, -7), -1); - UNIT_ASSERT_VALUES_EQUAL(*Mod(15, -7), -6); - UNIT_ASSERT_VALUES_EQUAL(*Mod(14, -7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, -7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, -7), -1); + UNIT_ASSERT_VALUES_EQUAL(*Mod(15, -7), -6); + UNIT_ASSERT_VALUES_EQUAL(*Mod(14, -7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, -7), 0); - UNIT_ASSERT(!Mod(-14, 0)); - } + UNIT_ASSERT(!Mod(-14, 0)); +} - Y_UNIT_TEST(Rem) { - UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, 7), -1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(1, 7), 1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(0, 7), 0); +Y_UNIT_TEST(Rem) { + UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, 7), -1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(1, 7), 1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(0, 7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, -7), -1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(1, -7), 1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(0, -7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, -7), -1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(1, -7), 1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(0, -7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, 7), -1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(15, 7), 1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(14, 7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, 7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, 7), -1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(15, 7), 1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(14, 7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, 7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, -7), -1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(15, -7), 1); - UNIT_ASSERT_VALUES_EQUAL(*Rem(14, -7), 0); - UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, -7), 0); - UNIT_ASSERT(!Rem(-14, 0)); - } + UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, -7), -1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(15, -7), 1); + UNIT_ASSERT_VALUES_EQUAL(*Rem(14, -7), 0); + UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, -7), 0); + UNIT_ASSERT(!Rem(-14, 0)); +} - Y_UNIT_TEST(NearbyInt) { - const i64 maxV = 9223372036854774784ll; - const i64 minV = -9223372036854774784ll; - UNIT_ASSERT_VALUES_EQUAL((i64)(double)(maxV), maxV); - UNIT_ASSERT_VALUES_EQUAL((i64)(double)(minV), minV); +Y_UNIT_TEST(NearbyInt) { + const i64 maxV = 9223372036854774784ll; + const i64 minV = -9223372036854774784ll; + UNIT_ASSERT_VALUES_EQUAL((i64)(double)(maxV), maxV); + UNIT_ASSERT_VALUES_EQUAL((i64)(double)(minV), minV); - UNIT_ASSERT_VALUES_UNEQUAL((i64)(double)(maxV + 1), maxV + 1); - } + UNIT_ASSERT_VALUES_UNEQUAL((i64)(double)(maxV + 1), maxV + 1); } +} // Y_UNIT_TEST_SUITE(TRound) diff --git a/yql/essentials/udfs/common/math/lib/ut/ya.make b/yql/essentials/udfs/common/math/lib/ut/ya.make index c1efcde3b47..2461b36ab3d 100644 --- a/yql/essentials/udfs/common/math/lib/ut/ya.make +++ b/yql/essentials/udfs/common/math/lib/ut/ya.make @@ -2,6 +2,8 @@ IF (OS_LINUX) IF (NOT WITH_VALGRIND) UNITTEST_FOR(yql/essentials/udfs/common/math/lib) + ENABLE(YQL_STYLE_CPP) + SRCS( round_ut.cpp ) diff --git a/yql/essentials/udfs/common/math/lib/ya.make b/yql/essentials/udfs/common/math/lib/ya.make index 54b882a8438..3c0faeb996a 100644 --- a/yql/essentials/udfs/common/math/lib/ya.make +++ b/yql/essentials/udfs/common/math/lib/ya.make @@ -1,5 +1,7 @@ LIBRARY() +ENABLE(YQL_STYLE_CPP) + SRCS( erfinv.cpp ) |