http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48341

--- Comment #4 from Vincent Lefèvre <vincent-gcc at vinc17 dot net> ---
I can see the same problem under Linux (gcc110.fsffrance.org).

According to the C standard (C99 and C11), the *_EPSILON values are "the
difference between 1 and the least value greater than 1 that is representable
in the given floating point type, b^(1-p)".

Here b = 2 and p = LDBL_MANT_DIG = 106.

I think that the C standard is badly worded. It should have said "the
difference between 1 and the least floating-point value greater than 1 that is
representable in the given type, b^(1-p)". What is regarded as a floating-point
value is specified by the standard: see 5.2.4.2.2p2 "A floating-point number
(x) is defined by the following model: [...]".

Reply via email to