diff options
| -rw-r--r-- | exp_0702.cpp | 25 |
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 |
