[Issue 8745] New: floating point comparison ("is" vs "==") inconsistency (on 32)

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Oct 1 14:21:36 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=8745

           Summary: floating point comparison ("is" vs "==") inconsistency
                    (on 32)
           Product: D
           Version: unspecified
          Platform: x86
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: monarchdodra at gmail.com


--- Comment #0 from monarchdodra at gmail.com 2012-10-01 14:21:50 PDT ---
>From http://forum.dlang.org/group/digitalmars.D.learn

//----
import std.stdio;
import std.math;

@property double getFloat()
{
   return sqrt(1.1);
}

void main()
{
    writeln(getFloat() == getFloat());
    writeln(getFloat() is getFloat());
}
//----

x32 Produces http://dpaste.dzfl.pl/e0e0bbae :
false
true

x64 Produces http://dpaste.dzfl.pl/c1c7a415 :
true
true

While one may argue that the comparison *may* return false, the difference in
behavior between "==" and "is" not expected behavior (unless I'm missing
something...? ).

PS: the behavior difference is consistent http://dpaste.dzfl.pl/2ee9ae4e :
//----
import std.stdio;
import std.math;

@property double getFloat()
{
   return sqrt(1.1);
}

void main()
{
    writeln(getFloat() == getFloat());
    writeln(getFloat() is getFloat());
    writeln(getFloat() is getFloat());
    writeln(getFloat() == getFloat());
    writeln(getFloat() is getFloat());
    writeln(getFloat() == getFloat());
    writeln(getFloat() == getFloat());
    writeln(getFloat() is getFloat());
}
//----
false
true
true
false
true
false
false
true
//----

On a side note, I find it strange that "==" return false in such a consistent
manner. It might be over-sensitive to extended precision?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list