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

 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename I, typename O, typename BOp=minus, typename P=identity)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 
 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename I1, typename I2, typename T, typename BOp1=plus, typename BOp2=multiplies, typename P1=identity, typename P2=identity)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 
 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename I, typename BOp)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 
 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename I, typename O, typename BOp=plus, typename P=identity)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 
 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename Gen)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 

Variables

constexpr accumulate_fn ranges::accumulate {}
 
constexpr adjacent_difference_fn ranges::adjacent_difference {}
 
concept ranges::differenceable = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( input_iterator<I> && invocable<P& )( input_iterator<I> && 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>>>> )
 
concept ranges::indirect_semigroup = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( readable<I> && copyable<iter_value_t<I>> && indirectly_regular_binary_invocable_< composed<coerce<iter_value_t<I>> )( readable<I> && 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 {}
 
concept ranges::inner_product_constraints = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( input_iterator<I1> && input_iterator<I2> && invocable<P1& )( input_iterator<I1> && input_iterator<I2> && 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 {}
 
concept ranges::partial_sum_constraints = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( input_iterator<I> && indirect_semigroup< projected<projected<I )( input_iterator<I> && 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 &> )
 
concept ranges::uniform_random_bit_generator = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires(int) ( Gen::min(), Gen::max(), concepts::requires_<same_as<invoke_result_t<Gen&>, decltype(Gen::min())>>, concepts::requires_<same_as<invoke_result_t<Gen&>, decltype(Gen::max())>> ) && invocable<Gen &> && unsigned_integral<invoke_result_t<Gen&>> )( requires(int) ( Gen::min(), Gen::max(), concepts::requires_<same_as<invoke_result_t<Gen&>, decltype(Gen::min())>>, concepts::requires_<same_as<invoke_result_t<Gen&>, decltype(Gen::max())>> ) && invocable<Gen &> && unsigned_integral<invoke_result_t<Gen&>> )