32 using namespace boost::accumulators;
33 using KahanSum = accumulator_set<double, features<tag::sum_kahan>>;
36 auto q_min = std::numeric_limits<double>::infinity();
37 constexpr auto relative_tolerance = 2e-12;
39 for (
auto const &p : prange) {
40 auto const &q = p.q();
44 q_min = std::min(q_min, std::abs(q));
48 auto const excess_ratio = std::abs(sum_kahan(q_sum)) / q_min;
50 return excess_ratio <= relative_tolerance;