diff options
Diffstat (limited to 'math')
-rw-r--r-- | math/Makefile | 1 | ||||
-rw-r--r-- | math/test-fenv.c | 18 |
2 files changed, 18 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile index 45df416..2e24019 100644 --- a/math/Makefile +++ b/math/Makefile @@ -83,6 +83,7 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \ # We do the `long double' tests only if this data type is available and # distinct from `double'. test-longdouble-yes = test-ldouble test-ildoubl +distribute += $(test-longdouble-yes:=.c) ifneq (no,$(PERL)) libm-tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \ diff --git a/math/test-fenv.c b/math/test-fenv.c index d803f27..c369fc0 100644 --- a/math/test-fenv.c +++ b/math/test-fenv.c @@ -400,6 +400,7 @@ static void feexcp_mask_test (const char *flag_name, int fe_exc) { int status; + int exception; pid_t pid; printf ("Test: after fedisable (%s) processes will not abort\n", flag_name); @@ -415,7 +416,22 @@ feexcp_mask_test (const char *flag_name, int fe_exc) setrlimit (RLIMIT_CORE, &core_limit); #endif feenableexcept (FE_ALL_EXCEPT); - fedisableexcept (fe_exc); + exception = fe_exc; +#ifdef FE_INEXACT + /* The standard allows the inexact exception to be set together with the + underflow and overflow exceptions. So add FE_INEXACT to the set of + exceptions to be disabled if we will be raising underflow or + overflow. */ +# ifdef FE_OVERFLOW + if (fe_exc & FE_OVERFLOW) + exception |= FE_INEXACT; +# endif +# ifdef FE_UNDERFLOW + if (fe_exc & FE_UNDERFLOW) + exception |= FE_INEXACT; +# endif +#endif + fedisableexcept (exception); feraiseexcept (fe_exc); exit (2); } |