From 4b679c07935627af21d8f4393a2bff155b96ef63 Mon Sep 17 00:00:00 2001 From: Thomas Schlichter Date: Mon, 12 Aug 2024 14:56:11 +0200 Subject: [PATCH] add test for log2_approx64() --- openair1/PHY/TOOLS/tests/test_log2_approx.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/openair1/PHY/TOOLS/tests/test_log2_approx.cpp b/openair1/PHY/TOOLS/tests/test_log2_approx.cpp index 23cae706f6..c05540b61c 100644 --- a/openair1/PHY/TOOLS/tests/test_log2_approx.cpp +++ b/openair1/PHY/TOOLS/tests/test_log2_approx.cpp @@ -10,12 +10,28 @@ uint8_t log2_approx_ref(uint32_t x) return std::round(std::log2(x)); } -TEST(log2_approx_ref, complete) +uint8_t log2_approx64_ref(unsigned long long int x) +{ + return std::round(std::log2(static_cast(x))); +} + +TEST(log2_approx, complete) { for (uint32_t i = 0; i < UINT32_MAX; i++) EXPECT_EQ(log2_approx(i), log2_approx_ref(i)); } +TEST(log2_approx64, boundaries) +{ + for (long double i = 0; i < 64; i++) { + unsigned long long i2 = std::pow(2.0L, i + 0.5L); + for (unsigned long long j = -10; j <= 10; j++) { + unsigned long long x = i2 + j; + EXPECT_EQ(log2_approx64(x), log2_approx64_ref(x)); + } + } +} + int main(int argc, char **argv) { logInit();