1289177Speter// -*- C++ -*- 2289177Speter//===-- glue_numeric_defs.h -----------------------------------------------===// 3289177Speter// 4289177Speter// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5289177Speter// See https://llvm.org/LICENSE.txt for license information. 6289177Speter// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7289177Speter// 8289177Speter//===----------------------------------------------------------------------===// 9289177Speter 10289177Speter#ifndef _PSTL_GLUE_NUMERIC_DEFS_H 11289177Speter#define _PSTL_GLUE_NUMERIC_DEFS_H 12289177Speter 13289177Speter#include "execution_defs.h" 14289177Speter 15289177Speternamespace std 16289177Speter{ 17289177Speter// [reduce] 18289177Speter 19289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation> 20289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> 21289177Speterreduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init, 22289177Speter _BinaryOperation __binary_op); 23362181Sdim 24362181Sdimtemplate <class _ExecutionPolicy, class _ForwardIterator, class _Tp> 25289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> 26289177Speterreduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init); 27289177Speter 28289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator> 29289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, 30289177Speter typename iterator_traits<_ForwardIterator>::value_type> 31289177Speterreduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); 32289177Speter 33289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp> 34289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> 35289177Spetertransform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, 36289177Speter _ForwardIterator2 __first2, _Tp __init); 37289177Speter 38289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation1, 39289177Speter class _BinaryOperation2> 40289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> 41289177Spetertransform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, 42289177Speter _ForwardIterator2 __first2, _Tp __init, _BinaryOperation1 __binary_op1, 43289177Speter _BinaryOperation2 __binary_op2); 44289177Speter 45289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation, class _UnaryOperation> 46289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> 47289177Spetertransform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init, 48289177Speter _BinaryOperation __binary_op, _UnaryOperation __unary_op); 49289177Speter 50289177Speter// [exclusive.scan] 51289177Speter 52289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp> 53289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 54289177Speterexclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 55289177Speter _ForwardIterator2 __result, _Tp __init); 56289177Speter 57289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation> 58289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 59289177Speterexclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 60289177Speter _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op); 61289177Speter 62289177Speter// [inclusive.scan] 63289177Speter 64289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> 65289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 66289177Speterinclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 67362181Sdim _ForwardIterator2 __result); 68362181Sdim 69289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation> 70289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 71289177Speterinclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 72289177Speter _ForwardIterator2 __result, _BinaryOperation __binary_op); 73289177Speter 74289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation> 75289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 76289177Speterinclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 77289177Speter _ForwardIterator2 __result, _BinaryOperation __binary_op, _Tp __init); 78289177Speter 79289177Speter// [transform.exclusive.scan] 80289177Speter 81289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation, 82289177Speter class _UnaryOperation> 83289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 84289177Spetertransform_exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 85289177Speter _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op, 86289177Speter _UnaryOperation __unary_op); 87289177Speter 88289177Speter// [transform.inclusive.scan] 89289177Speter 90289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation, 91289177Speter class _UnaryOperation, class _Tp> 92289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 93289177Spetertransform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 94289177Speter _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op, 95289177Speter _Tp __init); 96289177Speter 97289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _UnaryOperation, 98289177Speter class _BinaryOperation> 99289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 100289177Spetertransform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 101289177Speter _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op); 102289177Speter 103289177Speter// [adjacent.difference] 104289177Speter 105289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation> 106289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 107289177Speteradjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 108289177Speter _ForwardIterator2 __d_first, _BinaryOperation op); 109289177Speter 110289177Spetertemplate <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> 111289177Speter__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> 112289177Speteradjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, 113289177Speter _ForwardIterator2 __d_first); 114289177Speter 115289177Speter} // namespace std 116289177Speter#endif /* _PSTL_GLUE_NUMERIC_DEFS_H */ 117289177Speter