diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-06-08 03:08:45 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-06-08 03:08:45 +0000 |
commit | 7e3706ea254afe6f4a5f5bf4047d0d9967ce1207 (patch) | |
tree | dd2f50353b36cf3dc3c52c5c4aa9e6c3b1c80728 /stdio-common | |
parent | 835abc5c0dfd1ba8aabeb52d46793b13702c708b (diff) | |
download | glibc-7e3706ea254afe6f4a5f5bf4047d0d9967ce1207.tar glibc-7e3706ea254afe6f4a5f5bf4047d0d9967ce1207.tar.gz glibc-7e3706ea254afe6f4a5f5bf4047d0d9967ce1207.tar.bz2 glibc-7e3706ea254afe6f4a5f5bf4047d0d9967ce1207.zip |
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (nextafterl): Remove
unused ily variable. Fix nextafterl on +-__LDBL_MAX__ and +-Inf.
Remove unreachable code at the end.
2007-06-01 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c: Correct description of
ldbl-128ibm in comment.
(fpclassifyl): Correct classification of denormals.
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (nextafterl): Correct
return value for MIN denormal. Rewrite using long double math too
correctly handle denormals and canonicalize the results.
2007-06-05 Jakub Jelinek <jakub@redhat.com>
* sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c
(__mpn_construct_long_double): Fix conversion where result ought
to be smaller than __LDBL_MIN__, or the low double should be
denormal. Fix decision where to negate low double - honor round
to even rules.
* stdio-common/tst-sprintf2.c: Include string.h.
(COMPARE_LDBL): Define.
(TEST): Also test whether a string hexadecimal float representation
can be parsed back to the number.
(main): Add a couple of further tests.
2007-06-04 Jakub Jelinek <jakub@redhat.com>
Diffstat (limited to 'stdio-common')
-rw-r--r-- | stdio-common/tst-sprintf2.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/stdio-common/tst-sprintf2.c b/stdio-common/tst-sprintf2.c index 9024b58782..debb68e21f 100644 --- a/stdio-common/tst-sprintf2.c +++ b/stdio-common/tst-sprintf2.c @@ -1,14 +1,22 @@ #include <float.h> #include <math.h> #include <stdio.h> +#include <string.h> int main (void) { - volatile union { long double l; long long x[2]; } u; + volatile union { long double l; long long x[2]; } u, v; char buf[64]; int result = 0; +#if LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 113 +# define COMPARE_LDBL(u, v) \ + ((u).l == (v).l && (u).x[0] == (v).x[0] && (u).x[1] == (v).x[1]) +#else +# define COMPARE_LDBL(u, v) ((u).l == (v).l) +#endif + #define TEST(val) \ do \ { \ @@ -19,6 +27,12 @@ main (void) printf ("Error on line %d: %s != %s\n", __LINE__, buf, #val); \ result = 1; \ } \ + if (sscanf (#val, "%La", &v.l) != 1 || !COMPARE_LDBL (u, v)) \ + { \ + printf ("Error sscanf on line %d: %La != %La\n", __LINE__, \ + u.l, v.l); \ + result = 1; \ + } \ /* printf ("%s %La %016Lx %016Lx\n", #val, u.l, u.x[0], u.x[1]); */ \ } \ while (0) @@ -54,6 +68,15 @@ main (void) TEST (0x1.23456789abcdef123456789abc8p+64L); TEST (0x1.23456789abcde7123456789abc8p+64L); TEST (0x1.123456789abcdef123456789p-969L); +# if LDBL_MANT_DIG == 106 + TEST (-0x1.2d71957cc1263bbbeb1d365f1e8p-969L); + TEST (0x1.23456789abcdef0123456789abp-970L); + TEST (0x1.579bde02468acp-1001L); + TEST (0x0.abcdef0123456p-1022L); + TEST (0x1.abcdef0123456p-1022L); + TEST (0x1.abcdef012345678p-1014L); + TEST (0x1.abcdef0123456f8p-1014L); +# endif #endif return result; } |