The int32_t float word of M_PI_4 is 0x3f490fdb, not 0x3f490fd8.
Jan
On Sep 26 11:57:29, [email protected] wrote:
> On 2017-09-26 11:41 AM, Jan Stary wrote:
> > double 0.785398, high word 0x3fe921fb
> > float 0.785398, float word 0x3f490fdb
> >
> > In case of double, it's exactly 0x3fe921fb.
> > But why then does s_sinf.c use 0x3f490fd8 instead of 0x3f490fdb?
> >
> Educated guess? Because 8 and upper-case B look alike when you've had too
> much beer or when you left your reading glasses in the car.
Index: s_sinf.c
===================================================================
RCS file: /cvs/src/lib/libm/src/s_sinf.c,v
retrieving revision 1.4
diff -u -p -r1.4 s_sinf.c
--- s_sinf.c 12 Sep 2016 19:47:02 -0000 1.4
+++ s_sinf.c 26 Sep 2017 22:42:26 -0000
@@ -26,7 +26,7 @@ sinf(float x)
/* |x| ~< pi/4 */
ix &= 0x7fffffff;
- if(ix <= 0x3f490fd8) return __kernel_sinf(x,z,0);
+ if(ix <= 0x3f490fdb) return __kernel_sinf(x,z,0);
/* sin(Inf or NaN) is NaN */
else if (ix>=0x7f800000) return x-x;
Index: s_cosf.c
===================================================================
RCS file: /cvs/src/lib/libm/src/s_cosf.c,v
retrieving revision 1.5
diff -u -p -r1.5 s_cosf.c
--- s_cosf.c 12 Sep 2016 19:47:02 -0000 1.5
+++ s_cosf.c 26 Sep 2017 22:42:26 -0000
@@ -26,7 +26,7 @@ cosf(float x)
/* |x| ~< pi/4 */
ix &= 0x7fffffff;
- if(ix <= 0x3f490fd8) return __kernel_cosf(x,z);
+ if(ix <= 0x3f490fdb) return __kernel_cosf(x,z);
/* cos(Inf or NaN) is NaN */
else if (ix>=0x7f800000) return x-x;