Signed zeros: is this a bug?
Duncan Booth
duncan.booth at invalid.invalid
Sun Mar 11 13:21:10 EDT 2007
"Mark Dickinson" <dickinsm at gmail.com> wrote:
> I guess what's happening is that there's some optimization that avoids
> creating two separate float objects for a float literal that appears
> twice, and that optimization doesn't see the difference between 0. and
> -0.
Don't guess. Test.
>>> def f():
x = 0.0
y = -0.0
return x, y
>>> dis.dis(f)
2 0 LOAD_CONST 1 (0.0)
3 STORE_FAST 0 (x)
3 6 LOAD_CONST 1 (0.0)
9 STORE_FAST 1 (y)
4 12 LOAD_FAST 0 (x)
15 LOAD_FAST 1 (y)
18 BUILD_TUPLE 2
21 RETURN_VALUE
Yes. Just the one constant there.
Tim Peters wrote in
http://blog.gmane.org/gmane.comp.python.devel/day=20050409:
> All Python behavior in the presence of a NaN, infinity, or signed zero
> is a platform-dependent accident. This is because C89 has no such
> concepts, and Python is written to the C89 standard. It's not easy to
> fix across all platforms (because there is no portable way to do so in
> standard C), although it may be reasonably easy to fix if all anyone
> cares about is gcc and MSVC (every platform C compiler has its own set
> of gimmicks for "dealing with" these things).
More information about the Python-list
mailing list