numericfwd.h

Go to the documentation of this file.
00001 // <numeric> parallel extensions -*- C++ -*-
00002 
00003 // Copyright (C) 2007, 2008 Free Software Foundation, Inc.
00004 //
00005 // This file is part of the GNU ISO C++ Library.  This library is free
00006 // software; you can redistribute it and/or modify it under the terms
00007 // of the GNU General Public License as published by the Free Software
00008 // Foundation; either version 2, or (at your option) any later
00009 // version.
00010 
00011 // This library is distributed in the hope that it will be useful, but
00012 // WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // General Public License for more details.
00015 
00016 // You should have received a copy of the GNU General Public License
00017 // along with this library; see the file COPYING.  If not, write to
00018 // the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
00019 // MA 02111-1307, USA.
00020 
00021 // As a special exception, you may use this file as part of a free
00022 // software library without restriction.  Specifically, if other files
00023 // instantiate templates or use macros or inline functions from this
00024 // file, or you compile this file and link it with other files to
00025 // produce an executable, this file does not by itself cause the
00026 // resulting executable to be covered by the GNU General Public
00027 // License.  This exception does not however invalidate any other
00028 // reasons why the executable file might be covered by the GNU General
00029 // Public License.
00030 
00031 /** @file parallel/numericfwd.h
00032  *  This file is a GNU parallel extension to the Standard C++ Library.
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 } // end namespace
00207 } // end namespace
00208 
00209 #endif

Generated on Sat Dec 12 09:40:12 2009 for libstdc++ by  doxygen 1.5.6