#ifndef LONG_DOUBLE_DENORM_BIAS
# define LONG_DOUBLE_DENORM_BIAS (IEEE854_LONG_DOUBLE_BIAS - 1)
#endif
#define PRINT_FPHEX_LONG_DOUBLE \
do { \
\
unsigned long long int num; \
union ieee854_long_double u; \
u.d = fpnum.ldbl; \
\
num = (((unsigned long long int) u.ieee.mantissa0) << 32 \
| u.ieee.mantissa1); \
\
zero_mantissa = num == 0; \
\
if (sizeof (unsigned long int) > 6) \
{ \
numstr = _itoa_word (num, numbuf + sizeof numbuf, 16, \
info->spec == 'A'); \
wnumstr = _itowa_word (num, \
wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t),\
16, info->spec == 'A'); \
} \
else \
{ \
numstr = _itoa (num, numbuf + sizeof numbuf, 16, info->spec == 'A');\
wnumstr = _itowa (num, \
wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t), \
16, info->spec == 'A'); \
} \
\
\
while (numstr > numbuf + (sizeof numbuf - 64 / 4)) \
{ \
*--numstr = '0'; \
*--wnumstr = L'0'; \
} \
\
\
leading = *numstr++; \
wnumstr++; \
\
\
exponent = u.ieee.exponent; \
\
if (exponent == 0) \
{ \
if (zero_mantissa) \
expnegative = 0; \
else \
{ \
\
expnegative = 1; \
\
exponent = LONG_DOUBLE_DENORM_BIAS + 3; \
} \
} \
else if (exponent >= IEEE854_LONG_DOUBLE_BIAS + 3) \
{ \
expnegative = 0; \
exponent -= IEEE854_LONG_DOUBLE_BIAS + 3; \
} \
else \
{ \
expnegative = 1; \
exponent = -(exponent - (IEEE854_LONG_DOUBLE_BIAS + 3)); \
} \
} while (0)