compensated_sum.hpp cmath src/include/serif/backend/mfem/operators/element_preparation.hpp src/include/serif/backend/mfem/operators/operand_evaluation.hpp serif::utils::CompensatedSum serif serif::utils #pragmaonce #include<cmath> namespaceserif::utils{ classCompensatedSumfinal{ public: voidadd(constdoublevalue){ constdoublenext=m_sum+value; m_correction+=std::abs(m_sum)>=std::abs(value)?(m_sum-next)+value:(value-next)+m_sum; m_sum=next; } [[nodiscard]]doublevalue()const{returnm_sum+m_correction;} private: doublem_sum{0.0}; doublem_correction{0.0}; }; }