diff options
| author | KunoiSayami <[email protected]> | 2022-07-08 23:30:58 +0800 |
|---|---|---|
| committer | KunoiSayami <[email protected]> | 2022-07-08 23:30:58 +0800 |
| commit | 2c98458e2aa69e2af73e5536b46f5018dc402111 (patch) | |
| tree | 93db3c64e31563238d28a736a8bc2e6aedd55a9d /exp_0702.cpp | |
| parent | 72cf73bdcc2b731a31eb306ed0e51ebd890f31a2 (diff) | |
feat(exp): Add stddev output
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'exp_0702.cpp')
| -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 |
