summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/msun/src/s_exp2.c2
-rw-r--r--lib/msun/src/s_exp2f.c7
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/msun/src/s_exp2.c b/lib/msun/src/s_exp2.c
index 464e39c..56554f1 100644
--- a/lib/msun/src/s_exp2.c
+++ b/lib/msun/src/s_exp2.c
@@ -364,7 +364,7 @@ exp2(double x)
}
/* Reduce x, computing z, i0, and k. */
- t = x + redux;
+ STRICT_ASSIGN(double, t, x + redux);
GET_LOW_WORD(i0, t);
i0 += TBLSIZE / 2;
k = (i0 >> TBLBITS) << 20;
diff --git a/lib/msun/src/s_exp2f.c b/lib/msun/src/s_exp2f.c
index 0a6142f..db8542c 100644
--- a/lib/msun/src/s_exp2f.c
+++ b/lib/msun/src/s_exp2f.c
@@ -27,6 +27,8 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include <float.h>
+
#include "math.h"
#include "math_private.h"
@@ -91,8 +93,7 @@ float
exp2f(float x)
{
double tv;
- float r, z;
- volatile float t; /* prevent gcc from using too much precision */
+ float r, t, z;
uint32_t hx, hr, ix, i0;
int32_t k;
@@ -115,7 +116,7 @@ exp2f(float x)
}
/* Reduce x, computing z, i0, and k. */
- t = x + redux;
+ STRICT_ASSIGN(float, t, x + redux);
GET_FLOAT_WORD(i0, t);
i0 += TBLSIZE / 2;
k = (i0 >> TBLBITS) << 23;
OpenPOWER on IntegriCloud