This is sources Bugzilla
Bugzilla Version 2.17.5
Bugzilla Bug 6810
  tgamma() does not set errno for underflow error Last modified: 2008-07-31 13:53
     Query page      Enter new bug
Bug#: 6810   Hardware:   Reporter: Michael Kerrisk <mtk.manpages@gmail.com>
Host: Target: Build:
Product:     Add CC:
Component:   Version:   CC:
Remove selected CCs
Status: NEW   Priority:  
Resolution:   Severity:  
Assigned To: Andreas Jaeger <aj@suse.de>   Target Milestone:  
Flags: Requestee:
  backport ()
  examined ()
  testsuite ()
Summary:
Keywords:

Attachment Description Type Created Actions
mt_tgamma.c test program text/plain 2008-07-31 13:53 Edit None
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 6810 depends on: Show dependency tree
Show dependency graph
Bug 6810 blocks:

Additional Comments:


Leave as NEW 
Mark bug as waiting for feedback
Mark bug as suspended
Accept bug (change status to ASSIGNED)
Resolve bug, changing resolution to
Resolve bug, mark it as duplicate of bug #
Reassign bug to
Reassign bug to owner of selected component

View Bug Activity   |   Format For Printing


Description:   Last confirmed: 0000-00-00 00:00 Opened: 2008-07-31 13:52
tgamma() correctly sets errno and raises an exception for an overflow error. 
However, for an underflow error, it only raises an exception -- errno is not
set; errno should be set to ERANGE for this case.

Background: 
On error, many glibc math functions both set errno and raise an exception
(fetestexcept(3)).  For example, the following  function all do this: acos(),
asin(), cosh(), sinh(), acosh(), asinh(), exp(), exp2(), ldexp(), log(),
log10(), log2().  However, there is much inconsistency.  Some functions raise an
exception, but don't set errno.  Some functions set errno for some errors, but
not others.  A few set errno, but don't raise an exception.  This series of bug
reports documents deviations from what I consider the ideal: all functions
should BOTH set errno AND raise an exception for all errors.

All of these reports relate to tests on glibc 2.8 (as provided by SUSE 11.0).

------- Additional Comment #1 From Michael Kerrisk 2008-07-31 13:53 -------
Created an attachment (id=2882)
test program

Sample runs demonstrating the problem:

$ /tmp/mt_tgamma 1e3
errno == ERANGE
fetestexcept() says:  FE_OVERFLOW FE_INEXACT
tgamma(1.00000000000000000e+03)=inf
ERANGE FE_OVERFLOW +inf

$ /tmp/mt_tgamma -- -100000.5
errno == 0
fetestexcept() says:  FE_UNDERFLOW FE_INEXACT
tgamma(-1.00000500000000000e+05)=-0.00000000000000000e+00
0 FE_UNDERFLOW -0

     Query page      Enter new bug
Actions: New | Query | bug # | Reports | Requests   New Account | Log In