On Tue, Apr 14, 2009 at 11:53 AM, Robert Bradshaw <[email protected]> wrote: > On Apr 14, 2009, at 9:17 AM, Dag Sverre Seljebotn wrote: > >> I was just thinking about this: >> >> cdef int a = 10, b = 0 >> print a // b >> >> which currently gives a C exception terminating the Python >> interpreter. >> >> On one hand: We have already changed division to Python behaviour >> (with >> a speed penalty); so using the same arguments (which I won't >> reiterate) >> it would make sense to raise a Python exception instead here. >> >> It seems to make sense to couple this as well to the cdivision >> directive >> and cython.cdiv function. >> >> On the other hand: Well, all the arguments that was against >> changing // >> to Python behaviour. > > Since we changed it, we should chang it all the way. It will be > somewhat uglier as this means when writing a / (c-c) one needs to > store the denominator in a temp and check it rather than simply > letting the expression through to C (I already did this for warnings).
If we're going through and listing special cases for division, there's one more to consider (I think this is the last one): On x86 processors, dividing -2**31 by -1 gives a processor signal; under Linux, this results in exiting the process with "Floating point exception". (Even though it's not floating point.) (Presumably, the same thing happens when dividing -2**63 by -1 on a 64-bit processor; I haven't tested.) Carl _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
