On 9 July 2013 17:08, Johannes Pfau <nos...@example.com> wrote: > One of the tests in std.complex is failing because cos(LITERAL) and > cos(VARIABLE) return different results. AFAICS this happens only if the > parameter doesn't fit in 80bits and needs to be rounded. If > LITERAL/VARIABLE are values which fit exactly in 80bits we get the same > result. It's exactly the same situation in GCC. > I guess we just get higher precision when evaluating those functions > using constant folding as the LITERAL value is probably not rounded > before evaluating the cos. > > So should we try to make the constant folding produce exactly the same > value as the runtime version or do we want to keep the higher precision > and adjust the unit test to use different values? >
If gcc is the same, I'd just accept that's just how the backend works. Also, with dmd, does it not use inline assembler for these routines - so the calculated value is always the same? -- Iain Buclaw *(p < e ? p++ : p) = (c & 0x0f) + '0';