Range-v3 Range algorithms, views, and actions for the Standard Library |

Classes | Typedefs | Variables
Numerics

## Description

Numeric utilities.

## 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 {}
template<typename I , typename O , typename BOp = minus, typename P = identity>
concept | ranges::differenceable
template<typename I , typename O , typename BOp , typename P >
concept | ranges::differenceable__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>>> && output_iterator< O, invoke_result_t< BOp&, invoke_result_t<P&, iter_value_t<I>>, invoke_result_t<P&, iter_value_t<I>>>>
template<typename I , typename BOp >
concept | ranges::indirect_semigroup
template<typename I , typename BOp >
concept | ranges::indirect_semigroup__concept_ = copyable<iter_value_t<I>> && indirectly_regular_binary_invocable_< composed<coerce<iter_value_t<I>>, BOp>, iter_value_t<I>*, I>
constexpr inner_product_fn | ranges::inner_product {}
template<typename I1 , typename I2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>
concept | ranges::inner_product_constraints
template<typename I1 , typename I2 , typename T , typename BOp1 , typename BOp2 , typename P1 , typename P2 >
concept | ranges::inner_product_constraints__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>>>> && 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>>>>>
constexpr iota_fn | ranges::iota {}
constexpr partial_sum_fn | ranges::partial_sum {}
template<typename I , typename O , typename BOp = plus, typename P = identity>
concept | ranges::partial_sum_constraints
template<typename I , typename O , typename BOp , typename P >
concept | ranges::partial_sum_constraints__concept_ = indirect_semigroup< projected<projected<I, detail::as_value_type_t<I>>, P>, BOp> && output_iterator< O, iter_value_t< projected<projected<I, detail::as_value_type_t<I>>, P>> const &>
template<typename Gen >
concept | ranges::uniform_random_bit_generator
template<typename Gen >
concept | ranges::uniform_random_bit_generator__requires_

## Variable Documentation

## ◆ differenceable

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

concept ranges::differenceable

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

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

## ◆ indirect_semigroup

template<typename I , typename BOp >

concept ranges::indirect_semigroup

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

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

## ◆ inner_product_constraints

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

concept ranges::inner_product_constraints

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

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

## ◆ partial_sum_constraints

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

concept ranges::partial_sum_constraints

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

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

## ◆ uniform_random_bit_generator

template<typename Gen >

concept ranges::uniform_random_bit_generator

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

Initial value:
=
invocable<Gen &> &&
ranges::uniform_random_bit_generator__requires_<Gen> &&
ranges::uniform_random_bit_generator__concept_<Gen>

## ◆ uniform_random_bit_generator__requires_

template<typename Gen >

concept ranges::uniform_random_bit_generator__requires_

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

Initial value:
= CPP_REQUIRES_requires `()
template<typename Gen > concept uniform_random_bit_generator__concept_ = unsigned_integral<invoke_result_t<Gen &>> && same_as<invoke_result_t<Gen &>, decltype(Gen::min())> && same_as<invoke_result_t<Gen &>, decltype(Gen::max())>