Oops -- unpack float/double didn't do the right thing if e==0.

This commit is contained in:
Guido van Rossum 1997-01-02 22:31:07 +00:00
parent 74679b455f
commit 07ef655222
1 changed files with 14 additions and 4 deletions

View File

@ -402,8 +402,13 @@ unpack_float(p, incr)
x = (double)f / 8388608.0;
/* XXX This sadly ignores Inf/NaN issues */
if (e != 0)
x = ldexp(1.0 + x, e - 127);
if (e == 0)
e = -126;
else {
x += 1.0;
e -= 127;
}
x = ldexp(x, e);
if (s)
x = -x;
@ -459,8 +464,13 @@ unpack_double(p, incr)
x /= 268435456.0; /* 2**28 */
/* XXX This sadly ignores Inf/NaN */
if (e != 0)
x = ldexp(1.0 + x, e - 1023);
if (e == 0)
e = -1022;
else {
x += 1.0;
e -= 1023;
}
x = ldexp(x, e);
if (s)
x = -x;