maint: update copyright
[gnulib.git] / tests / test-ldexpl.c
index e78e9a5..614564d 100644 (file)
@@ -1,5 +1,5 @@
 /* Test of multiplying a 'long double' by a power of 2.
-   Copyright (C) 2007-2011 Free Software Foundation, Inc.
+   Copyright (C) 2007-2014 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -32,90 +32,29 @@ SIGNATURE_CHECK (ldexpl, long double, (long double, int));
 #include "nan.h"
 #include "macros.h"
 
+#undef INFINITY
+#undef NAN
+
+#define DOUBLE long double
+#define ISNAN isnanl
+#define INFINITY Infinityl ()
+#define NAN NaNl ()
+#define L_(literal) literal##L
+#define MINUS_ZERO minus_zerol
+#define MIN_EXP LDBL_MIN_EXP
+#define MAX_EXP LDBL_MAX_EXP
+#define LDEXP ldexpl
+#define RANDOM randoml
+#include "test-ldexp.h"
+
 int
 main ()
 {
-  int i;
-  long double x;
-  long double y;
   DECL_LONG_DOUBLE_ROUNDING
 
   BEGIN_LONG_DOUBLE_ROUNDING ();
 
-  { /* NaN.  */
-    x = NaNl ();
-    y = ldexpl (x, 0); ASSERT (isnanl (y));
-    y = ldexpl (x, 5); ASSERT (isnanl (y));
-    y = ldexpl (x, -5); ASSERT (isnanl (y));
-  }
-
-  { /* Positive infinity.  */
-    x = Infinityl ();
-    y = ldexpl (x, 0); ASSERT (y == x);
-    y = ldexpl (x, 5); ASSERT (y == x);
-    y = ldexpl (x, -5); ASSERT (y == x);
-  }
-
-  { /* Negative infinity.  */
-    x = - Infinityl ();
-    y = ldexpl (x, 0); ASSERT (y == x);
-    y = ldexpl (x, 5); ASSERT (y == x);
-    y = ldexpl (x, -5); ASSERT (y == x);
-  }
-
-  { /* Positive zero.  */
-    x = 0.0L;
-    y = ldexpl (x, 0); ASSERT (y == x); ASSERT (!signbit (x));
-    y = ldexpl (x, 5); ASSERT (y == x); ASSERT (!signbit (x));
-    y = ldexpl (x, -5); ASSERT (y == x); ASSERT (!signbit (x));
-  }
-
-  { /* Negative zero.  */
-    x = minus_zerol;
-    y = ldexpl (x, 0); ASSERT (y == x); ASSERT (signbit (x));
-    y = ldexpl (x, 5); ASSERT (y == x); ASSERT (signbit (x));
-    y = ldexpl (x, -5); ASSERT (y == x); ASSERT (signbit (x));
-  }
-
-  { /* Positive finite number.  */
-    x = 1.73205L;
-    y = ldexpl (x, 0); ASSERT (y == x);
-    y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
-    y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
-  }
-
-  { /* Negative finite number.  */
-    x = -20.085536923187667742L;
-    y = ldexpl (x, 0); ASSERT (y == x);
-    y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
-    y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
-  }
-
-  for (i = 1, x = 1.73205L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
-    {
-      y = ldexpl (x, 0); ASSERT (y == x);
-      {
-        volatile long double expected;
-        y = ldexpl (x, 5);
-        expected = x * 32.0L;
-        ASSERT (y == expected);
-      }
-      y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
-    }
-  for (i = 1, x = 1.73205L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
-    {
-      y = ldexpl (x, 0); ASSERT (y == x);
-      y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
-      if (i - 5 >= LDBL_MIN_EXP)
-        {
-          y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
-        }
-    }
-  for (; i >= LDBL_MIN_EXP - 100 && x > 0.0L; i--, x *= 0.5L)
-    {
-      y = ldexpl (x, 0); ASSERT (y == x);
-      y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
-    }
+  test_function ();
 
   return 0;
 }