[PATCH] stdlib: Make strtod/strtof set ERANGE consistently for underflow.

Joseph Myers joseph@codesourcery.com
Tue Jun 22 20:31:12 GMT 2021


On Tue, 22 Jun 2021, Keith Packard wrote:

> This patch attempts to consistently set errno to ERANGE for all
> 'underflow' conditions, which is to say all values which are not
> exactly zero and which cannot be represented in normalized form.
> 
> This matches glibc behavior, as well as the Linux, Mac OS X, OpenBSD,
> FreeBSD and SunOS strtod man pages.

What glibc does is set it when the IEEE underflow exception flag is 
raised.  That is, when the result is tiny and inexact, where "tiny" 
follows each architecture's choice of before-rounding or after-rounding 
tininess detection (neither of which means "the rounded result is 
subnormal"; for both definitions of tiny results, there are values that 
round to the least-magnitude normal value of their sign but are still 
considered tiny, because after-rounding actually means "the result would 
have a subnormal exponent if rounded to the same precision as for normal 
values but with a wider exponent range").

-- 
Joseph S. Myers
joseph@codesourcery.com


More information about the Newlib mailing list