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