X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Flog10l.c;h=c7aacf909a45156d1f60513f60ee237ad36e8272;hb=7acbbdfd5d6e264dcf8efa13188f0c8edabee047;hp=b954cc7773116f8c7ba192d595cde0aa103ff84c;hpb=9e2a895aaaa4a3985e94ae4f3e24c1af65f9bb34;p=musl diff --git a/src/math/log10l.c b/src/math/log10l.c index b954cc77..c7aacf90 100644 --- a/src/math/log10l.c +++ b/src/math/log10l.c @@ -117,16 +117,15 @@ static const long double S[4] = { long double log10l(long double x) { - long double y; - volatile long double z; + long double y, z; int e; if (isnan(x)) return x; - if(x <= 0.0L) { - if(x == 0.0L) - return -1.0L / (x - x); - return (x - x) / (x - x); + if(x <= 0.0) { + if(x == 0.0) + return -1.0 / (x*x); + return (x - x) / 0.0; } if (x == INFINITY) return INFINITY; @@ -142,12 +141,12 @@ long double log10l(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; @@ -158,13 +157,13 @@ long double log10l(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, 7)); - y = y - ldexpl(z, -1); /* -0.5x^2 + ... */ + y = y - 0.5*z; done: /* Multiply log of fraction by log10(e)