summaryrefslogtreecommitdiff
path: root/exp_0702.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'exp_0702.cpp')
-rw-r--r--exp_0702.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/exp_0702.cpp b/exp_0702.cpp
index c767afd..b848b67 100644
--- a/exp_0702.cpp
+++ b/exp_0702.cpp
@@ -2,6 +2,7 @@
#include <cassert>
#include <cmath>
#include <cstdio>
+#include <numeric>
#include <vector>
constexpr size_t length = 1048576;
@@ -29,6 +30,28 @@ inline long double safe_ceil(long double value) {
return c == 0 ? 1 : c;
}
+long double calc_stddev() {
+ std::vector<size_t> elements;
+ std::vector<long double> tmp_vector;
+ for (auto &element : result_storage) {
+ elements.push_back(element.size());
+ }
+ tmp_vector.resize(elements.size());
+ // auto sum = std::accumulate(elements.begin(),
+ // elements.end(),decltype(elements)::value_type(0)); size_t sum = length;
+ // printf("\nsum: %ld\n", sum);
+ // auto mu = sum / (long double)elements.size();
+ long double mu = sample_length;
+ // printf("mu: %Lf\n", mu);
+
+ std::transform(elements.begin(), elements.end(), tmp_vector.begin(),
+ [&mu](size_t element) { return std::pow(element - mu, 2); });
+
+ return std::sqrt(std::accumulate(tmp_vector.begin(), tmp_vector.end(),
+ decltype(tmp_vector)::value_type(0)) /
+ elements.size());
+}
+
int main() {
assert((length & 1) == 0);
assert(length > 1024);
@@ -65,5 +88,5 @@ int main() {
for (const auto &element : result_storage) {
printf("%ld ", element.size());
}
- puts("");
+ printf("%Lf\n", calc_stddev());
} \ No newline at end of file