aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754/flt-32/e_logf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/flt-32/e_logf.c')
-rw-r--r--sysdeps/ieee754/flt-32/e_logf.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sysdeps/ieee754/flt-32/e_logf.c b/sysdeps/ieee754/flt-32/e_logf.c
index 6a595cf..7837650 100644
--- a/sysdeps/ieee754/flt-32/e_logf.c
+++ b/sysdeps/ieee754/flt-32/e_logf.c
@@ -39,8 +39,7 @@ Relative error: 1.957 * 2^-26 (before rounding.)
float
__logf (float x)
{
- /* double_t for better performance on targets with FLT_EVAL_METHOD==2. */
- double_t z, r, r2, y, y0, invc, logc;
+ double z, r, r2, y, y0, invc, logc;
uint32_t ix, iz, tmp;
int k, i;
@@ -70,14 +69,14 @@ __logf (float x)
tmp = ix - OFF;
i = (tmp >> (23 - LOGF_TABLE_BITS)) % N;
k = (int32_t) tmp >> 23; /* arithmetic shift */
- iz = ix - (tmp & 0x1ff << 23);
+ iz = ix - (tmp & 0xff800000);
invc = T[i].invc;
logc = T[i].logc;
- z = (double_t) asfloat (iz);
+ z = asfloat (iz);
/* log(x) = log1p(z/c-1) + log(c) + k*Ln2 */
r = z * invc - 1;
- y0 = logc + (double_t) k * Ln2;
+ y0 = logc + (double) k * Ln2;
/* Pipelined polynomial evaluation to approximate log1p(r). */
r2 = r * r;