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

Reply via email to