|
rippled
|
Floating point representation of amounts with high dynamic range. More...
#include <IOUAmount.h>


Public Member Functions | |
| IOUAmount ()=default | |
| IOUAmount (Number const &other) | |
| IOUAmount (beast::Zero) | |
| IOUAmount (mantissa_type mantissa, exponent_type exponent) | |
| IOUAmount & | operator= (beast::Zero) |
| operator Number () const | |
| IOUAmount & | operator+= (IOUAmount const &other) |
| IOUAmount & | operator-= (IOUAmount const &other) |
| IOUAmount | operator- () const |
| bool | operator== (IOUAmount const &other) const |
| bool | operator< (IOUAmount const &other) const |
| operator bool () const noexcept | |
| Returns true if the amount is not zero. | |
| int | signum () const noexcept |
| Return the sign of the amount. | |
| exponent_type | exponent () const noexcept |
| mantissa_type | mantissa () const noexcept |
Static Public Member Functions | |
| static IOUAmount | minPositiveAmount () |
Private Types | |
| using | mantissa_type = std::int64_t |
| using | exponent_type = int |
Private Member Functions | |
| void | normalize () |
| Adjusts the mantissa and exponent to the proper range. | |
Static Private Member Functions | |
| static IOUAmount | fromNumber (Number const &number) |
Private Attributes | |
| mantissa_type | mantissa_ |
| exponent_type | exponent_ |
Friends | |
| std::ostream & | operator<< (std::ostream &os, IOUAmount const &x) |
Floating point representation of amounts with high dynamic range.
Amounts are stored as a normalized signed mantissa and an exponent. The range of the normalized exponent is [-96,80] and the range of the absolute value of the normalized mantissa is [1000000000000000, 9999999999999999].
Arithmetic operations can throw std::overflow_error during normalization if the amount exceeds the largest representable amount, but underflows will silently truncate to zero.
Definition at line 24 of file IOUAmount.h.
|
private |
Definition at line 27 of file IOUAmount.h.
|
private |
Definition at line 28 of file IOUAmount.h.
|
default |
|
explicit |
Definition at line 123 of file IOUAmount.cpp.
| xrpl::IOUAmount::IOUAmount | ( | beast::Zero | ) |
Definition at line 93 of file IOUAmount.h.
| xrpl::IOUAmount::IOUAmount | ( | mantissa_type | mantissa, |
| exponent_type | exponent | ||
| ) |
Definition at line 98 of file IOUAmount.h.
|
private |
Adjusts the mantissa and exponent to the proper range.
This can throw if the amount cannot be normalized, or is larger than the largest value that can be represented as an IOU amount. Amounts that are too small to be represented normalize to 0.
Definition at line 71 of file IOUAmount.cpp.
Definition at line 55 of file IOUAmount.cpp.
| IOUAmount & xrpl::IOUAmount::operator= | ( | beast::Zero | ) |
Definition at line 104 of file IOUAmount.h.
| xrpl::IOUAmount::operator Number | ( | ) | const |
Definition at line 113 of file IOUAmount.h.
Definition at line 132 of file IOUAmount.cpp.
Definition at line 119 of file IOUAmount.h.
| IOUAmount xrpl::IOUAmount::operator- | ( | ) | const |
Definition at line 126 of file IOUAmount.h.
| bool xrpl::IOUAmount::operator== | ( | IOUAmount const & | other | ) | const |
Definition at line 132 of file IOUAmount.h.
| bool xrpl::IOUAmount::operator< | ( | IOUAmount const & | other | ) | const |
Definition at line 137 of file IOUAmount.h.
|
explicitnoexcept |
Returns true if the amount is not zero.
Definition at line 143 of file IOUAmount.h.
|
noexcept |
Return the sign of the amount.
Definition at line 149 of file IOUAmount.h.
|
noexcept |
Definition at line 155 of file IOUAmount.h.
|
noexcept |
Definition at line 161 of file IOUAmount.h.
|
static |
Definition at line 65 of file IOUAmount.cpp.
|
friend |
Definition at line 86 of file IOUAmount.h.
|
private |
Definition at line 29 of file IOUAmount.h.
|
private |
Definition at line 30 of file IOUAmount.h.