aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--math/test-misc.c43
2 files changed, 46 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 8d399f5b48..832e1aa516 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2000-12-04 Ulrich Drepper <drepper@redhat.com>
+ * math/test-misc.c (main): Add a few more over and underflow tests
+ for scalb.
+
* sysdeps/i386/fpu/e_scalb.S: Handle NaN as first parameter correctly.
* sysdeps/i386/fpu/e_scalbf.S: Likewise.
* sysdeps/i386/fpu/e_scalbl.S: Likewise.
diff --git a/math/test-misc.c b/math/test-misc.c
index 514035554c..0dbb0882fa 100644
--- a/math/test-misc.c
+++ b/math/test-misc.c
@@ -17,6 +17,7 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
@@ -208,5 +209,47 @@ main (void)
}
#endif
+#ifndef NO_LONG_DOUBLE
+ {
+ long double r;
+
+ feclearexcept (FE_ALL_EXCEPT);
+ r = scalbl (LDBL_MIN, 2147483647);
+ if (! isinf (r))
+ {
+ puts ("scalbl (LDBL_MIN, 2147483647) does not return Inf");
+ result = 1;
+ }
+ else if (signbit (r) != 0)
+ {
+ puts ("scalbl (LDBL_MIN, 2147483647) returns -Inf");
+ result = 1;
+ }
+ else if (fetestexcept (FE_UNDERFLOW))
+ {
+ puts ("scalbl(NaN, 0) raises underflow exception");
+ result = 1;
+ }
+
+ feclearexcept (FE_ALL_EXCEPT);
+ r = scalbl (LDBL_MAX, -2147483647);
+ if (r != 0.0)
+ {
+ puts ("scalbl (LDBL_MAX, -2147483647) does not return 0");
+ result = 1;
+ }
+ else if (signbit (r) != 0)
+ {
+ puts ("scalbl (LDBL_MAX, -2147483647) returns -Inf");
+ result = 1;
+ }
+ else if (fetestexcept (FE_OVERFLOW))
+ {
+ puts ("scalbl(NaN, 0) raises overflow exception");
+ result = 1;
+ }
+ }
+#endif
+
return result;
}