[PATCH] Fix truncf for sNaN input
Joseph Myers
joseph@codesourcery.com
Wed Mar 11 23:14:42 GMT 2020
On Wed, 11 Mar 2020, Keith Packard via Newlib wrote:
> Joseph Myers <joseph@codesourcery.com> writes:
>
> > That manpage is wrong. The underlying IEEE operation should raise
> > "invalid" and return a qNaN for an sNaN operand (but never raises
> > "inexact").
>
> Hrm. IEEE 754 says that you only get "invalid" if the NaN or infinite
> operand cannot be represented in the destination format. As these
> functions return the same type as their operand, NaN and inf values can
> be represented in the return value.
>
> Are you referring to some other standard?
I'm referring to 6.2 Operations with NaNs, "Signaling NaNs shall be
reserved operands that signal the invalid operation exception (see 7.2)
for every general-computational and signaling-computational operation
except for the conversions described in 5.12.".
> Also, glibc works the way the manual says, and I'd really like newlib
> and glibc to have the same general behavior, even if newlib isn't quite
> as accurate as glibc for some operations.
glibc's libm-test-trunc.inc explicitly verifies that sNaN inputs to trunc
functions result in a qNaN output with "invalid" but not "inexact" raised.
--
Joseph S. Myers
joseph@codesourcery.com
More information about the Newlib
mailing list