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



--- Comment #1 from Brad Roberts <bra...@puremagic.com> 2011-04-30 22:21:19 PDT 
---
Reduced test case:

Must be built with debugging turned on, otherwise it doesn't loop:
  dmd -m64 -gc  bug-pow.d

module bug;

real pow(real x, ubyte n) @trusted pure nothrow
{
    real p = 1.0;
    ubyte m = n;

    switch (n)
    {
    default:
    }

    while (1)
    {
        if (n & 1)
            p *= x;
        n >>= 1;
        if (!n)
            break;
        x *= x;
    }
    return p;
}

int main()
{
    immutable real x = 46;
    immutable ubyte three = 3;
    assert(pow(x,three) == x * x * x);

    return 0;
}

Extracted from std/math.d, function:

typeof(Unqual!(F).init * Unqual!(G).init) pow(F, G)(F x, G n) @trusted pure
nothrow
if (isIntegral!(F) && isIntegral!(G))

And it's following unittest.

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

Reply via email to