ROOT   6.14/05 Reference Guide
ROOT::Math::KahanSum< T > Class Template Reference

### template<class T> class ROOT::Math::KahanSum< T >

The Kahan compensate summation algorithm significantly reduces the numerical error in the total obtained by adding a sequence of finite precision floating point numbers.

This is done by keeping a separate running compensation (a variable to accumulate small errors).
The intial values of the result and the correction are set to the default value of the type it hass been instantiated with.
####Examples:

std::vector<double> numbers = {0.01, 0.001, 0.0001, 0.000001, 0.00000000001};

Definition at line 92 of file Util.h.

## Public Member Functions

KahanSum (const T &initialValue=T{})
Constructor accepting a initial value for the summation as parameter. More...

template<class Iterator >
void Add (const Iterator begin, const Iterator end)
Iterate over a datastructure referenced by a pointer and accumulate on the exising result. More...

Result ()
Return the result. More...

## Static Public Member Functions

template<class Iterator >
static T Accumulate (const Iterator begin, const Iterator end, const T &initialValue=T{})
Iterate over a datastructure referenced by a pointer and return the result of its accumulation. More...

## Private Attributes

fCorrection {}

fSum {}

#include <Math/Util.h>

## ◆ KahanSum()

template<class T>
 ROOT::Math::KahanSum< T >::KahanSum ( const T & initialValue = T{} )
inline

Constructor accepting a initial value for the summation as parameter.

Definition at line 95 of file Util.h.

## ◆ Accumulate()

template<class T>
template<class Iterator >
 static T ROOT::Math::KahanSum< T >::Accumulate ( const Iterator begin, const Iterator end, const T & initialValue = T{} )
inlinestatic

Iterate over a datastructure referenced by a pointer and return the result of its accumulation.

Can take an initial value as third parameter.

Definition at line 118 of file Util.h.

template<class T>
 void ROOT::Math::KahanSum< T >::Add ( const T & x )
inline

Definition at line 98 of file Util.h.

template<class T>
template<class Iterator >
 void ROOT::Math::KahanSum< T >::Add ( const Iterator begin, const Iterator end )
inline

Iterate over a datastructure referenced by a pointer and accumulate on the exising result.

Definition at line 108 of file Util.h.

## ◆ Result()

template<class T>
 T ROOT::Math::KahanSum< T >::Result ( )
inline

Return the result.

Definition at line 128 of file Util.h.

## ◆ fCorrection

template<class T>
 T ROOT::Math::KahanSum< T >::fCorrection {}
private

Definition at line 132 of file Util.h.

## ◆ fSum

template<class T>
 T ROOT::Math::KahanSum< T >::fSum {}
private

Definition at line 131 of file Util.h.

Libraries for ROOT::Math::KahanSum< T >:
[legend]

The documentation for this class was generated from the following file:
• math/mathcore/inc/Math/Util.h