boost::compute::transform_reduce
// In header: <boost/compute/algorithm/transform_reduce.hpp> template<typename InputIterator, typename OutputIterator, typename UnaryTransformFunction, typename BinaryReduceFunction> void transform_reduce(InputIterator first, InputIterator last, OutputIterator result, UnaryTransformFunction transform_function, BinaryReduceFunction reduce_function, command_queue & queue = system::default_queue()); template<typename InputIterator1, typename InputIterator2, typename OutputIterator, typename BinaryTransformFunction, typename BinaryReduceFunction> void transform_reduce(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryTransformFunction transform_function, BinaryReduceFunction reduce_function, command_queue & queue = system::default_queue());
Transforms each value in the range [first
, last
) with the unary transform_function
and then reduces each transformed value with reduce_function
.
For example, to calculate the sum of the absolute values of a vector of integers:
int sum = 0; boost::compute::transform_reduce( vec.begin(), vec.end(), &sum, abs<int>(), plus<int>(), queue );
See Also:
reduce(), inner_product()