This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

libm TLOSS errors for Bessel functions


There's a whole series of bugs (2551 is the first example I looked at; 
2552, 2553, 2554, 2562, 2563, 2565, 2566, 2576 all look like this from the 
subjects though Bugzilla is giving internal errors right now so I can't 
confirm) complaining about Bessel functions giving wrong, zero, values for 
large inputs.

The cause is the wrappers in math/w_j*.c which handle these functions 
specially for arguments greater than X_TLOSS (1.41484755040568800000e+16, 
independent of whether the argument is float, double or long double - 
that value was probably chosen for double).  Reporting "total loss" errors 
like this is only done for Bessel functions, not for any other functions.  
The implementations themselves support handling larger arguments (provided 
sincos does proper range reduction) - but that only gets used for 
_LIB_VERSION == _IEEE_.

What do we want to do about these bugs?  POSIX permits but does not 
require these errors (it leaves open the question of what "too large" is); 
I think it's most consistent with other functions not to give them by 
default.  The lack of specification of what "too large" is goes back to 
the SVID, but maybe the TLOSS handling should be enabled for only for 
_SVID_, or disabled for _POSIX_ as well as _IEEE_ (the difference is what 
happens in _XOPEN_ mode)?

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]