Added Standard Deviation, Variance and Square Sum methods to MinMaxAvgTotalcalculator
authorjnin
Tue, 12 Apr 2011 10:41:49 +0200
changeset 7956 8d0839988995
parent 7955 9808ee664831
child 7957 76943b3e9d60
Added Standard Deviation, Variance and Square Sum methods to MinMaxAvgTotalcalculator
src/stats/model/basic-data-calculators.h
--- a/src/stats/model/basic-data-calculators.h	Mon Apr 11 17:33:28 2011 +0200
+++ b/src/stats/model/basic-data-calculators.h	Tue Apr 12 10:41:49 2011 +0200
@@ -44,15 +44,15 @@
     double getMin() const { return m_min; }
     double getMax() const { return m_max; }
     double getMean() const { return m_total / (double)m_count; }
-    double getStddev() const { return NaN; } // unsupported
-    double getVariance() const { return NaN; } // unsupported
-    double getSqrSum() const { return NaN; } // unsupported
+    double getStddev() const { return sqrt (getVariance ()); }
+    double getVariance() const { return  ( m_count * m_totalSquare - m_total * m_total ) / (double) (m_count * (m_count - 1) ); }
+    double getSqrSum() const { return m_totalSquare; }
 
   protected:
     virtual void DoDispose(void);
 
     uint32_t m_count;
-    T m_total, m_min, m_max;
+    T m_total, m_min, m_max, m_totalSquare;
 
     // end MinMaxAvgTotalCalculator
   };
@@ -63,6 +63,7 @@
   {
     m_count = 0;
     m_total = 0;
+    m_totalSquare = 0;
     m_min = ~0;
     m_max = 0;
   }
@@ -85,6 +86,7 @@
   {
     if (m_enabled) {
       m_total += i;
+      m_totalSquare += i*i;
 
       if (i < m_min)
         m_min = i;