X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fmath%2Flog1pl.c;h=edb48df1cd9c0ea5bdfb937f377654304651e4c4;hp=17eb4cef6f34a71ddfc063610bfeb41bfd3d7080;hb=8bb181622222f2ee3462c8b021bcae4fcdbbd37a;hpb=9e2a895aaaa4a3985e94ae4f3e24c1af65f9bb34 diff --git a/src/math/log1pl.c b/src/math/log1pl.c index 17eb4cef..edb48df1 100644 --- a/src/math/log1pl.c +++ b/src/math/log1pl.c @@ -46,11 +46,6 @@ * Relative error: * arithmetic domain # trials peak rms * IEEE -1.0, 9.0 100000 8.2e-20 2.5e-20 - * - * ERROR MESSAGES: - * - * log singularity: x-1 = 0; returns -INFINITY - * log domain: x-1 < 0; returns NAN */ #include "libm.h" @@ -118,13 +113,13 @@ long double log1pl(long double xm1) if (xm1 == 0.0) return xm1; - x = xm1 + 1.0L; + x = xm1 + 1.0; /* Test for domain errors. */ - if (x <= 0.0L) { - if (x == 0.0L) - return -INFINITY; - return NAN; + if (x <= 0.0) { + if (x == 0.0) + return -1/x; /* -inf with divbyzero */ + return 0/0.0f; /* nan with invalid */ } /* Separate mantissa from exponent. @@ -136,12 +131,12 @@ long double log1pl(long double xm1) 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,12 +151,12 @@ long double log1pl(long double xm1) if (x < SQRTH) { e -= 1; if (e != 0) - x = 2.0 * x - 1.0L; + x = 2.0 * x - 1.0; else x = xm1; } else { if (e != 0) - x = x - 1.0L; + x = x - 1.0; else x = xm1; }