blob: 5128897d8563e0df29fdc1dc82b2467766a9630d [file] [log] [blame]
mtklein90c471e2014-06-16 14:04:32 -07001#ifndef Stats_DEFINED
2#define Stats_DEFINED
3
mtklein40b32be2014-07-09 08:46:49 -07004#include "SkTSort.h"
5
mtklein90c471e2014-06-16 14:04:32 -07006struct Stats {
7 Stats(const double samples[], int n) {
8 min = samples[0];
9 max = samples[0];
10 for (int i = 0; i < n; i++) {
11 if (samples[i] < min) { min = samples[i]; }
12 if (samples[i] > max) { max = samples[i]; }
13 }
14
15 double sum = 0.0;
16 for (int i = 0 ; i < n; i++) {
17 sum += samples[i];
18 }
19 mean = sum / n;
20
21 double err = 0.0;
22 for (int i = 0 ; i < n; i++) {
23 err += (samples[i] - mean) * (samples[i] - mean);
24 }
25 var = err / (n-1);
mtklein40b32be2014-07-09 08:46:49 -070026
27 SkAutoTMalloc<double> sorted(n);
28 memcpy(sorted.get(), samples, n * sizeof(double));
29 SkTQSort(sorted.get(), sorted.get() + n - 1);
30 median = sorted[n/2];
mtklein90c471e2014-06-16 14:04:32 -070031 }
32
33 double min;
34 double max;
35 double mean; // Estimate of population mean.
36 double var; // Estimate of population variance.
mtklein40b32be2014-07-09 08:46:49 -070037 double median;
mtklein90c471e2014-06-16 14:04:32 -070038};
39
40#endif//Stats_DEFINED