{{{
module m;
version(tango)
import tango.stdc.stdio;
else
import std.c.stdio;
extern(C){
real powl(real x,real y);
}
creal conj(creal z)
{
return z.re - z.im*1i;
}
void main() {
// with this assert on LinuxAmd64 the program writes
// tst 0xb.9db22d0e560418ap-5 0xf.1048380af74f336p-39 0xb.9db22d0dfbd0e1dp-5
// instead of
// tst 0xb.9db22d0e560418ap-5 0xf.1048380af74f336p-39 0xb.9db22d0e560418ap-5
assert(conj(7 + 3i) == 7-3i);
real x = powl(1.0L-0.637L, 24);
printf("tst %La %La %La\n", 1.0L-0.637L, x,powl(x, 1.0L/24.0L));
}
}}}
Comment #1 by manuel.montezelo — 2011-10-11T08:16:10Z
Created attachment 1037
Fawzi Mohamed's case as attachment
Added Fawzi Mohamed's case as attachment
Comment #2 by manuel.montezelo — 2011-10-11T08:19:12Z
I don't know if Fawzi Mohamed's solution is the correct one, but for me it produces what's supposed to be the correct result:
--------------------------------------------------------------------------------
$ gdc-4.6 issue-2297.d -o issue-2297 && ./issue-2297
tst 0xb.9db22d0e560418ap-5 0xf.1048380af74f336p-39 0xb.9db22d0e560418ap-5
$ dpkg -l gdc-4.6 | grep ii ii gdc-4.6 0.29.1-4.6.1-14 GNU D compiler, based on the GCC backend
$ uname -a Linux mafm-laptop 3.0.0-2-amd64 #1 SMP Fri Oct 7 20:48:45 UTC 2011 x86_64 GNU/Linux --------------------------------------------------------------------------------