http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48341
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2011-03-29 18:50:47 UTC --- On Tue, 29 Mar 2011, ro at gcc dot gnu.org wrote: > Running the testcase through g++ -g3 -save-temps, epsilon.ii reveals > > #define __FLT_EPSILON__ 1.19209289550781250000000000000000e-7F > #define __DBL_EPSILON__ double(2.22044604925031308084726333618164e-16L) > #define __LDBL_EPSILON__ 4.94065645841246544176568792868221e-324L > > which is obviously bogus. The native <internal/float_core.h> has Why do you think this is bogus? It's correct for IBM long double, where the mantissa bits can be discontiguous, and so the least value greater than 1 that is representable has such discontiguous bits. See PR 19405 and <http://gcc.gnu.org/ml/gcc-patches/2005-01/msg00374.html>.