This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fmax/fmin sNaN compatibility question


On Mon, 9 Dec 2019, Ulrich Weigand wrote:

> Now I've been looking at TS 18661-1 (either n1809 or n2314) and I don't
> see where it defines the semantics in this way.
> 
> In fact, the clearest statement seems to be the sample implementation
> in F.10.9.2, paragraph 3, which according to TS 18661-1 now should be:
> 
> {
>   double r;
>   r = (isgreaterequal(x, y) || isnan(y)) ? x : y;
>   (void) canonicalize(&r, &r);
>   return r;
> }

See the "Append to footnote 374): Note also that this implementation does 
not handle signaling NaNs as required of implementations that define 
FP_SNANS_ALWAYS_SIGNAL." in TS 18661-1.

fmax is the maxNum operation from IEEE 754-2008 that was removed in IEEE 
754-2019; see the table of operation bindings in TS 18661-1.  It is *not* 
the maximum or maximumNumber operation from IEEE 754-2019 (there's a 
separate proposal for C bindings for those operations, with different 
names; implementing those operations has its own complication that they 
require -0 to compare less than +0, which maxNum doesn't, although the 
choice of a decimal cohort member where both arguments are members of the 
same cohort with different quantum exponents is still unspecified).

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]