mirror of https://github.com/python/cpython
Oops -- unpack float/double didn't do the right thing if e==0.
This commit is contained in:
parent
74679b455f
commit
07ef655222
|
@ -402,8 +402,13 @@ unpack_float(p, incr)
|
||||||
x = (double)f / 8388608.0;
|
x = (double)f / 8388608.0;
|
||||||
|
|
||||||
/* XXX This sadly ignores Inf/NaN issues */
|
/* XXX This sadly ignores Inf/NaN issues */
|
||||||
if (e != 0)
|
if (e == 0)
|
||||||
x = ldexp(1.0 + x, e - 127);
|
e = -126;
|
||||||
|
else {
|
||||||
|
x += 1.0;
|
||||||
|
e -= 127;
|
||||||
|
}
|
||||||
|
x = ldexp(x, e);
|
||||||
|
|
||||||
if (s)
|
if (s)
|
||||||
x = -x;
|
x = -x;
|
||||||
|
@ -459,8 +464,13 @@ unpack_double(p, incr)
|
||||||
x /= 268435456.0; /* 2**28 */
|
x /= 268435456.0; /* 2**28 */
|
||||||
|
|
||||||
/* XXX This sadly ignores Inf/NaN */
|
/* XXX This sadly ignores Inf/NaN */
|
||||||
if (e != 0)
|
if (e == 0)
|
||||||
x = ldexp(1.0 + x, e - 1023);
|
e = -1022;
|
||||||
|
else {
|
||||||
|
x += 1.0;
|
||||||
|
e -= 1023;
|
||||||
|
}
|
||||||
|
x = ldexp(x, e);
|
||||||
|
|
||||||
if (s)
|
if (s)
|
||||||
x = -x;
|
x = -x;
|
||||||
|
|
Loading…
Reference in New Issue