yat/statistics/Average.h

Code
Comments
Other
Rev Date Author Line
4200 19 Aug 22 peter 1 #ifndef _theplu_yat_statistics_average_
4200 19 Aug 22 peter 2 #define _theplu_yat_statistics_average_
1317 21 May 08 peter 3
1317 21 May 08 peter 4 // $Id$
1317 21 May 08 peter 5
1317 21 May 08 peter 6 /*
2119 12 Dec 09 peter 7   Copyright (C) 2008 Jari Häkkinen, Peter Johansson
4359 23 Aug 23 peter 8   Copyright (C) 2016 Peter Johansson
1317 21 May 08 peter 9
1469 02 Sep 08 peter 10   This file is part of the yat library, http://dev.thep.lu.se/yat
1317 21 May 08 peter 11
1317 21 May 08 peter 12   The yat library is free software; you can redistribute it and/or
1317 21 May 08 peter 13   modify it under the terms of the GNU General Public License as
1486 09 Sep 08 jari 14   published by the Free Software Foundation; either version 3 of the
1317 21 May 08 peter 15   License, or (at your option) any later version.
1317 21 May 08 peter 16
1317 21 May 08 peter 17   The yat library is distributed in the hope that it will be useful,
1317 21 May 08 peter 18   but WITHOUT ANY WARRANTY; without even the implied warranty of
1317 21 May 08 peter 19   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1317 21 May 08 peter 20   General Public License for more details.
1317 21 May 08 peter 21
1317 21 May 08 peter 22   You should have received a copy of the GNU General Public License
1487 10 Sep 08 jari 23   along with yat. If not, see <http://www.gnu.org/licenses/>.
1317 21 May 08 peter 24 */
1317 21 May 08 peter 25
1317 21 May 08 peter 26 #include "averager_traits.h"
3525 11 Oct 16 peter 27 #include "utility.h"
1317 21 May 08 peter 28
1317 21 May 08 peter 29 namespace theplu {
1317 21 May 08 peter 30 namespace yat {
3525 11 Oct 16 peter 31 namespace statistics {
1317 21 May 08 peter 32
1317 21 May 08 peter 33   /**
1317 21 May 08 peter 34      \brief Functor to take average of a range.
1339 06 Jun 08 peter 35
1339 06 Jun 08 peter 36      \since New in yat 0.5
1317 21 May 08 peter 37    */
1317 21 May 08 peter 38   struct Average
1317 21 May 08 peter 39   {
1317 21 May 08 peter 40     /**
1317 21 May 08 peter 41        If range is weighted an AveragerWeighted is used else a Averager.
2809 06 Aug 12 peter 42
1317 21 May 08 peter 43        \return average of range
3525 11 Oct 16 peter 44
3525 11 Oct 16 peter 45        Type Requirements:
3525 11 Oct 16 peter 46        - \c InputIterator is a \readable_iterator
3525 11 Oct 16 peter 47        - \c InputIterator is \single_pass_iterator
1317 21 May 08 peter 48      */
1445 27 Aug 08 peter 49     template<typename InputIterator>
1445 27 Aug 08 peter 50     inline double operator()(InputIterator first, InputIterator last) const
1317 21 May 08 peter 51     {
1445 27 Aug 08 peter 52       typename averager<InputIterator>::type a;
1317 21 May 08 peter 53       add(a, first, last);
1317 21 May 08 peter 54       return a.mean();
1317 21 May 08 peter 55     }
1317 21 May 08 peter 56   };
1317 21 May 08 peter 57
1317 21 May 08 peter 58 }}} // of namespace statistics, yat, and theplu
1317 21 May 08 peter 59
1317 21 May 08 peter 60 #endif