| void update_stats(struct stats *stats, u64 val) |
| delta = val - stats->mean; |
| stats->mean += delta / stats->n; |
| stats->M2 += delta*(val - stats->mean); |
| double avg_stats(struct stats *stats) |
| * http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance |
| * (\Sum n_i^2) - ((\Sum n_i)^2)/n |
| * s^2 = ------------------------------- |
| * http://en.wikipedia.org/wiki/Stddev |
| * The std dev of the mean is related to the std dev by: |
| double stddev_stats(struct stats *stats) |
| double variance, variance_mean; |
| variance = stats->M2 / (stats->n - 1); |
| variance_mean = variance / stats->n; |
| return sqrt(variance_mean); |
| double rel_stddev_stats(double stddev, double avg) |
| pct = 100.0 * stddev/avg; |