perf sort: Reorder HISTC_SRCLINE index
[deliverable/linux.git] / tools / perf / util / stat.c
1 #include <math.h>
2
3 #include "stat.h"
4
5 void update_stats(struct stats *stats, u64 val)
6 {
7 double delta;
8
9 stats->n++;
10 delta = val - stats->mean;
11 stats->mean += delta / stats->n;
12 stats->M2 += delta*(val - stats->mean);
13 }
14
15 double avg_stats(struct stats *stats)
16 {
17 return stats->mean;
18 }
19
20 /*
21 * http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance
22 *
23 * (\Sum n_i^2) - ((\Sum n_i)^2)/n
24 * s^2 = -------------------------------
25 * n - 1
26 *
27 * http://en.wikipedia.org/wiki/Stddev
28 *
29 * The std dev of the mean is related to the std dev by:
30 *
31 * s
32 * s_mean = -------
33 * sqrt(n)
34 *
35 */
36 double stddev_stats(struct stats *stats)
37 {
38 double variance, variance_mean;
39
40 if (!stats->n)
41 return 0.0;
42
43 variance = stats->M2 / (stats->n - 1);
44 variance_mean = variance / stats->n;
45
46 return sqrt(variance_mean);
47 }
48
49 double rel_stddev_stats(double stddev, double avg)
50 {
51 double pct = 0.0;
52
53 if (avg)
54 pct = 100.0 * stddev/avg;
55
56 return pct;
57 }
This page took 0.03582 seconds and 5 git commands to generate.