[Python-bugs-list] [ python-Bugs-789290 ] Minor FP bug in object.c
SourceForge.net
noreply at sourceforge.net
Wed Aug 27 00:02:30 EDT 2003
Bugs item #789290, was opened at 2003-08-15 10:15
Message generated for change (Settings changed) made by rhettinger
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=789290&group_id=5470
Category: Python Interpreter Core
Group: Python 2.2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Nick Maclaren (nmm1)
>Assigned to: Tim Peters (tim_one)
Summary: Minor FP bug in object.c
Initial Comment:
This is closely related to the one I have reported
in floatobject.c (789159). VERY closely. It is
shown up by the following test on a machine with
64-bit longs and floating-point trapping turned on
(though it might show up as bogus results even with
no trapping):
print int( 9223372036854775200.0)
print int( 9223372036854775800.0)
print int(-9223372036854776800.0)
print int(-9223372036854777000.0)
958,959c958,959
< double intpart, fractpart;
< int expo;
---
> double intpart, fractpart, z;
> int expo, i, j;
978c978,989
< if (intpart > LONG_MAX || -intpart >
LONG_MAX) {
---
> /* Remember that (double)LONG_MAX can
round either way. */
> if (intpart > LONG_MIN/2 && intpart <
LONG_MAX/2)
> z = 0.0;
> else {
> z = (intpart >= 0.0 ? intpart :
-intpart);
> for (i =
(sizeof(long)*CHAR_BIT-1)/16; i >= 0; --i) {
> x = LONG_MAX;
> for (j = 0; j < i; ++j)
x >>= 16;
> z -=
ldexp(x&0xffff,16*i);
> }
> }
> if (z > 0.0) {
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=789290&group_id=5470
More information about the Python-bugs-list
mailing list