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 9659c6d9e677113b74112e40012a8526122ce240
parent a2f50e4da69ed8acbcbd7383b6bcf043b42d1f48
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date:   Sat, 27 Aug 2016 00:04:57 +0300

New implementation of counter functions

Diffstat:
Minclude/kfr/base/basic_expressions.hpp | 22++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)

diff --git a/include/kfr/base/basic_expressions.hpp b/include/kfr/base/basic_expressions.hpp @@ -88,32 +88,18 @@ CMT_INLINE auto ones() } CMT_INLINE auto counter() { - return lambda([](cinput_t, size_t index, auto x) { - using T = subtype<decltype(x)>; - using Tsub = subtype<T>; - using TI = subtype<itype<T>>; - return cast<T>(enumerate<Tsub, x.size()>() + cast<Tsub>(cast<TI>(index))); - }); + return lambda([](cinput_t, size_t index, auto x) { return enumerate(x) + index; }); } template <typename T1> CMT_INLINE auto counter(T1 start) { - return lambda([start](cinput_t, size_t index, auto x) { - using T = subtype<decltype(x)>; - using Tsub = subtype<T>; - using TI = subtype<itype<T>>; - return cast<T>(enumerate<Tsub, x.size()>() + cast<Tsub>(start) + cast<Tsub>(cast<TI>(index))); - }); + return lambda([start](cinput_t, size_t index, auto x) { return enumerate(x) + index + start; }); } template <typename T1, typename T2> CMT_INLINE auto counter(T1 start, T2 step) { - return lambda([start, step](cinput_t, size_t index, auto x) { - using T = subtype<decltype(x)>; - using Tsub = subtype<T>; - using TI = subtype<itype<T>>; - return cast<T>(enumerate<Tsub, x.size()>() * step + cast<Tsub>(start) + cast<Tsub>(cast<TI>(index))); - }); + return lambda( + [start, step](cinput_t, size_t index, auto x) { return (enumerate(x) + index) * step + start; }); } template <typename Gen>