diff options
Diffstat (limited to 'src/math/logl.c')
-rw-r--r-- | src/math/logl.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/math/logl.c b/src/math/logl.c index ee7ca64a..ffd81038 100644 --- a/src/math/logl.c +++ b/src/math/logl.c @@ -119,8 +119,8 @@ long double logl(long double x) return x; if (x == INFINITY) return x; - if (x <= 0.0L) { - if (x == 0.0L) + if (x <= 0.0) { + if (x == 0.0) return -INFINITY; return NAN; } @@ -137,12 +137,12 @@ long double logl(long double x) if (e > 2 || e < -2) { if (x < SQRTH) { /* 2(2x-1)/(2x+1) */ e -= 1; - z = x - 0.5L; - y = 0.5L * z + 0.5L; + z = x - 0.5; + y = 0.5 * z + 0.5; } else { /* 2 (x-1)/(x+1) */ - z = x - 0.5L; - z -= 0.5L; - y = 0.5L * x + 0.5L; + z = x - 0.5; + z -= 0.5; + y = 0.5 * x + 0.5; } x = z / y; z = x*x; @@ -156,14 +156,14 @@ long double logl(long double x) /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */ if (x < SQRTH) { e -= 1; - x = ldexpl(x, 1) - 1.0L; /* 2x - 1 */ + x = 2.0*x - 1.0; } else { - x = x - 1.0L; + x = x - 1.0; } z = x*x; y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 6)); y = y + e * C2; - z = y - ldexpl(z, -1); /* y - 0.5 * z */ + z = y - 0.5*z; /* Note, the sum of above terms does not exceed x/4, * so it contributes at most about 1/4 lsb to the error. */ |