aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--math/auto-libm-test-out144
-rw-r--r--math/gen-auto-libm-tests.c440
-rwxr-xr-xmath/gen-libm-test.pl47
4 files changed, 315 insertions, 327 deletions
diff --git a/ChangeLog b/ChangeLog
index b595d64220..f08052ad9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2014-03-06 Joseph Myers <joseph@codesourcery.com>
+
+ * math/gen-auto-libm-tests.c: Update comment on output format.
+ (output_for_one_input_case): Generate before-rounding and
+ after-rounding information as conditions on output flags not
+ floating-point format.
+ * math/auto-libm-test-out: Regenerated.
+ * math/gen-libm-test.pl (cond_value): New function.
+ (or_cond_value): Use cond_value.
+ (generate_testfile): Handle conditional exceptions.
+
2014-03-05 Joseph Myers <joseph@codesourcery.com>
* math/libm-test.inc (max_valid_error): New variable.
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 59c08a74b8..8046cc65d4 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -103946,11 +103946,9 @@ fma -0x1.4p-126 0x1.000004p-1 -0x1p-128
= fma upward ldbl-128ibm -0x5p-128L 0x8.00002p-4L -0x1p-128L : -0x3.80000ap-128L :
fma 0x1.fffff8p-126 0x1.000002p-1 0x1p-149
= fma downward flt-32 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x3.fffff8p-128f : inexact underflow errno-erange-ok
-= fma tonearest flt-32:before-rounding 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x4p-128f : inexact underflow errno-erange-ok
-= fma tonearest flt-32:after-rounding 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x4p-128f : inexact
+= fma tonearest flt-32 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero flt-32 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x3.fffff8p-128f : inexact underflow errno-erange-ok
-= fma upward flt-32:before-rounding 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x4p-128f : inexact underflow errno-erange-ok
-= fma upward flt-32:after-rounding 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x4p-128f : inexact
+= fma upward flt-32 0x7.ffffep-128f 0x8.00001p-4f 0x8p-152f : 0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward dbl-64 0x7.ffffep-128 0x8.00001p-4 0x8p-152 : 0x3.ffffffffffep-128 :
= fma tonearest dbl-64 0x7.ffffep-128 0x8.00001p-4 0x8p-152 : 0x3.ffffffffffep-128 :
= fma towardzero dbl-64 0x7.ffffep-128 0x8.00001p-4 0x8p-152 : 0x3.ffffffffffep-128 :
@@ -103972,10 +103970,8 @@ fma 0x1.fffff8p-126 0x1.000002p-1 0x1p-149
= fma towardzero ldbl-128ibm 0x7.ffffep-128L 0x8.00001p-4L 0x8p-152L : 0x3.ffffffffffep-128L :
= fma upward ldbl-128ibm 0x7.ffffep-128L 0x8.00001p-4L 0x8p-152L : 0x3.ffffffffffep-128L :
fma -0x1.fffff8p-126 0x1.000002p-1 -0x1p-149
-= fma downward flt-32:before-rounding -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x4p-128f : inexact underflow errno-erange-ok
-= fma downward flt-32:after-rounding -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x4p-128f : inexact
-= fma tonearest flt-32:before-rounding -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x4p-128f : inexact underflow errno-erange-ok
-= fma tonearest flt-32:after-rounding -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x4p-128f : inexact
+= fma downward flt-32 -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest flt-32 -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero flt-32 -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x3.fffff8p-128f : inexact underflow errno-erange-ok
= fma upward flt-32 -0x7.ffffep-128f 0x8.00001p-4f -0x8p-152f : -0x3.fffff8p-128f : inexact underflow errno-erange-ok
= fma downward dbl-64 -0x7.ffffep-128 0x8.00001p-4 -0x8p-152 : -0x3.ffffffffffep-128 :
@@ -104052,8 +104048,7 @@ fma 0x1p-149 0x1.1p-1 0x0.fffffep-126
= fma downward flt-32 0x8p-152f 0x8.8p-4f 0x3.fffff8p-128f : 0x3.fffff8p-128f : inexact underflow errno-erange-ok
= fma tonearest flt-32 0x8p-152f 0x8.8p-4f 0x3.fffff8p-128f : 0x4p-128f : inexact underflow errno-erange-ok
= fma towardzero flt-32 0x8p-152f 0x8.8p-4f 0x3.fffff8p-128f : 0x3.fffff8p-128f : inexact underflow errno-erange-ok
-= fma upward flt-32:before-rounding 0x8p-152f 0x8.8p-4f 0x3.fffff8p-128f : 0x4p-128f : inexact underflow errno-erange-ok
-= fma upward flt-32:after-rounding 0x8p-152f 0x8.8p-4f 0x3.fffff8p-128f : 0x4p-128f : inexact
+= fma upward flt-32 0x8p-152f 0x8.8p-4f 0x3.fffff8p-128f : 0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward dbl-64 0x8p-152 0x8.8p-4 0x3.fffff8p-128 : 0x3.fffffc4p-128 :
= fma tonearest dbl-64 0x8p-152 0x8.8p-4 0x3.fffff8p-128 : 0x3.fffffc4p-128 :
= fma towardzero dbl-64 0x8p-152 0x8.8p-4 0x3.fffff8p-128 : 0x3.fffffc4p-128 :
@@ -104075,8 +104070,7 @@ fma 0x1p-149 0x1.1p-1 0x0.fffffep-126
= fma towardzero ldbl-128ibm 0x8p-152L 0x8.8p-4L 0x3.fffff8p-128L : 0x3.fffffc4p-128L :
= fma upward ldbl-128ibm 0x8p-152L 0x8.8p-4L 0x3.fffff8p-128L : 0x3.fffffc4p-128L :
fma -0x1p-149 0x1.1p-1 -0x0.fffffep-126
-= fma downward flt-32:before-rounding -0x8p-152f 0x8.8p-4f -0x3.fffff8p-128f : -0x4p-128f : inexact underflow errno-erange-ok
-= fma downward flt-32:after-rounding -0x8p-152f 0x8.8p-4f -0x3.fffff8p-128f : -0x4p-128f : inexact
+= fma downward flt-32 -0x8p-152f 0x8.8p-4f -0x3.fffff8p-128f : -0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma tonearest flt-32 -0x8p-152f 0x8.8p-4f -0x3.fffff8p-128f : -0x4p-128f : inexact underflow errno-erange-ok
= fma towardzero flt-32 -0x8p-152f 0x8.8p-4f -0x3.fffff8p-128f : -0x3.fffff8p-128f : inexact underflow errno-erange-ok
= fma upward flt-32 -0x8p-152f 0x8.8p-4f -0x3.fffff8p-128f : -0x3.fffff8p-128f : inexact underflow errno-erange-ok
@@ -104227,11 +104221,9 @@ fma 0x1p-149 0x1p-149 0x1p-126
= fma upward ldbl-128ibm 0x8p-152L 0x8p-152L 0x4p-128L : 0x4.00000000000000000000000002p-128L : inexact
fma 0x1p-149 -0x1p-149 0x1p-126
= fma downward flt-32 0x8p-152f -0x8p-152f 0x4p-128f : 0x3.fffff8p-128f : inexact underflow errno-erange-ok
-= fma tonearest flt-32:before-rounding 0x8p-152f -0x8p-152f 0x4p-128f : 0x4p-128f : inexact underflow errno-erange-ok
-= fma tonearest flt-32:after-rounding 0x8p-152f -0x8p-152f 0x4p-128f : 0x4p-128f : inexact
+= fma tonearest flt-32 0x8p-152f -0x8p-152f 0x4p-128f : 0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero flt-32 0x8p-152f -0x8p-152f 0x4p-128f : 0x3.fffff8p-128f : inexact underflow errno-erange-ok
-= fma upward flt-32:before-rounding 0x8p-152f -0x8p-152f 0x4p-128f : 0x4p-128f : inexact underflow errno-erange-ok
-= fma upward flt-32:after-rounding 0x8p-152f -0x8p-152f 0x4p-128f : 0x4p-128f : inexact
+= fma upward flt-32 0x8p-152f -0x8p-152f 0x4p-128f : 0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward dbl-64 0x8p-152 -0x8p-152 0x4p-128 : 0x3.ffffffffffffep-128 : inexact
= fma tonearest dbl-64 0x8p-152 -0x8p-152 0x4p-128 : 0x4p-128 : inexact
= fma towardzero dbl-64 0x8p-152 -0x8p-152 0x4p-128 : 0x3.ffffffffffffep-128 : inexact
@@ -104253,10 +104245,8 @@ fma 0x1p-149 -0x1p-149 0x1p-126
= fma towardzero ldbl-128ibm 0x8p-152L -0x8p-152L 0x4p-128L : 0x3.ffffffffffffffffffffffffffp-128L : inexact
= fma upward ldbl-128ibm 0x8p-152L -0x8p-152L 0x4p-128L : 0x4p-128L : inexact
fma 0x1p-149 0x1p-149 -0x1p-126
-= fma downward flt-32:before-rounding 0x8p-152f 0x8p-152f -0x4p-128f : -0x4p-128f : inexact underflow errno-erange-ok
-= fma downward flt-32:after-rounding 0x8p-152f 0x8p-152f -0x4p-128f : -0x4p-128f : inexact
-= fma tonearest flt-32:before-rounding 0x8p-152f 0x8p-152f -0x4p-128f : -0x4p-128f : inexact underflow errno-erange-ok
-= fma tonearest flt-32:after-rounding 0x8p-152f 0x8p-152f -0x4p-128f : -0x4p-128f : inexact
+= fma downward flt-32 0x8p-152f 0x8p-152f -0x4p-128f : -0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest flt-32 0x8p-152f 0x8p-152f -0x4p-128f : -0x4p-128f : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero flt-32 0x8p-152f 0x8p-152f -0x4p-128f : -0x3.fffff8p-128f : inexact underflow errno-erange-ok
= fma upward flt-32 0x8p-152f 0x8p-152f -0x4p-128f : -0x3.fffff8p-128f : inexact underflow errno-erange-ok
= fma downward dbl-64 0x8p-152 0x8p-152 -0x4p-128 : -0x4p-128 : inexact
@@ -105268,11 +105258,9 @@ fma -0x1.4p-1022 0x1.0000000000002p-1 -0x1p-1024
= fma upward ldbl-128ibm -0x5p-1024L 0x8.000000000001p-4L -0x1p-1024L : -0x3.8000000000004p-1024L : inexact underflow errno-erange-ok
fma 0x1.ffffffffffffcp-1022 0x1.0000000000001p-1 0x1p-1074
= fma downward dbl-64 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
-= fma tonearest dbl-64:before-rounding 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x4p-1024 : inexact underflow errno-erange-ok
-= fma tonearest dbl-64:after-rounding 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x4p-1024 : inexact
+= fma tonearest dbl-64 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero dbl-64 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
-= fma upward dbl-64:before-rounding 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x4p-1024 : inexact underflow errno-erange-ok
-= fma upward dbl-64:after-rounding 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x4p-1024 : inexact
+= fma upward dbl-64 0x7.ffffffffffffp-1024 0x8.0000000000008p-4 0x4p-1076 : 0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward ldbl-96-intel 0x7.ffffffffffffp-1024L 0x8.0000000000008p-4L 0x4p-1076L : 0x3.fffffffffffffffcp-1024L : inexact
= fma tonearest ldbl-96-intel 0x7.ffffffffffffp-1024L 0x8.0000000000008p-4L 0x4p-1076L : 0x4p-1024L : inexact
= fma towardzero ldbl-96-intel 0x7.ffffffffffffp-1024L 0x8.0000000000008p-4L 0x4p-1076L : 0x3.fffffffffffffffcp-1024L : inexact
@@ -105290,10 +105278,8 @@ fma 0x1.ffffffffffffcp-1022 0x1.0000000000001p-1 0x1p-1074
= fma towardzero ldbl-128ibm 0x7.ffffffffffffp-1024L 0x8.0000000000008p-4L 0x4p-1076L : 0x3.ffffffffffffcp-1024L : inexact underflow errno-erange-ok
= fma upward ldbl-128ibm 0x7.ffffffffffffp-1024L 0x8.0000000000008p-4L 0x4p-1076L : 0x4p-1024L : inexact underflow errno-erange-ok
fma -0x1.ffffffffffffcp-1022 0x1.0000000000001p-1 -0x1p-1074
-= fma downward dbl-64:before-rounding -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x4p-1024 : inexact underflow errno-erange-ok
-= fma downward dbl-64:after-rounding -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x4p-1024 : inexact
-= fma tonearest dbl-64:before-rounding -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x4p-1024 : inexact underflow errno-erange-ok
-= fma tonearest dbl-64:after-rounding -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x4p-1024 : inexact
+= fma downward dbl-64 -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest dbl-64 -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero dbl-64 -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
= fma upward dbl-64 -0x7.ffffffffffffp-1024 0x8.0000000000008p-4 -0x4p-1076 : -0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
= fma downward ldbl-96-intel -0x7.ffffffffffffp-1024L 0x8.0000000000008p-4L -0x4p-1076L : -0x4p-1024L : inexact
@@ -105358,8 +105344,7 @@ fma 0x1p-1074 0x1.1p-1 0x0.fffffffffffffp-1022
= fma downward dbl-64 0x4p-1076 0x8.8p-4 0x3.ffffffffffffcp-1024 : 0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
= fma tonearest dbl-64 0x4p-1076 0x8.8p-4 0x3.ffffffffffffcp-1024 : 0x4p-1024 : inexact underflow errno-erange-ok
= fma towardzero dbl-64 0x4p-1076 0x8.8p-4 0x3.ffffffffffffcp-1024 : 0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
-= fma upward dbl-64:before-rounding 0x4p-1076 0x8.8p-4 0x3.ffffffffffffcp-1024 : 0x4p-1024 : inexact underflow errno-erange-ok
-= fma upward dbl-64:after-rounding 0x4p-1076 0x8.8p-4 0x3.ffffffffffffcp-1024 : 0x4p-1024 : inexact
+= fma upward dbl-64 0x4p-1076 0x8.8p-4 0x3.ffffffffffffcp-1024 : 0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward ldbl-96-intel 0x4p-1076L 0x8.8p-4L 0x3.ffffffffffffcp-1024L : 0x3.ffffffffffffe2p-1024L :
= fma tonearest ldbl-96-intel 0x4p-1076L 0x8.8p-4L 0x3.ffffffffffffcp-1024L : 0x3.ffffffffffffe2p-1024L :
= fma towardzero ldbl-96-intel 0x4p-1076L 0x8.8p-4L 0x3.ffffffffffffcp-1024L : 0x3.ffffffffffffe2p-1024L :
@@ -105377,8 +105362,7 @@ fma 0x1p-1074 0x1.1p-1 0x0.fffffffffffffp-1022
= fma towardzero ldbl-128ibm 0x4p-1076L 0x8.8p-4L 0x3.ffffffffffffcp-1024L : 0x3.ffffffffffffcp-1024L : inexact underflow errno-erange-ok
= fma upward ldbl-128ibm 0x4p-1076L 0x8.8p-4L 0x3.ffffffffffffcp-1024L : 0x4p-1024L : inexact underflow errno-erange-ok
fma -0x1p-1074 0x1.1p-1 -0x0.fffffffffffffp-1022
-= fma downward dbl-64:before-rounding -0x4p-1076 0x8.8p-4 -0x3.ffffffffffffcp-1024 : -0x4p-1024 : inexact underflow errno-erange-ok
-= fma downward dbl-64:after-rounding -0x4p-1076 0x8.8p-4 -0x3.ffffffffffffcp-1024 : -0x4p-1024 : inexact
+= fma downward dbl-64 -0x4p-1076 0x8.8p-4 -0x3.ffffffffffffcp-1024 : -0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma tonearest dbl-64 -0x4p-1076 0x8.8p-4 -0x3.ffffffffffffcp-1024 : -0x4p-1024 : inexact underflow errno-erange-ok
= fma towardzero dbl-64 -0x4p-1076 0x8.8p-4 -0x3.ffffffffffffcp-1024 : -0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
= fma upward dbl-64 -0x4p-1076 0x8.8p-4 -0x3.ffffffffffffcp-1024 : -0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
@@ -105505,11 +105489,9 @@ fma 0x1p-1074 0x1p-1074 0x1p-1022
= fma upward ldbl-128ibm 0x4p-1076L 0x4p-1076L 0x4p-1024L : 0x4.0000000000004p-1024L : inexact underflow errno-erange-ok
fma 0x1p-1074 -0x1p-1074 0x1p-1022
= fma downward dbl-64 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
-= fma tonearest dbl-64:before-rounding 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x4p-1024 : inexact underflow errno-erange-ok
-= fma tonearest dbl-64:after-rounding 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x4p-1024 : inexact
+= fma tonearest dbl-64 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero dbl-64 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
-= fma upward dbl-64:before-rounding 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x4p-1024 : inexact underflow errno-erange-ok
-= fma upward dbl-64:after-rounding 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x4p-1024 : inexact
+= fma upward dbl-64 0x4p-1076 -0x4p-1076 0x4p-1024 : 0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward ldbl-96-intel 0x4p-1076L -0x4p-1076L 0x4p-1024L : 0x3.fffffffffffffffcp-1024L : inexact
= fma tonearest ldbl-96-intel 0x4p-1076L -0x4p-1076L 0x4p-1024L : 0x4p-1024L : inexact
= fma towardzero ldbl-96-intel 0x4p-1076L -0x4p-1076L 0x4p-1024L : 0x3.fffffffffffffffcp-1024L : inexact
@@ -105527,10 +105509,8 @@ fma 0x1p-1074 -0x1p-1074 0x1p-1022
= fma towardzero ldbl-128ibm 0x4p-1076L -0x4p-1076L 0x4p-1024L : 0x3.ffffffffffffcp-1024L : inexact underflow errno-erange-ok
= fma upward ldbl-128ibm 0x4p-1076L -0x4p-1076L 0x4p-1024L : 0x4p-1024L : inexact underflow errno-erange-ok
fma 0x1p-1074 0x1p-1074 -0x1p-1022
-= fma downward dbl-64:before-rounding 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x4p-1024 : inexact underflow errno-erange-ok
-= fma downward dbl-64:after-rounding 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x4p-1024 : inexact
-= fma tonearest dbl-64:before-rounding 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x4p-1024 : inexact underflow errno-erange-ok
-= fma tonearest dbl-64:after-rounding 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x4p-1024 : inexact
+= fma downward dbl-64 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest dbl-64 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x4p-1024 : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero dbl-64 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
= fma upward dbl-64 0x4p-1076 0x4p-1076 -0x4p-1024 : -0x3.ffffffffffffcp-1024 : inexact underflow errno-erange-ok
= fma downward ldbl-96-intel 0x4p-1076L 0x4p-1076L -0x4p-1024L : -0x4p-1024L : inexact
@@ -106096,36 +106076,28 @@ fma -0x1.4p-16382 0x1.0000000000000004p-1 -0x1p-16384
= fma upward ldbl-128 -0x5p-16384L 0x8.000000000000002p-4L -0x1p-16384L : -0x3.800000000000000ap-16384L :
fma 0x1.fffffffffffffff8p-16382 0x1.0000000000000002p-1 0x1p-16445
= fma downward ldbl-96-intel 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-96-intel:before-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-96-intel:after-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact
+= fma tonearest ldbl-96-intel 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-96-intel 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-96-intel:before-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-96-intel:after-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact
+= fma upward ldbl-96-intel 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward ldbl-96-m68k 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x3.fffffffffffffffcp-16384L : inexact
= fma tonearest ldbl-96-m68k 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact
= fma towardzero ldbl-96-m68k 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x3.fffffffffffffffcp-16384L : inexact
= fma upward ldbl-96-m68k 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact
= fma downward ldbl-128 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:before-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact
+= fma tonearest ldbl-128 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:before-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:after-rounding 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact
+= fma upward ldbl-128 0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L 0x8p-16448L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
fma -0x1.fffffffffffffff8p-16382 0x1.0000000000000002p-1 -0x1p-16445
-= fma downward ldbl-96-intel:before-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-96-intel:after-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact
-= fma tonearest ldbl-96-intel:before-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-96-intel:after-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact
+= fma downward ldbl-96-intel -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest ldbl-96-intel -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-96-intel -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-96-intel -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
= fma downward ldbl-96-m68k -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact
= fma tonearest ldbl-96-m68k -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact
= fma towardzero ldbl-96-m68k -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x3.fffffffffffffffcp-16384L : inexact
= fma upward ldbl-96-m68k -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x3.fffffffffffffffcp-16384L : inexact
-= fma downward ldbl-128:before-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-128:after-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact
-= fma tonearest ldbl-128:before-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact
+= fma downward ldbl-128 -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest ldbl-128 -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-128 -0x7.ffffffffffffffep-16384L 0x8.000000000000001p-4L -0x8p-16448L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
fma 0x1p-16445 0x1p-1 0x0.fffffffffffffffep-16382
@@ -106158,8 +106130,7 @@ fma 0x1p-16445 0x1.1p-1 0x0.fffffffffffffffep-16382
= fma downward ldbl-96-intel 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
= fma tonearest ldbl-96-intel 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
= fma towardzero ldbl-96-intel 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-96-intel:before-rounding 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-96-intel:after-rounding 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x4p-16384L : inexact
+= fma upward ldbl-96-intel 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward ldbl-96-m68k 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x3.fffffffffffffffcp-16384L : inexact
= fma tonearest ldbl-96-m68k 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x3.fffffffffffffffcp-16384L : inexact
= fma towardzero ldbl-96-m68k 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x3.fffffffffffffffcp-16384L : inexact
@@ -106169,8 +106140,7 @@ fma 0x1p-16445 0x1.1p-1 0x0.fffffffffffffffep-16382
= fma towardzero ldbl-128 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x3.fffffffffffffffc4p-16384L :
= fma upward ldbl-128 0x8p-16448L 0x8.8p-4L 0x3.fffffffffffffff8p-16384L : 0x3.fffffffffffffffc4p-16384L :
fma -0x1p-16445 0x1.1p-1 -0x0.fffffffffffffffep-16382
-= fma downward ldbl-96-intel:before-rounding -0x8p-16448L 0x8.8p-4L -0x3.fffffffffffffff8p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-96-intel:after-rounding -0x8p-16448L 0x8.8p-4L -0x3.fffffffffffffff8p-16384L : -0x4p-16384L : inexact
+= fma downward ldbl-96-intel -0x8p-16448L 0x8.8p-4L -0x3.fffffffffffffff8p-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma tonearest ldbl-96-intel -0x8p-16448L 0x8.8p-4L -0x3.fffffffffffffff8p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
= fma towardzero ldbl-96-intel -0x8p-16448L 0x8.8p-4L -0x3.fffffffffffffff8p-16384L : -0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-96-intel -0x8p-16448L 0x8.8p-4L -0x3.fffffffffffffff8p-16384L : -0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
@@ -106249,36 +106219,28 @@ fma 0x1p-16445 0x1p-16445 0x1p-16382
= fma upward ldbl-128 0x8p-16448L 0x8p-16448L 0x4p-16384L : 0x4.0000000000000000000000000004p-16384L : inexact
fma 0x1p-16445 -0x1p-16445 0x1p-16382
= fma downward ldbl-96-intel 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-96-intel:before-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-96-intel:after-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact
+= fma tonearest ldbl-96-intel 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-96-intel 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-96-intel:before-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-96-intel:after-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact
+= fma upward ldbl-96-intel 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma downward ldbl-96-m68k 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x3.fffffffffffffffcp-16384L : inexact
= fma tonearest ldbl-96-m68k 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact
= fma towardzero ldbl-96-m68k 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x3.fffffffffffffffcp-16384L : inexact
= fma upward ldbl-96-m68k 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact
= fma downward ldbl-128 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:before-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact
+= fma tonearest ldbl-128 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:before-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:after-rounding 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact
+= fma upward ldbl-128 0x8p-16448L -0x8p-16448L 0x4p-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
fma 0x1p-16445 0x1p-16445 -0x1p-16382
-= fma downward ldbl-96-intel:before-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-96-intel:after-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact
-= fma tonearest ldbl-96-intel:before-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-96-intel:after-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact
+= fma downward ldbl-96-intel 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest ldbl-96-intel 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-96-intel 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-96-intel 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x3.fffffffffffffff8p-16384L : inexact underflow errno-erange-ok
= fma downward ldbl-96-m68k 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact
= fma tonearest ldbl-96-m68k 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact
= fma towardzero ldbl-96-m68k 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x3.fffffffffffffffcp-16384L : inexact
= fma upward ldbl-96-m68k 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x3.fffffffffffffffcp-16384L : inexact
-= fma downward ldbl-128:before-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-128:after-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact
-= fma tonearest ldbl-128:before-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact
+= fma downward ldbl-128 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest ldbl-128 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-128 0x8p-16448L 0x8p-16448L -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
fma 0x1p-16445 -0x1p-16445 -0x1p-16382
@@ -106664,16 +106626,12 @@ fma -0x1.4p-16382 0x1.0000000000000000000000000002p-1 -0x1p-16384
= fma upward ldbl-128 -0x5p-16384L 0x8.000000000000000000000000001p-4L -0x1p-16384L : -0x3.8000000000000000000000000004p-16384L : inexact underflow errno-erange-ok
fma 0x1.fffffffffffffffffffffffffffcp-16382 0x1.0000000000000000000000000001p-1 0x1p-16494
= fma downward ldbl-128 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:before-rounding 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x4p-16384L : inexact
+= fma tonearest ldbl-128 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:before-rounding 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:after-rounding 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x4p-16384L : inexact
+= fma upward ldbl-128 0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L 0x4p-16496L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
fma -0x1.fffffffffffffffffffffffffffcp-16382 0x1.0000000000000000000000000001p-1 -0x1p-16494
-= fma downward ldbl-128:before-rounding -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-128:after-rounding -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x4p-16384L : inexact
-= fma tonearest ldbl-128:before-rounding -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x4p-16384L : inexact
+= fma downward ldbl-128 -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest ldbl-128 -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-128 -0x7.fffffffffffffffffffffffffffp-16384L 0x8.0000000000000000000000000008p-4L -0x4p-16496L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
fma 0x1p-16494 0x1p-1 0x0.ffffffffffffffffffffffffffffp-16382
@@ -106690,11 +106648,9 @@ fma 0x1p-16494 0x1.1p-1 0x0.ffffffffffffffffffffffffffffp-16382
= fma downward ldbl-128 0x4p-16496L 0x8.8p-4L 0x3.fffffffffffffffffffffffffffcp-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
= fma tonearest ldbl-128 0x4p-16496L 0x8.8p-4L 0x3.fffffffffffffffffffffffffffcp-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
= fma towardzero ldbl-128 0x4p-16496L 0x8.8p-4L 0x3.fffffffffffffffffffffffffffcp-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:before-rounding 0x4p-16496L 0x8.8p-4L 0x3.fffffffffffffffffffffffffffcp-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:after-rounding 0x4p-16496L 0x8.8p-4L 0x3.fffffffffffffffffffffffffffcp-16384L : 0x4p-16384L : inexact
+= fma upward ldbl-128 0x4p-16496L 0x8.8p-4L 0x3.fffffffffffffffffffffffffffcp-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
fma -0x1p-16494 0x1.1p-1 -0x0.ffffffffffffffffffffffffffffp-16382
-= fma downward ldbl-128:before-rounding -0x4p-16496L 0x8.8p-4L -0x3.fffffffffffffffffffffffffffcp-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-128:after-rounding -0x4p-16496L 0x8.8p-4L -0x3.fffffffffffffffffffffffffffcp-16384L : -0x4p-16384L : inexact
+= fma downward ldbl-128 -0x4p-16496L 0x8.8p-4L -0x3.fffffffffffffffffffffffffffcp-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma tonearest ldbl-128 -0x4p-16496L 0x8.8p-4L -0x3.fffffffffffffffffffffffffffcp-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
= fma towardzero ldbl-128 -0x4p-16496L 0x8.8p-4L -0x3.fffffffffffffffffffffffffffcp-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-128 -0x4p-16496L 0x8.8p-4L -0x3.fffffffffffffffffffffffffffcp-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
@@ -106725,16 +106681,12 @@ fma 0x1p-16494 0x1p-16494 0x1p-16382
= fma upward ldbl-128 0x4p-16496L 0x4p-16496L 0x4p-16384L : 0x4.0000000000000000000000000004p-16384L : inexact
fma 0x1p-16494 -0x1p-16494 0x1p-16382
= fma downward ldbl-128 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:before-rounding 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x4p-16384L : inexact
+= fma tonearest ldbl-128 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:before-rounding 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x4p-16384L : inexact underflow errno-erange-ok
-= fma upward ldbl-128:after-rounding 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x4p-16384L : inexact
+= fma upward ldbl-128 0x4p-16496L -0x4p-16496L 0x4p-16384L : 0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
fma 0x1p-16494 0x1p-16494 -0x1p-16382
-= fma downward ldbl-128:before-rounding 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma downward ldbl-128:after-rounding 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x4p-16384L : inexact
-= fma tonearest ldbl-128:before-rounding 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x4p-16384L : inexact underflow errno-erange-ok
-= fma tonearest ldbl-128:after-rounding 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x4p-16384L : inexact
+= fma downward ldbl-128 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
+= fma tonearest ldbl-128 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x4p-16384L : inexact underflow:before-rounding errno-erange-ok:before-rounding
= fma towardzero ldbl-128 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
= fma upward ldbl-128 0x4p-16496L 0x4p-16496L -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact underflow errno-erange-ok
fma 0x1p-16494 -0x1p-16494 -0x1p-16382
diff --git a/math/gen-auto-libm-tests.c b/math/gen-auto-libm-tests.c
index eeec2ab6f0..61097e480c 100644
--- a/math/gen-auto-libm-tests.c
+++ b/math/gen-auto-libm-tests.c
@@ -104,22 +104,22 @@
... : flags". rounding-mode is "tonearest", "towardzero", "upward"
or "downward". format is a name from the floating_point_formats
array, possibly followed by a sequence of ":flag" for flags from
- "long32", "long64", "before-rounding" and "after-rounding" (the
- last two indicating tests where expectations for underflow
- exceptions depend on how the architecture detects tininess).
- Inputs and outputs are specified as hex floats with the required
- suffix for the floating-point type, or plus_infty or minus_infty
- for infinite expected results, or as integer constant expressions
- (not necessarily with the right type) or IGNORE for integer inputs
- and outputs. Flags are "no-test-inline", "xfail", "<exception>",
- "<exception>-ok", "errno-<value>", "errno-<value>-ok", where
- "<exception>" and "errno-<value>" are unconditional, indicating
- that a correct result means the given exception should be raised or
- errno should be set to the given value, and other settings may be
- conditional or unconditional; "-ok" means not to test for the given
- exception or errno value (whether because it was marked as possibly
- missing or spurious, or because the calculation of correct results
- indicated it was optional). */
+ "long32" and "long64". Inputs and outputs are specified as hex
+ floats with the required suffix for the floating-point type, or
+ plus_infty or minus_infty for infinite expected results, or as
+ integer constant expressions (not necessarily with the right type)
+ or IGNORE for integer inputs and outputs. Flags are
+ "no-test-inline", "xfail", "<exception>", "<exception>-ok",
+ "errno-<value>", "errno-<value>-ok", which may be unconditional or
+ conditional. "<exception>" indicates that a correct result means
+ the given exception should be raised. "errno-<value>" indicates
+ that a correct result means errno should be set to the given value.
+ "-ok" means not to test for the given exception or errno value
+ (whether because it was marked as possibly missing or spurious, or
+ because the calculation of correct results indicated it was
+ optional). Conditions "before-rounding" and "after-rounding"
+ indicate tests where expectations for underflow exceptions depend
+ on how the architecture detects tininess. */
#define _GNU_SOURCE
@@ -1882,224 +1882,246 @@ output_for_one_input_case (FILE *fp, const char *filename, test_function *tf,
{
bool before_after_matters
= tf->exact && merged_exc_before[m] != merged_exc_after[m];
- for (int after = 0; after <= 1; after++)
+ if (before_after_matters)
{
- if (after == 1 && !before_after_matters)
- continue;
- const char *after_cond;
- if (before_after_matters)
- after_cond = (after
- ? ":after-rounding"
- : ":before-rounding");
- else
- after_cond = "";
- unsigned int merged_exc = (after
- ? merged_exc_after[m]
- : merged_exc_before[m]);
- if (fprintf (fp, "= %s %s %s%s%s", tf->name,
- rounding_modes[m].name, fp_formats[f].name,
- long_cond, after_cond) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'", filename);
- /* Print inputs. */
- for (size_t i = 0; i < tf->num_args; i++)
- output_generic_value (fp, filename, &inputs[i], false,
- tf->arg_types[i], f, long_bits);
- if (fputs (" :", fp) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'", filename);
- /* Print outputs. */
- bool must_erange = false;
- for (size_t i = 0; i < tf->num_ret; i++)
+ assert ((merged_exc_before[m] ^ merged_exc_after[m])
+ == (1U << exc_underflow));
+ assert ((merged_exc_before[m] & (1U << exc_underflow)) != 0);
+ }
+ unsigned int merged_exc = merged_exc_before[m];
+ if (fprintf (fp, "= %s %s %s%s", tf->name,
+ rounding_modes[m].name, fp_formats[f].name,
+ long_cond) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'", filename);
+ /* Print inputs. */
+ for (size_t i = 0; i < tf->num_args; i++)
+ output_generic_value (fp, filename, &inputs[i], false,
+ tf->arg_types[i], f, long_bits);
+ if (fputs (" :", fp) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'", filename);
+ /* Print outputs. */
+ bool must_erange = false;
+ for (size_t i = 0; i < tf->num_ret; i++)
+ {
+ generic_value g;
+ g.type = generic_outputs[i].type;
+ switch (g.type)
{
- generic_value g;
- g.type = generic_outputs[i].type;
- switch (g.type)
- {
- case gtype_fp:
- if (mpfr_inf_p (all_res[i][m])
- && (all_exc_before[i][m]
- & (1U << exc_overflow)) != 0)
- must_erange = true;
- if (mpfr_zero_p (all_res[i][m])
- && (tf->exact
- || mpfr_zero_p (all_res[i][rm_tonearest]))
- && (all_exc_before[i][m]
- & (1U << exc_underflow)) != 0)
- must_erange = true;
- mpfr_init2 (g.value.f, fp_formats[f].mant_dig);
- assert_exact (mpfr_set (g.value.f, all_res[i][m],
- MPFR_RNDN));
- break;
+ case gtype_fp:
+ if (mpfr_inf_p (all_res[i][m])
+ && (all_exc_before[i][m]
+ & (1U << exc_overflow)) != 0)
+ must_erange = true;
+ if (mpfr_zero_p (all_res[i][m])
+ && (tf->exact
+ || mpfr_zero_p (all_res[i][rm_tonearest]))
+ && (all_exc_before[i][m]
+ & (1U << exc_underflow)) != 0)
+ must_erange = true;
+ mpfr_init2 (g.value.f, fp_formats[f].mant_dig);
+ assert_exact (mpfr_set (g.value.f, all_res[i][m],
+ MPFR_RNDN));
+ break;
- case gtype_int:
- mpz_init (g.value.i);
- mpz_set (g.value.i, generic_outputs[i].value.i);
- break;
+ case gtype_int:
+ mpz_init (g.value.i);
+ mpz_set (g.value.i, generic_outputs[i].value.i);
+ break;
- default:
- abort ();
- }
- output_generic_value (fp, filename, &g, ignore_output[i],
- tf->ret_types[i], f, long_bits);
- generic_value_free (&g);
+ default:
+ abort ();
}
- if (fputs (" :", fp) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'", filename);
- /* Print miscellaneous flags (passed through from
- input). */
- for (size_t i = 0; i < it->num_flags; i++)
- switch (it->flags[i].type)
- {
- case flag_no_test_inline:
- case flag_xfail:
- if (fprintf (fp, " %s%s",
- input_flags[it->flags[i].type],
- (it->flags[i].cond
- ? it->flags[i].cond
- : "")) < 0)
+ output_generic_value (fp, filename, &g, ignore_output[i],
+ tf->ret_types[i], f, long_bits);
+ generic_value_free (&g);
+ }
+ if (fputs (" :", fp) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'", filename);
+ /* Print miscellaneous flags (passed through from
+ input). */
+ for (size_t i = 0; i < it->num_flags; i++)
+ switch (it->flags[i].type)
+ {
+ case flag_no_test_inline:
+ case flag_xfail:
+ if (fprintf (fp, " %s%s",
+ input_flags[it->flags[i].type],
+ (it->flags[i].cond
+ ? it->flags[i].cond
+ : "")) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ break;
+ case flag_xfail_rounding:
+ if (m != rm_tonearest)
+ if (fprintf (fp, " xfail%s",
+ (it->flags[i].cond
+ ? it->flags[i].cond
+ : "")) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ break;
+ default:
+ break;
+ }
+ /* Print exception flags and compute errno
+ expectations where not already computed. */
+ bool may_edom = false;
+ bool must_edom = false;
+ bool may_erange = must_erange || may_underflow;
+ for (fp_exception e = exc_first_exception;
+ e < exc_num_exceptions;
+ e++)
+ {
+ bool expect_e = (merged_exc & (1U << e)) != 0;
+ bool e_optional = false;
+ switch (e)
+ {
+ case exc_divbyzero:
+ if (expect_e)
+ may_erange = must_erange = true;
+ break;
+
+ case exc_inexact:
+ if (!tf->exact)
+ e_optional = true;
+ break;
+
+ case exc_invalid:
+ if (expect_e)
+ may_edom = must_edom = true;
+ break;
+
+ case exc_overflow:
+ if (expect_e)
+ may_erange = true;
+ break;
+
+ case exc_underflow:
+ if (expect_e)
+ may_erange = true;
+ if (must_underflow)
+ assert (expect_e);
+ if (may_underflow && !must_underflow)
+ e_optional = true;
+ break;
+
+ default:
+ abort ();
+ }
+ if (e_optional)
+ {
+ assert (!before_after_matters);
+ if (fprintf (fp, " %s-ok", exceptions[e]) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ }
+ else
+ {
+ if (expect_e)
+ if (fprintf (fp, " %s", exceptions[e]) < 0)
error (EXIT_FAILURE, errno, "write to '%s'",
filename);
- break;
- case flag_xfail_rounding:
- if (m != rm_tonearest)
- if (fprintf (fp, " xfail%s",
- (it->flags[i].cond
- ? it->flags[i].cond
- : "")) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'",
- filename);
- break;
- default:
- break;
- }
- /* Print exception flags and compute errno
- expectations where not already computed. */
- bool may_edom = false;
- bool must_edom = false;
- bool may_erange = must_erange || may_underflow;
- for (fp_exception e = exc_first_exception;
- e < exc_num_exceptions;
- e++)
- {
- bool expect_e = (merged_exc & (1U << e)) != 0;
- bool e_optional = false;
- switch (e)
- {
- case exc_divbyzero:
- if (expect_e)
- may_erange = must_erange = true;
- break;
-
- case exc_inexact:
- if (!tf->exact)
- e_optional = true;
- break;
-
- case exc_invalid:
- if (expect_e)
- may_edom = must_edom = true;
- break;
-
- case exc_overflow:
- if (expect_e)
- may_erange = true;
- break;
-
- case exc_underflow:
- if (expect_e)
- may_erange = true;
- if (must_underflow)
- assert (expect_e);
- if (may_underflow && !must_underflow)
- e_optional = true;
- break;
-
- default:
- abort ();
- }
- if (e_optional)
- {
- if (fprintf (fp, " %s-ok", exceptions[e]) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'",
- filename);
- }
- else
+ if (before_after_matters && e == exc_underflow)
+ if (fputs (":before-rounding", fp) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ for (int after = 0; after <= 1; after++)
{
- if (expect_e)
- if (fprintf (fp, " %s", exceptions[e]) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'",
- filename);
+ bool expect_e_here = expect_e;
+ if (after == 1 && (!before_after_matters
+ || e != exc_underflow))
+ continue;
+ const char *after_cond;
+ if (before_after_matters && e == exc_underflow)
+ {
+ after_cond = (after
+ ? ":after-rounding"
+ : ":before-rounding");
+ expect_e_here = !after;
+ }
+ else
+ after_cond = "";
input_flag_type okflag;
- okflag = (expect_e
+ okflag = (expect_e_here
? flag_missing_first
: flag_spurious_first) + e;
for (size_t i = 0; i < it->num_flags; i++)
if (it->flags[i].type == okflag)
- if (fprintf (fp, " %s-ok%s",
+ if (fprintf (fp, " %s-ok%s%s",
exceptions[e],
(it->flags[i].cond
? it->flags[i].cond
- : "")) < 0)
+ : ""), after_cond) < 0)
error (EXIT_FAILURE, errno, "write to '%s'",
filename);
}
}
- /* Print errno expectations. */
- if (tf->complex_fn)
- {
- must_edom = false;
- must_erange = false;
- }
- if (may_edom && !must_edom)
- {
- if (fputs (" errno-edom-ok", fp) < 0)
+ }
+ /* Print errno expectations. */
+ if (tf->complex_fn)
+ {
+ must_edom = false;
+ must_erange = false;
+ }
+ if (may_edom && !must_edom)
+ {
+ if (fputs (" errno-edom-ok", fp) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ }
+ else
+ {
+ if (must_edom)
+ if (fputs (" errno-edom", fp) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ input_flag_type okflag = (must_edom
+ ? flag_missing_errno
+ : flag_spurious_errno);
+ for (size_t i = 0; i < it->num_flags; i++)
+ if (it->flags[i].type == okflag)
+ if (fprintf (fp, " errno-edom-ok%s",
+ (it->flags[i].cond
+ ? it->flags[i].cond
+ : "")) < 0)
error (EXIT_FAILURE, errno, "write to '%s'",
filename);
- }
- else
- {
- if (must_edom)
- if (fputs (" errno-edom", fp) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'",
- filename);
- input_flag_type okflag = (must_edom
- ? flag_missing_errno
- : flag_spurious_errno);
- for (size_t i = 0; i < it->num_flags; i++)
- if (it->flags[i].type == okflag)
- if (fprintf (fp, " errno-edom-ok%s",
- (it->flags[i].cond
- ? it->flags[i].cond
- : "")) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'",
- filename);
- }
- if (may_erange && !must_erange)
- {
- if (fputs (" errno-erange-ok", fp) < 0)
+ }
+ if (before_after_matters)
+ assert (may_erange && !must_erange);
+ if (may_erange && !must_erange)
+ {
+ if (fprintf (fp, " errno-erange-ok%s",
+ (before_after_matters
+ ? ":before-rounding"
+ : "")) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ }
+ if (before_after_matters || !(may_erange && !must_erange))
+ {
+ if (must_erange)
+ if (fputs (" errno-erange", fp) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'",
+ filename);
+ input_flag_type okflag = (must_erange
+ ? flag_missing_errno
+ : flag_spurious_errno);
+ for (size_t i = 0; i < it->num_flags; i++)
+ if (it->flags[i].type == okflag)
+ if (fprintf (fp, " errno-erange-ok%s%s",
+ (it->flags[i].cond
+ ? it->flags[i].cond
+ : ""),
+ (before_after_matters
+ ? ":after-rounding"
+ : "")) < 0)
error (EXIT_FAILURE, errno, "write to '%s'",
filename);
- }
- else
- {
- if (must_erange)
- if (fputs (" errno-erange", fp) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'",
- filename);
- input_flag_type okflag = (must_erange
- ? flag_missing_errno
- : flag_spurious_errno);
- for (size_t i = 0; i < it->num_flags; i++)
- if (it->flags[i].type == okflag)
- if (fprintf (fp, " errno-erange-ok%s",
- (it->flags[i].cond
- ? it->flags[i].cond
- : "")) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'",
- filename);
- }
- if (putc ('\n', fp) < 0)
- error (EXIT_FAILURE, errno, "write to '%s'", filename);
}
+ if (putc ('\n', fp) < 0)
+ error (EXIT_FAILURE, errno, "write to '%s'", filename);
}
for (size_t i = 0; i < tf->num_ret; i++)
{
diff --git a/math/gen-libm-test.pl b/math/gen-libm-test.pl
index 919f0f2306..a5abda2fb0 100755
--- a/math/gen-libm-test.pl
+++ b/math/gen-libm-test.pl
@@ -326,19 +326,25 @@ sub or_value {
}
}
-# Return text to OR a conditional expression between two values into
-# an accumulated flags string.
-sub or_cond_value {
+# Return a conditional expression between two values.
+sub cond_value {
my ($cond, $if, $else) = @_;
if ($cond eq "1") {
- return or_value ($if);
+ return $if;
} elsif ($cond eq "0") {
- return or_value ($else);
+ return $else;
} else {
- return or_value ("($cond ? $if : $else)");
+ return "($cond ? $if : $else)";
}
}
+# Return text to OR a conditional expression between two values into
+# an accumulated flags string.
+sub or_cond_value {
+ my ($cond, $if, $else) = @_;
+ return or_value (cond_value ($cond, $if, $else));
+}
+
# Generate libm-test.c
sub generate_testfile {
my ($input, $output) = @_;
@@ -392,7 +398,7 @@ sub generate_testfile {
my (@exc_list) = qw(divbyzero inexact invalid overflow underflow);
my ($exc);
foreach $exc (@exc_list) {
- my ($exc_expected, $exc_ok, $no_exc);
+ my ($exc_expected, $exc_ok, $no_exc, $exc_cond, $exc_ok_cond);
$exc_expected = "\U$exc\E_EXCEPTION";
$exc_ok = "\U$exc\E_EXCEPTION_OK";
$no_exc = "0";
@@ -401,23 +407,20 @@ sub generate_testfile {
$no_exc = "NO_INEXACT_EXCEPTION";
}
if (defined ($flag_cond{$exc})) {
- if ($flag_cond{$exc} ne "1") {
- die ("unexpected condition for $exc\n");
- }
- if (defined ($flag_cond{"$exc-ok"})) {
- $flags_conv .= or_cond_value ($flag_cond{"$exc-ok"},
- $exc_ok, $exc_expected);
- } else {
- $flags_conv .= or_value ($exc_expected);
- }
+ $exc_cond = $flag_cond{$exc};
} else {
- if (defined ($flag_cond{"$exc-ok"})) {
- $flags_conv .= or_cond_value ($flag_cond{"$exc-ok"},
- $exc_ok, $no_exc);
- } else {
- $flags_conv .= or_value ($no_exc);
- }
+ $exc_cond = "0";
+ }
+ if (defined ($flag_cond{"$exc-ok"})) {
+ $exc_ok_cond = $flag_cond{"$exc-ok"};
+ } else {
+ $exc_ok_cond = "0";
}
+ $flags_conv .= or_cond_value ($exc_cond,
+ cond_value ($exc_ok_cond,
+ $exc_ok, $exc_expected),
+ cond_value ($exc_ok_cond,
+ $exc_ok, $no_exc));
}
my ($errno_expected, $errno_unknown_cond);
if (defined ($flag_cond{"errno-edom"})) {