yat/statistics/Averager1.h

Code
Comments
Other
Rev Date Author Line
2810 07 Aug 12 peter 1 #ifndef _theplu_yat_statistics_averager1
2810 07 Aug 12 peter 2 #define _theplu_yat_statistics_averager1
2810 07 Aug 12 peter 3
2810 07 Aug 12 peter 4 // $Id$
2810 07 Aug 12 peter 5
2810 07 Aug 12 peter 6 /*
2810 07 Aug 12 peter 7   Copyright (C) 2012 Peter Johansson
2810 07 Aug 12 peter 8
2810 07 Aug 12 peter 9   This file is part of the yat library, http://dev.thep.lu.se/yat
2810 07 Aug 12 peter 10
2810 07 Aug 12 peter 11   The yat library is free software; you can redistribute it and/or
2810 07 Aug 12 peter 12   modify it under the terms of the GNU General Public License as
2810 07 Aug 12 peter 13   published by the Free Software Foundation; either version 3 of the
2810 07 Aug 12 peter 14   License, or (at your option) any later version.
2810 07 Aug 12 peter 15
2810 07 Aug 12 peter 16   The yat library is distributed in the hope that it will be useful,
2810 07 Aug 12 peter 17   but WITHOUT ANY WARRANTY; without even the implied warranty of
2810 07 Aug 12 peter 18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2810 07 Aug 12 peter 19   General Public License for more details.
2810 07 Aug 12 peter 20
2810 07 Aug 12 peter 21   You should have received a copy of the GNU General Public License
2810 07 Aug 12 peter 22   along with yat. If not, see <http://www.gnu.org/licenses/>.
2810 07 Aug 12 peter 23 */
2810 07 Aug 12 peter 24
2810 07 Aug 12 peter 25 #include "averager_base.h"
2810 07 Aug 12 peter 26
2810 07 Aug 12 peter 27 namespace theplu {
2810 07 Aug 12 peter 28 namespace yat {
2810 07 Aug 12 peter 29 namespace statistics {
2810 07 Aug 12 peter 30
2810 07 Aug 12 peter 31   /**
2810 07 Aug 12 peter 32      \brief class to calculate mean
2810 07 Aug 12 peter 33
2810 07 Aug 12 peter 34      \since yat 0.9
2810 07 Aug 12 peter 35    */
2810 07 Aug 12 peter 36   class Averager1 : public averager_base<Averager1>
2810 07 Aug 12 peter 37   {
2810 07 Aug 12 peter 38   public:
2810 07 Aug 12 peter 39     /**
2810 07 Aug 12 peter 40        \brief construct empty object
2810 07 Aug 12 peter 41      */
2810 07 Aug 12 peter 42     Averager1(void);
2810 07 Aug 12 peter 43
2810 07 Aug 12 peter 44     /**
2810 07 Aug 12 peter 45        \brief plus and assign operator
2810 07 Aug 12 peter 46      */
2810 07 Aug 12 peter 47     template<class Derived>
2810 07 Aug 12 peter 48     const Averager1& operator+=(const averager_base<Derived>& rhs);
2810 07 Aug 12 peter 49   private:
2810 07 Aug 12 peter 50     friend class averager_base<Averager1>;
2810 07 Aug 12 peter 51     // static virtual function in averager_base
2810 07 Aug 12 peter 52     void add_impl(double, long int n);
2810 07 Aug 12 peter 53     void rescale_impl(double);
2810 07 Aug 12 peter 54
2810 07 Aug 12 peter 55     // using compiler generated copy and assignment
2810 07 Aug 12 peter 56     // Averager1(const Averager1&)
2810 07 Aug 12 peter 57     // Averager1& operator=(const Averager1& rhs);
2810 07 Aug 12 peter 58   };
2810 07 Aug 12 peter 59
2810 07 Aug 12 peter 60
2810 07 Aug 12 peter 61   template<class Derived>
2810 07 Aug 12 peter 62   const Averager1& Averager1::operator+=(const averager_base<Derived>& rhs)
2810 07 Aug 12 peter 63   {
2810 07 Aug 12 peter 64     this->add1(rhs.mean(), rhs.n());
2810 07 Aug 12 peter 65     return *this;
2810 07 Aug 12 peter 66   }
2810 07 Aug 12 peter 67
2810 07 Aug 12 peter 68 }}} // of namespace statistics, yat, and theplu
2810 07 Aug 12 peter 69 #endif