summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-05-05 22:22:46 -0400
committerRich Felker <dalias@aerifal.cx>2012-05-05 22:22:46 -0400
commit98c9af500125df41fdb46d7e384b00982d72493a (patch)
treecb600f99ddc0748c9a579d298f4d6de49f9fb190 /include
parentb4ccc3c1361ca611d6590dd4af288fb9fa6a843b (diff)
downloadmusl-98c9af500125df41fdb46d7e384b00982d72493a.tar.gz
fix definitions of FP_ILOGB constants
two issues: (1) the type was wrong (unsigned instead of signed int), and (2) the value of FP_ILOGBNAN should be INT_MIN rather than INT_MAX to match the ABI. this is also much more useful since INT_MAX corresponds to a valid input (infinity). the standard would allow us to set FP_ILOGB0 to -INT_MAX instead of INT_MIN, which would give us distinct values for ilogb(0) and ilogb(NAN), but the benefit seems way too small to justify ignoring the ABI. note that the macro is just a "portable" (to any twos complement system where signed and unsigned int have the same width) way to write INT_MIN without needing limits.h. it's valid to use this method since these macros are not required to work in #if directives.
Diffstat (limited to 'include')
-rw-r--r--include/math.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/math.h b/include/math.h
index d4359f32..61738e6a 100644
--- a/include/math.h
+++ b/include/math.h
@@ -28,8 +28,8 @@ extern "C" {
#define MATH_ERREXCEPT 2
#define math_errhandling 2
-#define FP_ILOGBNAN (((unsigned)-1)>>1)
-#define FP_ILOGB0 (~FP_ILOGBNAN)
+#define FP_ILOGBNAN (-1-(int)(((unsigned)-1)>>1))
+#define FP_ILOGB0 FP_ILOGBNAN
#define FP_NAN 0
#define FP_INFINITE 1