Generalized Numeric operations
Algorithms
Collaboration diagram for Generalized Numeric operations:

## Functions

template<typename _InputIterator , typename _Tp >
_Tp | std::accumulate (_InputIterator __first, _InputIterator __last, _Tp __init)
template<typename _InputIterator , typename _Tp , typename _BinaryOperation >
_Tp | std::accumulate (_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOperation __binary_op)
template<typename _InputIterator , typename _OutputIterator >
_OutputIterator | std::adjacent_difference (_InputIterator __first, _InputIterator __last, _OutputIterator __result)
template<typename _InputIterator , typename _OutputIterator , typename _BinaryOperation >
_OutputIterator | std::adjacent_difference (_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOperation __binary_op)
template<typename _InputIterator1 , typename _InputIterator2 , typename _Tp >
_Tp | std::inner_product (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init)
template<typename _InputIterator1 , typename _InputIterator2 , typename _Tp , typename _BinaryOperation1 , typename _BinaryOperation2 >
_Tp | std::inner_product (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init, _BinaryOperation1 __binary_op1, _BinaryOperation2 __binary_op2)
template<typename _ForwardIterator , typename _Tp >
void | std::iota (_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
template<typename _InputIterator , typename _OutputIterator >
_OutputIterator | std::partial_sum (_InputIterator __first, _InputIterator __last, _OutputIterator __result)
template<typename _InputIterator , typename _OutputIterator , typename _BinaryOperation >
_OutputIterator | std::partial_sum (_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOperation __binary_op)

## Detailed Description

## Function Documentation

## accumulate() [1/2]

template<typename _InputIterator , typename _Tp >

_Tp std::accumulate | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Tp | __init
| ) |  |

inline

Accumulate values in a range.

Accumulates the values in the range [first,last) using operator+(). The initial value is init. The values are processed in order.

Parameters

  __first | Start of range.
  __last | End of range.
  __init | Starting value to add other values to.

Returns
  The final sum.

Definition at line 132 of file stl_numeric.h.

Referenced by __gnu_parallel::__parallel_partial_sum_linear().

## accumulate() [2/2]

template<typename _InputIterator , typename _Tp , typename _BinaryOperation >

_Tp std::accumulate | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Tp | __init,
|  | _BinaryOperation | __binary_op
| ) |  |

inline

Accumulate values in a range with operation.

Accumulates the values in the range `[first,last)` using the function object `__binary_op`. The initial value is `__init`. The values are processed in order.

Parameters

  __first | Start of range.
  __last | End of range.
  __init | Starting value to add other values to.
  __binary_op | Function object to accumulate with.

Returns
  The final sum.

Definition at line 158 of file stl_numeric.h.

## adjacent_difference() [1/2]

template<typename _InputIterator , typename _OutputIterator >

_OutputIterator std::adjacent_difference | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _OutputIterator | __result
| ) |  |

Return differences between adjacent values.

Computes the difference between adjacent values in the range [first,last) using operator-() and writes the result to `__result`.

Parameters

  __first | Start of input range.
  __last | End of input range.
  __result | Output sums.

Returns
  Iterator pointing just beyond the values written to result.

_GLIBCXX_RESOLVE_LIB_DEFECTS DR 539. partial_sum and adjacent_difference should mention requirements

Definition at line 330 of file stl_numeric.h.

## adjacent_difference() [2/2]

template<typename _InputIterator , typename _OutputIterator , typename _BinaryOperation >

_OutputIterator std::adjacent_difference | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _OutputIterator | __result,
|  | _BinaryOperation | __binary_op
| ) |  |

Return differences between adjacent values.

Computes the difference between adjacent values in the range [__first,__last) using the function object `__binary_op` and writes the result to `__result`.

Parameters

  __first | Start of input range.
  __last | End of input range.
  __result | Output sum.
  __binary_op | Function object.

Returns
  Iterator pointing just beyond the values written to result.

_GLIBCXX_RESOLVE_LIB_DEFECTS DR 539. partial_sum and adjacent_difference should mention requirements

Definition at line 373 of file stl_numeric.h.

## inner_product() [1/2]

template<typename _InputIterator1 , typename _InputIterator2 , typename _Tp >

_Tp std::inner_product | ( | _InputIterator1 | __first1,
|  | _InputIterator1 | __last1,
|  | _InputIterator2 | __first2,
|  | _Tp | __init
| ) |  |

inline

Compute inner product of two ranges.

Starting with an initial value of `__init`, multiplies successive elements from the two ranges and adds each product into the accumulated value using operator+(). The values in the ranges are processed in order.

Parameters

  __first1 | Start of range 1.
  __last1 | End of range 1.
  __first2 | Start of range 2.
  __init | Starting value to add other values to.

Returns
  The final inner product.

Definition at line 186 of file stl_numeric.h.

## inner_product() [2/2]

template<typename _InputIterator1 , typename _InputIterator2 , typename _Tp , typename _BinaryOperation1 , typename _BinaryOperation2 >

_Tp std::inner_product | ( | _InputIterator1 | __first1,
|  | _InputIterator1 | __last1,
|  | _InputIterator2 | __first2,
|  | _Tp | __init,
|  | _BinaryOperation1 | __binary_op1,
|  | _BinaryOperation2 | __binary_op2
| ) |  |

inline

Compute inner product of two ranges.

Starting with an initial value of `__init`, applies `__binary_op2` to successive elements from the two ranges and accumulates each result into the accumulated value using `__binary_op1`. The values in the ranges are processed in order.

Parameters

  __first1 | Start of range 1.
  __last1 | End of range 1.
  __first2 | Start of range 2.
  __init | Starting value to add other values to.
  __binary_op1 | Function object to accumulate with.
  __binary_op2 | Function object to apply to pairs of input values.

Returns
  The final inner product.

Definition at line 218 of file stl_numeric.h.

## iota()

template<typename _ForwardIterator , typename _Tp >

void std::iota | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last,
|  | _Tp | __value
| ) |  |

Create a range of sequentially increasing values.

For each element in the range ``[first,last) assigns `value` and increments `value` as if by `++value`.

Parameters

  __first | Start of range.
  __last | End of range.
  __value | Starting value.

Returns
  Nothing.

Definition at line 87 of file stl_numeric.h.

## partial_sum() [1/2]

template<typename _InputIterator , typename _OutputIterator >

_OutputIterator std::partial_sum | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _OutputIterator | __result
| ) |  |

Return list of partial sums.

Accumulates the values in the range [first,last) using the `+` operator. As each successive input value is added into the total, that partial sum is written to `__result`. Therefore, the first value in `__result` is the first value of the input, the second value in `__result` is the sum of the first and second input values, and so on.

Parameters

  __first | Start of input range.
  __last | End of input range.
  __result | Output sum.

Returns
  Iterator pointing just beyond the values written to __result.

Definition at line 250 of file stl_numeric.h.

Referenced by __gnu_parallel::__parallel_random_shuffle_drs_pu(), and __gnu_parallel::__sequential_random_shuffle().

## partial_sum() [2/2]

template<typename _InputIterator , typename _OutputIterator , typename _BinaryOperation >

_OutputIterator std::partial_sum | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _OutputIterator | __result,
|  | _BinaryOperation | __binary_op
| ) |  |

Return list of partial sums.

Accumulates the values in the range [first,last) using `__binary_op`. As each successive input value is added into the total, that partial sum is written to `__result`. Therefore, the first value in `__result` is the first value of the input, the second value in `__result` is the sum of the first and second input values, and so on.

Parameters

  __first | Start of input range.
  __last | End of input range.
  __result | Output sum.
  __binary_op | Function object.

Returns
  Iterator pointing just beyond the values written to __result.

Definition at line 291 of file stl_numeric.h.