diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-10-16 09:42:48 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-10-16 09:42:48 +0200 |
commit | eeb0661f0671c3ff2c4fb9ce8da14d12ff788ef2 (patch) | |
tree | ac9da49c6f8ce5344029538a2cef1d79ee30a45f /tests/utils.cpp | |
parent | 2d0581fad27bfb0a4c75fc6fc1a46c51cd189277 (diff) | |
download | sink-eeb0661f0671c3ff2c4fb9ce8da14d12ff788ef2.tar.gz sink-eeb0661f0671c3ff2c4fb9ce8da14d12ff788ef2.zip |
Share variance/maxDifference implementation
Diffstat (limited to 'tests/utils.cpp')
-rw-r--r-- | tests/utils.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/utils.cpp b/tests/utils.cpp new file mode 100644 index 0000000..dfaab17 --- /dev/null +++ b/tests/utils.cpp | |||
@@ -0,0 +1,38 @@ | |||
1 | #include "utils.h" | ||
2 | |||
3 | #include <QList> | ||
4 | #include <math.h> | ||
5 | |||
6 | double variance(const QList<double> &values) | ||
7 | { | ||
8 | //The variance of a single value is 0 | ||
9 | if (values.size() == 1) { | ||
10 | return 0; | ||
11 | } | ||
12 | double mean = 0; | ||
13 | for (auto value : values) { | ||
14 | mean += value; | ||
15 | } | ||
16 | mean = mean / static_cast<double>(values.size()); | ||
17 | double variance = 0; | ||
18 | for (auto value : values) { | ||
19 | variance += pow(static_cast<double>(value) - mean, 2); | ||
20 | } | ||
21 | variance = variance / static_cast<double>(values.size() - 1); | ||
22 | return variance; | ||
23 | } | ||
24 | |||
25 | double maxDifference(const QList<double> &values) | ||
26 | { | ||
27 | auto max = values.first(); | ||
28 | auto min = values.first(); | ||
29 | for (auto value : values) { | ||
30 | if (value > max) { | ||
31 | max = value; | ||
32 | } | ||
33 | if (value < min) { | ||
34 | min = value; | ||
35 | } | ||
36 | } | ||
37 | return max - min; | ||
38 | } | ||