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);
00087 
00088   template<typename _IIter, typename _OIter>
00089     _OIter
00090     adjacent_difference(_IIter, _IIter, _OIter);
00091 
00092   template<typename _IIter, typename _OIter, typename _BinaryOper>
00093     _OIter
00094     adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper);
00095 
00096   template<typename _IIter, typename _OIter>
00097     _OIter
00098     adjacent_difference(_IIter, _IIter, _OIter,
00099             __gnu_parallel::sequential_tag);
00100 
00101   template<typename _IIter, typename _OIter, typename _BinaryOper>
00102     _OIter
00103     adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper, 
00104             __gnu_parallel::sequential_tag);
00105 
00106   template<typename _IIter, typename _OIter>
00107     _OIter
00108     adjacent_difference(_IIter, _IIter, _OIter,
00109             __gnu_parallel::_Parallelism);
00110 
00111   template<typename _IIter, typename _OIter, typename _BinaryOper>
00112     _OIter
00113     adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper, 
00114             __gnu_parallel::_Parallelism);
00115 
00116   template<typename _IIter, typename _OIter, typename _BinaryOper,
00117        typename _Tag1, typename _Tag2>
00118     _OIter
00119     adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
00120                    _Tag1, _Tag2);
00121 
00122   template<typename _IIter, typename _OIter, typename _BinaryOper>
00123     _OIter
00124     adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper, 
00125                    random_access_iterator_tag, 
00126                    random_access_iterator_tag, 
00127                    __gnu_parallel::_Parallelism);
00128 
00129   template<typename _IIter1, typename _IIter2, typename _Tp>
00130     _Tp
00131     inner_product(_IIter1, _IIter1, _IIter2, _Tp);
00132 
00133   template<typename _IIter1, typename _IIter2, typename _Tp>
00134     _Tp
00135     inner_product(_IIter1, _IIter1, _IIter2, _Tp,
00136           __gnu_parallel::sequential_tag);
00137 
00138   template<typename _IIter1, typename _IIter2, typename _Tp>
00139     _Tp
00140     inner_product(_IIter1, _IIter1, _IIter2, _Tp,
00141           __gnu_parallel::_Parallelism);
00142 
00143   template<typename _IIter1, typename _IIter2, typename _Tp,
00144        typename _BinaryFunction1, typename _BinaryFunction2>
00145     _Tp
00146     inner_product(_IIter1, _IIter1, _IIter2, _Tp,
00147           _BinaryFunction1, _BinaryFunction2);
00148 
00149   template<typename _IIter1, typename _IIter2, typename _Tp,
00150        typename _BinaryFunction1, typename _BinaryFunction2>
00151     _Tp
00152     inner_product(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
00153           _BinaryFunction2, __gnu_parallel::sequential_tag);
00154 
00155   template<typename _IIter1, typename _IIter2, typename _Tp,
00156        typename BinaryFunction1, typename BinaryFunction2>
00157     _Tp
00158     inner_product(_IIter1, _IIter1, _IIter2, _Tp, BinaryFunction1,
00159           BinaryFunction2, __gnu_parallel::_Parallelism);
00160 
00161   template<typename _RAIter1, typename _RAIter2, typename _Tp,
00162        typename BinaryFunction1, typename BinaryFunction2>
00163     _Tp
00164     inner_product_switch(_RAIter1, _RAIter1, _RAIter2, _Tp, BinaryFunction1, 
00165              BinaryFunction2, random_access_iterator_tag, 
00166              random_access_iterator_tag, 
00167              __gnu_parallel::_Parallelism);
00168 
00169   template<typename _IIter1, typename _IIter2, typename _Tp,
00170        typename _BinaryFunction1, typename _BinaryFunction2,
00171        typename _Tag1, typename _Tag2>
00172     _Tp
00173     inner_product_switch(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1, 
00174              _BinaryFunction2, _Tag1, _Tag2);
00175 
00176 
00177   template<typename _IIter, typename _OIter>
00178     _OIter
00179     partial_sum(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
00180 
00181   template<typename _IIter, typename _OIter, typename _BinaryOper>
00182     _OIter
00183     partial_sum(_IIter, _IIter, _OIter, _BinaryOper,
00184         __gnu_parallel::sequential_tag);
00185 
00186   template<typename _IIter, typename _OIter>
00187     _OIter
00188     partial_sum(_IIter, _IIter, _OIter result);
00189 
00190   template<typename _IIter, typename _OIter, typename _BinaryOper>
00191     _OIter
00192     partial_sum(_IIter, _IIter, _OIter, _BinaryOper);
00193 
00194   template<typename _IIter, typename _OIter, typename _BinaryOper,
00195        typename _Tag1, typename _Tag2>
00196     _OIter
00197     partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper, _Tag1, _Tag2);
00198 
00199   template<typename _IIter, typename _OIter, typename _BinaryOper>
00200     _OIter
00201     partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper,
00202                random_access_iterator_tag, random_access_iterator_tag);
00203 } // end namespace
00204 } // end namespace
00205 
00206 #endif

Generated on Fri Jan 23 20:12:15 2009 for libstdc++ by  doxygen 1.5.6