From 445a29cbd5f07468c3179f727a70ec65b64ce608 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 6 Nov 2011 02:51:04 +0100 Subject: [PATCH] fma*: Simplify test. * tests/test-fma2.h (FORGIVE_GLIBC_BUG): Remove macro. (test_function): Remove all if (FORGIVE_GLIBC_BUG) statements. --- ChangeLog | 4 ++ tests/test-fma2.h | 144 ++++++++++++++---------------------------------------- 2 files changed, 42 insertions(+), 106 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2da6c58bf..4ef4754bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-11-05 Bruno Haible + 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. diff --git a/tests/test-fma2.h b/tests/test-fma2.h index b38bdbf53..1bbb5de7c 100644 --- 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 - . */ -#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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) + 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) + 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) + 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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 @@ test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE)) 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); -- 2.11.0