This is sources Bugzilla
Bugzilla Version 2.17.5
Bugzilla Bug 6787
  exp10() does not consistently set errno Last modified: 2008-07-31 08:55
     Query page      Enter new bug
Bug#: 6787   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_exp.c test program text/plain 2008-07-31 08:55 Edit None
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 6787 depends on: Show dependency tree
Show dependency graph
Bug 6787 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-30 15:01
exp10() correctly raises exceptions for overflow and underflow.  However, errno
is only set to ERANGE for the overflow case.  For underflow, it is not set.  It
should also be set to ERANGE in the latter case.

Note also that exp10() is inconsistent with exp2() and exp(), both of which
always set errno for bother underflow and overflow.

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 08:55 -------
Created an attachment (id=2852)
test program

Sample run showing problem.  Note that errno is set for overflow, but not for
underflow.

$ /tmp/mt_exp10 -- -1e5
errno == 0
fetestexcept() says:  FE_UNDERFLOW FE_INEXACT
exp10(-1.00000000000000000e+05)=0.00000000000000000e+00
0 FE_UNDERFLOW +0

$ /tmp/mt_exp10 -- 1e5
errno == ERANGE
fetestexcept() says:  FE_OVERFLOW FE_INEXACT
exp10(1.00000000000000000e+05)=inf
ERANGE FE_OVERFLOW +inf

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