57#define _STL_NUMERIC_H 1
63#if __cplusplus >= 201103L
65namespace std _GLIBCXX_VISIBILITY(default)
67_GLIBCXX_BEGIN_NAMESPACE_VERSION
80 template<
typename _ForwardIterator,
typename _Tp>
85 __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
87 __glibcxx_function_requires(_ConvertibleConcept<_Tp,
88 typename iterator_traits<_ForwardIterator>::value_type>)
89 __glibcxx_requires_valid_range(__first, __last);
91 for (; __first != __last; ++__first)
98_GLIBCXX_END_NAMESPACE_VERSION
103namespace std _GLIBCXX_VISIBILITY(default)
105_GLIBCXX_BEGIN_NAMESPACE_ALGO
118 template<
typename _InputIterator,
typename _Tp>
124 __glibcxx_requires_valid_range(__first, __last);
126 for (; __first != __last; ++__first)
127 __init = __init + *__first;
144 template<
typename _InputIterator,
typename _Tp,
typename _BinaryOperation>
151 __glibcxx_requires_valid_range(__first, __last);
153 for (; __first != __last; ++__first)
172 template<
typename _InputIterator1,
typename _InputIterator2,
typename _Tp>
203 template<
typename _InputIterator1,
typename _InputIterator2,
typename _Tp,
204 typename _BinaryOperation1,
typename _BinaryOperation2>
235 template<
typename _InputIterator,
typename _OutputIterator>
240 typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
244 __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
246 __glibcxx_requires_valid_range(__first, __last);
248 if (__first == __last)
250 _ValueType __value = *__first;
252 while (++__first != __last)
254 __value = __value + *__first;
275 template<
typename _InputIterator,
typename _OutputIterator,
276 typename _BinaryOperation>
281 typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
285 __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
287 __glibcxx_requires_valid_range(__first, __last);
289 if (__first == __last)
291 _ValueType __value = *__first;
293 while (++__first != __last)
315 template<
typename _InputIterator,
typename _OutputIterator>
320 typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
324 __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
326 __glibcxx_requires_valid_range(__first, __last);
328 if (__first == __last)
330 _ValueType __value = *__first;
332 while (++__first != __last)
334 _ValueType
__tmp = *__first;
336 __value = _GLIBCXX_MOVE(
__tmp);
357 template<
typename _InputIterator,
typename _OutputIterator,
358 typename _BinaryOperation>
363 typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
367 __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
369 __glibcxx_requires_valid_range(__first, __last);
371 if (__first == __last)
373 _ValueType __value = *__first;
375 while (++__first != __last)
377 _ValueType
__tmp = *__first;
379 __value = _GLIBCXX_MOVE(
__tmp);
384_GLIBCXX_END_NAMESPACE_ALGO
ISO C++ entities toplevel namespace is std.
_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init)
Compute inner product of two ranges.
_OutputIterator partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
Return list of partial sums.
_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
Accumulate values in a range.
_OutputIterator adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
Return differences between adjacent values.
void iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
Create a range of sequentially increasing values.