DBL_MANT_DIG
static const int sigfigs = (DBL_MANT_DIG + 3) / 4;
*s = u.dblu_dbl.dbl_frach | (1U << ((DBL_MANT_DIG - 1) % 4));
#if (LDBL_MANT_DIG > DBL_MANT_DIG)
#define DBL_ADJ (DBL_MAX_EXP - 2 + ((DBL_MANT_DIG - 1) % 4))
#define DBL_ADJ (DBL_MAX_EXP + 4 + ((DBL_MANT_DIG) % 4))
DBL_MANT_DIG,
#if LDBL_MANT_DIG != DBL_MANT_DIG
#define CUTOFF (DBL_MANT_DIG / 2 + 1) /* just half or 1 guard digit */
#if DBL_MANT_DIG == LDBL_MANT_DIG && DBL_MIN_EXP == LDBL_MIN_EXP \
if (spread < -DBL_MANT_DIG) {
if (spread <= DBL_MANT_DIG * 2)
#define LDBL_MANT_DIG DBL_MANT_DIG
#define LDBL_MANT_DIG DBL_MANT_DIG
!*done && i < MIN(1LL << DBL_MANT_DIG, INT_MAX);
!*done && i < MIN(1LL << DBL_MANT_DIG, LONG_MAX);
# define DBL_SNANBIT (SNANBIT*__BIT(DBL_MANT_DIG - 2))
for (int i = 1; i < DBL_MANT_DIG; i++) {
# define DBL_QNANBIT (QNANBIT*__BIT(DBL_MANT_DIG - 2))
#if DBL_MANT_DIG == 53
#elif DBL_MANT_DIG == 56
#if DBL_MANT_DIG >= 56
__CTASSERT(DBL_MANT_DIG >= 53);
#if DBL_MANT_DIG >= 56
s < DBL_MAX_EXP - DBL_MANT_DIG;
s += (DBL_MAX_EXP - DBL_MANT_DIG - DBL_MIN_EXP)/5) {
s < DBL_MAX_EXP - DBL_MANT_DIG;
s += (DBL_MAX_EXP - DBL_MANT_DIG - DBL_MIN_EXP)/5) {
{ DBL_DENORM_MIN, DBL_MIN_EXP - DBL_MANT_DIG },
{ (uint64_t)1 << DBL_MANT_DIG, DBL_MANT_DIG },
{ ((double)((uint64_t)1 << DBL_MANT_DIG) *
((uint64_t)1 << DBL_MANT_DIG)),
2*DBL_MANT_DIG },