Sourceware Bugzilla – Bug 6781
sin() does not set errno on domain error
Last modified: 2010-09-11 15:09:36 UTC
For a domain error, sin() does not set errno. It should set errno to EDOM.
NOTE: the inverse trig functions do correctly set errno on error!
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).
Created attachment 2846 [details]
sample run showing problem:
$ /tmp/mt_sin inf
errno == 0
fetestexcept() says: FE_INVALID
0 FE_INVALID nan
This bug was fixed in glibc 2.10. The man page is updated for man-pages-2.37.