Subject: Re: PERL and NetBSD 1.3_ALPHA
To: None <giles@nemeton.com.au>
From: None <Havard.Eidnes@runit.sintef.no>
List: current-users
Date: 11/11/1997 15:15:14
Following up on my own e-mail:

> This particular problem is apparently caused by a bug somewhere
> in __ieee754_atan2 which is found in the libm.a object module
> e_atan2.o.

The only change between 1.2.1 and 1.3_ALPHA's e_atan2.c is this:

***************
*** 75,79 ****
           ((iy|((ly|-ly)>>31))>0x7ff00000))    /* x or y is NaN */
           return x+y;
!       if((hx-0x3ff00000|lx)==0) return atan(y);   /* x=1.0 */
        m = ((hy>>31)&1)|((hx>>30)&2);  /* 2*sign(x)+sign(y) */
  
--- 76,80 ----
           ((iy|((ly|-ly)>>31))>0x7ff00000))    /* x or y is NaN */
           return x+y;
!       if((hx-(0x3ff00000|lx))==0) return atan(y);   /* x=1.0 */
        m = ((hy>>31)&1)|((hx>>30)&2);  /* 2*sign(x)+sign(y) */
  
If instead I let "the offending line" be

      if(((hx-0x3ff00000)|lx)==0) return atan(y);   /* x=1.0 */

the same result as in 1.2.1 is achieved.

BTW, I get the 0.6947... results on both SunOS4/Sparc and
HP-PA1.1/HP-UX 10.20.

Regards,

- Havard