xref: /netbsd-src/external/gpl3/gcc.old/dist/libstdc++-v3/include/pstl/glue_numeric_defs.h (revision 4c3eb207d36f67d31994830c0a694161fc1ca39b)
1627f7eb2Smrg // -*- C++ -*-
2627f7eb2Smrg //===-- glue_numeric_defs.h -----------------------------------------------===//
3627f7eb2Smrg //
4627f7eb2Smrg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5627f7eb2Smrg // See https://llvm.org/LICENSE.txt for license information.
6627f7eb2Smrg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7627f7eb2Smrg //
8627f7eb2Smrg //===----------------------------------------------------------------------===//
9627f7eb2Smrg 
10*4c3eb207Smrg #ifndef _PSTL_GLUE_NUMERIC_DEFS_H
11*4c3eb207Smrg #define _PSTL_GLUE_NUMERIC_DEFS_H
12627f7eb2Smrg 
13627f7eb2Smrg #include "execution_defs.h"
14627f7eb2Smrg 
15627f7eb2Smrg namespace std
16627f7eb2Smrg {
17627f7eb2Smrg // [reduce]
18627f7eb2Smrg 
19627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation>
20627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
21627f7eb2Smrg reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init,
22627f7eb2Smrg        _BinaryOperation __binary_op);
23627f7eb2Smrg 
24627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
25627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
26627f7eb2Smrg reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init);
27627f7eb2Smrg 
28627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator>
29627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy,
30627f7eb2Smrg                                                  typename iterator_traits<_ForwardIterator>::value_type>
31627f7eb2Smrg reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
32627f7eb2Smrg 
33627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp>
34627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
35627f7eb2Smrg transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
36627f7eb2Smrg                  _ForwardIterator2 __first2, _Tp __init);
37627f7eb2Smrg 
38627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation1,
39627f7eb2Smrg           class _BinaryOperation2>
40627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
41627f7eb2Smrg transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
42627f7eb2Smrg                  _ForwardIterator2 __first2, _Tp __init, _BinaryOperation1 __binary_op1,
43627f7eb2Smrg                  _BinaryOperation2 __binary_op2);
44627f7eb2Smrg 
45627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation, class _UnaryOperation>
46627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
47627f7eb2Smrg transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init,
48627f7eb2Smrg                  _BinaryOperation __binary_op, _UnaryOperation __unary_op);
49627f7eb2Smrg 
50627f7eb2Smrg // [exclusive.scan]
51627f7eb2Smrg 
52627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp>
53627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
54627f7eb2Smrg exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
55627f7eb2Smrg                _ForwardIterator2 __result, _Tp __init);
56627f7eb2Smrg 
57627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation>
58627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
59627f7eb2Smrg exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
60627f7eb2Smrg                _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op);
61627f7eb2Smrg 
62627f7eb2Smrg // [inclusive.scan]
63627f7eb2Smrg 
64627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
65627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
66627f7eb2Smrg inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
67627f7eb2Smrg                _ForwardIterator2 __result);
68627f7eb2Smrg 
69627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation>
70627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
71627f7eb2Smrg inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
72627f7eb2Smrg                _ForwardIterator2 __result, _BinaryOperation __binary_op);
73627f7eb2Smrg 
74627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation>
75627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
76627f7eb2Smrg inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
77627f7eb2Smrg                _ForwardIterator2 __result, _BinaryOperation __binary_op, _Tp __init);
78627f7eb2Smrg 
79627f7eb2Smrg // [transform.exclusive.scan]
80627f7eb2Smrg 
81627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation,
82627f7eb2Smrg           class _UnaryOperation>
83627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
84627f7eb2Smrg transform_exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
85627f7eb2Smrg                          _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op,
86627f7eb2Smrg                          _UnaryOperation __unary_op);
87627f7eb2Smrg 
88627f7eb2Smrg // [transform.inclusive.scan]
89627f7eb2Smrg 
90627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation,
91627f7eb2Smrg           class _UnaryOperation, class _Tp>
92627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
93627f7eb2Smrg transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
94627f7eb2Smrg                          _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op,
95627f7eb2Smrg                          _Tp __init);
96627f7eb2Smrg 
97627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _UnaryOperation,
98627f7eb2Smrg           class _BinaryOperation>
99627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
100627f7eb2Smrg transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
101627f7eb2Smrg                          _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op);
102627f7eb2Smrg 
103627f7eb2Smrg // [adjacent.difference]
104627f7eb2Smrg 
105627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation>
106627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
107627f7eb2Smrg adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
108627f7eb2Smrg                     _ForwardIterator2 __d_first, _BinaryOperation op);
109627f7eb2Smrg 
110627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
111627f7eb2Smrg __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
112627f7eb2Smrg adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
113627f7eb2Smrg                     _ForwardIterator2 __d_first);
114627f7eb2Smrg 
115627f7eb2Smrg } // namespace std
116*4c3eb207Smrg #endif /* _PSTL_GLUE_NUMERIC_DEFS_H */
117