------- Comment #3 from chat95 at mac dot com 2007-03-01 08:06 -------
1.
// long double PI * PI + IP
ld_a = ld_b = PI;
part becomes:
movl $560513024, %eax
movl $-921707870, %edx
movl $16384, %ecx
This number is equivalent to:
0x4000c90fdaa22168c000
and we can write down as floating point number as:
2^(16384-16383) * 1.100100100001111 1101101010100010 0010000101101000
11000000000000 (B)
2.// double PI * PI + IP
d_a = d_b = PI;
part becomes:
movl $1413754136, %eax
movl $1074340347, %edx
this number is equivalent to:
0x400921fb54442d18,
and corresponding floating number is:
2^(1024-1023)* 1.1001001000011111101101010100010001000010110100011000(B)
.
when we compare these significants of these two numbers:
1.100100100001111 1101101010100010 0010000101101000 11000(B)
1.100100100001111 1101101010100010 0010000101101000 11000 000000000 (B)
so - what we can say from here is:
#define PI 3.14...L is read as double for long double number with 0 filled
lowest 16bits.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31006