fmax/fmin sNaN compatibility question
Ulrich Weigand
uweigand@de.ibm.com
Mon Dec 9 17:39:00 GMT 2019
Joseph Myers wrote:
> 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.
Ah, this is what I missed. Thanks!
So just to clarify: there was a sample implementation in C11, and now there
is a (different) sample implementation in TS 18661-1 / C2x, but the expected
behavior in FP_SNANS_ALWAYS_SIGNAL mode is neither of those, but rather the
behavior described by maxNum from IEEE 754-2008. Right?
Do you know why the sample implementation was even updated then?
If FP_SNANS_ALWAYS_SIGNAL is false, shouldn't the C11 method then
still be OK?
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU/Linux compilers and toolchain
Ulrich.Weigand@de.ibm.com
More information about the Libc-alpha
mailing list