DiSMEC++
dismec::KahanAccumulator< Float > Class Template Reference

Implements a numerically stable sum algorithm. More...

#include <sum.h>

Public Member Functions

 KahanAccumulator ()=default
 
Float value () const
 
KahanAccumulatoroperator+= (Float value)
 

Static Private Member Functions

static void accumulate (Float &accumulator, Float &correction, Float addition)
 

Private Attributes

Float Sum = Float{0}
 
Float Correction = Float{0}
 

Detailed Description

template<class Float>
class dismec::KahanAccumulator< Float >

Implements a numerically stable sum algorithm.

Template Parameters
FloatFloating point type to use for the accumulator.

Implements Kahan Summation to sum up a large stream of floating point numbers while compensating for numerical instability. Typically, Float should be double.

Definition at line 18 of file sum.h.

Constructor & Destructor Documentation

◆ KahanAccumulator()

template<class Float >
dismec::KahanAccumulator< Float >::KahanAccumulator ( )
default

Member Function Documentation

◆ accumulate()

template<class Float >
static void dismec::KahanAccumulator< Float >::accumulate ( Float &  accumulator,
Float &  correction,
Float  addition 
)
inlinestaticprivate

Definition at line 35 of file sum.h.

Referenced by dismec::KahanAccumulator< Float >::operator+=().

◆ operator+=()

◆ value()

Member Data Documentation

◆ Correction

template<class Float >
Float dismec::KahanAccumulator< Float >::Correction = Float{0}
private

Definition at line 44 of file sum.h.

Referenced by dismec::KahanAccumulator< Float >::operator+=().

◆ Sum

template<class Float >
Float dismec::KahanAccumulator< Float >::Sum = Float{0}
private

The documentation for this class was generated from the following file: