X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Flogl.c;h=0c00a2b22857aaedc34d8f5a196a859461b9452b;hb=7ef6c64e210ac0979d7e8ac69bc5b5208c2405ab;hp=2b51412687ab09eaf3bc576a825e77ecce836aa3;hpb=2d4d7d9d00fe33b6f5291e00a30b6c1016775b74;p=gnulib.git diff --git a/lib/logl.c b/lib/logl.c index 2b5141268..0c00a2b22 100644 --- a/lib/logl.c +++ b/lib/logl.c @@ -18,6 +18,31 @@ /* Specification. */ #include +#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + +long double +logl (long double x) +{ + return log (x); +} + +#elif HAVE_LOGL + +long double +logl (long double x) +# undef logl +{ + /* Work around the OSF/1 5.1 bug. */ + if (x == 0.0L) + /* Return -Infinity. */ + return -1.0L / 0.0L; + return logl (x); +} + +#else + +/* Code based on glibc/sysdeps/ieee754/ldbl-128/e_logl.c. */ + /* logll.c * * Natural logarithm for 128-bit long double precision. @@ -122,7 +147,7 @@ static const long double logtbl[92] = { -2.7902661731604211834685052867305795169688E-4L, -1.2335696813916860754951146082826952093496E-4L, -3.0677461025892873184042490943581654591817E-5L, -#define ZERO logtbl[38] +# define ZERO logtbl[38] 0.0000000000000000000000000000000000000000E0L, -3.0359557945051052537099938863236321874198E-5L, -1.2081346403474584914595395755316412213151E-4L, @@ -185,7 +210,7 @@ static const long double ln2b = 1.4286068203094172321214581765680755001344E-6L; long double -logl(long double x) +logl (long double x) { long double z, y, w; long double t; @@ -215,7 +240,7 @@ logl(long double x) } /* Extract exponent and reduce domain to 0.703125 <= u < 1.40625 */ - x = frexpl(x, &e); + x = frexpl (x, &e); if (x < 0.703125L) { x += x; @@ -259,3 +284,5 @@ logl(long double x) y += e * ln2a; return y; } + +#endif