diff options
Diffstat (limited to 'lib/igt_stats.h')
-rw-r--r-- | lib/igt_stats.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/igt_stats.h b/lib/igt_stats.h index 105f3fb2e..32f376cc3 100644 --- a/lib/igt_stats.h +++ b/lib/igt_stats.h @@ -27,6 +27,7 @@ #include <stdint.h> #include <stdbool.h> +#include <math.h> /** * igt_stats_t: @@ -81,20 +82,26 @@ double igt_stats_get_variance(igt_stats_t *stats); double igt_stats_get_std_deviation(igt_stats_t *stats); struct igt_mean { - double mean, sq; + double mean, sq, min, max; unsigned long count; }; static inline void igt_mean_init(struct igt_mean *m) { memset(m, 0, sizeof(*m)); + m->max = -HUGE_VAL; + m->min = HUGE_VAL; } static inline void igt_mean_add(struct igt_mean *m, double v) { double delta = v - m->mean; - m->mean += delta / m->count++; + m->mean += delta / ++m->count; m->sq += delta * (v - m->mean); + if (v < m->min) + m->min = v; + if (v > m->max) + m->max = v; } static inline double igt_mean_get(struct igt_mean *m) |