/**
 * @file RunningStat.h
 * @brief B. P. Welford Computation of Mean and Variance download at: http://www.johndcook.com/standard_deviation.html
 * @author Michael Koch
 * @date 18/02/2009
 */
#ifndef RunningStatINCLUDE
#define RunningStatINCLUDE

namespace OBJREC {

/** @brief online statistics */
class RunningStat
{
  public:
    RunningStat() : m_n ( 0 ) {}

    /** clear the current statistics */
    void Clear();

    /** add a new data element */
    void Push ( double x );

    /** get number of data elements */
    size_t NumDataValues() const;

    /** get mean value */
    double Mean() const;

    /** get variance */
    double Variance() const;

    /** get standard deviation */
    double StandardDeviation() const;


  private:
    size_t m_n;
    double m_oldM, m_newM, m_oldS, m_newS;
};

}
#endif

