C++
 Language Standard library headers Concepts Utilities library Strings library Containers library Algorithms library Iterators library Numerics library Input/output library Localizations library Regular expressions library (C++11) Atomic operations library (C++11) Thread support library (C++11) Filesystem library (C++17) Technical Specifications

Language Support
Diagnostics
General utilities
Strings
Localization
Containers
Iterators
<iterator>
Algorithms
Numerics

Input/Output
Regular expressions
<regex>
C compatibility

This header is part of the numeric library.

### Functions

 iota(C++11) fills a range with successive increments of the starting value (function template) accumulate sums up a range of elements (function template) reduce(C++17) similar to std::accumulate, except out of order (function template) transform_reduce(C++17) applies a functor, then reduces out of order (function template) inner_product computes the inner product of two ranges of elements (function template) adjacent_difference computes the differences between adjacent elements in a range (function template) partial_sum computes the partial sum of a range of elements (function template) inclusive_scan(C++17) similar to std::partial_sum, includes the ith input element in the ith sum (function template) exclusive_scan(C++17) similar to std::partial_sum, excludes the ith input element from the ith sum (function template) transform_inclusive_scan(C++17) applies a functor, then calculates inclusive scan (function template) transform_exclusive_scan(C++17) applies a functor, then calculates exclusive scan (function template) gcd(C++17) `constexpr` function template returning the greatest common divisor of two integers (function template) lcm(C++17) `constexpr` function template returning the least common multiple of two integers (function template)

### Synopsis

```namespace std {
template <class InputIterator, class T>
T accumulate(InputIterator first, InputIterator last, T init);
template <class InputIterator, class T, class BinaryOperation>
T accumulate(InputIterator first, InputIterator last, T init,
BinaryOperation binary_op);

template <class InputIterator1, class InputIterator2, class T>
T inner_product(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, T init);
template <class InputIterator1, class InputIterator2, class T,
class BinaryOperation1, class BinaryOperation2>
T inner_product(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, T init,
BinaryOperation1 binary_op1,
BinaryOperation2 binary_op2);

template <class InputIterator, class OutputIterator>
OutputIterator partial_sum(InputIterator first,
InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator,
class BinaryOperation>
OutputIterator partial_sum(InputIterator first,
InputIterator last,
OutputIterator result,
BinaryOperation binary_op);
template <class InputIterator, class OutputIterator>