Constants

All constants in this section are aliases of constants from libmpdec. They are renamed or shortened for better integration in the decimal namespace. Use whichever versions you prefer.

Rounding modes

enum round {
  ROUND_UP = MPD_ROUND_UP,               /* round away from 0               */
  ROUND_DOWN = MPD_ROUND_DOWN,           /* round toward 0 (truncate)       */
  ROUND_CEILING = MPD_ROUND_CEILING,     /* round toward +infinity          */
  ROUND_FLOOR = MPD_ROUND_FLOOR,         /* round toward -infinity          */
  ROUND_HALF_UP = MPD_ROUND_HALF_UP,     /* 0.5 is rounded up               */
  ROUND_HALF_DOWN = MPD_ROUND_HALF_DOWN, /* 0.5 is rounded down             */
  ROUND_HALF_EVEN = MPD_ROUND_HALF_EVEN, /* 0.5 is rounded to even          */
  ROUND_05UP = MPD_ROUND_05UP,           /* round zero or five away from 0  */
  ROUND_TRUNC = MPD_ROUND_TRUNC,         /* truncate, but set infinity      */
  ROUND_GUARD = MPD_ROUND_GUARD
};

Status flags

constexpr uint32_t DecClamped = MPD_Clamped;
constexpr uint32_t DecConversionSyntax = MPD_Conversion_syntax;
constexpr uint32_t DecDivisionByZero = MPD_Division_by_zero;
constexpr uint32_t DecDivisionImpossible = MPD_Division_impossible;
constexpr uint32_t DecDivisionUndefined = MPD_Division_undefined;
constexpr uint32_t DecFpuError = MPD_Fpu_error; /* unused */
constexpr uint32_t DecInexact = MPD_Inexact;
constexpr uint32_t DecInvalidContext = MPD_Invalid_context;
constexpr uint32_t DecInvalidOperation = MPD_Invalid_operation;
constexpr uint32_t DecMallocError = MPD_Malloc_error;
constexpr uint32_t DecNotImplemented = MPD_Not_implemented; /* unused */
constexpr uint32_t DecOverflow = MPD_Overflow;
constexpr uint32_t DecRounded = MPD_Rounded;
constexpr uint32_t DecSubnormal = MPD_Subnormal;
constexpr uint32_t DecUnderflow = MPD_Underflow;

Flag sets

constexpr uint32_t DecIEEEInvalidOperation = MPD_IEEE_Invalid_operation;
                                            /* DecConversionSyntax */
                                            /* DecDivisionImpossible */
                                            /* DecDivisionUndefined */
                                            /* DecFpuError */
                                            /* DecInvalidContext */
                                            /* DecInvalidOperation */
                                            /* DecMallocError */

constexpr uint32_t DecErrors = MPD_Errors;
                               /* DecIEEEInvalidOperation */
                               /* DecDivisionByZero */

constexpr uint32_t DecMaxStatus = MPD_Max_status;
                                  /* All flags */

IEEE interchange context

/* IEEEContext(): common arguments */
constexpr int DECIMAL32 = MPD_DECIMAL32;
constexpr int DECIMAL64 = MPD_DECIMAL64;
constexpr int DECIMAL128 = MPD_DECIMAL128;

/* IEEEContext(): maximum argument value */
constexpr int IEEE_CONTEXT_MAX_BITS = MPD_IEEE_CONTEXT_MAX_BITS;