20 #ifndef RIPPLE_BASICS_NUMBER_H_INCLUDED
21 #define RIPPLE_BASICS_NUMBER_H_INCLUDED
23 #include <ripple/basics/XRPAmount.h>
48 explicit constexpr
Number() =
default;
62 operator+() const noexcept;
64 operator-() const noexcept;
75 operator+=(
Number const& x);
77 operator-=(
Number const& x);
80 operator*=(
Number const& x);
82 operator/=(
Number const& x);
92 explicit operator
rep() const;
97 return x.mantissa_ == y.mantissa_ && x.exponent_ == y.exponent_;
100 friend constexpr
bool
106 friend constexpr
bool
111 bool const lneg = x.mantissa_ < 0;
112 bool const rneg = y.mantissa_ < 0;
119 if (x.mantissa_ == 0)
120 return y.mantissa_ > 0;
123 if (y.mantissa_ == 0)
127 if (x.exponent_ > y.exponent_)
129 if (x.exponent_ < y.exponent_)
133 return x.mantissa_ < y.mantissa_;
136 friend constexpr
bool
142 friend constexpr
bool
148 friend constexpr
bool
300 inline constexpr Number
318 inline constexpr
bool
338 power(Number
const& f,
unsigned n);
345 root(Number f,
unsigned d);
353 power(Number
const& f,
unsigned n,
unsigned d);
357 inline constexpr Number
385 #endif // RIPPLE_BASICS_NUMBER_H_INCLUDED
static constexpr Number lowest() noexcept
constexpr friend bool operator<=(Number const &x, Number const &y) noexcept
static rounding_mode getround()
constexpr static std::int64_t maxMantissa
Number & operator-=(Number const &x)
constexpr value_type drops() const
Returns the number of drops.
Number operator-(Number const &x, Number const &y)
constexpr Number squelch(Number const &x, Number const &limit) noexcept
constexpr int exponent() const noexcept
static constexpr Number min() noexcept
constexpr bool isnormal() const noexcept
constexpr Number operator-() const noexcept
constexpr friend bool operator!=(Number const &x, Number const &y) noexcept
static thread_local rounding_mode mode_
constexpr base_uint< Bits, Tag > operator+(base_uint< Bits, Tag > const &a, base_uint< Bits, Tag > const &b)
static rounding_mode setround(rounding_mode mode)
constexpr static int maxExponent
constexpr Number operator+() const noexcept
static constexpr Number max() noexcept
constexpr friend bool operator>(Number const &x, Number const &y) noexcept
constexpr friend bool operator<(Number const &x, Number const &y) noexcept
Number operator/(Number const &x, Number const &y)
Number::rounding_mode mode_
Number power(Number const &f, unsigned n)
constexpr static int minExponent
friend std::ostream & operator<<(std::ostream &os, Number const &x)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
constexpr static std::int64_t minMantissa
constexpr friend bool operator>=(Number const &x, Number const &y) noexcept
saveNumberRoundMode & operator=(saveNumberRoundMode const &)=delete
constexpr Number abs(Number x) noexcept
saveNumberRoundMode(Number::rounding_mode mode) noexcept
constexpr Number()=default
std::string to_string(Manifest const &m)
Format the specified manifest to a string for debugging purposes.
constexpr rep mantissa() const noexcept
Number operator*(Number const &x, Number const &y)
Number root(Number f, unsigned d)