00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _GLIBCXX_PARALLEL_NUMERICFWD_H
00030 #define _GLIBCXX_PARALLEL_NUMERICFWD_H 1
00031
00032 #pragma GCC system_header
00033
00034 #include <parallel/tags.h>
00035 #include <parallel/settings.h>
00036
00037 namespace std
00038 {
00039 namespace __parallel
00040 {
00041 template<typename _IIter, typename _Tp>
00042 _Tp
00043 accumulate(_IIter, _IIter, _Tp);
00044
00045 template<typename _IIter, typename _Tp>
00046 _Tp
00047 accumulate(_IIter, _IIter, _Tp, __gnu_parallel::sequential_tag);
00048
00049 template<typename _IIter, typename _Tp>
00050 _Tp
00051 accumulate(_IIter, _IIter, _Tp, __gnu_parallel::_Parallelism);
00052
00053 template<typename _IIter, typename _Tp, typename _Tag>
00054 _Tp
00055 accumulate_switch(_IIter, _IIter, _Tp, _Tag);
00056
00057 template<typename _IIter, typename _Tp, typename _BinaryOper>
00058 _Tp
00059 accumulate(_IIter, _IIter, _Tp, _BinaryOper);
00060
00061 template<typename _IIter, typename _Tp, typename _BinaryOper>
00062 _Tp
00063 accumulate(_IIter, _IIter, _Tp, _BinaryOper,
00064 __gnu_parallel::sequential_tag);
00065
00066 template<typename _IIter, typename _Tp, typename _BinaryOper>
00067 _Tp
00068 accumulate(_IIter, _IIter, _Tp, _BinaryOper,
00069 __gnu_parallel::_Parallelism);
00070
00071 template<typename _IIter, typename _Tp, typename _BinaryOper,
00072 typename _Tag>
00073 _Tp
00074 accumulate_switch(_IIter, _IIter, _Tp, _BinaryOper, _Tag);
00075
00076 template<typename _RAIter, typename _Tp, typename _BinaryOper>
00077 _Tp
00078 accumulate_switch(_RAIter, _RAIter, _Tp, _BinaryOper,
00079 random_access_iterator_tag,
00080 __gnu_parallel::_Parallelism parallelism
00081 = __gnu_parallel::parallel_unbalanced);
00082
00083 template<typename _IIter, typename _OIter>
00084 _OIter
00085 adjacent_difference(_IIter, _IIter, _OIter);
00086
00087 template<typename _IIter, typename _OIter, typename _BinaryOper>
00088 _OIter
00089 adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper);
00090
00091 template<typename _IIter, typename _OIter>
00092 _OIter
00093 adjacent_difference(_IIter, _IIter, _OIter,
00094 __gnu_parallel::sequential_tag);
00095
00096 template<typename _IIter, typename _OIter, typename _BinaryOper>
00097 _OIter
00098 adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper,
00099 __gnu_parallel::sequential_tag);
00100
00101 template<typename _IIter, typename _OIter>
00102 _OIter
00103 adjacent_difference(_IIter, _IIter, _OIter,
00104 __gnu_parallel::_Parallelism);
00105
00106 template<typename _IIter, typename _OIter, typename _BinaryOper>
00107 _OIter
00108 adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper,
00109 __gnu_parallel::_Parallelism);
00110
00111 template<typename _IIter, typename _OIter, typename _BinaryOper,
00112 typename _Tag1, typename _Tag2>
00113 _OIter
00114 adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
00115 _Tag1, _Tag2);
00116
00117 template<typename _IIter, typename _OIter, typename _BinaryOper>
00118 _OIter
00119 adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
00120 random_access_iterator_tag,
00121 random_access_iterator_tag,
00122 __gnu_parallel::_Parallelism parallelism
00123 = __gnu_parallel::parallel_unbalanced);
00124
00125 template<typename _IIter1, typename _IIter2, typename _Tp>
00126 _Tp
00127 inner_product(_IIter1, _IIter1, _IIter2, _Tp);
00128
00129 template<typename _IIter1, typename _IIter2, typename _Tp>
00130 _Tp
00131 inner_product(_IIter1, _IIter1, _IIter2, _Tp,
00132 __gnu_parallel::sequential_tag);
00133
00134 template<typename _IIter1, typename _IIter2, typename _Tp>
00135 _Tp
00136 inner_product(_IIter1, _IIter1, _IIter2, _Tp,
00137 __gnu_parallel::_Parallelism);
00138
00139 template<typename _IIter1, typename _IIter2, typename _Tp,
00140 typename _BinaryFunction1, typename _BinaryFunction2>
00141 _Tp
00142 inner_product(_IIter1, _IIter1, _IIter2, _Tp,
00143 _BinaryFunction1, _BinaryFunction2);
00144
00145 template<typename _IIter1, typename _IIter2, typename _Tp,
00146 typename _BinaryFunction1, typename _BinaryFunction2>
00147 _Tp
00148 inner_product(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
00149 _BinaryFunction2, __gnu_parallel::sequential_tag);
00150
00151 template<typename _IIter1, typename _IIter2, typename _Tp,
00152 typename BinaryFunction1, typename BinaryFunction2>
00153 _Tp
00154 inner_product(_IIter1, _IIter1, _IIter2, _Tp, BinaryFunction1,
00155 BinaryFunction2, __gnu_parallel::_Parallelism);
00156
00157 template<typename _RAIter1, typename _RAIter2, typename _Tp,
00158 typename BinaryFunction1, typename BinaryFunction2>
00159 _Tp
00160 inner_product_switch(_RAIter1, _RAIter1, _RAIter2, _Tp, BinaryFunction1,
00161 BinaryFunction2, random_access_iterator_tag,
00162 random_access_iterator_tag,
00163 __gnu_parallel::_Parallelism
00164 = __gnu_parallel::parallel_unbalanced);
00165
00166 template<typename _IIter1, typename _IIter2, typename _Tp,
00167 typename _BinaryFunction1, typename _BinaryFunction2,
00168 typename _Tag1, typename _Tag2>
00169 _Tp
00170 inner_product_switch(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
00171 _BinaryFunction2, _Tag1, _Tag2);
00172
00173
00174 template<typename _IIter, typename _OIter>
00175 _OIter
00176 partial_sum(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
00177
00178 template<typename _IIter, typename _OIter, typename _BinaryOper>
00179 _OIter
00180 partial_sum(_IIter, _IIter, _OIter, _BinaryOper,
00181 __gnu_parallel::sequential_tag);
00182
00183 template<typename _IIter, typename _OIter>
00184 _OIter
00185 partial_sum(_IIter, _IIter, _OIter result);
00186
00187 template<typename _IIter, typename _OIter, typename _BinaryOper>
00188 _OIter
00189 partial_sum(_IIter, _IIter, _OIter, _BinaryOper);
00190
00191 template<typename _IIter, typename _OIter, typename _BinaryOper,
00192 typename _Tag1, typename _Tag2>
00193 _OIter
00194 partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper, _Tag1, _Tag2);
00195
00196 template<typename _IIter, typename _OIter, typename _BinaryOper>
00197 _OIter
00198 partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper,
00199 random_access_iterator_tag, random_access_iterator_tag);
00200 }
00201 }
00202
00203 #endif