Fw: [PATCH 0/3] libm: Clean up gamma functions

Joseph Myers joseph@codesourcery.com
Fri Aug 28 18:29:35 GMT 2020


On Thu, 27 Aug 2020, Keith Packard via Newlib wrote:

>         +INFINITY input and +INFINITY output generate *no* error
>         presumably because there's an assumption that the computation
>         which resulted in +INFINITY being provided to these functions
>         already raised a FE_OVERFLOW exception, and perhaps an ERANGE
>         errno.

The basic principles for infinite results from IEEE floating-point 
operations and libm functions are that overflow is when infinity is an 
*inexact* result from rounding (or, in some rounding modes, the largest 
finite value results from rounding but rounding with infinite exponent 
range would have produced an exponent that could not be represented in the 
actual format).  Divide by zero is when infinity is an *exact* result from 
*finite* arguments.  If infinity is an exact result and at least one 
argument is infinite, there is no error or exception (unless it's some of 
the new minimum/maximum operations in IEEE 754-2019 and the other argument 
is a signaling NaN).

-- 
Joseph S. Myers
joseph@codesourcery.com


More information about the Newlib mailing list