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