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