commit 365a8f93534cc4e9e0da7d66a7dc08fb9907ca09
parent 941b633a774ee94f7a812c60d6f53c7298547e9e
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Mon, 12 Sep 2016 16:01:30 +0300
New functions: realdft and irealdft
Diffstat:
1 file changed, 20 insertions(+), 0 deletions(-)
diff --git a/include/kfr/dft/cache.hpp b/include/kfr/dft/cache.hpp
@@ -139,4 +139,24 @@ univector<complex<T>> idft(const univector<complex<T>, Tag>& input)
dft->execute(output, input, temp, ctrue);
return output;
}
+
+template <typename T, size_t Tag>
+univector<complex<T>> realdft(const univector<T, Tag>& input)
+{
+ dft_plan_real_ptr<T> dft = dft_cache::instance().getreal(ctype<T>, input.size());
+ univector<complex<T>> output(input.size() / 2 + 1);
+ univector<u8> temp(dft->temp_size);
+ dft->execute(output, input, temp);
+ return output;
+}
+
+template <typename T, size_t Tag>
+univector<T> irealdft(const univector<complex<T>, Tag>& input)
+{
+ dft_plan_real_ptr<T> dft = dft_cache::instance().getreal(ctype<T>, input.size());
+ univector<T> output((input.size() - 1) * 2);
+ univector<u8> temp(dft->temp_size);
+ dft->execute(output, input, temp);
+ return output;
+}
}