Skip to content

Commit 0ee1a8e

Browse files
committed
add 'transform', 'accumulate' wrappers
1 parent 5e61e85 commit 0ee1a8e

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

inst/include/RcppParallel/simd/algorithm.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,24 @@
33

44
namespace RcppParallel {
55

6+
template <typename T, typename U, typename UnOp>
7+
U* simdTransform(const T* begin, const T* end, U* out, Unop&& f)
8+
{
9+
return boost::simd::transform(begin, end, out, std::forward<UnOp>(f));
10+
}
11+
12+
template <typename T1, typename T2, typename U, typename BinOp>
13+
U* simdTransform(const T1* begin1, const T1* end1, const T2* begin2, U* out, BinOp&& f)
14+
{
15+
return boost::simd::transform(begin1, end1, begin2, out, std::forward<BinOp>(f));
16+
}
17+
18+
template <typename T, typename U, typename F>
19+
U simdAccumulate(const T* begin, const T* end, U init, F&& f)
20+
{
21+
return boost::simd::accumulate(begin, end, init, std::forward<F>(f));
22+
}
23+
624
template <typename T, typename F>
725
F simdFor(const T* it, const T* end, F&& f)
826
{

0 commit comments

Comments
 (0)