Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::DoubleDouble Class Reference

A double-double scalar hi + lo, normalized so that |lo| <= ulp(hi) / 2.

#include <DoubleDouble.hpp>

Public Member Functions

Constructors
constexpr DoubleDouble ()=default
 Zero.
constexpr DoubleDouble (double value)
 The given double, exactly.
template<std::integral Integer>
constexpr DoubleDouble (Integer value)
 The given integer, exactly (64-bit integers beyond 2^53 included).
constexpr DoubleDouble (double hi, double lo)
 The pair hi + lo, which must already be normalized (|lo| <= ulp(hi) / 2).
Accessors and conversion
constexpr double hi () const
 The leading double, which is the value rounded to double.
constexpr double lo () const
 The trailing double: the rounding error of hi().
constexpr operator double () const
 The value rounded to double. Explicit, so a DoubleDouble never silently loses its low part.

Compound assignment

constexpr DoubleDouble & operator+= (const DoubleDouble &other)
constexpr DoubleDouble & operator-= (const DoubleDouble &other)
constexpr DoubleDouble & operator*= (const DoubleDouble &other)
constexpr DoubleDouble & operator/= (const DoubleDouble &other)

Constructor & Destructor Documentation

◆ DoubleDouble() [1/4]

mundy::DoubleDouble::DoubleDouble ( )
constexprdefault

◆ DoubleDouble() [2/4]

mundy::DoubleDouble::DoubleDouble ( double value)
inlineconstexpr

◆ DoubleDouble() [3/4]

template<std::integral Integer>
mundy::DoubleDouble::DoubleDouble ( Integer value)
inlineconstexpr

◆ DoubleDouble() [4/4]

mundy::DoubleDouble::DoubleDouble ( double hi,
double lo )
inlineconstexpr

Member Function Documentation

◆ hi()

double mundy::DoubleDouble::hi ( ) const
inlineconstexpr

◆ lo()

double mundy::DoubleDouble::lo ( ) const
inlineconstexpr

◆ operator double()

mundy::DoubleDouble::operator double ( ) const
inlineexplicitconstexpr

◆ operator+=()

DoubleDouble & mundy::DoubleDouble::operator+= ( const DoubleDouble & other)
constexpr

◆ operator-=()

DoubleDouble & mundy::DoubleDouble::operator-= ( const DoubleDouble & other)
constexpr

◆ operator*=()

DoubleDouble & mundy::DoubleDouble::operator*= ( const DoubleDouble & other)
constexpr

◆ operator/=()

DoubleDouble & mundy::DoubleDouble::operator/= ( const DoubleDouble & other)
constexpr