isnan and exceptions
Florian Weimer
fweimer@redhat.com
Fri Aug 28 15:23:04 GMT 2020
It seems that __builtin_isnanl raises Invalid Operation for sNaNs on
x86-64, but glibc's isnanl implementation does not.
Is this expected? Are both behaviors correct?
The background of my question is that if I replace isnanl with this:
int
isnanl (long double x)
{
return __builtin_isnanl (x);
}
I get these test suite failures:
testing long double (without inline functions)
Failure: isnan (sNaN): Exception "Invalid operation" set
Failure: isnan (-sNaN): Exception "Invalid operation" set
Failure: isnan_downward (sNaN): Exception "Invalid operation" set
Failure: isnan_downward (-sNaN): Exception "Invalid operation" set
Failure: isnan_towardzero (sNaN): Exception "Invalid operation" set
Failure: isnan_towardzero (-sNaN): Exception "Invalid operation" set
Failure: isnan_upward (sNaN): Exception "Invalid operation" set
Failure: isnan_upward (-sNaN): Exception "Invalid operation" set
Thanks,
Florian
More information about the Libc-help
mailing list