hypot tests: More tests.
authorBruno Haible <bruno@clisp.org>
Wed, 29 Feb 2012 11:32:18 +0000 (12:32 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 29 Feb 2012 11:32:18 +0000 (12:32 +0100)
* tests/test-hypot.c: Include <float.h>.
(main): Add tests about overflow and underflow.

ChangeLog
tests/test-hypot.c

index b418b2c..18647d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2012-02-29  Bruno Haible  <bruno@clisp.org>
 
+       hypot tests: More tests.
+       * tests/test-hypot.c: Include <float.h>.
+       (main): Add tests about overflow and underflow.
+
+2012-02-29  Bruno Haible  <bruno@clisp.org>
+
        math code: Add comments.
        * lib/acosl.c: Add comment about related glibc source files.
        * lib/asinl.c: Likewise.
index ca762d1..d8cf7fa 100644 (file)
@@ -23,6 +23,8 @@
 #include "signature.h"
 SIGNATURE_CHECK (hypot, double, (double, double));
 
+#include <float.h>
+
 #include "macros.h"
 
 volatile double x;
@@ -38,5 +40,23 @@ main ()
   z = hypot (x, y);
   ASSERT (z >= 0.7211102550 && z <= 0.7211102551);
 
+  /* Overflow.  */
+  x = DBL_MAX;
+  y = DBL_MAX * 0.5;
+  z = hypot (x, y);
+  ASSERT (z == HUGE_VAL);
+
+  /* No underflow.  */
+  x = DBL_MIN;
+  y = 0.0;
+  z = hypot (x, y);
+  ASSERT (z == DBL_MIN);
+
+  /* No underflow.  */
+  x = DBL_MIN * 2.0;
+  y = DBL_MIN * 3.0;
+  z = hypot (x, y);
+  ASSERT (z >= DBL_MIN * 2.0 && z <= DBL_MIN * 4.0);
+
   return 0;
 }