aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-03-05 15:05:20 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-03-05 15:05:20 +0000
commit2f0a0f44274808faa6bb55dd28b9ddbda6380f2a (patch)
tree3cf87b28e0ed5a85214db8ef6a9ed08e21f2e5e1
parente6b6a85705be16373fb3f78ef998edc62150499c (diff)
downloadglibc-2f0a0f44274808faa6bb55dd28b9ddbda6380f2a.tar.xz
glibc-2f0a0f44274808faa6bb55dd28b9ddbda6380f2a.zip
Automatically check sanity of ulps from libm tests.
This patch makes libm-test.inc apply sanity checks to ulps values resulting from tests, or found in libm-test-ulps files, to avoid the need for manual checking/editing of new ulps for cases that are excessively large or involve functions that should not have any ulps. For IBM long double, errors must be at most 14ulp (the largest currently checked-in value), or at most 3ulp (the documented error bound for division) in the case of exactly-determined functions; for other formats, the limits are 9ulp (also the largest currently checked-in value) and 0ulp. Limits from ulps files are saturated to those bounds, and regen-ulps will ignore any errors outside those bounds. (Thus if, say, you have an architecture-specific problem with fma, the tests can still be XFAILed in auto-libm-test-in, but errors outside the permitted range can no longer be listed in libm-test-ulps.) Tested x86_64. * math/libm-test.inc (max_valid_error): New variable. (init_max_error): Take new argument specifying whether function results are exactly determined. Set max_valid_error and bound other variables for errors based on this argument. (set_max_error): Do not record results above max_valid_error. (check_float_internal): Only accept errors of up to 0.5ulps if also at most max_valid_error. (START): Take new argument EXACT and pass it to init_max_error. (acos_test): Update call to START. (acos_test_tonearest): Likewise. (acos_test_towardzero): Likewise. (acos_test_downward): Likewise. (acos_test_upward): Likewise. (acosh_test): Likewise. (asin_test): Likewise. (asin_test_tonearest): Likewise. (asin_test_towardzero): Likewise. (asin_test_downward): Likewise. (asin_test_upward): Likewise. (asinh_test): Likewise. (atan_test): Likewise. (atanh_test): Likewise. (atan2_test): Likewise. (cabs_test): Likewise. (cacos_test): Likewise. (cacosh_test): Likewise. (carg_test): Likewise. (casin_test): Likewise. (casinh_test): Likewise. (catan_test): Likewise. (catanh_test): Likewise. (cbrt_test): Likewise. (ccos_test): Likewise. (ccosh_test): Likewise. (ceil_test): Likewise. (cexp_test): Likewise. (cimag_test): Likewise. (clog_test): Likewise. (clog10_test): Likewise. (conj_test): Likewise. (copysign_test): Likewise. (cos_test): Likewise. (cos_test_tonearest): Likewise. (cos_test_towardzero): Likewise. (cos_test_downward): Likewise. (cos_test_upward): Likewise. (cosh_test): Likewise. (cosh_test_tonearest): Likewise. (cosh_test_towardzero): Likewise. (cosh_test_downward): Likewise. (cosh_test_upward): Likewise. (cpow_test): Likewise. (cproj_test): Likewise. (creal_test): Likewise. (csin_test): Likewise. (csinh_test): Likewise. (csqrt_test): Likewise. (ctan_test): Likewise. (ctan_test_tonearest): Likewise. (ctan_test_towardzero): Likewise. (ctan_test_downward): Likewise. (ctan_test_upward): Likewise. (ctanh_test): Likewise. (ctanh_test_tonearest): Likewise. (ctanh_test_towardzero): Likewise. (ctanh_test_downward): Likewise. (ctanh_test_upward): Likewise. (erf_test): Likewise. (erfc_test): Likewise. (exp_test): Likewise. (exp_test_tonearest): Likewise. (exp_test_towardzero): Likewise. (exp_test_downward): Likewise. (exp_test_upward): Likewise. (exp10_test): Likewise. (exp10_test_tonearest): Likewise. (exp10_test_towardzero): Likewise. (exp10_test_downward): Likewise. (exp10_test_upward): Likewise. (pow10_test): Likewise. (exp2_test): Likewise. (expm1_test): Likewise. (expm1_test_tonearest): Likewise. (expm1_test_towardzero): Likewise. (expm1_test_downward): Likewise. (expm1_test_upward): Likewise. (fabs_test): Likewise. (fdim_test): Likewise. (floor_test): Likewise. (fma_test): Likewise. (fma_test_towardzero): Likewise. (fma_test_downward): Likewise. (fma_test_upward): Likewise. (fmax_test): Likewise. (fmin_test): Likewise. (fmod_test): Likewise. (fpclassify_test): Likewise. (frexp_test): Likewise. (hypot_test): Likewise. (ilogb_test): Likewise. (isfinite_test): Likewise. (finite_test): Likewise. (isgreater_test): Likewise. (isgreaterequal_test): Likewise. (isinf_test): Likewise. (isless_test): Likewise. (islessequal_test): Likewise. (islessgreater_test): Likewise. (isnan_test): Likewise. (isnormal_test): Likewise. (issignaling_test): Likewise. (isunordered_test): Likewise. (j0_test): Likewise. (j1_test): Likewise. (jn_test): Likewise. (ldexp_test): Likewise. (lgamma_test): Likewise. (gamma_test): Likewise. (lrint_test): Likewise. (lrint_test_tonearest): Likewise. (lrint_test_towardzero): Likewise. (lrint_test_downward): Likewise. (lrint_test_upward): Likewise. (llrint_test): Likewise. (llrint_test_tonearest): Likewise. (llrint_test_towardzero): Likewise. (llrint_test_downward): Likewise. (llrint_test_upward): Likewise. (log_test): Likewise. (log10_test): Likewise. (log1p_test): Likewise. (log2_test): Likewise. (logb_test): Likewise. (logb_test_downward): Likewise. (lround_test): Likewise. (llround_test): Likewise. (modf_test): Likewise. (nearbyint_test): Likewise. (nextafter_test): Likewise. (nexttoward_test): Likewise. (pow_test): Likewise. (pow_test_tonearest): Likewise. (pow_test_towardzero): Likewise. (pow_test_downward): Likewise. (pow_test_upward): Likewise. (remainder_test): Likewise. (drem_test): Likewise. (remainder_test_tonearest): Likewise. (drem_test_tonearest): Likewise. (remainder_test_towardzero): Likewise. (drem_test_towardzero): Likewise. (remainder_test_downward): Likewise. (drem_test_downward): Likewise. (remainder_test_upward): Likewise. (drem_test_upward): Likewise. (remquo_test): Likewise. (rint_test): Likewise. (rint_test_tonearest): Likewise. (rint_test_towardzero): Likewise. (rint_test_downward): Likewise. (rint_test_upward): Likewise. (round_test): Likewise. (scalb_test): Likewise. (scalbn_test): Likewise. (scalbln_test): Likewise. (signbit_test): Likewise. (sin_test): Likewise. (sin_test_tonearest): Likewise. (sin_test_towardzero): Likewise. (sin_test_downward): Likewise. (sin_test_upward): Likewise. (sincos_test): Likewise. (sinh_test): Likewise. (sinh_test_tonearest): Likewise. (sinh_test_towardzero): Likewise. (sinh_test_downward): Likewise. (sinh_test_upward): Likewise. (sqrt_test): Likewise. (sqrt_test_tonearest): Likewise. (sqrt_test_towardzero): Likewise. (sqrt_test_downward): Likewise. (sqrt_test_upward): Likewise. (tan_test): Likewise. (tan_test_tonearest): Likewise. (tan_test_towardzero): Likewise. (tan_test_downward): Likewise. (tan_test_upward): Likewise. (tanh_test): Likewise. (tgamma_test): Likewise. (trunc_test): Likewise. (y0_test): Likewise. (y1_test): Likewise. (yn_test): Likewise. (significand_test): Likewise.
-rw-r--r--ChangeLog195
-rw-r--r--math/libm-test.inc403
2 files changed, 407 insertions, 191 deletions
diff --git a/ChangeLog b/ChangeLog
index 82303d5a0b..b595d64220 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,200 @@
2014-03-05 Joseph Myers <joseph@codesourcery.com>
+ * math/libm-test.inc (max_valid_error): New variable.
+ (init_max_error): Take new argument specifying whether function
+ results are exactly determined. Set max_valid_error and bound
+ other variables for errors based on this argument.
+ (set_max_error): Do not record results above max_valid_error.
+ (check_float_internal): Only accept errors of up to 0.5ulps if
+ also at most max_valid_error.
+ (START): Take new argument EXACT and pass it to init_max_error.
+ (acos_test): Update call to START.
+ (acos_test_tonearest): Likewise.
+ (acos_test_towardzero): Likewise.
+ (acos_test_downward): Likewise.
+ (acos_test_upward): Likewise.
+ (acosh_test): Likewise.
+ (asin_test): Likewise.
+ (asin_test_tonearest): Likewise.
+ (asin_test_towardzero): Likewise.
+ (asin_test_downward): Likewise.
+ (asin_test_upward): Likewise.
+ (asinh_test): Likewise.
+ (atan_test): Likewise.
+ (atanh_test): Likewise.
+ (atan2_test): Likewise.
+ (cabs_test): Likewise.
+ (cacos_test): Likewise.
+ (cacosh_test): Likewise.
+ (carg_test): Likewise.
+ (casin_test): Likewise.
+ (casinh_test): Likewise.
+ (catan_test): Likewise.
+ (catanh_test): Likewise.
+ (cbrt_test): Likewise.
+ (ccos_test): Likewise.
+ (ccosh_test): Likewise.
+ (ceil_test): Likewise.
+ (cexp_test): Likewise.
+ (cimag_test): Likewise.
+ (clog_test): Likewise.
+ (clog10_test): Likewise.
+ (conj_test): Likewise.
+ (copysign_test): Likewise.
+ (cos_test): Likewise.
+ (cos_test_tonearest): Likewise.
+ (cos_test_towardzero): Likewise.
+ (cos_test_downward): Likewise.
+ (cos_test_upward): Likewise.
+ (cosh_test): Likewise.
+ (cosh_test_tonearest): Likewise.
+ (cosh_test_towardzero): Likewise.
+ (cosh_test_downward): Likewise.
+ (cosh_test_upward): Likewise.
+ (cpow_test): Likewise.
+ (cproj_test): Likewise.
+ (creal_test): Likewise.
+ (csin_test): Likewise.
+ (csinh_test): Likewise.
+ (csqrt_test): Likewise.
+ (ctan_test): Likewise.
+ (ctan_test_tonearest): Likewise.
+ (ctan_test_towardzero): Likewise.
+ (ctan_test_downward): Likewise.
+ (ctan_test_upward): Likewise.
+ (ctanh_test): Likewise.
+ (ctanh_test_tonearest): Likewise.
+ (ctanh_test_towardzero): Likewise.
+ (ctanh_test_downward): Likewise.
+ (ctanh_test_upward): Likewise.
+ (erf_test): Likewise.
+ (erfc_test): Likewise.
+ (exp_test): Likewise.
+ (exp_test_tonearest): Likewise.
+ (exp_test_towardzero): Likewise.
+ (exp_test_downward): Likewise.
+ (exp_test_upward): Likewise.
+ (exp10_test): Likewise.
+ (exp10_test_tonearest): Likewise.
+ (exp10_test_towardzero): Likewise.
+ (exp10_test_downward): Likewise.
+ (exp10_test_upward): Likewise.
+ (pow10_test): Likewise.
+ (exp2_test): Likewise.
+ (expm1_test): Likewise.
+ (expm1_test_tonearest): Likewise.
+ (expm1_test_towardzero): Likewise.
+ (expm1_test_downward): Likewise.
+ (expm1_test_upward): Likewise.
+ (fabs_test): Likewise.
+ (fdim_test): Likewise.
+ (floor_test): Likewise.
+ (fma_test): Likewise.
+ (fma_test_towardzero): Likewise.
+ (fma_test_downward): Likewise.
+ (fma_test_upward): Likewise.
+ (fmax_test): Likewise.
+ (fmin_test): Likewise.
+ (fmod_test): Likewise.
+ (fpclassify_test): Likewise.
+ (frexp_test): Likewise.
+ (hypot_test): Likewise.
+ (ilogb_test): Likewise.
+ (isfinite_test): Likewise.
+ (finite_test): Likewise.
+ (isgreater_test): Likewise.
+ (isgreaterequal_test): Likewise.
+ (isinf_test): Likewise.
+ (isless_test): Likewise.
+ (islessequal_test): Likewise.
+ (islessgreater_test): Likewise.
+ (isnan_test): Likewise.
+ (isnormal_test): Likewise.
+ (issignaling_test): Likewise.
+ (isunordered_test): Likewise.
+ (j0_test): Likewise.
+ (j1_test): Likewise.
+ (jn_test): Likewise.
+ (ldexp_test): Likewise.
+ (lgamma_test): Likewise.
+ (gamma_test): Likewise.
+ (lrint_test): Likewise.
+ (lrint_test_tonearest): Likewise.
+ (lrint_test_towardzero): Likewise.
+ (lrint_test_downward): Likewise.
+ (lrint_test_upward): Likewise.
+ (llrint_test): Likewise.
+ (llrint_test_tonearest): Likewise.
+ (llrint_test_towardzero): Likewise.
+ (llrint_test_downward): Likewise.
+ (llrint_test_upward): Likewise.
+ (log_test): Likewise.
+ (log10_test): Likewise.
+ (log1p_test): Likewise.
+ (log2_test): Likewise.
+ (logb_test): Likewise.
+ (logb_test_downward): Likewise.
+ (lround_test): Likewise.
+ (llround_test): Likewise.
+ (modf_test): Likewise.
+ (nearbyint_test): Likewise.
+ (nextafter_test): Likewise.
+ (nexttoward_test): Likewise.
+ (pow_test): Likewise.
+ (pow_test_tonearest): Likewise.
+ (pow_test_towardzero): Likewise.
+ (pow_test_downward): Likewise.
+ (pow_test_upward): Likewise.
+ (remainder_test): Likewise.
+ (drem_test): Likewise.
+ (remainder_test_tonearest): Likewise.
+ (drem_test_tonearest): Likewise.
+ (remainder_test_towardzero): Likewise.
+ (drem_test_towardzero): Likewise.
+ (remainder_test_downward): Likewise.
+ (drem_test_downward): Likewise.
+ (remainder_test_upward): Likewise.
+ (drem_test_upward): Likewise.
+ (remquo_test): Likewise.
+ (rint_test): Likewise.
+ (rint_test_tonearest): Likewise.
+ (rint_test_towardzero): Likewise.
+ (rint_test_downward): Likewise.
+ (rint_test_upward): Likewise.
+ (round_test): Likewise.
+ (scalb_test): Likewise.
+ (scalbn_test): Likewise.
+ (scalbln_test): Likewise.
+ (signbit_test): Likewise.
+ (sin_test): Likewise.
+ (sin_test_tonearest): Likewise.
+ (sin_test_towardzero): Likewise.
+ (sin_test_downward): Likewise.
+ (sin_test_upward): Likewise.
+ (sincos_test): Likewise.
+ (sinh_test): Likewise.
+ (sinh_test_tonearest): Likewise.
+ (sinh_test_towardzero): Likewise.
+ (sinh_test_downward): Likewise.
+ (sinh_test_upward): Likewise.
+ (sqrt_test): Likewise.
+ (sqrt_test_tonearest): Likewise.
+ (sqrt_test_towardzero): Likewise.
+ (sqrt_test_downward): Likewise.
+ (sqrt_test_upward): Likewise.
+ (tan_test): Likewise.
+ (tan_test_tonearest): Likewise.
+ (tan_test_towardzero): Likewise.
+ (tan_test_downward): Likewise.
+ (tan_test_upward): Likewise.
+ (tanh_test): Likewise.
+ (tgamma_test): Likewise.
+ (trunc_test): Likewise.
+ (y0_test): Likewise.
+ (y1_test): Likewise.
+ (yn_test): Likewise.
+ (significand_test): Likewise.
+
* math/libm-test.inc (struct ulp_data): Don't refer to ulps for
individual tests in comment.
(libm-test-ulps.h): Don't refer to test_ulps in #include comment.
diff --git a/math/libm-test.inc b/math/libm-test.inc
index f8cd94781e..b1074328f0 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -326,6 +326,8 @@ static FLOAT max_error, real_max_error, imag_max_error;
static FLOAT prev_max_error, prev_real_max_error, prev_imag_max_error;
+static FLOAT max_valid_error;
+
#define BUILD_COMPLEX(real, imag) \
({ __complex__ FLOAT __retval; \
__real__ __retval = (real); \
@@ -364,7 +366,7 @@ find_ulps (const char *name, const struct ulp_data *data, size_t nmemb)
}
static void
-init_max_error (const char *name)
+init_max_error (const char *name, int exact)
{
max_error = 0;
real_max_error = 0;
@@ -377,6 +379,24 @@ init_max_error (const char *name)
prev_imag_max_error = find_ulps (name, func_imag_ulps,
(sizeof (func_imag_ulps)
/ sizeof (func_imag_ulps[0])));
+#if TEST_COND_ldbl_128ibm
+ /* The documented accuracy of IBM long double division is 3ulp (see
+ libgcc/config/rs6000/ibm-ldouble-format), so do not require
+ better accuracy for libm functions that are exactly defined for
+ other formats. */
+ max_valid_error = exact ? 3 : 14;
+#else
+ max_valid_error = exact ? 0 : 9;
+#endif
+ prev_max_error = (prev_max_error <= max_valid_error
+ ? prev_max_error
+ : max_valid_error);
+ prev_real_max_error = (prev_real_max_error <= max_valid_error
+ ? prev_real_max_error
+ : max_valid_error);
+ prev_imag_max_error = (prev_imag_max_error <= max_valid_error
+ ? prev_imag_max_error
+ : max_valid_error);
feclearexcept (FE_ALL_EXCEPT);
errno = 0;
}
@@ -384,7 +404,7 @@ init_max_error (const char *name)
static void
set_max_error (FLOAT current, FLOAT *curr_max_error)
{
- if (current > *curr_max_error)
+ if (current > *curr_max_error && current <= max_valid_error)
*curr_max_error = current;
}
@@ -798,7 +818,8 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
&& computed == 0.0 && expected == 0.0
&& signbit(computed) != signbit (expected))
ok = 0;
- else if (ulps <= 0.5 || (ulps <= max_ulp && !ignore_max_ulp))
+ else if ((ulps <= 0.5 && ulps <= max_valid_error)
+ || (ulps <= max_ulp && !ignore_max_ulp))
ok = 1;
else
ok = 0;
@@ -1585,9 +1606,9 @@ struct test_fFF_11_data
ROUND_RESTORE_ ## ROUNDING_MODE
/* Start and end the tests for a given function. */
-#define START(FUNC) \
+#define START(FUNC, EXACT) \
const char *this_func = #FUNC; \
- init_max_error (this_func)
+ init_max_error (this_func, EXACT)
#define END \
print_max_error (this_func)
#define END_COMPLEX \
@@ -1624,7 +1645,7 @@ static const struct test_f_f_data acos_test_data[] =
static void
acos_test (void)
{
- START (acos);
+ START (acos, 0);
RUN_TEST_LOOP_f_f (acos, acos_test_data, );
END;
}
@@ -1638,7 +1659,7 @@ static const struct test_f_f_data acos_tonearest_test_data[] =
static void
acos_test_tonearest (void)
{
- START (acos_tonearest);
+ START (acos_tonearest, 0);
RUN_TEST_LOOP_f_f (acos, acos_tonearest_test_data, FE_TONEAREST);
END;
}
@@ -1652,7 +1673,7 @@ static const struct test_f_f_data acos_towardzero_test_data[] =
static void
acos_test_towardzero (void)
{
- START (acos_towardzero);
+ START (acos_towardzero, 0);
RUN_TEST_LOOP_f_f (acos, acos_towardzero_test_data, FE_TOWARDZERO);
END;
}
@@ -1666,7 +1687,7 @@ static const struct test_f_f_data acos_downward_test_data[] =
static void
acos_test_downward (void)
{
- START (acos_downward);
+ START (acos_downward, 0);
RUN_TEST_LOOP_f_f (acos, acos_downward_test_data, FE_DOWNWARD);
END;
}
@@ -1680,7 +1701,7 @@ static const struct test_f_f_data acos_upward_test_data[] =
static void
acos_test_upward (void)
{
- START (acos_upward);
+ START (acos_upward, 0);
RUN_TEST_LOOP_f_f (acos, acos_upward_test_data, FE_UPWARD);
END;
}
@@ -1708,7 +1729,7 @@ static const struct test_f_f_data acosh_test_data[] =
static void
acosh_test (void)
{
- START (acosh);
+ START (acosh, 0);
RUN_TEST_LOOP_f_f (acosh, acosh_test_data, );
END;
}
@@ -1731,7 +1752,7 @@ static const struct test_f_f_data asin_test_data[] =
static void
asin_test (void)
{
- START (asin);
+ START (asin, 0);
RUN_TEST_LOOP_f_f (asin, asin_test_data, );
END;
}
@@ -1745,7 +1766,7 @@ static const struct test_f_f_data asin_tonearest_test_data[] =
static void
asin_test_tonearest (void)
{
- START (asin_tonearest);
+ START (asin_tonearest, 0);
RUN_TEST_LOOP_f_f (asin, asin_tonearest_test_data, FE_TONEAREST);
END;
}
@@ -1759,7 +1780,7 @@ static const struct test_f_f_data asin_towardzero_test_data[] =
static void
asin_test_towardzero (void)
{
- START (asin_towardzero);
+ START (asin_towardzero, 0);
RUN_TEST_LOOP_f_f (asin, asin_towardzero_test_data, FE_TOWARDZERO);
END;
}
@@ -1773,7 +1794,7 @@ static const struct test_f_f_data asin_downward_test_data[] =
static void
asin_test_downward (void)
{
- START (asin_downward);
+ START (asin_downward, 0);
RUN_TEST_LOOP_f_f (asin, asin_downward_test_data, FE_DOWNWARD);
END;
}
@@ -1787,7 +1808,7 @@ static const struct test_f_f_data asin_upward_test_data[] =
static void
asin_test_upward (void)
{
- START (asin_upward);
+ START (asin_upward, 0);
RUN_TEST_LOOP_f_f (asin, asin_upward_test_data, FE_UPWARD);
END;
}
@@ -1803,7 +1824,7 @@ static const struct test_f_f_data asinh_test_data[] =
static void
asinh_test (void)
{
- START (asinh);
+ START (asinh, 0);
RUN_TEST_LOOP_f_f (asinh, asinh_test_data, );
END;
}
@@ -1820,7 +1841,7 @@ static const struct test_f_f_data atan_test_data[] =
static void
atan_test (void)
{
- START (atan);
+ START (atan, 0);
RUN_TEST_LOOP_f_f (atan, atan_test_data, );
END;
}
@@ -1847,7 +1868,7 @@ static const struct test_f_f_data atanh_test_data[] =
static void
atanh_test (void)
{
- START (atanh);
+ START (atanh, 0);
RUN_TEST_LOOP_f_f (atanh, atanh_test_data, );
END;
}
@@ -1884,7 +1905,7 @@ static const struct test_ff_f_data atan2_test_data[] =
static void
atan2_test (void)
{
- START (atan2);
+ START (atan2, 0);
RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, );
END;
}
@@ -1909,7 +1930,7 @@ static const struct test_c_f_data cabs_test_data[] =
static void
cabs_test (void)
{
- START (cabs);
+ START (cabs, 0);
RUN_TEST_LOOP_c_f (cabs, cabs_test_data, );
END;
}
@@ -2600,7 +2621,7 @@ static const struct test_c_c_data cacos_test_data[] =
static void
cacos_test (void)
{
- START (cacos);
+ START (cacos, 0);
RUN_TEST_LOOP_c_c (cacos, cacos_test_data, );
END_COMPLEX;
}
@@ -3284,7 +3305,7 @@ static const struct test_c_c_data cacosh_test_data[] =
static void
cacosh_test (void)
{
- START (cacosh);
+ START (cacosh, 0);
RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, );
END_COMPLEX;
}
@@ -3328,7 +3349,7 @@ static const struct test_c_f_data carg_test_data[] =
static void
carg_test (void)
{
- START (carg);
+ START (carg, 0);
RUN_TEST_LOOP_c_f (carg, carg_test_data, );
END;
}
@@ -4024,7 +4045,7 @@ static const struct test_c_c_data casin_test_data[] =
static void
casin_test (void)
{
- START (casin);
+ START (casin, 0);
RUN_TEST_LOOP_c_c (casin, casin_test_data, );
END_COMPLEX;
}
@@ -4721,7 +4742,7 @@ static const struct test_c_c_data casinh_test_data[] =
static void
casinh_test (void)
{
- START (casinh);
+ START (casinh, 0);
RUN_TEST_LOOP_c_c (casinh, casinh_test_data, );
END_COMPLEX;
}
@@ -5230,7 +5251,7 @@ static const struct test_c_c_data catan_test_data[] =
static void
catan_test (void)
{
- START (catan);
+ START (catan, 0);
RUN_TEST_LOOP_c_c (catan, catan_test_data, );
END_COMPLEX;
}
@@ -5737,7 +5758,7 @@ static const struct test_c_c_data catanh_test_data[] =
static void
catanh_test (void)
{
- START (catanh);
+ START (catanh, 0);
RUN_TEST_LOOP_c_c (catanh, catanh_test_data, );
END_COMPLEX;
}
@@ -5754,7 +5775,7 @@ static const struct test_f_f_data cbrt_test_data[] =
static void
cbrt_test (void)
{
- START (cbrt);
+ START (cbrt, 0);
RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, );
END;
}
@@ -5813,7 +5834,7 @@ static const struct test_c_c_data ccos_test_data[] =
static void
ccos_test (void)
{
- START (ccos);
+ START (ccos, 0);
RUN_TEST_LOOP_c_c (ccos, ccos_test_data, );
END_COMPLEX;
}
@@ -5872,7 +5893,7 @@ static const struct test_c_c_data ccosh_test_data[] =
static void
ccosh_test (void)
{
- START (ccosh);
+ START (ccosh, 0);
RUN_TEST_LOOP_c_c (ccosh, ccosh_test_data, );
END_COMPLEX;
}
@@ -5976,7 +5997,7 @@ static const struct test_f_f_data ceil_test_data[] =
static void
ceil_test (void)
{
- START (ceil);
+ START (ceil, 1);
RUN_TEST_LOOP_f_f (ceil, ceil_test_data, );
END;
}
@@ -6032,7 +6053,7 @@ static const struct test_c_c_data cexp_test_data[] =
static void
cexp_test (void)
{
- START (cexp);
+ START (cexp, 0);
RUN_TEST_LOOP_c_c (cexp, cexp_test_data, );
END_COMPLEX;
}
@@ -6052,7 +6073,7 @@ static const struct test_c_f_data cimag_test_data[] =
static void
cimag_test (void)
{
- START (cimag);
+ START (cimag, 1);
RUN_TEST_LOOP_c_f (cimag, cimag_test_data, );
END;
}
@@ -6114,7 +6135,7 @@ static const struct test_c_c_data clog_test_data[] =
static void
clog_test (void)
{
- START (clog);
+ START (clog, 0);
RUN_TEST_LOOP_c_c (clog, clog_test_data, );
END_COMPLEX;
}
@@ -6176,7 +6197,7 @@ static const struct test_c_c_data clog10_test_data[] =
static void
clog10_test (void)
{
- START (clog10);
+ START (clog10, 0);
RUN_TEST_LOOP_c_c (clog10, clog10_test_data, );
END_COMPLEX;
}
@@ -6196,7 +6217,7 @@ static const struct test_c_c_data conj_test_data[] =
static void
conj_test (void)
{
- START (conj);
+ START (conj, 1);
RUN_TEST_LOOP_c_c (conj, conj_test_data, );
END_COMPLEX;
}
@@ -6248,7 +6269,7 @@ static const struct test_ff_f_data copysign_test_data[] =
static void
copysign_test (void)
{
- START (copysign);
+ START (copysign, 1);
RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, );
END;
}
@@ -6266,7 +6287,7 @@ static const struct test_f_f_data cos_test_data[] =
static void
cos_test (void)
{
- START (cos);
+ START (cos, 0);
RUN_TEST_LOOP_f_f (cos, cos_test_data, );
END;
}
@@ -6280,7 +6301,7 @@ static const struct test_f_f_data cos_tonearest_test_data[] =
static void
cos_test_tonearest (void)
{
- START (cos_tonearest);
+ START (cos_tonearest, 0);
RUN_TEST_LOOP_f_f (cos, cos_tonearest_test_data, FE_TONEAREST);
END;
}
@@ -6294,7 +6315,7 @@ static const struct test_f_f_data cos_towardzero_test_data[] =
static void
cos_test_towardzero (void)
{
- START (cos_towardzero);
+ START (cos_towardzero, 0);
RUN_TEST_LOOP_f_f (cos, cos_towardzero_test_data, FE_TOWARDZERO);
END;
}
@@ -6308,7 +6329,7 @@ static const struct test_f_f_data cos_downward_test_data[] =
static void
cos_test_downward (void)
{
- START (cos_downward);
+ START (cos_downward, 0);
RUN_TEST_LOOP_f_f (cos, cos_downward_test_data, FE_DOWNWARD);
END;
}
@@ -6322,7 +6343,7 @@ static const struct test_f_f_data cos_upward_test_data[] =
static void
cos_test_upward (void)
{
- START (cos_upward);
+ START (cos_upward, 0);
RUN_TEST_LOOP_f_f (cos, cos_upward_test_data, FE_UPWARD);
END;
}
@@ -6340,7 +6361,7 @@ static const struct test_f_f_data cosh_test_data[] =
static void
cosh_test (void)
{
- START (cosh);
+ START (cosh, 0);
RUN_TEST_LOOP_f_f (cosh, cosh_test_data, );
END;
}
@@ -6354,7 +6375,7 @@ static const struct test_f_f_data cosh_tonearest_test_data[] =
static void
cosh_test_tonearest (void)
{
- START (cosh_tonearest);