X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Fexpl.c;h=b289ffece062140d074c94396d5e8cb62ea2c535;hb=3bb6bd85808ace7b588d1c523bb7badfd9e72650;hp=898cf1a54ee5380026dc6e9470612ff13ea73001;hpb=b69f695acedd4ce2798ef9ea28d834ceccc789bd;p=musl diff --git a/src/math/expl.c b/src/math/expl.c index 898cf1a5..b289ffec 100644 --- a/src/math/expl.c +++ b/src/math/expl.c @@ -74,12 +74,12 @@ long double expl(long double x) } #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 -static long double P[3] = { +static const long double P[3] = { 1.2617719307481059087798E-4L, 3.0299440770744196129956E-2L, 9.9999999999999999991025E-1L, }; -static long double Q[4] = { +static const long double Q[4] = { 3.0019850513866445504159E-6L, 2.5244834034968410419224E-3L, 2.2726554820815502876593E-1L, @@ -102,13 +102,13 @@ long double expl(long double x) if (x > MAXLOGL) return INFINITY; if (x < MINLOGL) - return 0.0L; + return 0.0; /* Express e**x = e**g 2**n * = e**g e**(n loge(2)) * = e**(g + n loge(2)) */ - px = floorl(LOG2EL * x + 0.5L); /* floor() truncates toward -infinity. */ + px = floorl(LOG2EL * x + 0.5); /* floor() truncates toward -infinity. */ n = px; x -= px * C1; x -= px * C2; @@ -120,8 +120,8 @@ long double expl(long double x) xx = x * x; px = x * __polevll(xx, P, 2); x = px/(__polevll(xx, Q, 3) - px); - x = 1.0L + ldexpl(x, 1); - x = ldexpl(x, n); + x = 1.0 + 2.0 * x; + x = scalbnl(x, n); return x; } #endif