changeset 16044:566be7372974

fma*: Simplify test. * tests/test-fma2.h (FORGIVE_GLIBC_BUG): Remove macro. (test_function): Remove all if (FORGIVE_GLIBC_BUG) statements.
author Bruno Haible <bruno@clisp.org>
date Sun, 06 Nov 2011 02:51:04 +0100
parents 031ad3dbbe05
children 708181030fbc
files ChangeLog tests/test-fma2.h
diffstat 2 files changed, 42 insertions(+), 106 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2011-11-05  Bruno Haible  <bruno@clisp.org>
 
+	fma*: Simplify test.
+	* tests/test-fma2.h (FORGIVE_GLIBC_BUG): Remove macro.
+	(test_function): Remove all if (FORGIVE_GLIBC_BUG) statements.
+
 	Tests for module 'fmal'.
 	* modules/fmal-tests: New file.
 	* tests/test-fmal1.c: New file.
--- a/tests/test-fma2.h
+++ b/tests/test-fma2.h
@@ -25,15 +25,6 @@
 #define XE_RANGE 0
 #define YE_RANGE 0
 
-/* Define to 1 if you want to allow the behaviour of the glibc 2.11 fma()
-   implementation.  glibc bug #1..#16 refer to the test cases in
-   <http://sourceware.org/bugzilla/show_bug.cgi?id=13304>.  */
-#if __GLIBC__ >= 2 && 0
-# define FORGIVE_GLIBC_BUG 1
-#else
-# define FORGIVE_GLIBC_BUG 0
-#endif
-
 /* Define to 1 if you want to allow the behaviour of the 'double-double'
    implementation of 'long double' (seen on IRIX 6.5 and Linux/PowerPC).
    This floating-point type does not follow IEEE 754.  */
@@ -181,14 +172,10 @@
                               sign * (POW2 (xe + ye)
                                       + POW2 (xe + ye - i + 1));
                           else if (2 * i == MANT_BIT)
-                            {
-                              if (FORGIVE_GLIBC_BUG) /* glibc bug #7 */
-                                goto skip1;
-                              expected =
-                                sign * (POW2 (xe + ye)
-                                        + POW2 (xe + ye - i + 1)
-                                        + POW2 (xe + ye - MANT_BIT + 1));
-                            }
+                            expected =
+                              sign * (POW2 (xe + ye)
+                                      + POW2 (xe + ye - i + 1)
+                                      + POW2 (xe + ye - MANT_BIT + 1));
                           else
                             expected =
                               sign * (POW2 (xe + ye)
@@ -198,14 +185,10 @@
                       else if (xe + ye == ze + MANT_BIT)
                         {
                           if (2 * i >= MANT_BIT)
-                            {
-                              if (FORGIVE_GLIBC_BUG) /* glibc bug #8 */
-                                goto skip1;
-                              expected =
-                                sign * (POW2 (xe + ye)
-                                        + POW2 (xe + ye - i + 1)
-                                        + POW2 (xe + ye - MANT_BIT + 1));
-                            }
+                            expected =
+                              sign * (POW2 (xe + ye)
+                                      + POW2 (xe + ye - i + 1)
+                                      + POW2 (xe + ye - MANT_BIT + 1));
                           else if (2 * i == MANT_BIT - 1)
                             /* round-to-even rounds up */
                             expected =
@@ -219,16 +202,11 @@
                                       + POW2 (xe + ye - 2 * i));
                         }
                       else if (xe + ye > ze - MANT_BIT + 2 * i)
-                        {
-                          if (2 * i == MANT_BIT)
-                            if (FORGIVE_GLIBC_BUG) /* glibc bug #9 */
-                              goto skip1;
-                          expected =
-                            sign * (POW2 (ze)
-                                    + POW2 (xe + ye)
-                                    + POW2 (xe + ye - i + 1)
-                                    + POW2 (xe + ye - 2 * i));
-                        }
+                        expected =
+                          sign * (POW2 (ze)
+                                  + POW2 (xe + ye)
+                                  + POW2 (xe + ye - i + 1)
+                                  + POW2 (xe + ye - 2 * i));
                       else if (xe + ye >= ze - MANT_BIT + i)
                         expected =
                           sign * (POW2 (ze)
@@ -236,9 +214,6 @@
                                   + POW2 (xe + ye - i + 1));
                       else if (xe + ye == ze - MANT_BIT + i - 1)
                         {
-                          if (2 * i >= MANT_BIT)
-                            if (FORGIVE_GLIBC_BUG) /* glibc bug #3, #10 */
-                              goto skip1;
                           if (i == 1)
                             expected =
                               sign * (POW2 (ze) + POW2 (ze - MANT_BIT + 1));
@@ -256,12 +231,8 @@
                       else if (xe + ye == ze - MANT_BIT - 1)
                         {
                           if (i == 1)
-                            {
-                              if (FORGIVE_GLIBC_BUG) /* glibc bug #1 */
-                                goto skip1;
-                              expected =
-                                sign * (POW2 (ze) + POW2 (ze - MANT_BIT + 1));
-                            }
+                            expected =
+                              sign * (POW2 (ze) + POW2 (ze - MANT_BIT + 1));
                           else
                             expected = z;
                         }
@@ -299,9 +270,6 @@
                         if (xe + ye == ze)
                           {
                             /* maximal extinction */
-                            if (2 * i >= MANT_BIT)
-                              if (FORGIVE_GLIBC_BUG) /* glibc bug #12 */
-                                goto skip2;
                             expected =
                               sign * (POW2 (xe + ye - i + 1)
                                       + POW2 (xe + ye - 2 * i));
@@ -314,15 +282,10 @@
                                 sign * (- POW2 (xe + ye)
                                         + POW2 (xe + ye - i + 1));
                             else
-                              {
-                                if (2 * i == MANT_BIT)
-                                  if (FORGIVE_GLIBC_BUG) /* glibc bug #13 */
-                                    goto skip2;
-                                expected =
-                                  sign * (- POW2 (xe + ye)
-                                          + POW2 (xe + ye - i + 1)
-                                          + POW2 (xe + ye - 2 * i));
-                              }
+                              expected =
+                                sign * (- POW2 (xe + ye)
+                                        + POW2 (xe + ye - i + 1)
+                                        + POW2 (xe + ye - 2 * i));
                           }
                         else if (xe + ye > ze + MANT_BIT)
                           {
@@ -355,43 +318,29 @@
                                         + POW2 (xe + ye - 2 * i));
                           }
                         else if (xe + ye >= ze - MANT_BIT + 2 * i)
-                          {
-                            if (2 * i == MANT_BIT)
-                              if (FORGIVE_GLIBC_BUG) /* glibc bug #11 */
-                                goto skip2;
-                            expected =
-                              sign * (- POW2 (ze)
-                                      + POW2 (xe + ye)
-                                      + POW2 (xe + ye - i + 1)
-                                      + POW2 (xe + ye - 2 * i));
-                          }
+                          expected =
+                            sign * (- POW2 (ze)
+                                    + POW2 (xe + ye)
+                                    + POW2 (xe + ye - i + 1)
+                                    + POW2 (xe + ye - 2 * i));
                         else if (xe + ye >= ze - MANT_BIT + i - 1)
                           expected =
                             sign * (- POW2 (ze)
                                     + POW2 (xe + ye)
                                     + POW2 (xe + ye - i + 1));
                         else if (xe + ye == ze - MANT_BIT + i - 2)
-                          {
-                            if (2 * i >= MANT_BIT)
-                              if (FORGIVE_GLIBC_BUG) /* glibc bug #4, #14 */
-                                goto skip2;
-                            expected =
-                              sign * (- POW2 (ze)
-                                      + POW2 (xe + ye)
-                                      + POW2 (ze - MANT_BIT));
-                          }
+                          expected =
+                            sign * (- POW2 (ze)
+                                    + POW2 (xe + ye)
+                                    + POW2 (ze - MANT_BIT));
                         else if (xe + ye >= ze - MANT_BIT)
                           expected =
                             sign * (- POW2 (ze)
                                     + POW2 (xe + ye));
                         else if (xe + ye == ze - MANT_BIT - 1)
-                          {
-                            if (FORGIVE_GLIBC_BUG) /* glibc bug #2 */
-                              goto skip2;
-                            expected =
-                              sign * (- POW2 (ze)
-                                      + POW2 (ze - MANT_BIT));
-                          }
+                          expected =
+                            sign * (- POW2 (ze)
+                                    + POW2 (ze - MANT_BIT));
                         else
                           expected = z;
                         ASSERT (result == expected);
@@ -510,9 +459,6 @@
                         if (xe + ye == ze)
                           {
                             /* maximal extinction */
-                            if (2 * i > MANT_BIT)
-                              if (FORGIVE_GLIBC_BUG) /* glibc bug #16 */
-                                goto skip4;
                             expected = sign * - POW2 (xe + ye - 2 * i);
                           }
                         else if (xe + ye > ze + MANT_BIT + 1)
@@ -520,13 +466,9 @@
                             if (2 * i > MANT_BIT + 1)
                               expected = sign * POW2 (xe + ye);
                             else if (2 * i == MANT_BIT + 1)
-                              {
-                                if (FORGIVE_GLIBC_BUG) /* glibc bug #6 */
-                                  goto skip4;
-                                expected =
-                                  sign * (POW2 (xe + ye)
-                                          - POW2 (xe + ye - MANT_BIT));
-                              }
+                              expected =
+                                sign * (POW2 (xe + ye)
+                                        - POW2 (xe + ye - MANT_BIT));
                             else
                               expected =
                                 sign * (POW2 (xe + ye)
@@ -535,13 +477,9 @@
                         else if (xe + ye == ze + MANT_BIT + 1)
                           {
                             if (2 * i > MANT_BIT)
-                              {
-                                if (FORGIVE_GLIBC_BUG) /* glibc bug #15 */
-                                  goto skip4;
-                                expected =
-                                  sign * (POW2 (xe + ye)
-                                          - POW2 (xe + ye - MANT_BIT));
-                              }
+                              expected =
+                                sign * (POW2 (xe + ye)
+                                        - POW2 (xe + ye - MANT_BIT));
                             else if (2 * i == MANT_BIT)
                               expected =
                                 sign * (POW2 (xe + ye)
@@ -583,14 +521,8 @@
                             sign * (- POW2 (ze)
                                     + POW2 (xe + ye)
                                     - POW2 (xe + ye - 2 * i));
-                        else if (xe + ye > ze - MANT_BIT)
+                        else if (xe + ye >= ze - MANT_BIT)
                           expected = sign * (- POW2 (ze) + POW2 (xe + ye));
-                        else if (xe + ye == ze - MANT_BIT)
-                          {
-                            if (FORGIVE_GLIBC_BUG) /* glibc bug #5 */
-                              goto skip4;
-                            expected = sign * (- POW2 (ze) + POW2 (xe + ye));
-                          }
                         else
                           expected = z;
                         ASSERT (result == expected);