diff options
author | Wolfgang Draxinger <Wolfgang.Draxinger@draxit.de> | 2016-04-24 23:52:45 +0200 |
---|---|---|
committer | Wolfgang Draxinger <Wolfgang.Draxinger@draxit.de> | 2016-04-24 23:52:45 +0200 |
commit | 2ca04fbe7985ee944f3fa6302886a252a51add0c (patch) | |
tree | b373879928a1060e564d29d44f6e20b620b272e9 /stats.c | |
download | pointoverdrawbench-2ca04fbe7985ee944f3fa6302886a252a51add0c.tar.gz pointoverdrawbench-2ca04fbe7985ee944f3fa6302886a252a51add0c.tar.bz2 |
initial commit
Diffstat (limited to 'stats.c')
-rw-r--r-- | stats.c | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -0,0 +1,25 @@ +#include "stats.h" + +void stats_running_reset(struct stats_running *s) +{ + if( s ) { + s->n = 0; + s->S = NAN; + s->m = NAN; + } +} + +void stats_running_push(struct stats_running *s, double value) +{ + if( s && isfinite(value) ) { + double const m_prev = 0 < s->n ? s->m : 0.; + double const S_prev = 1 < s->n ? s->S : 0.; + unsigned const n = (s->n += 1); + + s->m = m_prev + (value - m_prev) / n; + if( 1 < n ) { + /* variance is defined only for n > 1 */ + s->S = S_prev + (value - s->m) * (value - m_prev); + } + } +} |