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