Numerics

Numeric utilities. More...

## Classes

struct | ranges::accumulate_fn
struct | ranges::adjacent_difference_fn
struct | ranges::inner_product_fn
struct | ranges::iota_fn
struct | ranges::partial_sum_fn

## Typedefs

template<typename I , typename O >
using | ranges::adjacent_difference_result = detail::in_out_result< I, O >
template<typename I , typename O >
using | ranges::partial_sum_result = detail::in_out_result< I, O >

## Variables

constexpr accumulate_fn | ranges::accumulate {}
constexpr adjacent_difference_fn | ranges::adjacent_difference {}

concept invocable< P1 &, iter_value_t< I1 > > &&invocable< P2 &, iter_value_t< I2 > > &&invocable< BOp2 &, invoke_result_t< P1 &, iter_value_t< I1 > >, invoke_result_t< P2 &, iter_value_t< I2 > > > &&invocable< BOp1 &, T, invoke_result_t< BOp2 &, invoke_result_t< P1 &, iter_value_t< I1 > >, invoke_result_t< P2 &, iter_value_t< I2 > > > > &&

ranges::assignable_from< T &, invoke_result_t< BOp1 &, T, invoke_result_t< BOp2 &, invoke_result_t< P1 &, iter_value_t< I1 > >, invoke_result_t< P2 &, iter_value_t< I2 > > > > >

template<typename I , typename O , typename BOp = minus, typename P = identity>
concept | ranges::ddifferenceable
| \concept differenceable More...
concept | ranges::differenceable_ =
template<typename I , typename BOp >
concept | ranges::iindirect_semigroup
| \concept indirect_semigroup More...
template<typename I1 , typename I2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>
concept | ranges::iinner_product_constraints
| \concept inner_product_constraints More...
concept | ranges::indirect_semigroup_ =
concept copyable< iter_value_t< I > > && | ranges::indirectly_regular_binary_invocable_< composed< coerce< iter_value_t< I > >, BOp >, iter_value_t< I > *, I >
constexpr inner_product_fn | ranges::inner_product {}
concept | ranges::inner_product_constraints_ =
constexpr iota_fn | ranges::iota {}

concept invocable< P &, iter_value_t< I > > &&copy_constructible< uncvref_t< invoke_result_t< P &, iter_value_t< I > > > > &&movable< uncvref_t< invoke_result_t< P &, iter_value_t< I > > > > &&output_iterator< O, invoke_result_t< P &, iter_value_t< I > > > &&invocable< BOp &, invoke_result_t< P &, iter_value_t< I > >, invoke_result_t< P &, iter_value_t< I > > > &&

ranges::output_iterator< O, invoke_result_t< BOp &, invoke_result_t< P &, iter_value_t< I > >, invoke_result_t< P &, iter_value_t< I > > > >

constexpr partial_sum_fn | ranges::partial_sum {}
concept | ranges::partial_sum_constraints_ =
template<typename I , typename O , typename BOp = plus, typename P = identity>
concept | ranges::ppartial_sum_constraints
| \concept partial_sum_constraints More...
template<typename Gen >
concept | ranges::uniform_random_bit_generator_ = requires( ) { Gen::min(), Gen::max() ; }
| \concept uniform_random_bit_generator_ More...
template<typename Gen >
concept | ranges::uuniform_random_bit_generator
| \concept uniform_random_bit_generator More...

## Detailed Description

Numeric utilities.

## Variable Documentation

## ddifferenceable

template<typename I , typename O , typename BOp = minus, typename P = identity>

concept ranges::ddifferenceable

`#include <range/v3/numeric/adjacent_difference.hpp>`

Initial value:
=
input_iterator<I> &&
ranges::differenceable_ < I, O, BOp, P >

\concept differenceable

The `differenceable` concept

## iindirect_semigroup

template<typename I , typename BOp >

concept ranges::iindirect_semigroup

`#include <range/v3/numeric/partial_sum.hpp>`

Initial value:
=
indirectly_readable<I> &&
ranges::indirect_semigroup_ < I, BOp >

\concept indirect_semigroup

The `indirect_semigroup` concept

## iinner_product_constraints

template<typename I1 , typename I2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>

concept ranges::iinner_product_constraints

`#include <range/v3/numeric/inner_product.hpp>`

Initial value:
=
input_iterator<I1> &&
input_iterator<I2> &&
ranges::inner_product_constraints_ < I1, I2, T, BOp1, BOp2, P1, P2 >

\concept inner_product_constraints

The `inner_product_constraints` concept

## ppartial_sum_constraints

template<typename I , typename O , typename BOp = plus, typename P = identity>

concept ranges::ppartial_sum_constraints

`#include <range/v3/numeric/partial_sum.hpp>`

Initial value:
=
input_iterator<I> &&
ranges::partial_sum_constraints_ < I, O, BOp, P >

\concept partial_sum_constraints

The `partial_sum_constraints` concept

## uniform_random_bit_generator_

template<typename Gen >

concept ranges::uniform_random_bit_generator_ = requires( ) { Gen::min(), Gen::max() ; }

`#include <range/v3/utility/random.hpp>`

\concept uniform_random_bit_generator_

The `uniform_random_bit_generator_` concept

## uuniform_random_bit_generator

template<typename Gen >

concept ranges::uuniform_random_bit_generator

`#include <range/v3/utility/random.hpp>`

Initial value:
=
invocable<Gen &> &&
ranges::uniform_random_bit_generator_ < Gen > &&
ranges::uniform_random_bit_generator_ < Gen >

\concept uniform_random_bit_generator

The `uniform_random_bit_generator` concept