[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/



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