diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/powerpc/fpu/k_cosf.c | 5 | ||||
-rw-r--r-- | sysdeps/powerpc/fpu/k_sinf.c | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/sysdeps/powerpc/fpu/k_cosf.c b/sysdeps/powerpc/fpu/k_cosf.c index e2571d6..d5668e3 100644 --- a/sysdeps/powerpc/fpu/k_cosf.c +++ b/sysdeps/powerpc/fpu/k_cosf.c @@ -18,6 +18,7 @@ not, see <http://www.gnu.org/licenses/>. */ #include <math.h> +#include <fenv.h> #include <math_private.h> static const float twom27 = 7.4505806e-09; @@ -40,8 +41,8 @@ __kernel_cosf (float x, float y) ix = __builtin_fabsf (x); if (ix < twom27) { /* |x| < 2**-27 */ - if (x == 0.0) - return one; + __feraiseexcept (FE_INEXACT); + return one; } z = x * x; r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * C6))))); diff --git a/sysdeps/powerpc/fpu/k_sinf.c b/sysdeps/powerpc/fpu/k_sinf.c index ab4561e..c8fb8ef 100644 --- a/sysdeps/powerpc/fpu/k_sinf.c +++ b/sysdeps/powerpc/fpu/k_sinf.c @@ -18,6 +18,7 @@ not, see <http://www.gnu.org/licenses/>. */ #include <math.h> +#include <fenv.h> #include <math_private.h> @@ -39,8 +40,8 @@ __kernel_sinf (float x, float y, int iy) ix = __builtin_fabsf (x); if (ix < twom27) { /* |x| < 2**-27 */ - if (x == 0.0) - return x; + __feraiseexcept (FE_INEXACT); + return x; } z = x * x; v = z * x; |