yat/statistics/Averager3.h

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