On 2008-02-10, Mark Dickinson <[EMAIL PROTECTED]> wrote: > On Feb 9, 5:03 pm, Neal Becker <[EMAIL PROTECTED]> wrote: >> If I use C code to turn off the hardware signal, will that stop python from >> detecting the exception, or is python checking for 0 denominator on it's >> own (hope not, that would waste cycles). > > Yes, Python does do an explicit check for a zero denominator. Here's > an excerpt from floatdiv.c in Objects/floatobject.c: > > if (b == 0.0) { > PyErr_SetString(PyExc_ZeroDivisionError, "float division"); > return NULL; > } > > This is probably the only sane way to deal with differences in > platform behaviour when doing float divisions.
I've always found that check to be really annoying. Every time anybody asks about floating point handling, the standard response is that "Python just does whatever the underlying platform does". Except it doesn't in cases like this. All my platforms do exactly what I want for division by zero: they generate a properly signed INF. Python chooses to override that (IMO correct) platform behavior with something surprising. Python doesn't generate exceptions for other floating point "events" -- why the inconsistency with divide by zero? -- Grant Edwards grante Yow! Where's th' DAFFY at DUCK EXHIBIT?? visi.com -- http://mail.python.org/mailman/listinfo/python-list