1#ifndef AMPGEN_KAHANSUM_H
2#define AMPGEN_KAHANSUM_H
5#error Compensated summation is unsafe with -ffast-math (/fp:fast)
27 cor += std::abs(
sum) >= std::abs(var) ? (
sum-t)+var : (var-t) +
sum;
54 for(
auto& input : container )
57 if ( std::fabs(sum) >= std::fabs(input) )
59 c = (sum - t) + input;
61 else c = (input - t) + sum;
64 if ( std::fabs(cs) >= std::fabs(c) )
71 return sum + cs + ccs;
real_t abs(const Complex< real_t > &v)
Complex< real_t > operator+(const Complex< real_t > &lhs, const R2_t &rhs)
T KahanBabushkaKleinSum(const std::vector< T > &container)
Implements Kahan summation for better precision with (repeated) floating point addition.
KahanSum & operator+=(const T &var)