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:
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);