# 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