Torben Hagerup wrote:
Run under D version 2.037, the program below runs through without raising any 
assert exceptions. This shows an erratic behavior with respect to ieeeFlags 
that is hardly intended. Other ieeeFlags also work (or, rather, do not work) in 
unexpected ways.

--------------------

This isn't a bug.

import std.math;

void main() {
// The execution leads to no assert errors
 real a,b=3.5;
 resetIeeeFlags();
 assert(!ieeeFlags.divByZero); // so far no zero division
 a=3.5/0.0L; // but now ...

This occurred at compile time. At runtime, this became:
a = real.infinity;

 assert(a==real.infinity); // yes, exactly
 assert(!ieeeFlags.divByZero); // perhaps not, after all
 b/=0.0L; // once more, the same, really

It's not the same. This is a runtime division by zero.

 assert(b==real.infinity); // yes, the same
 assert(ieeeFlags.divByZero); // oops, not the same after all?
}

Reply via email to