This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug math/6809] New: tgamma() sets errno inconsistently for domain error
- From: "mtk dot manpages at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: 31 Jul 2008 13:34:15 -0000
- Subject: [Bug math/6809] New: tgamma() sets errno inconsistently for domain error
- Reply-to: sourceware-bugzilla at sourceware dot org
The POSIX.1 specification of tgamma says:
==
The value of x is a negative integer, or x is -Inf.
If the integer expression (math_errhandling & MATH_ERRNO) is non-zero, then
errno shall be set to [EDOM]. If the integer expression (math_errhandling &
MATH_ERREXCEPT) is non-zero, then the invalid floating-point exception shall be
raised.
==
For both -ve integer and -Inf, GNU's tgamma() correctly raises an FE_INVALID
exception. However, errno is only correctly set (to EDOM) for the -ve integer
case. For -Inf, errno is not set; it shoul dbe set to EDOM.
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).
--
Summary: tgamma() sets errno inconsistently for domain error
Product: glibc
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: math
AssignedTo: aj at suse dot de
ReportedBy: mtk dot manpages at gmail dot com
CC: glibc-bugs at sources dot redhat dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=6809
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.