summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/powerpc/fpu/k_cosf.c5
-rw-r--r--sysdeps/powerpc/fpu/k_sinf.c5
3 files changed, 11 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 6cb9f2d30d..009e75ed17 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-06-01 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/fpu/k_cosf.c: Fix underflow generation.
+ * sysdeps/powerpc/fpu/k_sinf.c: Likewise.
+
2012-05-31 H.J. Lu <hongjiu.lu@intel.com>
[BZ #14117]
diff --git a/sysdeps/powerpc/fpu/k_cosf.c b/sysdeps/powerpc/fpu/k_cosf.c
index e2571d6802..d5668e3127 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 ab4561e65e..c8fb8ef81c 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;