[Python-Dev] RE: stupid floating point question...
Tim Peters
tim_one@email.msn.com
Thu, 28 Sep 2000 15:59:55 -0400
[Tim]
> A *good* compiler won't collapse *any* fp expressions at
> compile-time ...
[Martin von Loewis]
> Of course, that doesn't say anything about what *most* compilers do.
Doesn't matter in this case; I told /F not to worry about it having taken
that all into account. Almost all C compilers do a piss-poor job of taking
floating-point seriously, but it doesn't really matter for the purpose /F
has in mind.
[an example of gcc precomputing the best possible result]
> return (double)1/6;
> ...
> .long 0x55555555,0x3fc55555
No problem. If you set the HW rounding mode to +infinity during
compilation, the first chunk there would end with a 6 instead. Would affect
the tail end of the repr(), but not the str().
> ...
> when compiling with -fomit-frame-pointer -O2. That still doesn't say
> anything about what most compilers do - if there is interest, we could
> perform a comparative study on the subject :-)
No need.
> The "would break 754" argument is pretty weak, IMO - gcc, for example,
> doesn't claim to comply to that standard.
/F's question was about fp. 754 is the only hope he has for any x-platform
consistency (C89 alone gives no hope at all, and no basis for answering his
question). To the extent that a C compiler ignores 754, it makes x-platform
fp consistency impossible (which, btw, Python inherits from C: we can't
even manage to get string<->float working consistently across 100%
754-conforming platforms!). Whether that's a weak argument or not depends
entirely on how important x-platform consistency is to a given app. In /F's
specific case, a sloppy compiler is "good enough".
i'm-the-only-compiler-writer-i-ever-met-who-understood-fp<0.5-wink>-ly
y'rs - tim