ldouble tests on sparc64o
Stephen L Moshier
moshier@mediaone.net
Tue Jul 10 05:08:00 GMT 2001
> Running the testsuite on sparc64, I get lots of serious failures while
> testing the long double functions (see below). Are these known
> problems or might this be a compiler bug in the handling of long
> doubles (I've tried gcc 2.96 RH)?
There is a bug in e_acosl.c. The patch below should fix it.
I have not been able to get the test suite to run in long double on a
32-bit solaris system. I have been slowly building a separate test
suite and missed that particular corner case.
I don't think the problems are compiler related.
The glibc test suite has known problems. For example it tests
asinh (0.7) == 0.652666566082355786
but that should really be.
asinh (6.9999999999999999999999999999999996148140E-1)
and the result should be
6.5266656608235578680868634410967586588673E-1
versus 6.52666566082355786809e-01
reported by the test. The precision of the given numbers
needs to be increased.
* sysdeps/ieee754/ldbl-128/e_acosl.c (__ieee754_acosl): Fix
backwards conditional in test for x == 1.0.
*** e_acosl.c 2001/05/27 14:01:14 1.5
--- e_acosl.c 2001/07/10 11:44:36
*************** __ieee754_acosl (x)
*** 162,168 ****
if (ix == 0x3fff0000
&& (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
{ /* |x| == 1 */
! if (sign & 0x80000000)
return 0.0; /* acos(1) = 0 */
else
return (2.0 * pio2_hi) + (2.0 * pio2_lo); /* acos(-1)= pi */
--- 162,168 ----
if (ix == 0x3fff0000
&& (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
{ /* |x| == 1 */
! if ((sign & 0x80000000) == 0)
return 0.0; /* acos(1) = 0 */
else
return (2.0 * pio2_hi) + (2.0 * pio2_lo); /* acos(-1)= pi */
More information about the Libc-alpha
mailing list