#include <src/kahan-number.hpp>
template<typename T>
Kahan struct
Contents
Kahan number
A way to reduce the round off error when adding a small number to a big one. See details in Kahan summation
Constructors, destructors, conversion operators
- Kahan() defaulted
- Kahan(T r) constexpr
- Kahan(const Kahan& k) constexpr
- operator T() constexpr
- operator T() const constexpr
Public functions
- void zero_err()
Friends
- auto operator-(const Kahan& hs) -> Kahan
- auto operator+=(Kahan& lhs, const Kahan& rhs) -> Kahan&
- auto operator-=(Kahan& lhs, const Kahan& rhs) -> Kahan&
- auto operator/=(Kahan& lhs, const Kahan& rhs) -> Kahan&
- auto operator*=(Kahan& lhs, const Kahan& rhs) -> Kahan&
- auto operator<<(std::ostream& output, const Kahan& v) -> std::ostream&
- auto operator>>(std::istream& input, Kahan& v) -> std::istream&
Function documentation
template<typename T>
hub:: Kahan<T>:: Kahan() defaulted
Default constructor
template<typename T>
hub:: Kahan<T>:: Kahan(T r) constexpr
Parameters | |
---|---|
r | Scalar |
Single parameter constructor.
template<typename T>
hub:: Kahan<T>:: operator T() constexpr
Assignment operator. Conversion operator. Convert Khan number to Scalar i.e double
, float
,...
template<typename T>
hub:: Kahan<T>:: operator T() const constexpr
Conversion operator. Convert Khan number to Scalar i.e double
, float
,...
template<typename T>
void hub:: Kahan<T>:: zero_err()
Set error to 0.
template<typename T>
Kahan& operator+=(Kahan& lhs,
const Kahan& rhs)
Addition assignment operator.
template<typename T>
Kahan& operator-=(Kahan& lhs,
const Kahan& rhs)
Subtraction assignment operator.
template<typename T>
Kahan& operator/=(Kahan& lhs,
const Kahan& rhs)
Division assignment operator.
template<typename T>
Kahan& operator*=(Kahan& lhs,
const Kahan& rhs)
Multiple assignment operator.
template<typename T>
std::ostream& operator<<(std::ostream& output,
const Kahan& v)
Output stream
template<typename T>
std::istream& operator>>(std::istream& input,
Kahan& v)
Input stream