digitalmars.D.bugs - ieeeFlags do not work properly
- Torben Hagerup (15/15) Jan 07 2010 Run under D version 2.037, the program below runs through without raisin...
- Lars T. Kyllingstad (6/24) Jan 07 2010 Hi!
- Don (5/22) Jan 07 2010 This occurred at compile time. At runtime, this became:
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.
--------------------
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 ...
assert(a==real.infinity); // yes, exactly
assert(!ieeeFlags.divByZero); // perhaps not, after all
b/=0.0L; // once more, the same, really
assert(b==real.infinity); // yes, the same
assert(ieeeFlags.divByZero); // oops, not the same after all?
}
Jan 07 2010
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.
--------------------
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 ...
assert(a==real.infinity); // yes, exactly
assert(!ieeeFlags.divByZero); // perhaps not, after all
b/=0.0L; // once more, the same, really
assert(b==real.infinity); // yes, the same
assert(ieeeFlags.divByZero); // oops, not the same after all?
}
Hi!
Please report bugs in Bugzilla:
http://d.puremagic.com/issues/index.cgi
This newsgroup is just a feed from Bugzilla.
-Lars
Jan 07 2010
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, reallyIt'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? }
Jan 07 2010









"Lars T. Kyllingstad" <public kyllingen.NOSPAMnet> 