52 TFilterIterator filterBeg,
54 TOutputIterator resBeg,
55 bool circular =
false,
59 typedef typename std::iterator_traits<TOutputIterator>::value_type TReal;
62 throw std::logic_error(
"filter size must be odd");
68 size_t offset =
static_cast<size_t>(fsize/2);
69 for(std::size_t i = 0 ; i< offset; ++i, ++resBeg)
71 *resBeg = std::numeric_limits<TReal>::quiet_NaN();
74 for( ; dataBeg != dataEnd - (fsize -1) ; ++dataBeg, ++resBeg )
76 *resBeg = (std::inner_product(dataBeg , dataBeg + fsize, filterBeg ,0. ));
82 std::vector<typename std::iterator_traits<TIterator>::value_type> tmp;
83 typename std::vector<typename std::iterator_traits<TIterator>::value_type>::iterator it;
86 TIterator tbegin = tmp.begin();
89 for( ; tbegin != tend - (fsize-1 ) ; ++tbegin, ++resBeg )
91 *resBeg = std::inner_product(tbegin , tbegin + fsize, filterBeg ,0. );