[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r23075 - in /fsf/trunk/libc: ./ malloc/ math/ nptl/ nptl/sysdeps/i386/ nptl/sysdeps/x86_64/ ports/ ports/sysdeps/hppa/fpu/ s...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r23075 - in /fsf/trunk/libc: ./ malloc/ math/ nptl/ nptl/sysdeps/i386/ nptl/sysdeps/x86_64/ ports/ ports/sysdeps/hppa/fpu/ s...
- From: eglibc@xxxxxxxxxx
- Date: Thu, 16 May 2013 00:02:12 -0000
Author: eglibc
Date: Thu May 16 00:02:10 2013
New Revision: 23075
Log:
Import glibc-mainline for 2013-05-16
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/NEWS
fsf/trunk/libc/malloc/obstack.c
fsf/trunk/libc/math/atest-exp2.c
fsf/trunk/libc/math/libm-test.inc
fsf/trunk/libc/nptl/ChangeLog
fsf/trunk/libc/nptl/sysdeps/i386/tls.h
fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h
fsf/trunk/libc/ports/ChangeLog.hppa
fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h
fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
fsf/trunk/libc/sysdeps/x86_64/fpu/math_private.h
fsf/trunk/libc/sysdeps/x86_64/fpu/multiarch/s_fma.c
fsf/trunk/libc/sysdeps/x86_64/fpu/multiarch/s_fmaf.c
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu May 16 00:02:10 2013
@@ -1,3 +1,105 @@
+2013-05-13 Peter Collingbourne <pcc@xxxxxxxxxx>
+
+ * math/atest-exp2.c (get_log2): Remove const attribute.
+
+2013-05-15 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * math/libm-test.inc (struct test_f_l_data): New type.
+ (RUN_TEST_LOOP_f_l): New macro.
+ (lrint_test_data): New variable.
+ (lrint_test): Run tests with RUN_TEST_LOOP_f_l.
+ (lrint_tonearest_test_data): New variable.
+ (lrint_test_tonearest): Run tests with RUN_TEST_LOOP_f_l.
+ (lrint_towardzero_test_data): New variable.
+ (lrint_test_towardzero): Run tests with RUN_TEST_LOOP_f_l.
+ (lrint_downward_test_data): New variable.
+ (lrint_test_downward): Run tests with RUN_TEST_LOOP_f_l.
+ (lrint_upward_test_data): New variable.
+ (lrint_test_upward): Run tests with RUN_TEST_LOOP_f_l.
+ (lround_test_data): New variable.
+ (lround_test): Run tests with RUN_TEST_LOOP_f_l.
+
+2013-05-15 Peter Collingbourne <pcc@xxxxxxxxxx>
+
+ * sysdeps/x86_64/fpu/math_private.h (MOVQ): New macro.
+ (EXTRACT_WORDS64) Use where appropriate.
+ (INSERT_WORDS64) Likewise.
+
+ * sysdeps/x86_64/fpu/multiarch/s_fma.c (__fma_fma4): Replace xm
+ constraints with x constraints.
+ * sysdeps/x86_64/fpu/multiarch/s_fmaf.c (__fmaf_fma4): Likewise.
+
+ * malloc/obstack.c (_obstack_compat): Add initializer.
+
+2013-05-15 Edjunior Machado <emachado@xxxxxxxxxxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h (siginfo_t): Remove
+ si_trapno and add si_addr_lsb to _sifields.sigfault.
+ (si_trapno): Remove macro.
+ (si_addr_lsb): Define new macro.
+ (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values.
+
+2013-05-15 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * math/libm-test.inc (llrint_test): Consistently use TEST_f_L
+ instead of TEST_f_l.
+ (llrint_test_tonearest): Likewise.
+ (llrint_test_towardzero): Likewise.
+ (llrint_test_downward): Likewise.
+ (llrint_test_upward): Likewise.
+ (llround_test): Likewise.
+
+ * math/libm-test.inc (struct test_f_i_data): Add comment.
+ (RUN_TEST_LOOP_f_b): New macro.
+ (RUN_TEST_LOOP_f_b_tg): Likewise.
+ (finite_test_data): New variable.
+ (finite_test): Run tests with RUN_TEST_LOOP_f_b.
+ (isfinite_test_data): New variable.
+ (isfinite_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+ (isinf_test_data): New variable.
+ (isinf_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+ (isnan_test_data): New variable.
+ (isnan_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+ (isnormal_test_data): New variable.
+ (isnormal_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+ (issignaling_test_data): New variable.
+ (issignaling_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+ (signbit_test_data): New variable.
+ (signbit_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+
+ * math/libm-test.inc (acos_test_data): Use ERRNO_EDOM together
+ with INVALID_EXCEPTION.
+ (acosh_test_data): Likewise.
+ (asin_test_data): Likewise.
+ (atanh_test_data): Likewise.
+ (fmod_test_data): Likewise.
+ (log_test_data): Likewise.
+ (log10_test_data): Likewise.
+ (log2_test_data): Likewise.
+ (pow_test_data): Likewise.
+ (sqrt_test_data): Likewise.
+ (y0_test_data): Likewise.
+ (y1_test_data): Likewise.
+ (yn_test_data): Likewise.
+
+ * math/libm-test.inc (test_single_errno) [TEST_INLINE]: Disable
+ function contents.
+
+ * math/libm-test.inc (struct test_ff_i_data): New type.
+ (RUN_TEST_LOOP_ff_i_tg): New macro.
+ (isgreater_test_data): New variable.
+ (isgreater_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+ (isgreaterequal_test_data): New variable.
+ (isgreaterequal_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+ (isless_test_data): New variable.
+ (isless_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+ (islessequal_test_data): New variable.
+ (islessequal_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+ (islessgreater_test_data): New variable.
+ (islessgreater_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+ (isunordered_test_data): New variable.
+ (isunordered_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+
2013-05-14 David S. Miller <davem@xxxxxxxxxxxxx>
* sysdeps/sparc/fpu/libm-test-ulps: Update.
Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Thu May 16 00:02:10 2013
@@ -9,15 +9,15 @@
* The following bugs are resolved with this release:
- 2546, 2560, 5159, 6809, 10060, 10062, 10357, 11120, 11561, 12387, 12723,
- 13550, 13889, 13951, 13988, 14142, 14176, 14200, 14280, 14293, 14317,
- 14327, 14478, 14496, 14582, 14686, 14812, 14888, 14908, 14920, 14952,
- 14964, 14981, 14982, 14985, 14994, 14996, 15003, 15006, 15007, 15020,
- 15023, 15036, 15054, 15055, 15062, 15078, 15084, 15085, 15086, 15160,
- 15214, 15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307,
- 15309, 15327, 15330, 15335, 15336, 15337, 15342, 15346, 15359, 15361,
- 15366, 15380, 15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419,
- 15423, 15426, 15429, 15448.
+ 2546, 2560, 5159, 6809, 10060, 10062, 10357, 10686, 11120, 11561, 12387,
+ 12723, 13550, 13889, 13951, 13988, 14142, 14176, 14200, 14280, 14293,
+ 14317, 14327, 14478, 14496, 14582, 14686, 14812, 14888, 14908, 14920,
+ 14952, 14964, 14981, 14982, 14985, 14994, 14996, 15000, 15003, 15006,
+ 15007, 15020, 15023, 15036, 15054, 15055, 15062, 15078, 15084, 15085,
+ 15086, 15160, 15214, 15221, 15232, 15234, 15283, 15285, 15287, 15304,
+ 15305, 15307, 15309, 15327, 15330, 15335, 15336, 15337, 15342, 15346,
+ 15359, 15361, 15366, 15380, 15394, 15395, 15405, 15406, 15409, 15416,
+ 15418, 15419, 15423, 15426, 15429, 15448.
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
#15078).
Modified: fsf/trunk/libc/malloc/obstack.c
==============================================================================
--- fsf/trunk/libc/malloc/obstack.c (original)
+++ fsf/trunk/libc/malloc/obstack.c Thu May 16 00:02:10 2013
@@ -115,7 +115,7 @@
/* A looong time ago (before 1994, anyway; we're not sure) this global variable
was used by non-GNU-C macros to avoid multiple evaluation. The GNU C
library still exports it because somebody might use it. */
-struct obstack *_obstack_compat;
+struct obstack *_obstack_compat = 0;
compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0);
# endif
# endif
Modified: fsf/trunk/libc/math/atest-exp2.c
==============================================================================
--- fsf/trunk/libc/math/atest-exp2.c (original)
+++ fsf/trunk/libc/math/atest-exp2.c Thu May 16 00:02:10 2013
@@ -77,7 +77,6 @@
<< (FRAC - i * 4 - 4) % mpbpl);
}
-static mp_limb_t *get_log2(void) __attribute__((const));
static mp_limb_t *
get_log2(void)
{
Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Thu May 16 00:02:10 2013
@@ -560,6 +560,7 @@
test_single_errno (const char *test_name, int errno_value,
int expected_value, const char *expected_name)
{
+#ifndef TEST_INLINE
if (errno_value == expected_value)
{
if (print_screen (1))
@@ -573,6 +574,7 @@
printf ("Failure: %s: errno set to %d, expected %d (%s)\n",
test_name, errno_value, expected_value, expected_name);
}
+#endif
}
/* Test whether errno (value ERRNO_VALUE) has been for TEST_NAME set
@@ -981,12 +983,30 @@
__complex__ FLOAT max_ulp;
int exceptions;
};
+/* Used for all of RUN_TEST_LOOP_f_i, RUN_TEST_LOOP_f_i_tg,
+ RUN_TEST_LOOP_f_b and RUN_TEST_LOOP_f_b_tg. */
struct test_f_i_data
{
const char *test_name;
FLOAT arg;
int expected;
int max_ulp;
+ int exceptions;
+};
+struct test_ff_i_data
+{
+ const char *test_name;
+ FLOAT arg1, arg2;
+ int expected;
+ int max_ulp;
+ int exceptions;
+};
+struct test_f_l_data
+{
+ const char *test_name;
+ FLOAT arg;
+ long int expected;
+ long int max_ulp;
int exceptions;
};
@@ -1216,18 +1236,47 @@
MAX_ULP, EXCEPTIONS) \
check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED, \
MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_ff_i_tg(FUNC_NAME, ARRAY, ROUNDING_MODE) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_ff_i_tg ((ARRAY)[i].test_name, FUNC_NAME, \
+ (ARRAY)[i].arg1, (ARRAY)[i].arg2, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
MAX_ULP, EXCEPTIONS) \
check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_b(FUNC_NAME, ARRAY, ROUNDING_MODE) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_f_b ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
MAX_ULP, EXCEPTIONS) \
check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED, \
MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_b_tg(FUNC_NAME, ARRAY, ROUNDING_MODE) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_f_b_tg ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
MAX_ULP, EXCEPTIONS) \
check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_l(FUNC_NAME, ARRAY, ROUNDING_MODE) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_f_l ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
MAX_ULP, EXCEPTIONS) \
check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
@@ -1263,15 +1312,15 @@
static const struct test_f_f_data acos_test_data[] =
{
START_DATA (acos),
- TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (acos, qnan_value, qnan_value),
/* |x| > 1: */
- TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (acos, 0, M_PI_2l),
TEST_f_f (acos, minus_zero, M_PI_2l),
@@ -1423,12 +1472,12 @@
{
START_DATA (acosh),
TEST_f_f (acosh, plus_infty, plus_infty),
- TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (acosh, qnan_value, qnan_value),
/* x < 1: */
- TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (acosh, 1, 0),
TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
@@ -1452,15 +1501,15 @@
static const struct test_f_f_data asin_test_data[] =
{
START_DATA (asin),
- TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (asin, qnan_value, qnan_value),
/* asin x == qNaN plus invalid exception for |x| > 1. */
- TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (asin, 0, 0),
TEST_f_f (asin, minus_zero, minus_zero),
@@ -1688,10 +1737,10 @@
TEST_f_f (atanh, qnan_value, qnan_value),
/* atanh (x) == qNaN plus invalid exception if |x| > 1. */
- TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
END_DATA (atanh)
@@ -8378,19 +8427,24 @@
}
+static const struct test_f_i_data finite_test_data[] =
+ {
+ START_DATA (finite),
+ TEST_f_b (finite, 0, 1),
+ TEST_f_b (finite, minus_zero, 1),
+ TEST_f_b (finite, 10, 1),
+ TEST_f_b (finite, min_subnorm_value, 1),
+ TEST_f_b (finite, plus_infty, 0),
+ TEST_f_b (finite, minus_infty, 0),
+ TEST_f_b (finite, qnan_value, 0),
+ END_DATA (finite)
+ };
+
static void
finite_test (void)
{
START (finite);
-
- TEST_f_b (finite, 0, 1);
- TEST_f_b (finite, minus_zero, 1);
- TEST_f_b (finite, 10, 1);
- TEST_f_b (finite, min_subnorm_value, 1);
- TEST_f_b (finite, plus_infty, 0);
- TEST_f_b (finite, minus_infty, 0);
- TEST_f_b (finite, qnan_value, 0);
-
+ RUN_TEST_LOOP_f_b (finite, finite_test_data, );
END (finite);
}
@@ -9547,7 +9601,7 @@
/* fmod (x, +0) == qNaN plus invalid exception. */
TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
/* fmod (x, -0) == qNaN plus invalid exception. */
- TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
+ TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
/* fmod (x, +inf) == x for x not infinite. */
TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
@@ -9762,233 +9816,288 @@
END (ilogb);
}
+static const struct test_f_i_data isfinite_test_data[] =
+ {
+ START_DATA (isfinite),
+ TEST_f_b (isfinite, 0, 1),
+ TEST_f_b (isfinite, minus_zero, 1),
+ TEST_f_b (isfinite, 10, 1),
+ TEST_f_b (isfinite, min_subnorm_value, 1),
+ TEST_f_b (isfinite, plus_infty, 0),
+ TEST_f_b (isfinite, minus_infty, 0),
+ TEST_f_b (isfinite, qnan_value, 0),
+ END_DATA (isfinite)
+ };
+
static void
isfinite_test (void)
{
START (isfinite);
-
- TEST_f_b (isfinite, 0, 1);
- TEST_f_b (isfinite, minus_zero, 1);
- TEST_f_b (isfinite, 10, 1);
- TEST_f_b (isfinite, min_subnorm_value, 1);
- TEST_f_b (isfinite, plus_infty, 0);
- TEST_f_b (isfinite, minus_infty, 0);
- TEST_f_b (isfinite, qnan_value, 0);
-
+ RUN_TEST_LOOP_f_b_tg (isfinite, isfinite_test_data, );
END (isfinite);
}
+static const struct test_ff_i_data isgreater_test_data[] =
+ {
+ START_DATA (isgreater),
+ TEST_ff_i (isgreater, minus_zero, minus_zero, 0),
+ TEST_ff_i (isgreater, minus_zero, plus_zero, 0),
+ TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0),
+ TEST_ff_i (isgreater, minus_zero, qnan_value, 0),
+ TEST_ff_i (isgreater, plus_zero, minus_zero, 0),
+ TEST_ff_i (isgreater, plus_zero, plus_zero, 0),
+ TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0),
+ TEST_ff_i (isgreater, plus_zero, qnan_value, 0),
+ TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1),
+ TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1),
+ TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0),
+ TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0),
+ TEST_ff_i (isgreater, qnan_value, minus_zero, 0),
+ TEST_ff_i (isgreater, qnan_value, plus_zero, 0),
+ TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0),
+ TEST_ff_i (isgreater, qnan_value, qnan_value, 0),
+ END_DATA (isgreater)
+ };
+
static void
isgreater_test (void)
{
START (isgreater);
-
- TEST_ff_i (isgreater, minus_zero, minus_zero, 0);
- TEST_ff_i (isgreater, minus_zero, plus_zero, 0);
- TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0);
- TEST_ff_i (isgreater, minus_zero, qnan_value, 0);
- TEST_ff_i (isgreater, plus_zero, minus_zero, 0);
- TEST_ff_i (isgreater, plus_zero, plus_zero, 0);
- TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0);
- TEST_ff_i (isgreater, plus_zero, qnan_value, 0);
- TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1);
- TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1);
- TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0);
- TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0);
- TEST_ff_i (isgreater, qnan_value, minus_zero, 0);
- TEST_ff_i (isgreater, qnan_value, plus_zero, 0);
- TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0);
- TEST_ff_i (isgreater, qnan_value, qnan_value, 0);
-
+ RUN_TEST_LOOP_ff_i_tg (isgreater, isgreater_test_data, );
END (isgreater);
}
+static const struct test_ff_i_data isgreaterequal_test_data[] =
+ {
+ START_DATA (isgreaterequal),
+ TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1),
+ TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1),
+ TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0),
+ TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0),
+ TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1),
+ TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1),
+ TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0),
+ TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0),
+ TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1),
+ TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1),
+ TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1),
+ TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0),
+ TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0),
+ TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0),
+ TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0),
+ TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0),
+ END_DATA (isgreaterequal)
+ };
+
static void
isgreaterequal_test (void)
{
START (isgreaterequal);
-
- TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1);
- TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1);
- TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0);
- TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0);
- TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1);
- TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1);
- TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0);
- TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0);
- TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1);
- TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1);
- TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1);
- TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0);
- TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0);
- TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0);
- TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0);
- TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0);
-
+ RUN_TEST_LOOP_ff_i_tg (isgreaterequal, isgreaterequal_test_data, );
END (isgreaterequal);
}
+static const struct test_f_i_data isinf_test_data[] =
+ {
+ START_DATA (isinf),
+ TEST_f_b (isinf, 0, 0),
+ TEST_f_b (isinf, minus_zero, 0),
+ TEST_f_b (isinf, 10, 0),
+ TEST_f_b (isinf, min_subnorm_value, 0),
+ TEST_f_b (isinf, plus_infty, 1),
+ TEST_f_b (isinf, minus_infty, 1),
+ TEST_f_b (isinf, qnan_value, 0),
+ END_DATA (isinf)
+ };
+
static void
isinf_test (void)
{
START (isinf);
-
- TEST_f_b (isinf, 0, 0);
- TEST_f_b (isinf, minus_zero, 0);
- TEST_f_b (isinf, 10, 0);
- TEST_f_b (isinf, min_subnorm_value, 0);
- TEST_f_b (isinf, plus_infty, 1);
- TEST_f_b (isinf, minus_infty, 1);
- TEST_f_b (isinf, qnan_value, 0);
-
+ RUN_TEST_LOOP_f_b_tg (isinf, isinf_test_data, );
END (isinf);
}
+static const struct test_ff_i_data isless_test_data[] =
+ {
+ START_DATA (isless),
+ TEST_ff_i (isless, minus_zero, minus_zero, 0),
+ TEST_ff_i (isless, minus_zero, plus_zero, 0),
+ TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1),
+ TEST_ff_i (isless, minus_zero, qnan_value, 0),
+ TEST_ff_i (isless, plus_zero, minus_zero, 0),
+ TEST_ff_i (isless, plus_zero, plus_zero, 0),
+ TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1),
+ TEST_ff_i (isless, plus_zero, qnan_value, 0),
+ TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0),
+ TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0),
+ TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0),
+ TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0),
+ TEST_ff_i (isless, qnan_value, minus_zero, 0),
+ TEST_ff_i (isless, qnan_value, plus_zero, 0),
+ TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0),
+ TEST_ff_i (isless, qnan_value, qnan_value, 0),
+ END_DATA (isless)
+ };
+
static void
isless_test (void)
{
START (isless);
-
- TEST_ff_i (isless, minus_zero, minus_zero, 0);
- TEST_ff_i (isless, minus_zero, plus_zero, 0);
- TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1);
- TEST_ff_i (isless, minus_zero, qnan_value, 0);
- TEST_ff_i (isless, plus_zero, minus_zero, 0);
- TEST_ff_i (isless, plus_zero, plus_zero, 0);
- TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1);
- TEST_ff_i (isless, plus_zero, qnan_value, 0);
- TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0);
- TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0);
- TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0);
- TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0);
- TEST_ff_i (isless, qnan_value, minus_zero, 0);
- TEST_ff_i (isless, qnan_value, plus_zero, 0);
- TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0);
- TEST_ff_i (isless, qnan_value, qnan_value, 0);
-
+ RUN_TEST_LOOP_ff_i_tg (isless, isless_test_data, );
END (isless);
}
+static const struct test_ff_i_data islessequal_test_data[] =
+ {
+ START_DATA (islessequal),
+ TEST_ff_i (islessequal, minus_zero, minus_zero, 1),
+ TEST_ff_i (islessequal, minus_zero, plus_zero, 1),
+ TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1),
+ TEST_ff_i (islessequal, minus_zero, qnan_value, 0),
+ TEST_ff_i (islessequal, plus_zero, minus_zero, 1),
+ TEST_ff_i (islessequal, plus_zero, plus_zero, 1),
+ TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1),
+ TEST_ff_i (islessequal, plus_zero, qnan_value, 0),
+ TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0),
+ TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0),
+ TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1),
+ TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0),
+ TEST_ff_i (islessequal, qnan_value, minus_zero, 0),
+ TEST_ff_i (islessequal, qnan_value, plus_zero, 0),
+ TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0),
+ TEST_ff_i (islessequal, qnan_value, qnan_value, 0),
+ END_DATA (islessequal)
+ };
+
static void
islessequal_test (void)
{
START (islessequal);
-
- TEST_ff_i (islessequal, minus_zero, minus_zero, 1);
- TEST_ff_i (islessequal, minus_zero, plus_zero, 1);
- TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1);
- TEST_ff_i (islessequal, minus_zero, qnan_value, 0);
- TEST_ff_i (islessequal, plus_zero, minus_zero, 1);
- TEST_ff_i (islessequal, plus_zero, plus_zero, 1);
- TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1);
- TEST_ff_i (islessequal, plus_zero, qnan_value, 0);
- TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0);
- TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0);
- TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1);
- TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0);
- TEST_ff_i (islessequal, qnan_value, minus_zero, 0);
- TEST_ff_i (islessequal, qnan_value, plus_zero, 0);
- TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0);
- TEST_ff_i (islessequal, qnan_value, qnan_value, 0);
-
+ RUN_TEST_LOOP_ff_i_tg (islessequal, islessequal_test_data, );
END (islessequal);
}
+static const struct test_ff_i_data islessgreater_test_data[] =
+ {
+ START_DATA (islessgreater),
+ TEST_ff_i (islessgreater, minus_zero, minus_zero, 0),
+ TEST_ff_i (islessgreater, minus_zero, plus_zero, 0),
+ TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1),
+ TEST_ff_i (islessgreater, minus_zero, qnan_value, 0),
+ TEST_ff_i (islessgreater, plus_zero, minus_zero, 0),
+ TEST_ff_i (islessgreater, plus_zero, plus_zero, 0),
+ TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1),
+ TEST_ff_i (islessgreater, plus_zero, qnan_value, 0),
+ TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1),
+ TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1),
+ TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0),
+ TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0),
+ TEST_ff_i (islessgreater, qnan_value, minus_zero, 0),
+ TEST_ff_i (islessgreater, qnan_value, plus_zero, 0),
+ TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0),
+ TEST_ff_i (islessgreater, qnan_value, qnan_value, 0),
+ END_DATA (islessgreater)
+ };
+
static void
islessgreater_test (void)
{
START (islessgreater);
-
- TEST_ff_i (islessgreater, minus_zero, minus_zero, 0);
- TEST_ff_i (islessgreater, minus_zero, plus_zero, 0);
- TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1);
- TEST_ff_i (islessgreater, minus_zero, qnan_value, 0);
- TEST_ff_i (islessgreater, plus_zero, minus_zero, 0);
- TEST_ff_i (islessgreater, plus_zero, plus_zero, 0);
- TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1);
- TEST_ff_i (islessgreater, plus_zero, qnan_value, 0);
- TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1);
- TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1);
- TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0);
- TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0);
- TEST_ff_i (islessgreater, qnan_value, minus_zero, 0);
- TEST_ff_i (islessgreater, qnan_value, plus_zero, 0);
- TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0);
- TEST_ff_i (islessgreater, qnan_value, qnan_value, 0);
-
+ RUN_TEST_LOOP_ff_i_tg (islessgreater, islessgreater_test_data, );
END (islessgreater);
}
+static const struct test_f_i_data isnan_test_data[] =
+ {
+ START_DATA (isnan),
+ TEST_f_b (isnan, 0, 0),
+ TEST_f_b (isnan, minus_zero, 0),
+ TEST_f_b (isnan, 10, 0),
+ TEST_f_b (isnan, min_subnorm_value, 0),
+ TEST_f_b (isnan, plus_infty, 0),
+ TEST_f_b (isnan, minus_infty, 0),
+ TEST_f_b (isnan, qnan_value, 1),
+ END_DATA (isnan)
+ };
+
static void
isnan_test (void)
{
START (isnan);
-
- TEST_f_b (isnan, 0, 0);
- TEST_f_b (isnan, minus_zero, 0);
- TEST_f_b (isnan, 10, 0);
- TEST_f_b (isnan, min_subnorm_value, 0);
- TEST_f_b (isnan, plus_infty, 0);
- TEST_f_b (isnan, minus_infty, 0);
- TEST_f_b (isnan, qnan_value, 1);
-
+ RUN_TEST_LOOP_f_b_tg (isnan, isnan_test_data, );
END (isnan);
}
+static const struct test_f_i_data isnormal_test_data[] =
+ {
+ START_DATA (isnormal),
+ TEST_f_b (isnormal, 0, 0),
+ TEST_f_b (isnormal, minus_zero, 0),
+ TEST_f_b (isnormal, 10, 1),
+ TEST_f_b (isnormal, min_subnorm_value, 0),
+ TEST_f_b (isnormal, plus_infty, 0),
+ TEST_f_b (isnormal, minus_infty, 0),
+ TEST_f_b (isnormal, qnan_value, 0),
+ END_DATA (isnormal)
+ };
+
static void
isnormal_test (void)
{
START (isnormal);
-
- TEST_f_b (isnormal, 0, 0);
- TEST_f_b (isnormal, minus_zero, 0);
- TEST_f_b (isnormal, 10, 1);
- TEST_f_b (isnormal, min_subnorm_value, 0);
- TEST_f_b (isnormal, plus_infty, 0);
- TEST_f_b (isnormal, minus_infty, 0);
- TEST_f_b (isnormal, qnan_value, 0);
-
+ RUN_TEST_LOOP_f_b_tg (isnormal, isnormal_test_data, );
END (isnormal);
}
+static const struct test_f_i_data issignaling_test_data[] =
+ {
+ START_DATA (issignaling),
+ TEST_f_b (issignaling, 0, 0),
+ TEST_f_b (issignaling, minus_zero, 0),
+ TEST_f_b (issignaling, 10, 0),
+ TEST_f_b (issignaling, min_subnorm_value, 0),
+ TEST_f_b (issignaling, plus_infty, 0),
+ TEST_f_b (issignaling, minus_infty, 0),
+ TEST_f_b (issignaling, qnan_value, 0),
+ END_DATA (issignaling)
+ };
+
static void
issignaling_test (void)
{
START (issignaling);
-
- TEST_f_b (issignaling, 0, 0);
- TEST_f_b (issignaling, minus_zero, 0);
- TEST_f_b (issignaling, 10, 0);
- TEST_f_b (issignaling, min_subnorm_value, 0);
- TEST_f_b (issignaling, plus_infty, 0);
- TEST_f_b (issignaling, minus_infty, 0);
- TEST_f_b (issignaling, qnan_value, 0);
-
+ RUN_TEST_LOOP_f_b_tg (issignaling, issignaling_test_data, );
END (issignaling);
}
+static const struct test_ff_i_data isunordered_test_data[] =
+ {
+ START_DATA (isunordered),
+ TEST_ff_i (isunordered, minus_zero, minus_zero, 0),
+ TEST_ff_i (isunordered, minus_zero, plus_zero, 0),
+ TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0),
+ TEST_ff_i (isunordered, minus_zero, qnan_value, 1),
+ TEST_ff_i (isunordered, plus_zero, minus_zero, 0),
+ TEST_ff_i (isunordered, plus_zero, plus_zero, 0),
+ TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0),
+ TEST_ff_i (isunordered, plus_zero, qnan_value, 1),
+ TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0),
+ TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0),
+ TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0),
+ TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1),
+ TEST_ff_i (isunordered, qnan_value, minus_zero, 1),
+ TEST_ff_i (isunordered, qnan_value, plus_zero, 1),
+ TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1),
+ TEST_ff_i (isunordered, qnan_value, qnan_value, 1),
+ END_DATA (isunordered)
+ };
+
static void
isunordered_test (void)
{
START (isunordered);
-
- TEST_ff_i (isunordered, minus_zero, minus_zero, 0);
- TEST_ff_i (isunordered, minus_zero, plus_zero, 0);
- TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0);
- TEST_ff_i (isunordered, minus_zero, qnan_value, 1);
- TEST_ff_i (isunordered, plus_zero, minus_zero, 0);
- TEST_ff_i (isunordered, plus_zero, plus_zero, 0);
- TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0);
- TEST_ff_i (isunordered, plus_zero, qnan_value, 1);
- TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0);
- TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0);
- TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0);
- TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1);
- TEST_ff_i (isunordered, qnan_value, minus_zero, 1);
- TEST_ff_i (isunordered, qnan_value, plus_zero, 1);
- TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1);
- TEST_ff_i (isunordered, qnan_value, qnan_value, 1);
-
+ RUN_TEST_LOOP_ff_i_tg (isunordered, isunordered_test_data, );
END (isunordered);
}
@@ -10252,207 +10361,199 @@
}
+static const struct test_f_l_data lrint_test_data[] =
+ {
+ START_DATA (lrint),
+ /* XXX this test is incomplete. We need to have a way to specifiy
+ the rounding method and test the critical cases. So far, only
+ unproblematic numbers are tested. */
+ /* TODO: missing +/-Inf as well as qNaN tests. */
+ TEST_f_l (lrint, 0.0, 0),
+ TEST_f_l (lrint, minus_zero, 0),
+ TEST_f_l (lrint, 0.2L, 0),
+ TEST_f_l (lrint, -0.2L, 0),
+
+ TEST_f_l (lrint, 1.4L, 1),
+ TEST_f_l (lrint, -1.4L, -1),
+
+ TEST_f_l (lrint, 8388600.3L, 8388600),
+ TEST_f_l (lrint, -8388600.3L, -8388600),
+
+ TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+ TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+ TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+ END_DATA (lrint)
+ };
+
static void
lrint_test (void)
+{
+ START (lrint);
+ RUN_TEST_LOOP_f_l (lrint, lrint_test_data, );
+ END (lrint);
+}
+
+
+static const struct test_f_l_data lrint_tonearest_test_data[] =
+ {
+ START_DATA (lrint_tonearest),
+ TEST_f_l (lrint, 0.0, 0),
+ TEST_f_l (lrint, minus_zero, 0),
+ TEST_f_l (lrint, 0.2L, 0),
+ TEST_f_l (lrint, -0.2L, 0),
+ TEST_f_l (lrint, 0.5L, 0),
+ TEST_f_l (lrint, -0.5L, 0),
+ TEST_f_l (lrint, 0.8L, 1),
+ TEST_f_l (lrint, -0.8L, -1),
+
+ TEST_f_l (lrint, 1.4L, 1),
+ TEST_f_l (lrint, -1.4L, -1),
+
+ TEST_f_l (lrint, 8388600.3L, 8388600),
+ TEST_f_l (lrint, -8388600.3L, -8388600),
+
+ TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+ TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+ TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+ END_DATA (lrint_tonearest)
+ };
+
+static void
+lrint_test_tonearest (void)
+{
+ START (lrint_tonearest);
+ RUN_TEST_LOOP_f_l (lrint, lrint_tonearest_test_data, FE_TONEAREST);
+ END (lrint_tonearest);
+}
+
+
+static const struct test_f_l_data lrint_towardzero_test_data[] =
+ {
+ START_DATA (lrint_towardzero),
+ TEST_f_l (lrint, 0.0, 0),
+ TEST_f_l (lrint, minus_zero, 0),
+ TEST_f_l (lrint, 0.2L, 0),
+ TEST_f_l (lrint, -0.2L, 0),
+ TEST_f_l (lrint, 0.5L, 0),
+ TEST_f_l (lrint, -0.5L, 0),
+ TEST_f_l (lrint, 0.8L, 0),
+ TEST_f_l (lrint, -0.8L, 0),
+
+ TEST_f_l (lrint, 1.4L, 1),
+ TEST_f_l (lrint, -1.4L, -1),
+
+ TEST_f_l (lrint, 8388600.3L, 8388600),
+ TEST_f_l (lrint, -8388600.3L, -8388600),
+
+ TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+ TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+ TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+ END_DATA (lrint_towardzero)
+ };
+
+static void
+lrint_test_towardzero (void)
+{
+ START (lrint_towardzero);
+ RUN_TEST_LOOP_f_l (lrint, lrint_towardzero_test_data, FE_TOWARDZERO);
+ END (lrint_towardzero);
+}
+
+
+static const struct test_f_l_data lrint_downward_test_data[] =
+ {
+ START_DATA (lrint_downward),
+ TEST_f_l (lrint, 0.0, 0),
+ TEST_f_l (lrint, minus_zero, 0),
+ TEST_f_l (lrint, 0.2L, 0),
+ TEST_f_l (lrint, -0.2L, -1),
+ TEST_f_l (lrint, 0.5L, 0),
+ TEST_f_l (lrint, -0.5L, -1),
+ TEST_f_l (lrint, 0.8L, 0),
+ TEST_f_l (lrint, -0.8L, -1),
+
+ TEST_f_l (lrint, 1.4L, 1),
+ TEST_f_l (lrint, -1.4L, -2),
+
+ TEST_f_l (lrint, 8388600.3L, 8388600),
+ TEST_f_l (lrint, -8388600.3L, -8388601),
+
+ TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+ TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+ TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+ END_DATA (lrint_downward)
+ };
+
+static void
+lrint_test_downward (void)
+{
+ START (lrint_downward);
+ RUN_TEST_LOOP_f_l (lrint, lrint_downward_test_data, FE_DOWNWARD);
+ END (lrint_downward);
+}
+
+
+static const struct test_f_l_data lrint_upward_test_data[] =
+ {
+ START_DATA (lrint_upward),
+ TEST_f_l (lrint, 0.0, 0),
+ TEST_f_l (lrint, minus_zero, 0),
+ TEST_f_l (lrint, 0.2L, 1),
+ TEST_f_l (lrint, -0.2L, 0),
+ TEST_f_l (lrint, 0.5L, 1),
+ TEST_f_l (lrint, -0.5L, 0),
+ TEST_f_l (lrint, 0.8L, 1),
+ TEST_f_l (lrint, -0.8L, 0),
+
+ TEST_f_l (lrint, 1.4L, 2),
+ TEST_f_l (lrint, -1.4L, -1),
+
+ TEST_f_l (lrint, 8388600.3L, 8388601),
+ TEST_f_l (lrint, -8388600.3L, -8388600),
+
+#ifndef TEST_FLOAT
+ TEST_f_l (lrint, 1071930.0008, 1071931),
+ TEST_f_l (lrint, 1073741824.01, 1073741825),
+# if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
+ TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+ END_DATA (lrint_upward)
+ };
+
+static void
+lrint_test_upward (void)
+{
+ START (lrint_upward);
+ RUN_TEST_LOOP_f_l (lrint, lrint_upward_test_data, FE_UPWARD);
+ END (lrint_upward);
+}
+
+
+static void
+llrint_test (void)
{
/* XXX this test is incomplete. We need to have a way to specifiy
the rounding method and test the critical cases. So far, only
unproblematic numbers are tested. */
/* TODO: missing +/-Inf as well as qNaN tests. */
- START (lrint);
-
- TEST_f_l (lrint, 0.0, 0);
- TEST_f_l (lrint, minus_zero, 0);
- TEST_f_l (lrint, 0.2L, 0);
- TEST_f_l (lrint, -0.2L, 0);
-
- TEST_f_l (lrint, 1.4L, 1);
- TEST_f_l (lrint, -1.4L, -1);
-
- TEST_f_l (lrint, 8388600.3L, 8388600);
- TEST_f_l (lrint, -8388600.3L, -8388600);
-
- TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
- TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
- TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
-
- END (lrint);
-}
-
-
-static void
-lrint_test_tonearest (void)
-{
- int save_round_mode;
- START (lrint_tonearest);
-
- save_round_mode = fegetround ();
-
- if (!fesetround (FE_TONEAREST))
- {
- TEST_f_l (lrint, 0.0, 0);
- TEST_f_l (lrint, minus_zero, 0);
- TEST_f_l (lrint, 0.2L, 0);
- TEST_f_l (lrint, -0.2L, 0);
- TEST_f_l (lrint, 0.5L, 0);
- TEST_f_l (lrint, -0.5L, 0);
- TEST_f_l (lrint, 0.8L, 1);
- TEST_f_l (lrint, -0.8L, -1);
-
- TEST_f_l (lrint, 1.4L, 1);
- TEST_f_l (lrint, -1.4L, -1);
-
- TEST_f_l (lrint, 8388600.3L, 8388600);
- TEST_f_l (lrint, -8388600.3L, -8388600);
-
- TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
- TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
- TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
- }
-
- fesetround (save_round_mode);
-
- END (lrint_tonearest);
-}
-
-
-static void
-lrint_test_towardzero (void)
-{
- int save_round_mode;
- START (lrint_towardzero);
-
- save_round_mode = fegetround ();
-
- if (!fesetround (FE_TOWARDZERO))
- {
- TEST_f_l (lrint, 0.0, 0);
- TEST_f_l (lrint, minus_zero, 0);
- TEST_f_l (lrint, 0.2L, 0);
- TEST_f_l (lrint, -0.2L, 0);
- TEST_f_l (lrint, 0.5L, 0);
- TEST_f_l (lrint, -0.5L, 0);
- TEST_f_l (lrint, 0.8L, 0);
- TEST_f_l (lrint, -0.8L, 0);
-
- TEST_f_l (lrint, 1.4L, 1);
- TEST_f_l (lrint, -1.4L, -1);
-
- TEST_f_l (lrint, 8388600.3L, 8388600);
- TEST_f_l (lrint, -8388600.3L, -8388600);
-
- TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
- TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
- TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
- }
-
- fesetround (save_round_mode);
-
- END (lrint_towardzero);
-}
-
-
-static void
-lrint_test_downward (void)
-{
- int save_round_mode;
- START (lrint_downward);
-
- save_round_mode = fegetround ();
-
- if (!fesetround (FE_DOWNWARD))
- {
- TEST_f_l (lrint, 0.0, 0);
- TEST_f_l (lrint, minus_zero, 0);
- TEST_f_l (lrint, 0.2L, 0);
- TEST_f_l (lrint, -0.2L, -1);
- TEST_f_l (lrint, 0.5L, 0);
- TEST_f_l (lrint, -0.5L, -1);
- TEST_f_l (lrint, 0.8L, 0);
- TEST_f_l (lrint, -0.8L, -1);
-
- TEST_f_l (lrint, 1.4L, 1);
- TEST_f_l (lrint, -1.4L, -2);
-
- TEST_f_l (lrint, 8388600.3L, 8388600);
- TEST_f_l (lrint, -8388600.3L, -8388601);
-
- TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
- TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
- TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
- }
-
- fesetround (save_round_mode);
-
- END (lrint_downward);
-}
-
-
-static void
-lrint_test_upward (void)
-{
- int save_round_mode;
- START (lrint_upward);
-
- save_round_mode = fegetround ();
-
- if (!fesetround (FE_UPWARD))
- {
- TEST_f_l (lrint, 0.0, 0);
- TEST_f_l (lrint, minus_zero, 0);
- TEST_f_l (lrint, 0.2L, 1);
- TEST_f_l (lrint, -0.2L, 0);
- TEST_f_l (lrint, 0.5L, 1);
- TEST_f_l (lrint, -0.5L, 0);
- TEST_f_l (lrint, 0.8L, 1);
- TEST_f_l (lrint, -0.8L, 0);
-
- TEST_f_l (lrint, 1.4L, 2);
- TEST_f_l (lrint, -1.4L, -1);
-
- TEST_f_l (lrint, 8388600.3L, 8388601);
- TEST_f_l (lrint, -8388600.3L, -8388600);
-
-#ifndef TEST_FLOAT
- TEST_f_l (lrint, 1071930.0008, 1071931);
- TEST_f_l (lrint, 1073741824.01, 1073741825);
-# if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
- TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
- }
-
- fesetround (save_round_mode);
-
- END (lrint_upward);
-}
-
-
-static void
-llrint_test (void)
-{
- /* XXX this test is incomplete. We need to have a way to specifiy
- the rounding method and test the critical cases. So far, only
- unproblematic numbers are tested. */
- /* TODO: missing +/-Inf as well as qNaN tests. */
-
START (llrint);
TEST_f_L (llrint, 0.0, 0);
@@ -10466,7 +10567,7 @@
TEST_f_L (llrint, 8388600.3L, 8388600);
TEST_f_L (llrint, -8388600.3L, -8388600);
- TEST_f_l (llrint, 1071930.0008, 1071930);
+ TEST_f_L (llrint, 1071930.0008, 1071930);
/* Test boundary conditions. */
/* 0x1FFFFF */
@@ -10601,7 +10702,7 @@
TEST_f_L (llrint, 8388600.3L, 8388600);
TEST_f_L (llrint, -8388600.3L, -8388600);
- TEST_f_l (llrint, 1071930.0008, 1071930);
+ TEST_f_L (llrint, 1071930.0008, 1071930);
/* Test boundary conditions. */
/* 0x1FFFFF */
@@ -10739,7 +10840,7 @@
TEST_f_L (llrint, 8388600.3L, 8388600);
TEST_f_L (llrint, -8388600.3L, -8388600);
- TEST_f_l (llrint, 1071930.0008, 1071930);
+ TEST_f_L (llrint, 1071930.0008, 1071930);
/* Test boundary conditions. */
/* 0x1FFFFF */
@@ -10877,7 +10978,7 @@
TEST_f_L (llrint, 8388600.3L, 8388600);
TEST_f_L (llrint, -8388600.3L, -8388601);
- TEST_f_l (llrint, 1071930.0008, 1071930);
+ TEST_f_L (llrint, 1071930.0008, 1071930);
/* Test boundary conditions. */
/* 0x1FFFFF */
@@ -11011,7 +11112,7 @@
TEST_f_L (llrint, 8388600.3L, 8388601);
TEST_f_L (llrint, -8388600.3L, -8388600);
#ifndef TEST_FLOAT
- TEST_f_l (llrint, 1071930.0008, 1071931);
+ TEST_f_L (llrint, 1071930.0008, 1071931);
#endif
/* Test boundary conditions. */
/* 0x1FFFFF */
@@ -11133,9 +11234,9 @@
TEST_f_f (log, 1, 0),
- TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (log, plus_infty, plus_infty),
TEST_f_f (log, qnan_value, qnan_value),
@@ -11170,9 +11271,9 @@
TEST_f_f (log10, 1, 0),
/* log10 (x) == qNaN plus invalid exception if x < 0. */
- TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (log10, plus_infty, plus_infty),
TEST_f_f (log10, qnan_value, qnan_value),
@@ -11245,9 +11346,9 @@
TEST_f_f (log2, 1, 0),
- TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (log2, plus_infty, plus_infty),
TEST_f_f (log2, qnan_value, qnan_value),
@@ -11348,46 +11449,51 @@
END (logb_downward);
}
+static const struct test_f_l_data lround_test_data[] =
+ {
+ START_DATA (lround),
+ /* TODO: missing +/-Inf as well as qNaN tests. */
+ TEST_f_l (lround, 0, 0),
+ TEST_f_l (lround, minus_zero, 0),
+ TEST_f_l (lround, 0.2L, 0.0),
+ TEST_f_l (lround, -0.2L, 0),
+ TEST_f_l (lround, 0.5, 1),
+ TEST_f_l (lround, -0.5, -1),
+ TEST_f_l (lround, 0.8L, 1),
+ TEST_f_l (lround, -0.8L, -1),
+ TEST_f_l (lround, 1.5, 2),
+ TEST_f_l (lround, -1.5, -2),
+ TEST_f_l (lround, 22514.5, 22515),
+ TEST_f_l (lround, -22514.5, -22515),
+ TEST_f_l (lround, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+ TEST_f_l (lround, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+ TEST_f_l (lround, 281474976710656.025, 281474976710656),
+ TEST_f_l (lround, 18014398509481974, 18014398509481974),
+# endif
+ TEST_f_l (lround, 2097152.5, 2097153),
+ TEST_f_l (lround, -2097152.5, -2097153),
+ /* nextafter(0.5,-1) */
+ TEST_f_l (lround, 0x1.fffffffffffffp-2, 0),
+ /* nextafter(-0.5,1) */
+ TEST_f_l (lround, -0x1.fffffffffffffp-2, 0),
+#else
+ /* nextafter(0.5,-1) */
+ TEST_f_l (lround, 0x1.fffffp-2, 0),
+ /* nextafter(-0.5,1) */
+ TEST_f_l (lround, -0x1.fffffp-2, 0),
+ TEST_f_l (lround, 0x1.fffffep+23, 16777215),
+ TEST_f_l (lround, -0x1.fffffep+23, -16777215),
+#endif
+ END_DATA (lround)
+ };
+
static void
lround_test (void)
{
- /* TODO: missing +/-Inf as well as qNaN tests. */
-
START (lround);
-
- TEST_f_l (lround, 0, 0);
- TEST_f_l (lround, minus_zero, 0);
- TEST_f_l (lround, 0.2L, 0.0);
- TEST_f_l (lround, -0.2L, 0);
- TEST_f_l (lround, 0.5, 1);
- TEST_f_l (lround, -0.5, -1);
- TEST_f_l (lround, 0.8L, 1);
- TEST_f_l (lround, -0.8L, -1);
- TEST_f_l (lround, 1.5, 2);
- TEST_f_l (lround, -1.5, -2);
- TEST_f_l (lround, 22514.5, 22515);
- TEST_f_l (lround, -22514.5, -22515);
- TEST_f_l (lround, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
- TEST_f_l (lround, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
- TEST_f_l (lround, 281474976710656.025, 281474976710656);
- TEST_f_l (lround, 18014398509481974, 18014398509481974);
-# endif
- TEST_f_l (lround, 2097152.5, 2097153);
- TEST_f_l (lround, -2097152.5, -2097153);
- /* nextafter(0.5,-1) */
- TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
- /* nextafter(-0.5,1) */
- TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
-#else
- /* nextafter(0.5,-1) */
- TEST_f_l (lround, 0x1.fffffp-2, 0);
- /* nextafter(-0.5,1) */
- TEST_f_l (lround, -0x1.fffffp-2, 0);
- TEST_f_l (lround, 0x1.fffffep+23, 16777215);
- TEST_f_l (lround, -0x1.fffffep+23, -16777215);
-#endif
+ RUN_TEST_LOOP_f_l (lround, lround_test_data, );
END (lround);
}
@@ -11411,7 +11517,7 @@
TEST_f_L (llround, -1.5, -2);
TEST_f_L (llround, 22514.5, 22515);
TEST_f_L (llround, -22514.5, -22515);
- TEST_f_l (llround, 1071930.0008, 1071930);
+ TEST_f_L (llround, 1071930.0008, 1071930);
#ifndef TEST_FLOAT
TEST_f_L (llround, 2097152.5, 2097153);
TEST_f_L (llround, -2097152.5, -2097153);
@@ -11913,14 +12019,14 @@
TEST_ff_f (pow, 0x1p-72L, 0, 1),
TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
- TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
+ TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@@ -12269,9 +12375,9 @@
#endif
TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
- TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
+ TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
@@ -12370,9 +12476,9 @@
#endif
TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
- TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
- TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
+ TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
/* Allow inexact results to be considered to underflow. */
@@ -13400,23 +13506,27 @@
}
+static const struct test_f_i_data signbit_test_data[] =
+ {
+ START_DATA (signbit),
+ /* TODO: missing qNaN tests. */
+ TEST_f_b (signbit, 0, 0),
+ TEST_f_b (signbit, minus_zero, 1),
+ TEST_f_b (signbit, plus_infty, 0),
+ TEST_f_b (signbit, minus_infty, 1),
+
+ /* signbit (x) != 0 for x < 0. */
+ TEST_f_b (signbit, -1, 1),
+ /* signbit (x) == 0 for x >= 0. */
+ TEST_f_b (signbit, 1, 0),
+ END_DATA (signbit)
+ };
+
static void
signbit_test (void)
{
- /* TODO: missing qNaN tests. */
-
START (signbit);
-
- TEST_f_b (signbit, 0, 0);
- TEST_f_b (signbit, minus_zero, 1);
- TEST_f_b (signbit, plus_infty, 0);
- TEST_f_b (signbit, minus_infty, 1);
-
- /* signbit (x) != 0 for x < 0. */
- TEST_f_b (signbit, -1, 1);
- /* signbit (x) == 0 for x >= 0. */
- TEST_f_b (signbit, 1, 0);
-
+ RUN_TEST_LOOP_f_b_tg (signbit, signbit_test_data, );
END (signbit);
}
@@ -13817,9 +13927,9 @@
TEST_f_f (sqrt, minus_zero, minus_zero),
/* sqrt (x) == qNaN plus invalid exception for x < 0. */
- TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
- TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (sqrt, 2209, 47),
TEST_f_f (sqrt, 4, 2),
@@ -14743,8 +14853,8 @@
{
START_DATA (y0),
/* y0 is the Bessel function of the second kind of order 0 */
- TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
- TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
+ TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (y0, 0.0, minus_infty),
TEST_f_f (y0, qnan_value, qnan_value),
TEST_f_f (y0, plus_infty, 0),
@@ -14807,8 +14917,8 @@
{
START_DATA (y1),
/* y1 is the Bessel function of the second kind of order 1 */
- TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
- TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
+ TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (y1, 0.0, minus_infty),
TEST_f_f (y1, plus_infty, 0),
TEST_f_f (y1, qnan_value, qnan_value),
@@ -14872,8 +14982,8 @@
START_DATA (yn),
/* yn is the Bessel function of the second kind of order n */
/* yn (0, x) == y0 (x) */
- TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION),
- TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION),
+ TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_if_f (yn, 0, 0.0, minus_infty),
TEST_if_f (yn, 0, qnan_value, qnan_value),
TEST_if_f (yn, 0, plus_infty, 0),
@@ -14887,7 +14997,7 @@
TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
/* yn (1, x) == y1 (x) */
- TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION),
+ TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_if_f (yn, 1, 0.0, minus_infty),
TEST_if_f (yn, 1, plus_infty, 0),
TEST_if_f (yn, 1, qnan_value, qnan_value),
Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Thu May 16 00:02:10 2013
@@ -1,3 +1,9 @@
+2013-05-14 Andreas Jaeger <aj@xxxxxxx>
+
+ [BZ #10686]
+ * sysdeps/x86_64/tls.h (struct tcbhead_t): Add __private_ss field.
+ * sysdeps/i386/tls.h (struct tcbhead_t): Likewise.
+
2013-05-09 Andi Kleen <ak@xxxxxxxxxxxxxxx>
* tst-mutex8.c (do_test): Check for ENABLE_PI.
Modified: fsf/trunk/libc/nptl/sysdeps/i386/tls.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/i386/tls.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/i386/tls.h Thu May 16 00:02:10 2013
@@ -59,7 +59,9 @@
int __unused1;
#endif
/* Reservation of some values for the TM ABI. */
- void *__private_tm[5];
+ void *__private_tm[4];
+ /* GCC split stack support. */
+ void *__private_ss;
} tcbhead_t;
# define TLS_MULTIPLE_THREADS_IN_TCB 1
Modified: fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h Thu May 16 00:02:10 2013
@@ -69,7 +69,9 @@
# endif
int rtld_must_xmm_save;
/* Reservation of some values for the TM ABI. */
- void *__private_tm[5];
+ void *__private_tm[4];
+ /* GCC split stack support. */
+ void *__private_ss;
long int __unused2;
/* Have space for the post-AVX register size. */
__128bits rtld_savespace_sse[8][4] __attribute__ ((aligned (32)));
Modified: fsf/trunk/libc/ports/ChangeLog.hppa
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.hppa (original)
+++ fsf/trunk/libc/ports/ChangeLog.hppa Thu May 16 00:02:10 2013
@@ -1,3 +1,17 @@
+2013-05-15 Carlos O'Donell <carlos@xxxxxxxxxx>
+
+ * sysdeps/hppa/fpu/libm-test-ulps: Remove old values for ceil, floor,
+ rint, round, trunc, llrint, and llround.
+
+ * sysdeps/hppa/fpu/libm-test-ulps: Regenerate.
+
+2013-05-15 Guy Martin <gmsoft@xxxxxxxxxxxx>
+ Carlos O'Donell <carlos@xxxxxxxxxx>
+
+ [BZ# 15000]
+ * ports/sysdeps/hppa/fpu/fpu_control.h (_FPU_GETCW): Set cw.
+ (_FPU_SETCW): Pass address to fldd.
+
2013-04-02 Thomas Schwinge <thomas@xxxxxxxxxxxxxxxx>
* sysdeps/hppa/math_private.h: New file.
Modified: fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h (original)
+++ fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h Thu May 16 00:02:10 2013
@@ -49,7 +49,7 @@
__asm__ ("fstd %%fr0,0(%1)\n\t" \
"fldd 0(%1),%%fr0\n\t" \
: "=m" (__fullfp.__fpreg) : "r" (&__fullfp.__fpreg) : "%r0"); \
- __fullfp.__halfreg[0]; \
+ cw = __fullfp.__halfreg[0]; \
})
#define _FPU_SETCW(cw) \
@@ -57,7 +57,7 @@
union { __extension__ unsigned long long __fpreg; unsigned int __halfreg[2]; } __fullfp; \
__fullfp.__halfreg[0] = cw; \
__asm__ ("fldd 0(%1),%%fr0\n\t" \
- : : "m" (__fullfp.__fpreg), "r" (__fullfp.__fpreg) : "%r0" ); \
+ : : "m" (__fullfp.__fpreg), "r" (&__fullfp.__fpreg) : "%r0" ); \
})
/* Default control word set at startup. */
Modified: fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps Thu May 16 00:02:10 2013
@@ -1,9 +1,80 @@
# Begin of automatic generation
+
+# acos_downward
+Test "acos_downward (-0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_downward (-0.5) == M_PI_6l*4.0":
+double: 1
+idouble: 1
+Test "acos_downward (-1) == pi":
+float: 1
+ifloat: 1
+Test "acos_downward (0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_downward (0.5) == M_PI_6l*2.0":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# acos_towardzero
+Test "acos_towardzero (-0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_towardzero (-0.5) == M_PI_6l*4.0":
+double: 1
+idouble: 1
+Test "acos_towardzero (-1) == pi":
+float: 1
+ifloat: 1
+Test "acos_towardzero (0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_towardzero (0.5) == M_PI_6l*2.0":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# asin_downward
+Test "asin_downward (-0.5) == -pi/6":
+double: 1
+idouble: 1
+Test "asin_downward (0.5) == pi/6":
+double: 1
+idouble: 1
+Test "asin_downward (1.0) == pi/2":
+float: 1
+ifloat: 1
+
+# asin_towardzero
+Test "asin_towardzero (-0.5) == -pi/6":
+double: 1
+idouble: 1
+Test "asin_towardzero (-1.0) == -pi/2":
+float: 1
+ifloat: 1
+Test "asin_towardzero (0.5) == pi/6":
+double: 1
+idouble: 1
+Test "asin_towardzero (1.0) == pi/2":
+float: 1
+ifloat: 1
+
+# asin_upward
+Test "asin_upward (-1.0) == -pi/2":
+float: 1
+ifloat: 1
# atan2
Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
float: 1
ifloat: 1
+Test "atan2 (-max_value, -min_value) == -pi/2":
+float: 1
+ifloat: 1
Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
float: 1
ifloat: 1
@@ -16,12 +87,1611 @@
float: 1
ifloat: 1
+# cacos
+Test "Imaginary part of: cacos (+0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (+0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 - 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i) == 2.094395102393195492308428922186335256131 - 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i) == 2.094395102393195492308428922186335256131 - 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i) == 2.094395102393190022547898764614298351924 - 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 + 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i) == 2.094395102393195492308428922186335256131 + 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i) == 2.094395102393195492308428922186335256131 + 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i) == 2.094395102393190022547898764614298351924 + 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 3.141592634635223399311902261000251614142 - 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 3.141592634635223399311902261000251614142 + 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i) == 3.141153467203602189751698864505105063797 - 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i) == 3.141153467203602189751698864505105063797 + 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i) == 3.141370441751352383825802745874586120521 - 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i) == 3.141370441751352383825802745874586120521 + 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i) == 1.572134236154454360143880041170803681211 - 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i) == 1.572134236154454360143880041170803681211 + 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442101 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442101 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i) == 1.570796326794896619231321691639751442101 - 8.813735448726938863015878255140556727969e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 - 8.813736713132375348727889167749389235161e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i) == 1.570796326794896619231321691639751442101 - 2.846900380897727558361783801085126250967e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i) == 1.570796326794896619231321691639751442101 - 1.192092895507809676556842485683592032154e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442101 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442101 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i) == 1.570796326794896619231321691639751442101 + 8.813735448726938863015878255140556727969e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 + 8.813736713132375348727889167749389235161e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i) == 1.570796326794896619231321691639751442101 + 2.846900380897727558361783801085126250967e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i) == 1.570796326794896619231321691639751442101 + 1.192092895507809676556842485683592032154e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 + 0.0 i) == 1.570796326794896619231321691639776094002 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 + 0.5 i) == 1.570796326794896619231321691639773491431 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i) == 1.570796326794896619231321691639773491431 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i) == 1.570796326794896619231321691639776094002 - 2.465190328815661891911651766508706967729e-32 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 - 0.0 i) == 1.570796326794896619231321691639776094002 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 - 0.5 i) == 1.570796326794896619231321691639773491431 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i) == 1.570796326794896619231321691639773491431 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i) == 1.570796326794896619231321691639776094002 + 2.465190328815661891911651766508706967729e-32 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 + 0.0 i) == 1.570796326794896619231321691639751634692 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751614359 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751614359 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i) == 1.570796326794896619231321691639751634692 - 1.925929944387235853055977942584927318538e-34 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 - 0.0 i) == 1.570796326794896619231321691639751634692 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751614359 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751614359 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i) == 1.570796326794896619231321691639751634692 + 1.925929944387235853055977942584927318538e-34 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 + 0.0 i) == 1.570796446004186170012854035955502877351 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 + 0.5 i) == 1.570796433418926613232299739606181733819 - 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i) == 1.570796433418926613232299739606181733819 - 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 - 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i) == 1.570796446004186170012854035955502877351 - 2.846900380897747786805634596726756660388e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i) == 1.570796446004186170012007003008248567984 - 1.192092895507818146886315028596704749235e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 - 0.0 i) == 1.570796446004186170012854035955502877351 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 - 0.5 i) == 1.570796433418926613232299739606181733819 + 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i) == 1.570796433418926613232299739606181733819 + 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 + 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i) == 1.570796446004186170012854035955502877351 + 2.846900380897747786805634596726756660388e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i) == 1.570796446004186170012007003008248567984 + 1.192092895507818146886315028596704749235e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 + 0.0 i) == 1.570796326794896841275926616671059526825 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 + 0.5 i) == 1.570796326794896817834053951421591208280 - 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i) == 1.570796326794896817834053951421591208280 - 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i) == 1.570796326794896841275926616671059526825 - 2.220446049250313080847263336181677117148e-16 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 - 0.0 i) == 1.570796326794896841275926616671059526825 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 - 0.5 i) == 1.570796326794896817834053951421591208280 + 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i) == 1.570796326794896817834053951421591208280 + 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i) == 1.570796326794896841275926616671059526825 + 2.220446049250313080847263336181677117148e-16 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 + 0.0 i) == 1.570796326794896619339741908888301885499 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 + 0.5 i) == 1.570796326794896619328295682000973043547 - 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i) == 1.570796326794896619328295682000973043547 - 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i) == 1.570796326794896619339741908888301885499 - 1.084202172485504434007452800869941711430e-19 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 - 0.0 i) == 1.570796326794896619339741908888301885499 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 - 0.5 i) == 1.570796326794896619328295682000973043547 + 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i) == 1.570796326794896619328295682000973043547 + 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i) == 1.570796326794896619339741908888301885499 + 1.084202172485504434007452800869941711430e-19 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 + 0.5 i) == 2.466703808003786858297978415967328452322 - 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 - 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-1.0 + 0x1p50 i) == 1.570796326794897507409741391764983781004 - 3.535050620855721078027883819436759661753e1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 - 0.5 i) == 2.466703808003786858297978415967328452322 + 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 + 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-1.0 - 0x1p50 i) == 1.570796326794897507409741391764983781004 + 3.535050620855721078027883819436759661753e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-2 - 3 i) == 2.1414491111159960199416055713254211 + 1.9833870299165354323470769028940395 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.25 + 1.0 i) == 1.394493894017929688812643125003661339452 - 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.25 - 1.0 i) == 1.394493894017929688812643125003661339452 + 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0.5 + +0 i) == 1.047197551196597746154214461093167628066 - 0 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 - 6.222508863508420569166420770843207333493e-309 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-105 i) == 1.047197551196597746154214461093167628066 - 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1p-105 i) == 1.047197551196597746154214461093167628066 - 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-112 i) == 1.047197551196597746154214461093167628066 - 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1p-112 i) == 1.047197551196597746154214461093167628066 - 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1p-23 i) == 1.047197551196603215914744618665204532273 - 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-52 i) == 1.047197551196597746154214461093186605110 - 2.563950248511418570403591756798643804971e-16 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-63 i) == 1.047197551196597746154214461093167628070 - 1.251928832280966098829878787499365228659e-19 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0 i) == 1.047197551196597746154214461093167628066 + +0 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 + 6.222508863508420569166420770843207333493e-309 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-105 i) == 1.047197551196597746154214461093167628066 + 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1p-105 i) == 1.047197551196597746154214461093167628066 + 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-112 i) == 1.047197551196597746154214461093167628066 + 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1p-112 i) == 1.047197551196597746154214461093167628066 + 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1p-23 i) == 1.047197551196603215914744618665204532273 + 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-52 i) == 1.047197551196597746154214461093186605110 + 2.563950248511418570403591756798643804971e-16 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-63 i) == 1.047197551196597746154214461093167628070 + 1.251928832280966098829878787499365228659e-19 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 - 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 + 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i) == 3.452669847162035876032494826387364972849e-4 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i) == 3.452669847162035876032494826387364972849e-4 - 8.245504387859737323891843603996428534945e-36 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 - 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 - 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i) == 3.452669847162035876032494826387364972849e-4 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i) == 3.452669847162035876032494826387364972849e-4 + 8.245504387859737323891843603996428534945e-36 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 + 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 + 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 - 2.315303644582684770975188768022139415020e-8 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 + 2.315303644582684770975188768022139415020e-8 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 - 5.364668491573609633134147164031476452679e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 - 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 + 5.364668491573609633134147164031476452679e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 + 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i) == 1.569458417435338878318763342108699202986 - 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i) == 1.569458417435338878318763342108699202986 + 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691638670687364 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691638670687364 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442096 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442097 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442097 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442096 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442097 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442097 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i) == 1.570796325518966635014803151387033957091 - 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i) == 1.570796325518966635014803151387033957091 + 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 - 7.107906849659093345062145442726115449315e2 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 - 8.973081118419833726837456344608533993585e1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1p-105 + 0.5 i) == 1.570796326794896619231321691639729392766 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-105 - 0.5 i) == 1.570796326794896619231321691639729392766 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751269838 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751269838 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-23 + 0.5 i) == 1.570796220170866625230343643673321150378 - 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 - 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1p-23 - 0.5 i) == 1.570796220170866625230343643673321150378 + 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 + 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1p-52 + 0.5 i) == 1.570796326794896420628589431857911675917 - 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-52 - 0.5 i) == 1.570796326794896420628589431857911675917 + 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-63 + 0.5 i) == 1.570796326794896619134347701278529840650 - 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-63 - 0.5 i) == 1.570796326794896619134347701278529840650 + 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 + 0.25 i) == 4.890443302710802929202843732146540079124e-1 - 5.097911466811016354623559941115413499164e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 - 0.25 i) == 4.890443302710802929202843732146540079124e-1 + 5.097911466811016354623559941115413499164e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+
# cacosh
+Test "Real part of: cacosh (+0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (+0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 + 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 + 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 + 2.094395102393190022547898764614298351924 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.920235389652109912858733517715121394831 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacosh (-0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.920235389652109912858733517715121394831 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 - 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 - 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 - 2.094395102393190022547898764614298351924 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.920235389652109912858733517715121394831 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacosh (-0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.920235389652109912858733517715121394831 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 3.141592634635223399311902261000251614142 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 3.141592634635223399311902261000251614142 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 + 3.141153467203602189751698864505105063797 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 - 3.141153467203602189751698864505105063797 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 + 3.141370441751352383825802745874586120521 i":
+float: 1
+ifloat: 1
[... 4352 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits