On Sat, 4 May 2013 08:50:29 -0400 Greg Troxel <gdt%ir.bbn.com@localhost> wrote: > long double variables get the 80-bit precision > > without > > making (non-long) doubles get results that don't comply with > IEEE754 (by using extended precision intermedate values) Here is a little test program which still fails on Linux/x86_64 (gcc 4.6.3) if compiled with -mfpmath=387 -O2. So it is still the sad fact that you can't have full "long double" support without compromising "double" accuracy. At least with gcc. Would be interesting to see how clang does. best regards Matthias
#include <stdio.h> #define FPTYPE double void test(FPTYPE x, FPTYPE y) { const FPTYPE y2 = x + 1.0; if (y != y2) printf("error\n"); } int main() { const FPTYPE x = .012; const FPTYPE y = x + 1.0; test(x, y); return 0; }
Attachment:
signature.asc
Description: PGP signature