diff --git a/firmware/common/dsp_fft.hpp b/firmware/common/dsp_fft.hpp index a360721ac..65dd80987 100644 --- a/firmware/common/dsp_fft.hpp +++ b/firmware/common/dsp_fft.hpp @@ -32,6 +32,7 @@ #include "dsp_types.hpp" #include "complex.hpp" #include "hal.h" +#include "utility.hpp" namespace std { /* https://github.com/AE9RB/fftbench/blob/master/cxlr.hpp @@ -47,14 +48,6 @@ namespace std { } } /* namespace std */ -constexpr bool power_of_two(const size_t n) { - return (n & (n - 1)) == 0; -} - -constexpr size_t log_2(const size_t n, const size_t p = 0) { - return (n <= 1) ? p : log_2(n / 2, p + 1); -} - template void fft_swap(const buffer_c16_t src, std::array& dst) { static_assert(power_of_two(N), "only defined for N == power of two"); diff --git a/firmware/common/utility.hpp b/firmware/common/utility.hpp index 2a2dc9f4c..02caa1a16 100644 --- a/firmware/common/utility.hpp +++ b/firmware/common/utility.hpp @@ -61,6 +61,14 @@ inline constexpr T pow(const T base, unsigned const exponent) { return (exponent == 0) ? 1 : (base * pow(base, exponent - 1)); } +constexpr bool power_of_two(const size_t n) { + return (n & (n - 1)) == 0; +} + +constexpr size_t log_2(const size_t n, const size_t p = 0) { + return (n <= 1) ? p : log_2(n / 2, p + 1); +} + float complex16_mag_squared_to_dbv_norm(const float c16_mag_squared); inline float magnitude_squared(const std::complex c) {