[Issue 13474] 32 bit DMD optimizer FP arithmetic bug

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Mon Sep 15 10:40:25 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=13474

--- Comment #2 from Илья Ярошенко <ilyayaroshenko at gmail.com> ---
//Fails both DMD -m32 and -m64

import core.stdc.tgmath;

double sumKBN(double[] d)
{
    double s = 0.0;
    double c = 0.0;

    foreach(double x; d)
    {
        double t = s + x;
        if(s.fabs >= x.fabs)
            c += (s-t)+x;
        else
            c += (x-t)+s;
        s = t;
    }

    return s + c;
}

unittest 
{
    assert(3 == [1, 1e100, 1, -1e100].sumKBN);
}

--


More information about the Digitalmars-d-bugs mailing list