[Python-Dev] Caching float(0.0)
James Y Knight
foom at fuhm.net
Tue Oct 3 21:13:01 CEST 2006
On Oct 3, 2006, at 2:26 PM, Nick Maclaren wrote:
> =?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?= <martin at v.loewis.de> wrote:
>> py> x=-0.0
>> py> y=0.0
>> py> x,y
> Nobody is denying that SOME C90 implementations distinguish them,
> but it is no part of the standard - indeed, a C90 implementation is
> permitted to use ANY criterion for deciding when to display -0.0 and
> 0.0. C99 is ambiguous to the point of internal inconsistency, except
> when __STDC_IEC_559__ is set to 1, though the intent is clear.
> And my reading of Python's code is that it relies on C's handling
> of such values.
This is a really poor argument. Python should be moving *towards*
proper '754 fp support, not away from it. On the platforms that are
most important, the C implementations distinguish positive and
negative 0. That the current python implementation may be defective
when the underlying C implementation is defective doesn't excuse a
change to intentionally break python on the common platforms.
IEEE 754 is so widely implemented that IMO it would make sense to
make Python's floating point specify it, and simply declare floating
point operations on non-IEEE 754 machines as "use at own risk, may
not conform to python language standard". (or if someone wants to use
a software fp library for such machines, that's fine too).
More information about the Python-Dev