[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r23068 - in /fsf/trunk/libc: ./ elf/ math/ ports/ ports/sysdeps/arm/ ports/sysdeps/arm/bits/ setjmp/ sysdeps/sparc/fpu/
- To: commits@xxxxxxxxxx
- Subject: [Commits] r23068 - in /fsf/trunk/libc: ./ elf/ math/ ports/ ports/sysdeps/arm/ ports/sysdeps/arm/bits/ setjmp/ sysdeps/sparc/fpu/
- From: eglibc@xxxxxxxxxx
- Date: Wed, 15 May 2013 00:02:13 -0000
Author: eglibc
Date: Wed May 15 00:02:11 2013
New Revision: 23068
Log:
Import glibc-mainline for 2013-05-15
Added:
fsf/trunk/libc/setjmp/tst-setjmp-fp.c
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/NEWS
fsf/trunk/libc/elf/dl-hwcaps.c
fsf/trunk/libc/elf/ldconfig.c
fsf/trunk/libc/math/libm-test.inc
fsf/trunk/libc/ports/ChangeLog.arm
fsf/trunk/libc/ports/sysdeps/arm/__longjmp.S
fsf/trunk/libc/ports/sysdeps/arm/bits/setjmp.h
fsf/trunk/libc/ports/sysdeps/arm/setjmp.S
fsf/trunk/libc/setjmp/Makefile
fsf/trunk/libc/sysdeps/sparc/fpu/libm-test-ulps
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Wed May 15 00:02:11 2013
@@ -1,3 +1,59 @@
+2013-05-14 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ * sysdeps/sparc/fpu/libm-test-ulps: Update.
+
+2013-05-14 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * math/libm-test.inc (RUN_TEST_LOOP_2_f): Fix whitespace.
+
+ * math/libm-test.inc (struct test_fF_f1_data): Change type of
+ extra_test to int.
+ (struct test_f_i_data): Change type of max_ulp to int.
+
+ * math/libm-test.inc (test_ffI_f1_data): New type.
+ (RUN_TEST_LOOP_ffI_f1): New macro.
+ (remquo_test_data): New variable.
+ (remquo_test): Run tests with RUN_TEST_LOOP_ffI_f1.
+
+ * setjmp/tst-setjmp-fp.c: New file.
+ * setjmp/Makefile (tests): Add tst-setjmp-fp.
+ (link-libm): New variable.
+ ($(objpfx)tst-setjmp-fp): Depend on $(link-libm).
+
+ * math/libm-test.inc (struct test_f_i_data): New type.
+ (RUN_TEST_LOOP_f_i): New macro.
+ (RUN_TEST_LOOP_f_i_tg): Likewise.
+ (fpclassify_test_data): New variable.
+ (fpclassify_test): Run tests with RUN_TEST_LOOP_f_i_tg.
+ (ilogb_test_data): New variable.
+ (ilogb_test): Run tests with RUN_TEST_LOOP_f_i.
+
+ * math/libm-test.inc (scalbln_test): Correct function name in END
+ call.
+
+ * math/libm-test.inc (struct test_f_f1_data): Add comment.
+ (RUN_TEST_LOOP_fI_f1): New macro.
+ (frexp_test_data): New variable.
+ (frexp_test): Run tests with RUN_TEST_LOOP_fI_f1.
+
+ * math/libm-test.inc (struct test_fF_f1_data): New type.
+ (RUN_TEST_LOOP_fF_f1): New macro.
+ (modf_test_data): New variable.
+ (modf_test): Run tests with RUN_TEST_LOOP_fF_f1.
+
+ * math/libm-test.inc (struct test_f_f1_data): New type.
+ (RUN_TEST_LOOP_f_f1): New macro.
+ (gamma_test_data): New variable.
+ (gamma_test): Run tests with RUN_TEST_LOOP_f_f1.
+ (lgamma_test_data): New variable.
+ (lgamma_test): Run tests with RUN_TEST_LOOP_f_f1.
+
+2013-05-13 Carlos O'Donell <carlos@xxxxxxxxxx>
+
+ * elf/dl-hwcaps.c (_dl_important_hwcaps): Comment vDSO hwcap loading.
+ * elf/ldconfig.c (is_hwcap_platform): Comment each hwcap check.
+ (main): Comment "tls" pseudo-hwcap.
+
2013-05-13 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
* math/libm-test.inc (struct test_fl_f_data): New type.
Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Wed May 15 00:02:11 2013
@@ -11,13 +11,13 @@
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, 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.
+ 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.
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
#15078).
Modified: fsf/trunk/libc/elf/dl-hwcaps.c
==============================================================================
--- fsf/trunk/libc/elf/dl-hwcaps.c (original)
+++ fsf/trunk/libc/elf/dl-hwcaps.c Wed May 15 00:02:11 2013
@@ -66,6 +66,11 @@
{
const ElfW(Addr) start = (phdr[i].p_vaddr
+ GLRO(dl_sysinfo_map)->l_addr);
+ /* The standard ELF note layout is exactly as the anonymous struct.
+ The next element is a variable length vendor name of length
+ VENDORLEN (with a real length rounded to ElfW(Addr)), followed
+ by the data of length DATALEN (with a real length rounded to
+ ElfW(Addr)). */
const struct
{
ElfW(Word) vendorlen;
@@ -75,6 +80,11 @@
while ((ElfW(Addr)) (note + 1) - start < phdr[i].p_memsz)
{
#define ROUND(len) (((len) + sizeof (ElfW(Word)) - 1) & -sizeof (ElfW(Word)))
+ /* The layout of the type 2, vendor "GNU" note is as follows:
+ .long <Number of capabilities enabled by this note>
+ .long <Capabilities mask> (as mask >> _DL_FIRST_EXTRA).
+ .byte <The bit number for the next capability>
+ .asciz <The name of the capability>. */
if (note->type == NT_GNU_HWCAP
&& note->vendorlen == sizeof "GNU"
&& !memcmp ((note + 1), "GNU", sizeof "GNU")
@@ -84,7 +94,7 @@
+ ROUND (sizeof "GNU"));
cnt += *p++;
++p; /* Skip mask word. */
- dsocaps = (const char *) p;
+ dsocaps = (const char *) p; /* Pseudo-string "<b>name" */
dsocapslen = note->datalen - sizeof *p * 2;
break;
}
@@ -107,6 +117,8 @@
#ifdef NEED_DL_SYSINFO_DSO
if (dsocaps != NULL)
{
+ /* dsocaps points to the .asciz string, and -1 points to the mask
+ .long just before the string. */
const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1];
GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA;
/* Note that we add the dsocaps to the set already chosen by the
Modified: fsf/trunk/libc/elf/ldconfig.c
==============================================================================
--- fsf/trunk/libc/elf/ldconfig.c (original)
+++ fsf/trunk/libc/elf/ldconfig.c Wed May 15 00:02:11 2013
@@ -173,13 +173,17 @@
{
int hwcap_idx = _dl_string_hwcap (name);
+ /* Is this a normal hwcap for the machine e.g. fpu? */
if (hwcap_idx != -1 && ((1 << hwcap_idx) & hwcap_mask))
return 1;
+ /* ... Or is it a platform pseudo-hwcap e.g. i686? */
hwcap_idx = _dl_string_platform (name);
if (hwcap_idx != -1)
return 1;
+ /* ... Or is this one of the extra pseudo-hwcaps that we map beyond
+ _DL_FIRST_EXTRA e.g. tls, or nosegneg? */
for (hwcap_idx = _DL_FIRST_EXTRA; hwcap_idx < 64; ++hwcap_idx)
if (hwcap_extra[hwcap_idx - _DL_FIRST_EXTRA] != NULL
&& !strcmp (name, hwcap_extra[hwcap_idx - _DL_FIRST_EXTRA]))
@@ -1265,6 +1269,8 @@
add_dir (argv[i]);
}
+ /* The last entry in hwcap_extra is reserved for the "tls"
+ pseudo-hwcap which indicates support for TLS. */
hwcap_extra[63 - _DL_FIRST_EXTRA] = "tls";
set_hwcap ();
Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Wed May 15 00:02:11 2013
@@ -933,12 +933,60 @@
FLOAT max_ulp;
int exceptions;
};
+/* Used for both RUN_TEST_LOOP_f_f1 and RUN_TEST_LOOP_fI_f1. */
+struct test_f_f1_data
+{
+ const char *test_name;
+ FLOAT arg;
+ FLOAT expected;
+ FLOAT max_ulp;
+ int exceptions;
+ const char *extra_name;
+ int extra_init;
+ int extra_test;
+ int extra_expected;
+ int extra_ulp;
+};
+struct test_fF_f1_data
+{
+ const char *test_name;
+ FLOAT arg;
+ FLOAT expected;
+ FLOAT max_ulp;
+ int exceptions;
+ const char *extra_name;
+ FLOAT extra_init;
+ int extra_test;
+ FLOAT extra_expected;
+ FLOAT extra_ulp;
+};
+struct test_ffI_f1_data
+{
+ const char *test_name;
+ FLOAT arg1, arg2;
+ FLOAT expected;
+ FLOAT max_ulp;
+ int exceptions;
+ const char *extra_name;
+ int extra_init;
+ int extra_test;
+ int extra_expected;
+ int extra_ulp;
+};
struct test_c_c_data
{
const char *test_name;
FLOAT argr, argc;
FLOAT expr, expc;
__complex__ FLOAT max_ulp;
+ int exceptions;
+};
+struct test_f_i_data
+{
+ const char *test_name;
+ FLOAT arg;
+ int expected;
+ int max_ulp;
int exceptions;
};
@@ -988,7 +1036,7 @@
for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
RUN_TEST_2_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1, \
(ARRAY)[i].arg2, (ARRAY)[i].expected, \
- (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions); \
+ (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions); \
ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_ff_f RUN_TEST_2_f
#define RUN_TEST_LOOP_ff_f RUN_TEST_LOOP_2_f
@@ -1036,6 +1084,16 @@
EXTRA_ULP, 0); \
} \
while (0)
+#define RUN_TEST_LOOP_f_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_f_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions, (ARRAY)[i].extra_name, \
+ EXTRA_VAR, (ARRAY)[i].extra_init, \
+ (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected, \
+ (ARRAY)[i].extra_ulp); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
MAX_ULP, EXCEPTIONS, \
EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
@@ -1050,6 +1108,16 @@
EXTRA_ULP, 0); \
} \
while (0)
+#define RUN_TEST_LOOP_fF_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_fF_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions, (ARRAY)[i].extra_name, \
+ EXTRA_VAR, (ARRAY)[i].extra_init, \
+ (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected, \
+ (ARRAY)[i].extra_ulp); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
MAX_ULP, EXCEPTIONS, \
EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
@@ -1064,6 +1132,16 @@
EXTRA_ULP, 0); \
} \
while (0)
+#define RUN_TEST_LOOP_fI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_fI_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions, (ARRAY)[i].extra_name, \
+ EXTRA_VAR, (ARRAY)[i].extra_init, \
+ (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected, \
+ (ARRAY)[i].extra_ulp); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
MAX_ULP, EXCEPTIONS, \
EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
@@ -1079,6 +1157,19 @@
EXTRA_ULP, 0); \
} \
while (0)
+#define RUN_TEST_LOOP_ffI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, \
+ EXTRA_VAR) \
+ IF_ROUND_INIT_ ## ROUNDING_MODE \
+ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \
+ RUN_TEST_ffI_f1 ((ARRAY)[i].test_name, FUNC_NAME, \
+ (ARRAY)[i].arg1, (ARRAY)[i].arg2, \
+ (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \
+ (ARRAY)[i].exceptions, (ARRAY)[i].extra_name, \
+ EXTRA_VAR, (ARRAY)[i].extra_init, \
+ (ARRAY)[i].extra_test, \
+ (ARRAY)[i].extra_expected, \
+ (ARRAY)[i].extra_ulp); \
+ ROUND_RESTORE_ ## ROUNDING_MODE
#define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC, \
MAX_ULP, EXCEPTIONS) \
check_complex (TEST_NAME, \
@@ -1103,10 +1194,24 @@
MAX_ULP, EXCEPTIONS) \
check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_i(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_i ((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_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
MAX_ULP, EXCEPTIONS) \
check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED, \
MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_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_f_i_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_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
MAX_ULP, EXCEPTIONS) \
check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED, \
@@ -9481,43 +9586,70 @@
}
+static const struct test_f_i_data fpclassify_test_data[] =
+ {
+ START_DATA (fpclassify),
+ TEST_f_i (fpclassify, qnan_value, FP_NAN),
+ TEST_f_i (fpclassify, plus_infty, FP_INFINITE),
+ TEST_f_i (fpclassify, minus_infty, FP_INFINITE),
+ TEST_f_i (fpclassify, plus_zero, FP_ZERO),
+ TEST_f_i (fpclassify, minus_zero, FP_ZERO),
+ TEST_f_i (fpclassify, 1000, FP_NORMAL),
+ TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL),
+ END_DATA (fpclassify)
+ };
+
static void
fpclassify_test (void)
{
START (fpclassify);
-
- TEST_f_i (fpclassify, qnan_value, FP_NAN);
- TEST_f_i (fpclassify, plus_infty, FP_INFINITE);
- TEST_f_i (fpclassify, minus_infty, FP_INFINITE);
- TEST_f_i (fpclassify, plus_zero, FP_ZERO);
- TEST_f_i (fpclassify, minus_zero, FP_ZERO);
- TEST_f_i (fpclassify, 1000, FP_NORMAL);
- TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL);
-
+ RUN_TEST_LOOP_f_i_tg (fpclassify, fpclassify_test_data, );
END (fpclassify);
}
+static const struct test_f_f1_data frexp_test_data[] =
+ {
+ START_DATA (frexp),
+ TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE),
+ TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE),
+ TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE),
+
+ TEST_fI_f1 (frexp, 0.0, 0.0, 0.0),
+ TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0),
+
+ TEST_fI_f1 (frexp, 12.8L, 0.8L, 4),
+ TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5),
+ END_DATA (frexp)
+ };
+
static void
frexp_test (void)
{
int x;
START (frexp);
-
- TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE);
- TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE);
- TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE);
-
- TEST_fI_f1 (frexp, 0.0, 0.0, 0.0);
- TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0);
-
- TEST_fI_f1 (frexp, 12.8L, 0.8L, 4);
- TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5);
-
+ RUN_TEST_LOOP_fI_f1 (frexp, frexp_test_data, , x);
END (frexp);
}
+
+static const struct test_f_f1_data gamma_test_data[] =
+ {
+ START_DATA (gamma),
+ TEST_f_f1 (gamma, plus_infty, plus_infty, 1),
+ TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION),
+ TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION),
+ TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE),
+ TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE),
+
+ TEST_f_f1 (gamma, 1, 0, 1),
+ TEST_f_f1 (gamma, 3, M_LN2l, 1),
+
+ TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1),
+ TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1),
+ END_DATA (gamma)
+ };
static void
gamma_test (void)
@@ -9530,19 +9662,7 @@
return;
START (gamma);
-
- TEST_f_f1 (gamma, plus_infty, plus_infty, 1);
- TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
- TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
- TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE);
- TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE);
-
- TEST_f_f1 (gamma, 1, 0, 1);
- TEST_f_f1 (gamma, 3, M_LN2l, 1);
-
- TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
- TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
-
+ RUN_TEST_LOOP_f_f1 (gamma, gamma_test_data, , signgam);
END (gamma);
}
@@ -9615,25 +9735,30 @@
}
+static const struct test_f_i_data ilogb_test_data[] =
+ {
+ START_DATA (ilogb),
+ TEST_f_i (ilogb, 1, 0),
+ TEST_f_i (ilogb, M_El, 1),
+ TEST_f_i (ilogb, 1024, 10),
+ TEST_f_i (ilogb, -2000, 10),
+
+ /* ilogb (0.0) == FP_ILOGB0 plus invalid exception */
+ TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM),
+ /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception */
+ TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM),
+ /* ilogb (inf) == INT_MAX plus invalid exception */
+ TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
+ /* ilogb (-inf) == INT_MAX plus invalid exception */
+ TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
+ END_DATA (ilogb)
+ };
+
static void
ilogb_test (void)
{
START (ilogb);
-
- TEST_f_i (ilogb, 1, 0);
- TEST_f_i (ilogb, M_El, 1);
- TEST_f_i (ilogb, 1024, 10);
- TEST_f_i (ilogb, -2000, 10);
-
- /* ilogb (0.0) == FP_ILOGB0 plus invalid exception */
- TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM);
- /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception */
- TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM);
- /* ilogb (inf) == INT_MAX plus invalid exception */
- TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
- /* ilogb (-inf) == INT_MAX plus invalid exception */
- TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
-
+ RUN_TEST_LOOP_f_i (ilogb, ilogb_test_data, );
END (ilogb);
}
@@ -10087,6 +10212,31 @@
}
+static const struct test_f_f1_data lgamma_test_data[] =
+ {
+ START_DATA (lgamma),
+ TEST_f_f1 (lgamma, plus_infty, plus_infty, 1),
+ TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION),
+ TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION),
+ TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE),
+
+ /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */
+ TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
+ TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE),
+ TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION),
+ TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION),
+
+ TEST_f_f1 (lgamma, 1, 0, 1),
+
+ TEST_f_f1 (lgamma, 3, M_LN2l, 1),
+
+ TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1),
+ TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1),
+ TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1),
+ TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1),
+ END_DATA (lgamma)
+ };
+
static void
lgamma_test (void)
{
@@ -10097,27 +10247,7 @@
return;
START (lgamma);
-
- TEST_f_f1 (lgamma, plus_infty, plus_infty, 1);
- TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
- TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION);
- TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE);
-
- /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */
- TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
- TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE);
- TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
- TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION);
-
- TEST_f_f1 (lgamma, 1, 0, 1);
-
- TEST_f_f1 (lgamma, 3, M_LN2l, 1);
-
- TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
- TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
- TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
- TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
-
+ RUN_TEST_LOOP_f_f1 (lgamma, lgamma_test_data, , signgam);
END (lgamma);
}
@@ -11434,24 +11564,29 @@
END (llround);
}
+static const struct test_fF_f1_data modf_test_data[] =
+ {
+ START_DATA (modf),
+ TEST_fF_f1 (modf, plus_infty, 0, plus_infty),
+ TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty),
+ TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value),
+ TEST_fF_f1 (modf, 0, 0, 0),
+ TEST_fF_f1 (modf, 1.5, 0.5, 1),
+ TEST_fF_f1 (modf, 2.5, 0.5, 2),
+ TEST_fF_f1 (modf, -2.5, -0.5, -2),
+ TEST_fF_f1 (modf, 20, 0, 20),
+ TEST_fF_f1 (modf, 21, 0, 21),
+ TEST_fF_f1 (modf, 89.5, 0.5, 89),
+ END_DATA (modf)
+ };
+
static void
modf_test (void)
{
FLOAT x;
START (modf);
-
- TEST_fF_f1 (modf, plus_infty, 0, plus_infty);
- TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty);
- TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value);
- TEST_fF_f1 (modf, 0, 0, 0);
- TEST_fF_f1 (modf, 1.5, 0.5, 1);
- TEST_fF_f1 (modf, 2.5, 0.5, 2);
- TEST_fF_f1 (modf, -2.5, -0.5, -2);
- TEST_fF_f1 (modf, 20, 0, 20);
- TEST_fF_f1 (modf, 21, 0, 21);
- TEST_fF_f1 (modf, 89.5, 0.5, 89);
-
+ RUN_TEST_LOOP_fF_f1 (modf, modf_test_data, , x);
END (modf);
}
@@ -12506,6 +12641,25 @@
END (remainder);
}
+static const struct test_ffI_f1_data remquo_test_data[] =
+ {
+ START_DATA (remquo),
+ TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION),
+ TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION),
+ TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION),
+ TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION),
+ TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE),
+
+ TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2),
+ TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2),
+ TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2),
+ TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2),
+
+ TEST_ffI_f1 (remquo, 5, 2, 1, 2),
+ TEST_ffI_f1 (remquo, 3, 2, -1, 2),
+ END_DATA (remquo)
+ };
+
static void
remquo_test (void)
{
@@ -12519,21 +12673,7 @@
return;
START (remquo);
-
- TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION);
- TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION);
- TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
- TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
- TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE);
-
- TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2);
- TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2);
- TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2);
- TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2);
-
- TEST_ffI_f1 (remquo, 5, 2, 1, 2);
- TEST_ffI_f1 (remquo, 3, 2, -1, 2);
-
+ RUN_TEST_LOOP_ffI_f1 (remquo, remquo_test_data, , x);
END (remquo);
}
@@ -13256,7 +13396,7 @@
START (scalbln);
RUN_TEST_LOOP_fl_f (scalbln, scalbln_test_data, );
- END (scalbn);
+ END (scalbln);
}
Modified: fsf/trunk/libc/ports/ChangeLog.arm
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.arm (original)
+++ fsf/trunk/libc/ports/ChangeLog.arm Wed May 15 00:02:11 2013
@@ -1,3 +1,11 @@
+2013-05-14 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ [BZ #14908]
+ * sysdeps/arm/setjmp.S (__sigsetjmp): Don't save fpscr.
+ * sysdeps/arm/__longjmp.S (__longjmp): Don't restore fpscr.
+ * sysdeps/arm/bits/setjmp.h (__jmp_buf): Don't mention fpscr in
+ comment.
+
2013-05-13 Roland McGrath <roland@xxxxxxxxxxxxx>
* sysdeps/arm/armv7/multiarch/memcpy.S [__ARM_NEON__]: Don't define
Modified: fsf/trunk/libc/ports/sysdeps/arm/__longjmp.S
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/arm/__longjmp.S (original)
+++ fsf/trunk/libc/ports/sysdeps/arm/__longjmp.S Wed May 15 00:02:11 2013
@@ -83,11 +83,6 @@
/* Following instruction is vldmia ip!, {d8-d15}. */
sfi_breg r12, \
ldc p11, cr8, [\B], #64
- /* Restore the floating-point status register. */
- sfi_breg ip, \
- ldr a3, [\B], #4
- /* Following instruction is fmxr fpscr, a3. */
- mcr p10, 7, a3, cr1, cr0, 0
.Lno_vfp:
#ifndef ARM_ASSUME_NO_IWMMXT
Modified: fsf/trunk/libc/ports/sysdeps/arm/bits/setjmp.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/arm/bits/setjmp.h (original)
+++ fsf/trunk/libc/ports/sysdeps/arm/bits/setjmp.h Wed May 15 00:02:11 2013
@@ -28,9 +28,9 @@
/* The exact set of registers saved may depend on the particular core
in use, as some coprocessor registers may need to be saved. The C
Library ABI requires that the buffer be 8-byte aligned, and
- recommends that the buffer contain 64 words. The first 28 words
- are occupied by v1-v6, sl, fp, sp, pc, d8-d15, and fpscr. (Note
- that d8-15 require 17 words, due to the use of fstmx.) */
+ recommends that the buffer contain 64 words. The first 27 words
+ are occupied by v1-v6, sl, fp, sp, pc, and d8-d15. (Note that
+ d8-15 require 17 words, due to the use of fstmx.) */
typedef int __jmp_buf[64] __attribute__((__aligned__ (8)));
#endif
Modified: fsf/trunk/libc/ports/sysdeps/arm/setjmp.S
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/arm/setjmp.S (original)
+++ fsf/trunk/libc/ports/sysdeps/arm/setjmp.S Wed May 15 00:02:11 2013
@@ -67,11 +67,6 @@
/* Following instruction is vstmia ip!, {d8-d15}. */
sfi_breg ip, \
stc p11, cr8, [\B], #64
- /* Store the floating-point status register. */
- /* Following instruction is vmrs a4, fpscr. */
- mrc p10, 7, a4, cr1, cr0, 0
- sfi_breg ip, \
- str a4, [\B], #4
.Lno_vfp:
#ifndef ARM_ASSUME_NO_IWMMXT
Modified: fsf/trunk/libc/setjmp/Makefile
==============================================================================
--- fsf/trunk/libc/setjmp/Makefile (original)
+++ fsf/trunk/libc/setjmp/Makefile Wed May 15 00:02:11 2013
@@ -25,7 +25,14 @@
routines := setjmp sigjmp bsd-setjmp bsd-_setjmp \
longjmp __longjmp jmp-unwind
-tests := tst-setjmp jmpbug bug269-setjmp
+tests := tst-setjmp jmpbug bug269-setjmp tst-setjmp-fp
include ../Rules
+
+ifeq ($(build-shared),yes)
+link-libm = $(common-objpfx)math/libm.so
+else
+link-libm = $(common-objpfx)math/libm.a
+endif
+$(objpfx)tst-setjmp-fp: $(link-libm)
Added: fsf/trunk/libc/setjmp/tst-setjmp-fp.c
==============================================================================
--- fsf/trunk/libc/setjmp/tst-setjmp-fp.c (added)
+++ fsf/trunk/libc/setjmp/tst-setjmp-fp.c Wed May 15 00:02:11 2013
@@ -1,0 +1,105 @@
+/* Test that setjmp/longjmp do not save and restore floating-point
+ exceptions and rounding modes.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <setjmp.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static jmp_buf env;
+static int result = 0;
+
+#if defined FE_TONEAREST && defined FE_TOWARDZERO
+static int expected_rounding_mode = FE_TONEAREST;
+
+static void
+change_rounding_mode (void)
+{
+ if (fesetround (FE_TOWARDZERO) == 0)
+ expected_rounding_mode = FE_TOWARDZERO;
+ else
+ puts ("fesetround (FE_TOWARDZERO) failed, continuing test");
+ longjmp (env, 1);
+}
+#endif
+
+#ifdef FE_INVALID
+static int expected_exceptions = 0;
+
+static void
+raise_exception (void)
+{
+ if (feraiseexcept (FE_INVALID) == 0)
+ expected_exceptions = FE_INVALID;
+ else
+ puts ("feraiseexcept (FE_INVALID) failed, continuing test");
+ longjmp (env, 1);
+}
+#endif
+
+static int
+do_test (void)
+{
+#if defined FE_TONEAREST && defined FE_TOWARDZERO
+ if (fesetround (FE_TONEAREST) == 0)
+ {
+ if (setjmp (env) == 0)
+ change_rounding_mode ();
+ else
+ {
+ if (fegetround () == expected_rounding_mode)
+ puts ("PASS: longjmp preserved rounding mode");
+ else
+ {
+ puts ("FAIL: longjmp changed rounding mode");
+ result = 1;
+ }
+ }
+ }
+ else
+ puts ("fesetround (FE_TONEAREST) failed, not testing rounding modes");
+#else
+ puts ("rounding mode test not supported");
+#endif
+#ifdef FE_INVALID
+ if (feclearexcept (FE_ALL_EXCEPT) == 0)
+ {
+ if (setjmp (env) == 0)
+ raise_exception ();
+ else
+ {
+ if (fetestexcept (FE_INVALID) == expected_exceptions)
+ puts ("PASS: longjmp preserved exceptions");
+ else
+ {
+ puts ("FAIL: longjmp changed exceptions");
+ result = 1;
+ }
+ }
+ }
+ else
+ puts ("feclearexcept (FE_ALL_EXCEPT) failed, not testing exceptions");
+#else
+ puts ("exception test not supported");
+#endif
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
Modified: fsf/trunk/libc/sysdeps/sparc/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/sysdeps/sparc/fpu/libm-test-ulps Wed May 15 00:02:11 2013
@@ -8301,6 +8301,601 @@
ifloat: 1
ildouble: 1
ldouble: 1
+Test "tgamma (-0x0.fffffffffffff8p0) == -9.0071992547409924227843350984672961392521e+15":
+double: 1
+idouble: 1
+Test "tgamma (-0x0.ffffffffffffffffffffffffffff8p0) == -1.0384593717069655257060992658440192422784e+34":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x0.ffffffp0) == -1.6777216422784419250710305882992376932423e+07":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1.0000000000000002p0) == 9.2233720368547758075772156649015328607596e+18":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1.0000000000001p0) == 4.5035996273704955772156649015331740980405e+15":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1.000002p0) == 8.3886075772158332060084424806449513922858e+06":
+double: 2
+idouble: 2
+Test "tgamma (-0x1.0a32a2p+5) == 1.8125267978155035272941154746083439329912e-37":
+float: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x1.5800000080001p+7) == -3.1439271448823567326093363350637118195240e-304":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1.fffffffffffffffep0) == 4.6116860184273879044613921675492335697983e+18":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1.fffffffffffffp0) == 2.2517998136852484613921675492337776673289e+15":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x13.ffffep0) == 2.1550026214525536756224040483579183652119e-13":
+float: 2
+ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x13.ffffffffffffffep0) == 2.3694367893405502075347562184931828448654e-01":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x13.fffffffffffffffffffffffff8p0) == 1.0420893204640670202556853709074896123293e+12":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x13.ffffffffffffp0) == 1.1569515572952029402736625857313236848570e-04":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x14.000000000000000000000000001p0) == -1.3338743301940057859272772747599851284049e+14":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x14.000000000001p0) == -1.1569515572951781096476686854873801225397e-04":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x14.00002p0) == -2.1549777908265594916405421768142757507179e-13":
+float: 1
+ifloat: 1
+ildouble: 4
+ldouble: 4
+Test "tgamma (-0x1d.ffffep0) == 1.9765721589464867957912772592816027583176e-27":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1d.fffffffffffffffffffffffff8p0) == 9.5580541610429641982963434151488827190079e-03":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1d.ffffffffffffp0) == 1.0611571800204311628217068863959963842891e-18":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1e.000000000000000000000000001p0) == -1.2234309326134994173819319571373948286903e+00":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x1e.00000000000000000000000008p0) == -9.5580541610429641982963434151231128067179e-03":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1e.000000000000002p0) == -2.1732499046818166201837145753965837196590e-15":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1e.000000000001p0) == -1.0611571800204053929094168642022073530425e-18":
+double: 3
+idouble: 3
+Test "tgamma (-0x1e.00002p0) == -1.9765463890341964384070157599286498212650e-27":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1f3.ffffffffffffffffffffffffffp0) == 1.6623061587520224800948170558276526986560e-1103":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x1p-24) == -1.6777216577215723853867349114260580375249e+07":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2.0000000000000000000000000002p0) == -1.2980742146337069071326240823050235386078e+33":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2.0000000000002p0) == -1.1258999068426235386078324507668462444260e+15":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2.000004p0) == -2.0971515386080557574407223895988378776747e+06":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2.fffffcp0) == -6.9905087601970247876992248591045142913324e+05":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (-0x2.ffffffffffffep0) == -3.7529996894754154268627807196691509198813e+14":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x27.fffffffffffep0) == 1.7249032006742266376460389310340465554361e-34":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x27.ffffffffffffffcp0) == 3.5326017549807232935581894777156474496719e-31":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x27.ffffffffffffffffffffffffffep0) == 1.9886779934224431790713007246380976767855e-16":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x27.fffffffffffffffffffffffffp0) == 1.5536546823612837336494536911280147806523e-18":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x28.0000000000000000000000001p0) == -1.5536546823612837336494536911189419578973e-18":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x28.000000000002p0) == -1.7249032006741359094184881234822934593822e-34":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x28.00004p0) == -3.2128372159115252365699015758097981155793e-43":
+double: 2
+idouble: 2
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x28.ffffffffffffffcp0) == -8.6161018414163982777002940498289948893044e-33":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x28.ffffffffffffffffffffffffffep0) == -4.8504341302986419001739042064343853066259e-18":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x28.fffffffffffffffffffffffffp0) == -3.7894016642958139845108626612879138384405e-20":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x29.000000000000000000000000002p0) == 4.8504341302986419001739042064341625600656e-18":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x29.0000000000000000000000001p0) == 3.7894016642958139845108626612656391824122e-20":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x29.00004p0) == 7.8361876024016854597745353972619195760515e-45":
+double: 1
+idouble: 1
+Test "tgamma (-0x29.ffffcp0) == 1.8658121573125798145204120066590953505132e-46":
+double: 1
+idouble: 1
+Test "tgamma (-0x29.fffffffffffep0) == 1.0016859469652887505173040814397197718981e-37":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x29.ffffffffffffffcp0) == 2.0514528193848567329552463626090806737389e-34":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x29.ffffffffffffffffffffffffffep0) == 1.1548652691187242619461676681986633377063e-19":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x29.fffffffffffffffffffffffffp0) == 9.0223849149900332964544349078285357440663e-22":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2a.000000000000000000000000002p0) == -1.1548652691187242619461676681986099638869e-19":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2a.0000000000000000000000001p0) == -9.0223849149900332964544349077751619246306e-22":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2a.000000000000004p0) == -2.0514528193848566795814269269517457847791e-34":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2a.000000000002p0) == -1.0016859469652353766978684241048308120274e-37":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2ed.fffffffffffffffffffffffffep0) == 3.9294757797334687313030998663853566763041e-1802":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x2ee.00000000000004p0) == -6.9801511765871767194421856376592926002995e-1817":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x3.00000000000000000000000001p0) == 3.3804016006086117373245418810024573137219e+30":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x3.000004p0) == 6.9905045731381300146131914617735687322025e+05":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "tgamma (-0x3.fffffcp0) == 1.7476272942159602684441970627092458855771e+05":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (-0x3.ffffffffffffep0) == 9.3824992236885396088236184658402406857503e+13":
+double: 2
+idouble: 2
+Test "tgamma (-0x3.fffffffffffffffcp0) == 1.9215358410114116272942156951799168638773e+17":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x3.fffffffffffffffffffffffffffep0) == 1.0817285121947557559438534019208539608824e+32":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x31.fffffffffffep0) == 4.6273774273632946947805289899230181990085e-51":
+double: 3
+idouble: 3
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x31.ffffffffffffffcp0) == 9.4768689712397635680446279661359728835046e-48":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x31.ffffffffffffffffffffffffffep0) == 5.3350029459393017997786969431322287652396e-33":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x31.fffffffffffffffffffffffffp0) == 4.1679710515150795310771069868348482819424e-35":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x32.000000000000000000000000002p0) == -5.3350029459393017997786969431319708591664e-33":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x32.0000000000000000000000001p0) == -4.1679710515150795310771069868090576746248e-35":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x32.000000000000004p0) == -9.4768689712397633101385547903658075308777e-48":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x3e7.fffffffffffffcp0) == 4.4768809295877296071892611539415773519036e-2552":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x3e7.fffffffffffffffffffffffffep0) == 2.5202599107841713834679953735597552855978e-2537":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x3e8.00000000000000000000000002p0) == -2.5202599107841713834679953735563216504503e-2537":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x3e8.00000000000004p0) == -4.4768809295877261735541135972060089530309e-2552":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x4.0000000000004p0) == -4.6912496118442603911763815341745722862351e+13":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x4.000008p0) == -8.7381270578483499672965708923121931082305e+04":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x4.fffff8p0) == -1.7476280884325863043793087474680780379554e+04":
+double: 1
+idouble: 1
+Test "tgamma (-0x4.ffffffffffffcp0) == -9.3824992236885475509805702650262155809819e+12":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x4.fffffffffffffffffffffffffep0) == -8.4510040015215293433113547025080884313904e+28":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x4.fffffffffffffffffffffffffffcp0) == -1.0817285121947557559438534019208547550981e+31":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5.0000000000000008p0) == 1.9215358410114116252449019429734996071487e+16":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5.0000000000004p0) == 9.3824992236885191156860964016850034672946e+12":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5.000008p0) == 1.7476252449031389167286893378510439443844e+04":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (-0x5.fffff8p0) == 2.9127137122026653716311560165769071985443e+03":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5.ffffffffffffcp0) == 1.5637498706147581566449098589862357835505e+12":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5.fffffffffffffff8p0) == 3.2025597350190193803788671320812043622696e+15":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x5.fffffffffffffffffffffffffep0) == 1.4085006669202548905518924504180378867132e+28":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5.fffffffffffffffffffffffffffcp0) == 1.8028808536579262599064223365347581566449e+30":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5db.fffffffffffff8p0) == 1.8718211510339187689122114747834510481993e-4099":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5db.fffffffffffffffffffffffffcp0) == 1.0537416297875703295453200836588944487917e-4084":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x5dc.00000000000000000000000004p0) == -1.0537416297875703295453200836558547326520e-4084":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x6.0000000000000000000000000004p0) == -1.8028808536579262599064223365347529544662e+30":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6.00000000000000000000000002p0) == -1.4085006669202548905518924504175176688423e+28":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6.0000000000004p0) == -1.5637498706147529544662012521330708016396e+12":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6.000008p0) == -2.9127085100239567622341538102130981196910e+03":
+float: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x6.fffff8p0) == -4.1610198723079349791939054365613377035519e+02":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6.ffffffffffffcp0) == -2.2339283865925119357965832452642909859289e+11":
+double: 4
+idouble: 4
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6.fffffffffffffff8p0) == -4.5750853357414562579675426149912896787735e+14":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6.fffffffffffffffffffffffffffcp0) == -2.5755440766541803712948890521925119357966e+29":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x63.fffffffffffcp0) == 7.5400833348840965463348754984345825364294e-145":
+double: 2
+idouble: 2
+Test "tgamma (-0x63.ffffffffffffff8p0) == 1.5442090669841618542494279375256856430049e-141":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x63.ffffffffffffffffffffffffep0) == 6.7915032994648558610510614163560656864280e-129":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x64.000000000000000000000000004p0) == -8.6931242233150155021453586128720401960966e-127":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x64.0000000000000000000000002p0) == -6.7915032994648558610510614162572689693253e-129":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x64.000000000004p0) == -7.5400833348831085791638490135462230991587e-145":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6d5.fffffffffffff8p0) == 4.2925786447266492555651378780094011518063e-4902":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6d6.00000000000000000000000004p0) == -2.4165069481061837867659591369927521090377e-4887":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x6e3.00000000000000000000000004p0) == 1.5891611922804672355414813802961215945667e-4929":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x7.0000000000000008p0) == 4.5750853357414562499689653215166468353753e+14":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x7.0000000000004p0) == 2.2339283865925039372192897706214475877342e+11":
+double: 3
+idouble: 3
+Test "tgamma (-0x7.000008p0) == 4.1610118737306415004517215226199741948733e+02":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (-0x7.fffff8p0) == 5.2012751504050764429534086402871289946986e+01":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+Test "tgamma (-0x7.ffffffffffffcp0) == 2.7924104832406402297655703264222230055898e+10":
+double: 3
+idouble: 3
+Test "tgamma (-0x7.fffffffffffffff8p0) == 5.7188566696768203227694481100089533685959e+13":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x7.fffffffffffffffffffffffffep0) == 2.5151797623575980188426650900322769448110e+26":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x7.fffffffffffffffffffffffffffcp0) == 3.2194300958177254641186113152406402297656e+28":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x8.0000000000000000000000000008p0) == -1.6097150479088627320593056576203121511868e+28":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x8.00000000000000000000000004p0) == -1.2575898811787990094213325450153421028080e+26":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x8.0000000000008p0) == -1.3962052416203121511868106259843527348026e+10":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x8.00001p0) == -2.6006296115134418896533598545925084576702e+01":
+double: 2
+idouble: 2
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x9.ffffffffffff8p0) == 1.5513391573559147700413058496716749249803e+08":
+double: 1
+idouble: 1
+Test "tgamma (-0x9.fffffffffffffffffffffffffff8p0) == 1.7885722754542919245103396195781369922635e+26":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x9.fffffp0) == 2.8896008370721717567612135720915723136310e-01":
+float: 1
+ifloat: 1
+Test "tgamma (-0x95.ffffffffffffffp0) == 1.2612069237291916400144732227892704713839e-246":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x96.000000000000000000000000008p0) == -7.0999637896798458052083945552077084073470e-232":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x96.0000000000000000000000004p0) == -5.5468467106873795353190582461689495693675e-234":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0x96.00000000000001p0) == -1.2612069237291914644980030550324645611752e-246":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0x96.000000000008p0) == -6.1582369322705655439003240743176243138734e-250":
+double: 1
+idouble: 1
+Test "tgamma (-0xa.0000000000008p0) == -1.5513391573559018084419393002828541166901e+08":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xa.00001p0) == -2.8895878754728051776830454190076999107021e-01":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb4.ffffffffffffffffffffffffcp0) == -8.7154451775644399729745472278589884205029e-303":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb4.ffffffffffffffp0) == -1.9816628031468191243385005680879281767694e-315":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb5.0000000000000000000000004p0) == 8.7154451775644399729745472275729078899858e-303":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb5.00000000000001p0) == 1.9816628031468188382579700510291588022368e-315":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0xb5.000000000008p0) == 9.6760879059888966544677044221698800670218e-319":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb5.ffffffffffffffffffffffffff8p0) == 6.1295438611442215194546266216911239298981e-303":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb6.00000000000001p0) == -1.0888257160147356253334423783317128355514e-317":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb6.000000000008p0) == -5.3165318164774149139661976747137185876909e-321":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb6.fffffffffff8p0) == -2.9052086428846935908287469917922960610289e-323":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb6.ffffffffffffffffffffffffff8p0) == -3.3494775197509407210134571703230189921356e-305":
+ildouble: 3
+ldouble: 3
+Test "tgamma (-0xb7.000000000000000000000000008p0) == 3.3494775197509407210134571703221582364195e-305":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb7.00000000000001p0) == 5.9498673006269706297861824177538685763601e-320":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0xb7.000000000008p0) == 2.9052086428838328351126988236541632950925e-323":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb7.ffffffffffffffffffffffffcp0) == 1.4221626697312078468976975078030462044826e-309":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb7.ffffffffffffffffffffffffff8p0) == 1.8203682172559460440290528099581627396147e-307":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xb8.00000000000001p0) == -3.2336235329494405594225146768193434900135e-322":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbb.ffffffffffffffffffffffffcp0) == 1.1756150745511026776007338998283058108448e-318":
+ildouble: 3
+ldouble: 3
+Test "tgamma (-0xbb.ffffffffffffffffffffffffff8p0) == 1.5047872954254114273289393917555491216542e-316":
+ildouble: 4
+ldouble: 4
+Test "tgamma (-0xbc.000000000000000000000000008p0) == -1.5047872954254114273289393917551604237609e-316":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbc.0000000000000000000000004p0) == -1.1756150745511026776007338997894360215107e-318":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0xbc.00000000000001p0) == -2.6730392040715346232108532050343031951651e-331":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0xbc.ffffffffffffffp0) == -1.4143064571807063556111222197839950086445e-333":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbd.000000000000000000000000008p0) == 7.9618375419333937953912137129902657538965e-319":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbd.00000000000001p0) == 1.4143064571807061497431633629389135273431e-333":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0xbd.ffffffffffffffp0) == 7.4437181956879281879706555863416819210399e-336":
+ildouble: 2
+ldouble: 2
+Test "tgamma (-0xbe.000000000000000000000000008p0) == -4.1904408115438914712585335331527709057227e-321":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbe.0000000000000000000000004p0) == -3.2737818840186652119207293227217957948294e-323":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbe.ffffffffffffffffffffffffcp0) == -1.7140219288055838805867692789687487834686e-325":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbe.ffffffffffffffp0) == -3.8972346574282346536709453101948570578636e-338":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbf.000000000000000000000000008p0) == 2.1939480688711473671510646770433352695669e-323":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbf.0000000000000000000000004p0) == 1.7140219288055838805867692789119066543632e-325":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xbf.00000000000001p0) == 3.8972346574282340852496542564155275274974e-338":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xf9.ffffffffffffffp0) == 2.2289142548411573883553287678043297937797e-476":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-0xfa.000000000000000000000000008p0) == -1.2547671759429278005937024349855091492502e-461":
+ildouble: 1
+ldouble: 1
+Test "tgamma (-2.5) == -9.4530872048294188122568932444861076415869e-01":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "tgamma (-3.5) == 2.7008820585226910892162552127103164690248e-01":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-4.5) == -6.0019601300504246427027893615784810422774e-02":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (-5.5) == 1.0912654781909862986732344293779056440504e-02":
+double: 1
+idouble: 1
+Test "tgamma (-6.5) == -1.6788699664476712287280529682737009908468e-03":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (-7.5) == 2.2384932885968949716374039576982679877958e-04":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "tgamma (-8.5) == -2.6335215159963470254557693619979623385833e-05":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (-9.5) == 2.7721279115751021320587045915768024616666e-06":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
Test "tgamma (0.5) == sqrt (pi)":
float: 1
ifloat: 1
@@ -8309,7 +8904,259 @@
float: 1
idouble: 1
ifloat: 1
+Test "tgamma (0x1.fffffep0) == 9.9999994960018563231526611134590489120697e-01":
+float: 1
+ifloat: 1
+Test "tgamma (0x1.fffffffffffffffep0) == 9.9999999999999999995416163053934024243282e-01":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x1.ffffffffffffffffffffffffffffp0) == 9.9999999999999999999999999999999991857470e-01":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x1.fffffffffffffp0) == 9.9999999999999990612301934456883679778984e-01":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x1p-113) == 1.0384593717069655257060992658440191422784e+34":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x1p-24) == 1.6777215422784394050795179874582764575261e+07":
+float: 1
+ifloat: 1
+Test "tgamma (0x1p-53) == 9.0071992547409914227843350984672492007618e+15":
+double: 1
+idouble: 1
+Test "tgamma (0x2.30a43cp+4) == 3.4027979115654976101247558405326779640190e+38":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "tgamma (0x2.fffffcp0) == 1.9999995599822108706107786027549565954046e+00":
+float: 3
+ifloat: 3
+Test "tgamma (0x2.ffffffffffffep0) == 1.9999999999999991804028675282128956223990e+00":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x3.0000000000002p0) == 2.0000000000000008195971324717875960213536e+00":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x3.fffffcp0) == 5.9999982031095793171233994481968816873643e+00":
+float: 1
+ifloat: 1
+Test "tgamma (0x3.ffffffffffffep0) == 5.9999999999999966530301828845138185025345e+00":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x3.fffffffffffffffcp0) == 5.9999999999999999983657373939865784753909e+00":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x3.fffffffffffffffffffffffffffep0) == 5.9999999999999999999999999999999970969664e+00":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x4.0000000000000000000000000004p0) == 6.0000000000000000000000000000000058060671e+00":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x4.0000000000004p0) == 6.0000000000000066939396342309789716341613e+00":
+double: 1
+idouble: 1
+Test "tgamma (0x4.000008p0) == 6.0000035937827461765660468073471093546129e+00":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x4.ffffffffffffcp0) == 2.3999999999999967895170944875373910918544e+01":
+double: 1
+idouble: 1
+Test "tgamma (0x4.fffffffffffffffffffffffffep0) == 2.3999999999999999999999999999996435647958e+01":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x4.fffffffffffffffffffffffffffcp0) == 2.3999999999999999999999999999999972153500e+01":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x5.0000000000000000000000000004p0) == 2.4000000000000000000000000000000027846500e+01":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x5.0000000000004p0) == 2.4000000000000032104829055124673225982803e+01":
+double: 1
+idouble: 1
+Test "tgamma (0x5.000008p0) == 2.4000017236155647574166073485628713443799e+01":
+float: 2
+ifloat: 2
+Test "tgamma (0x5.fffff8p0) == 1.1999990237520611552119807476573441975106e+02":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (0x5.ffffffffffffcp0) == 1.1999999999999981815957265157389249327533e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x5.fffffffffffffff8p0) == 1.1999999999999999991121072883377624326546e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x5.fffffffffffffffffffffffffep0) == 1.1999999999999999999999999999997981165708e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x6.0000000000000000000000000004p0) == 1.2000000000000000000000000000000015772143e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x6.0000000000000008p0) == 1.2000000000000000008878927116622375680433e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x6.0000000000004p0) == 1.2000000000000018184042734842640022086408e+02":
+double: 1
+idouble: 1
+Test "tgamma (0x6.000008p0) == 1.2000009762487825358530770343720418162783e+02":
+float: 2
+ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x6.fffff8p0) == 7.1999935703082425988147448928288557689866e+02":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x6.ffffffffffffcp0) == 7.1999999999999880237602554542848858572672e+02":
+double: 4
+idouble: 4
+Test "tgamma (0x6.fffffffffffffff8p0) == 7.1999999999999999941522266872335324679893e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x7.0000000000000000000000000004p0) == 7.2000000000000000000000000000000103877321e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x7.0000000000000008p0) == 7.2000000000000000058477733127664675369681e+02":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x7.0000000000004p0) == 7.2000000000000119762397445457359071259652e+02":
+double: 4
+idouble: 4
+Test "tgamma (0x7.000008p0) == 7.2000064296977505705636258629805621178587e+02":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (0x7.fffff8p0) == 5.0399951558933225045148935487583089307135e+03":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "tgamma (0x7.ffffffffffffcp0) == 5.0399999999999909771437166339103165198442e+03":
+double: 2
+idouble: 2
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x7.fffffffffffffffffffffffffffcp0) == 5.0399999999999999999999999999999921739197e+03":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x8.0000000000000000000000000008p0) == 5.0400000000000000000000000000000156521606e+03":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x8.0000000000008p0) == 5.0400000000000180457125667322294144477136e+03":
+ildouble: 1
+ldouble: 1
+Test "tgamma (0x8.00001p0) == 5.0400096882277802019946778420223050233915e+03":
+double: 2
+idouble: 2
+Test "tgamma (0xa.b9fd72b0fb238p+4) == 1.7976931348622298700886249281842651388250e+308":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (0xa.b9fd72b0fb23a9ddbf0d3804f8p+4) == 1.7976931348623158079372897140599422519044e+308":
+ildouble: 2
+ldouble: 2
+Test "tgamma (10) == 362880":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (18.5) == 1.4986120533153361177371791123515513270334e+15":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (19.5) == 2.7724322986333718178137813578503699550119e+16":
+double: 2
+idouble: 2
+ildouble: 1
+ldouble: 1
+Test "tgamma (2.5) == 1.3293403881791370204736256125058588870982e+00":
+float: 2
+ifloat: 2
+Test "tgamma (23.5) == 5.3613035875444147334274983856108155717836e+21":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (29.5) == 1.6348125198274266444378807806868221866931e+30":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (3) == 2":
+float: 1
+ifloat: 1
+Test "tgamma (3.5) == 3.3233509704478425511840640312646472177454e+00":
+float: 2
+ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "tgamma (30.5) == 4.8226969334909086010917483030261254507447e+31":
+float: 1
+ifloat: 1
+Test "tgamma (32.5) == 4.6334060788513904384988971821323500268029e+34":
+ildouble: 1
+ldouble: 1
+Test "tgamma (33.5) == 1.5058569756267018925121415841930137587110e+36":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (34.5) == 5.0446208683494513399156743070465960916817e+37":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
Test "tgamma (4) == 6":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "tgamma (4.5) == 1.1631728396567448929144224109426265262109e+01":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (6) == 120":
+float: 1
+ifloat: 1
+Test "tgamma (6.5) == 2.8788527781504436099631954670830006523720e+02":
+float: 1
+ifloat: 1
+Test "tgamma (7) == 720":
+double: 1
+idouble: 1
+Test "tgamma (7.5) == 1.8712543057977883464760770536039504240418e+03":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "tgamma (8) == 5040":
+double: 1
+idouble: 1
+Test "tgamma (8.5) == 1.4034407293483412598570577902029628180313e+04":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (9) == 40320":
+double: 1
+idouble: 1
+Test "tgamma (9.5) == 1.1929246199460900708784991216725183953266e+05":
+double: 1
+idouble: 1
ildouble: 1
ldouble: 1
@@ -9224,12 +10071,12 @@
ldouble: 1
Function: "tgamma":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
+ildouble: 4
+ldouble: 4
Function: "y0":
double: 2
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits