diff options
Diffstat (limited to 'lib/msun/src')
-rw-r--r-- | lib/msun/src/s_cosf.c | 13 | ||||
-rw-r--r-- | lib/msun/src/s_sinf.c | 13 | ||||
-rw-r--r-- | lib/msun/src/s_tanf.c | 19 |
3 files changed, 21 insertions, 24 deletions
diff --git a/lib/msun/src/s_cosf.c b/lib/msun/src/s_cosf.c index dd8a759..3a854b0 100644 --- a/lib/msun/src/s_cosf.c +++ b/lib/msun/src/s_cosf.c @@ -23,17 +23,16 @@ static char rcsid[] = "$FreeBSD$"; float cosf(float x) { - float y[2],z=0.0; + float y[2]; int32_t n,ix; GET_FLOAT_WORD(ix,x); - - /* |x| ~< pi/4 */ ix &= 0x7fffffff; - if(ix <= 0x3f490fd8) { - if(ix<0x39800000) /* if x < 2**-12 */ - if(((int)x)==0) return 1.0; /* generate inexact */ - return __kernel_cosf(x,z); + + if(ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ + if(ix<0x39800000) /* |x| < 2**-12 */ + if(((int)x)==0) return 1.0; /* 1 with inexact if x != 0 */ + return __kernel_cosf(x,0.0); } /* cos(Inf or NaN) is NaN */ diff --git a/lib/msun/src/s_sinf.c b/lib/msun/src/s_sinf.c index a2485e8..7ddb8b6 100644 --- a/lib/msun/src/s_sinf.c +++ b/lib/msun/src/s_sinf.c @@ -23,17 +23,16 @@ static char rcsid[] = "$FreeBSD$"; float sinf(float x) { - float y[2],z=0.0; + float y[2]; int32_t n, ix; GET_FLOAT_WORD(ix,x); - - /* |x| ~< pi/4 */ ix &= 0x7fffffff; - if(ix <= 0x3f490fd8) { - if(ix<0x39800000) /* if x < 2**-12 */ - if(((int)x)==0) return x; /* generate inexact */ - return __kernel_sinf(x,z,0); + + if(ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ + if(ix<0x39800000) /* |x| < 2**-12 */ + if(((int)x)==0) return x; /* x with inexact if x != 0 */ + return __kernel_sinf(x,0.0,0); } /* sin(Inf or NaN) is NaN */ diff --git a/lib/msun/src/s_tanf.c b/lib/msun/src/s_tanf.c index 81c84e4..7092226 100644 --- a/lib/msun/src/s_tanf.c +++ b/lib/msun/src/s_tanf.c @@ -23,26 +23,25 @@ static char rcsid[] = "$FreeBSD$"; float tanf(float x) { - float y[2],z=0.0; + float y[2]; int32_t n, ix; GET_FLOAT_WORD(ix,x); - - /* |x| ~< pi/4 */ ix &= 0x7fffffff; - if(ix <= 0x3f490fda) { - if(ix<0x39800000) /* |x| < 2**-12 */ - if(((int)x)==0) return x; /* generate inexact */ - return __kernel_tanf(x,z,1); + + if(ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ + if(ix<0x39800000) /* |x| < 2**-12 */ + if(((int)x)==0) return x; /* x with inexact if x != 0 */ + return __kernel_tanf(x,0.0,1); } /* tan(Inf or NaN) is NaN */ - else if (ix>=0x7f800000) return x-x; /* NaN */ + else if (ix>=0x7f800000) return x-x; /* argument reduction needed */ else { n = __ieee754_rem_pio2f(x,y); - return __kernel_tanf(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even - -1 -- n odd */ + /* integer parameter: 1 -- n even; -1 -- n odd */ + return __kernel_tanf(y[0],y[1],1-((n&1)<<1)); } } |