math: fix logb(-0.0) in downward rounding mode
authorSzabolcs Nagy <nsz@port70.net>
Mon, 2 Sep 2013 23:35:46 +0000 (23:35 +0000)
committerSzabolcs Nagy <nsz@port70.net>
Thu, 5 Sep 2013 11:30:07 +0000 (11:30 +0000)
use -1/(x*x) instead of -1/(x+0) to return -inf, -0+0 is -0 in
downward rounding mode

src/math/logb.c
src/math/logbf.c
src/math/logbl.c

index 624425a81165b219a973dee4c3d0f6cbe2c3c43c..7f8bdfae19f8ca0a85b611d38a73695ccf588e43 100644 (file)
@@ -1,4 +1,4 @@
-#include "libm.h"
+#include <math.h>
 
 /*
 special cases:
@@ -12,6 +12,6 @@ double logb(double x)
        if (!isfinite(x))
                return x * x;
        if (x == 0)
-               return -1/(x+0);
+               return -1/(x*x);
        return ilogb(x);
 }
index 950d35697bbe4abaa9a0ac83b70d5dbf6229359b..a0a0b5ed5be57de3e3ce05811af631f2ca88898a 100644 (file)
@@ -1,10 +1,10 @@
-#include "libm.h"
+#include <math.h>
 
 float logbf(float x)
 {
        if (!isfinite(x))
                return x * x;
        if (x == 0)
-               return -1/(x+0);
+               return -1/(x*x);
        return ilogbf(x);
 }
index f3850745812bcfdc797603502d188bf4245b9c10..962973a7b99bfffdcb2c1677a3c0b2ba5f87d357 100644 (file)
@@ -1,4 +1,4 @@
-#include "libm.h"
+#include <math.h>
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
 long double logbl(long double x)
 {
@@ -10,7 +10,7 @@ long double logbl(long double x)
        if (!isfinite(x))
                return x * x;
        if (x == 0)
-               return -1/(x+0);
+               return -1/(x*x);
        return ilogbl(x);
 }
 #endif