DBL_FRACBITS
*eptr = -DBL_FRACBITS;
mul.dblu_dbl.dbl_exp = DBL_FRACBITS + DBL_EXP_BIAS;
expon -= DBL_FRACBITS;
if (newexp <= -DBL_FRACBITS)
if (expon <= -DBL_FRACBITS)
if ((int)u.dblu_dbl.dbl_exp - DBL_EXP_BIAS > DBL_FRACBITS - 1) {
frac >>= DBL_FRACBITS - (u.dblu_dbl.dbl_exp - DBL_EXP_BIAS);
frac <<= DBL_FRACBITS - (u.dblu_dbl.dbl_exp - DBL_EXP_BIAS);
const uint32_t frac[(DBL_FRACBITS + 31)/32 + 1] = {
#define DBL_SHIFT (DBL_FRACBITS - 32 - FP_LG)
frac = i & mask(DBL_FRACBITS - 32);
#define DBL_EXP(e) ((e) << (DBL_FRACBITS & 31))
(void) fpu_shr(fp, FP_NMANT - 1 - DBL_FRACBITS);
(void) fpu_shr(fp, FP_NMANT - FP_NG - DBL_FRACBITS - exp);
(void) fpu_shr(fp, FP_NMANT - FP_NG - 1 - DBL_FRACBITS);
#define DBL_SHIFT (DBL_FRACBITS - 32 - FP_LG)
frac = hi & mask(DBL_FRACBITS - 32);
#define DBL_EXP(e) ((e) << (DBL_FRACBITS & 31))
(void) fpu_shr(fp, FP_NMANT - 1 - DBL_FRACBITS);
(void) fpu_shr(fp, FP_NMANT - FP_NG - DBL_FRACBITS - exp);
(void) fpu_shr(fp, FP_NMANT - FP_NG - 1 - DBL_FRACBITS);
#define DBL_SHIFT (DBL_FRACBITS - 32 - FP_LG)
frac = i & mask(DBL_FRACBITS - 32);
#define DBL_EXP(e) ((e) << (DBL_FRACBITS & 31))
(void) fpu_shr(fp, FP_NMANT - 1 - DBL_FRACBITS);
(void) fpu_shr(fp, FP_NMANT - FP_NG - DBL_FRACBITS - exp);
(void) fpu_shr(fp, FP_NMANT - FP_NG - 1 - DBL_FRACBITS);