|
|
@ -10,10 +10,8 @@ double scalbn(double x, int n) |
|
|
if (n > 1023) { |
|
|
if (n > 1023) { |
|
|
x *= 0x1p1023; |
|
|
x *= 0x1p1023; |
|
|
n -= 1023; |
|
|
n -= 1023; |
|
|
if (n > 1023) { |
|
|
if (n > 1023) |
|
|
STRICT_ASSIGN(double, x, x * 0x1p1023); |
|
|
n = 1023; |
|
|
return x; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} else if (n < -1022) { |
|
|
} else if (n < -1022) { |
|
|
x *= 0x1p-1022; |
|
|
x *= 0x1p-1022; |
|
|
@ -21,10 +19,8 @@ double scalbn(double x, int n) |
|
|
if (n < -1022) { |
|
|
if (n < -1022) { |
|
|
x *= 0x1p-1022; |
|
|
x *= 0x1p-1022; |
|
|
n += 1022; |
|
|
n += 1022; |
|
|
if (n < -1022) { |
|
|
if (n < -1022) |
|
|
STRICT_ASSIGN(double, x, x * 0x1p-1022); |
|
|
n = -1022; |
|
|
return x; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
INSERT_WORDS(scale, (uint32_t)(0x3ff+n)<<20, 0); |
|
|
INSERT_WORDS(scale, (uint32_t)(0x3ff+n)<<20, 0); |
|
|
|