diff options
Diffstat (limited to 'lib/msun/src/s_sin.c')
| -rw-r--r-- | lib/msun/src/s_sin.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/msun/src/s_sin.c b/lib/msun/src/s_sin.c index 4d3b9d50cb9a..af9ee628b016 100644 --- a/lib/msun/src/s_sin.c +++ b/lib/msun/src/s_sin.c @@ -59,7 +59,11 @@ sin(double x) /* |x| ~< pi/4 */ ix &= 0x7fffffff; - if(ix <= 0x3fe921fb) return __kernel_sin(x,z,0); + if(ix <= 0x3fe921fb) { + if(ix<0x3e400000) /* |x| < 2**-27 */ + {if((int)x==0) return x;} /* generate inexact */ + return __kernel_sin(x,z,0); + } /* sin(Inf or NaN) is NaN */ else if (ix>=0x7ff00000) return x-x; |
