#ifndef STATS_VARIANCE_H #define STATS_VARIANCE_H #include "../../Assertions.h" #include "Average.h" namespace Stats { template class Variance { Average avg; Average avg2; public: /** ctor */ Variance() { ; } /** contains valid data? */ bool isValid() const { return avg.isValid(); } /** add a new value */ void add(const Scalar val) { avg.add(val); avg2.add(val*val); } /** get the current variance */ Scalar get() const { Assert::isTrue(avg.isValid(), "add() values first!"); return avg2.get() - (avg.get()*avg.get()); } /** get the current stadard-deviation */ Scalar getStdDev() const { return std::sqrt(get()); } }; } #endif // STATS_VARIANCE_H