Fix signal_energy_nodc for lengths that are not multiples of 4

This commit is contained in:
Bartosz Podrygajlo
2024-07-30 09:44:00 +02:00
parent 0ed8fb7205
commit ed05c94c3e
17 changed files with 121 additions and 119 deletions
+5
View File
@@ -0,0 +1,5 @@
add_executable(test_signal_energy test_signal_energy.cpp ../signal_energy.c)
target_link_libraries(test_signal_energy PRIVATE GTest::gtest UTIL)
add_dependencies(tests test_signal_energy)
add_test(NAME test_signal_energy
COMMAND ./test_signal_energy)
@@ -0,0 +1,31 @@
#include <gtest/gtest.h>
extern "C" {
#include "openair1/PHY/TOOLS/tools_defs.h"
extern int32_t signal_energy_nodc(const c16_t *input, uint32_t length);
}
#include <vector>
#include <algorithm>
int32_t signal_energy_nodc_ref(const c16_t *input, uint32_t length)
{
float sum = 0;
for (auto i = 0U; i < length; i++) {
sum += input[i].r * input[i].r + input[i].i * input[i].i;
}
return sum / length;
}
TEST(signal_energy_nodc, size_6)
{
std::vector<c16_t> input;
input.resize(6);
std::fill(input.begin(), input.end(), (c16_t){42, 42});
EXPECT_EQ(signal_energy_nodc(input.data(), input.size()),
signal_energy_nodc_ref(input.data(), input.size()));
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}