4 double scalbn(double x
, int n
)
6 union {double f
; uint64_t i
;} u
;
18 } else if (n
< -1022) {
19 /* make sure final n < -53 to avoid double
20 rounding in the subnormal range */
21 y
*= 0x1p
-1022 * 0x1p
53;
24 y
*= 0x1p
-1022 * 0x1p
53;
30 u
.i
= (uint64_t)(0x3ff+n
)<<52;