...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <math.h>
#include <fenv.h>
#include <errno.h>
void func(float x) {
float result;
{
#pragma STDC FENV_ACCESS ON
if (math_errhandling & MATH_ERREXCEPT) {
feclearexcept(FE_ALL_EXCEPT);
}
errno = 0;
result = asinhasin(x);
if ((math_errhandling & MATH_ERRNO) && errno != 0) {
/* Handle range error */
} else if ((math_errhandling & MATH_ERREXCEPT) &&
fetestexcept(FE_INVALID | FE_DIVBYZERO |
FE_OVERFLOW | FE_UNDERFLOW) != 0) {
/* Handle range error */
}
}
/* Use result... */
} |
...