Thread overview
[Issue 715] New: incorrect IEEE 754 handling of -0i and +0i
Dec 22, 2006
d-bugmail
Dec 23, 2006
Don Clugston
Dec 23, 2006
d-bugmail
December 22, 2006
http://d.puremagic.com/issues/show_bug.cgi?id=715

           Summary: incorrect IEEE 754 handling of -0i and +0i
           Product: D
           Version: 0.177
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: thomas-dloop@kuehne.cn


#
# union F{
#    float f;
#    uint i;
# }
#
# union I{
#    ifloat f;
#    uint i;
# }
#
# void foo(){
#    // success with "float"
#    F f;
#    f.f = 0.0f;
#    f.f *= -1.0f;
#    assert(f.i == 0x80000000);
#
#    // failure with "ifloat"
#    I i;
#    i.f = 0.0fi;
#    i.f *= -1.0fi;
#    assert(i.i == 0x80000000);
# }
#

test cases: http://dstress.kuehne.cn/run/ieee_754_zerosdq_01.d http://dstress.kuehne.cn/run/ieee_754_zerosdq_02.d http://dstress.kuehne.cn/run/ieee_754_zerosdq_03.d http://dstress.kuehne.cn/run/ieee_754_zerosdq_04.d


-- 

December 23, 2006
This creates a real, not an imaginary. It shouldn't compile at all.

> # union I{
> #    ifloat f;
> #    uint i;
> # }
> #
> # void foo(){
> #    I i;
> #    i.f = 0.0fi;
> #    i.f *= -1.0fi;   <<  This should be i.f *= -1.0f;
> #    assert(i.i == 0x80000000);
> # }
December 23, 2006
http://d.puremagic.com/issues/show_bug.cgi?id=715


thomas-dloop@kuehne.cn changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID




------- Comment #2 from thomas-dloop@kuehne.cn  2006-12-23 07:13 -------
Thanks for catching this. I've fixed the test cases and refiled the issue as #730


--