Range-v3
Range algorithms, views, and actions for the Standard Library
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 >
 

Functions

concept() ranges::differenceable_ (I, O, BOp, P)
 
concept() ranges::indirect_semigroup_ (I, BOp)
 
concept() ranges::inner_product_constraints_ (I1, I2, T, BOp1, BOp2, P1, P2)
 
concept() ranges::partial_sum_constraints_ (I, O, BOp, P)
 
concept() ranges::uniform_random_bit_generator_ (Gen)
 

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::differenceable
 
template<typename I , typename BOp >
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 {}
 
template<typename I1 , typename I2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>
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 {}
 
template<typename I , typename O , typename BOp = plus, typename P = identity>
concept ranges::partial_sum_constraints
 
template<typename Gen >
concept ranges::uniform_random_bit_generator
 
template<typename Gen >
concept ranges::uniform_random_bit_generator__requires_ = CPP_REQUIRES_requires ` () ( Gen::min(), Gen::max() )
 

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 >