11 for (
idx i = 0;
i < n; ++
i) mean += data[
i];
12 mean /=
static_cast<real>(n);
16 for (
idx i = 0;
i < n; ++
i) {
20 c0 /=
static_cast<real>(n);
21 if (c0 < 1
e-15)
return 0.5;
25 for (
idx t = 1; t < n / 2; ++t) {
27 for (
idx i = 0;
i < n - t; ++
i)
28 ct += (data[
i] - mean) * (data[
i + t] - mean);
29 ct /=
static_cast<real>(n - t);
32 if (
static_cast<real>(t) >= c *
tau)
break;
34 return (
tau < 0.5) ? 0.5 :
tau;
constexpr T ipow(T x) noexcept
Compute x^N at compile time via repeated squaring.
real autocorr_time(const real *data, idx n, real c=6.0)
Online statistics for Monte Carlo observables.