
On 4/29/11 4:30 PM, Alexander Belopolsky wrote:
On Fri, Apr 29, 2011 at 4:23 PM, Robert Kern<robert.kern@gmail.com> wrote: ..
(Section 7. "Exceptions") "The default response to an exception shall be to proceed without a trap."
I cannot find this phrase in my copy of IEEE Std 754-2008. Instead, I see the following in section 7.1:
"This clause also specifies default non-stop exception handling for exception signals, which is to deliver a default result, continue execution, and raise the corresponding status flag."
Ah. I have the 1985 version.
Overall, it appears that in cases where InvalidOperation was anticipated, it was converted to some type of exception in Python. Exceptions to this rule seem to be an accident of implementation.
Well, for comparisons at least, it seems to have been anticipated, and returning a value was intentional. From the comments documenting float_richcompare() in floatobject.c: /* Comparison is pretty much a nightmare. When comparing float to float, * we do it as straightforwardly (and long-windedly) as conceivable, so * that, e.g., Python x == y delivers the same result as the platform * C x == y when x and/or y is a NaN. ... I'm not sure there's any evidence that the other behaviors have not been anticipated or are accidents of implementation. The ambiguous inf operations are documented and doctested in Lib/test/ieee754.txt. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco