kfr

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
Log | Files | Refs | README

commit a9107ef354f745369fdd0fbc77500dbf717736d3
parent e325266c5ef32e68bdd3aab0eced7459bad4f89b
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date:   Wed, 14 Feb 2024 08:35:15 +0000

fmt argument for complex_size_for

Diffstat:
Minclude/kfr/dft/fft.hpp | 9++++++---
Mtests/dft_test.cpp | 2+-
2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/include/kfr/dft/fft.hpp b/include/kfr/dft/fft.hpp @@ -275,8 +275,11 @@ struct dft_plan_real : dft_plan<T> bool is_initialized() const { return size != 0; } - size_t complex_size() const { return complex_size_for(size); } - constexpr static size_t complex_size_for(size_t size) { return size / 2 + 1; } + size_t complex_size() const { return complex_size_for(size, fmt); } + constexpr static size_t complex_size_for(size_t size, dft_pack_format fmt) + { + return fmt == dft_pack_format::CCs ? size / 2 + 1 : size / 2; + } [[deprecated("cpu parameter is deprecated. Runtime dispatch is used if built with " "KFR_ENABLE_MULTIARCH")]] explicit dft_plan_real(cpu_t cpu, size_t size, @@ -514,7 +517,7 @@ struct dft_plan_md_real constexpr static shape<Dims> complex_size_for(shape<Dims> size) { if (size.dims() > 0) - size.back() = dft_plan_real<T>::complex_size_for(size.back()); + size.back() = dft_plan_real<T>::complex_size_for(size.back(), dft_pack_format::CCs); return size; } diff --git a/tests/dft_test.cpp b/tests/dft_test.cpp @@ -235,7 +235,7 @@ TEST(fft_accuracy) if (is_even(size)) { - index_t csize = dft_plan_real<float_type>::complex_size_for(size); + index_t csize = dft_plan_real<float_type>::complex_size_for(size, dft_pack_format::CCs); univector<float_type> in = truncate(gen_random_range<float_type>(gen, -1.0, +1.0), size); univector<complex<float_type>> out = truncate(dimensions<1>(scalar(qnan)), csize);