| Home | Libraries | People | FAQ | More

## Function template exclusive_scan

boost::compute::exclusive_scan

## Synopsis

    // In header: <boost/compute/algorithm/exclusive_scan.hpp>

    template<typename InputIterator, typename OutputIterator, typename T,
             typename BinaryOperator>
      OutputIterator
      exclusive_scan(InputIterator first, InputIterator last,
                     OutputIterator result, T init, BinaryOperator binary_op,
                     command_queue & queue = system::default_queue());

## Description

Performs an exclusive scan of the elements in the range [`first`, `last`) and stores the results in the range beginning at `result`.

Each element in the output is assigned to the sum of all the previous values in the input.

The default operation is to add the elements up.

But different associative operation can be specified as `binary_op` instead (e.g., multiplication, maximum, minimum). Also value used to initialized the scan sequence can be specified.

Space complexity on GPUs: \Omega(n)
Space complexity on GPUs when `first` == `result:` \Omega(2n)
Space complexity on CPUs: \Omega(1)

See Also: inclusive_scan()

Parameters: |
`first` | first element in the range to scan
`last` | last element in the range to scan
`result` | first element in the result range
`init` | value used to initialize the scan sequence
`binary_op` | associative binary operator
`queue` | command queue to perform the operation
Returns: | `OutputIterator` to the end of the result range