www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Different NaNs used

reply bearophile <bearophileHUGS lycos.com> writes:
This question is related to this thread:
http://d.puremagic.com/issues/show_bug.cgi?id=3632

Can you tell me why real.nan and real.init don't contain the same bit patterns?


import std.math: isIdentical;
void main() {
    assert(isIdentical(real.nan, real.init)); // this asserts
}

Bye and thank you,
bearophile
Jun 27 2011
parent reply "Lars T. Kyllingstad" <public kyllingen.NOSPAMnet> writes:
On Mon, 27 Jun 2011 16:41:14 -0400, bearophile wrote:

 This question is related to this thread:
 http://d.puremagic.com/issues/show_bug.cgi?id=3632
 
 Can you tell me why real.nan and real.init don't contain the same bit
 patterns?
 
 
 import std.math: isIdentical;
 void main() {
     assert(isIdentical(real.nan, real.init)); // this asserts
 }

real.init is a signaling NaN, real.nan is not. I don't know if this is by design, but I suppose it may be: You can "quiet" a signaling NaN by assigning real.nan to your variable. http://en.wikipedia.org/wiki/NaN#Signaling_NaN -Lars
Jun 29 2011
parent bearophile <bearophileHUGS lycos.com> writes:
Lars T. Kyllingstad:

 real.init is a signaling NaN, real.nan is not.  I don't know if this is 
 by design, but I suppose it may be:

Thank you for your probably correct hypothesis :-) Bye, bearophile
Jun 29 2011