diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-12-07 21:22:46 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-12-07 21:22:46 +0000 |
commit | 07449987c90864fceb487994b4aaa5170803ab24 (patch) | |
tree | 76771090b9cb1866d55b5986c677e51dd768c3af /math/bug-nexttoward.c | |
parent | 64b02fd2f5fd5d2e2b7187b5e982fa6b59587500 (diff) | |
download | glibc-07449987c90864fceb487994b4aaa5170803ab24.tar.gz glibc-07449987c90864fceb487994b4aaa5170803ab24.tar.xz glibc-07449987c90864fceb487994b4aaa5170803ab24.zip |
Update.
2003-12-07 Ulrich Drepper <drepper@redhat.com> * sysdeps/i386/fpu/s_nexttowardf.c: Construct overflow value correctly. * sysdeps/i386/fpu/s_nexttoward.c: Likewise. * sysdeps/ieee754/ldbl-128/s_nexttoward.c: Likewise. * sysdeps/ieee754/ldbl-96/s_nexttoward.c: Likewise. * math/Makefile (tests): Add bug-nexttoward. * math/bug-nexttowward.c: New file. * sysdeps/generic/s_nextafter.c: Make sure overflow exception is set. * sysdeps/ieee754/flt-32/s_nextafterf.c: Likewise. * math/bug-nextafter.c (main): Add tests for overflow and negative values.
Diffstat (limited to 'math/bug-nexttoward.c')
-rw-r--r-- | math/bug-nexttoward.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/math/bug-nexttoward.c b/math/bug-nexttoward.c new file mode 100644 index 0000000000..e306a129c2 --- /dev/null +++ b/math/bug-nexttoward.c @@ -0,0 +1,65 @@ +#include <fenv.h> +#include <math.h> +#include <float.h> +#include <stdlib.h> +#include <stdio.h> + +int +main (void) +{ + int result = 0; + + long double tl = (long double) FLT_MAX + 0x1.0p128L; + float fi = INFINITY; + float m = FLT_MAX; + feclearexcept (FE_ALL_EXCEPT); + if (nexttowardf (m, tl) != fi) + { + puts ("nexttowardf+ failed"); + ++result; + } + if (fetestexcept (FE_OVERFLOW) == 0) + { + puts ("nexttowardf+ did not overflow"); + ++result; + } + feclearexcept (FE_ALL_EXCEPT); + if (nexttowardf (-m, -tl) != -fi) + { + puts ("nexttowardf- failed"); + ++result; + } + if (fetestexcept (FE_OVERFLOW) == 0) + { + puts ("nexttowardf- did not overflow"); + ++result; + } + + tl = (long double) DBL_MAX + 1.0e305L; + double di = INFINITY; + double dm = DBL_MAX; + feclearexcept (FE_ALL_EXCEPT); + if (nexttoward (dm, tl) != di) + { + puts ("nexttoward+ failed"); + ++result; + } + if (fetestexcept (FE_OVERFLOW) == 0) + { + puts ("nexttoward+ did not overflow"); + ++result; + } + feclearexcept (FE_ALL_EXCEPT); + if (nexttoward (-dm, -tl) != -di) + { + puts ("nexttoward- failed"); + ++result; + } + if (fetestexcept (FE_OVERFLOW) == 0) + { + puts ("nexttoward- did not overflow"); + ++result; + } + + return result; +} |