Browse Source

math: fix logb(-0.0) in downward rounding mode

use -1/(x*x) instead of -1/(x+0) to return -inf, -0+0 is -0 in
downward rounding mode
Szabolcs Nagy 11 years ago
parent
commit
98be442ee8
3 changed files with 6 additions and 6 deletions
  1. 2 2
      src/math/logb.c
  2. 2 2
      src/math/logbf.c
  3. 2 2
      src/math/logbl.c

+ 2 - 2
src/math/logb.c

@@ -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);
 }

+ 2 - 2
src/math/logbf.c

@@ -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);
 }

+ 2 - 2
src/math/logbl.c

@@ -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