On 5 March 2012 14:39, Martin Nowak <d...@dawgfoto.de> wrote: > On Mon, 05 Mar 2012 00:29:44 +0100, deadalnix <deadal...@gmail.com> wrote: > >> Le 04/03/2012 22:59, Timon Gehr a écrit : >>> >>> On 03/04/2012 10:58 PM, deadalnix wrote: >>>> >>>> Le 04/03/2012 22:11, Adam D. Ruppe a écrit : >>>>> >>>>> On Sunday, 4 March 2012 at 21:07:50 UTC, deadalnix wrote: >>>>>> >>>>>> No floating point operation is involved here. >>>>> >>>>> >>>>> It is a Linux issue, not a D one. >>>>> >>>>> Try doing the same thing in C. >>>> >>>> >>>> OK, now read the other half of the post. >>> >>> >>> I bet he did, but settled to responding to the part that was explicitly >>> marked as being 'the problem'. >> >> >> You'll find 2 problems, not one. >> >> Problem one is the floating point reference, which is a problem when no >> floating point is involved. This is the counterintuitive part. >> >> Problem two is the inconsistency of behavior. Sometime a divide error is >> triggered and some other a floating point error. This is the inconsistent >> part. > > > http://en.wikipedia.org/wiki/SIGFPE
Ok, so it turns out I wasn't completely wrong. While the C standards states that SIGFPE will never be thrown for uint types, D presumably makes no such guarantee. Also, the example there uses `int`s and the compiler warns about a division by zero, then running it causes a floating point error. So other than the fact that you are using `uint`s rather than `int`s the behaviour is identical to that of C. -- James Miller