1 #include <math.h>
2 
3 /*
4 special cases:
5         logb(+-0) = -inf, and raise divbyzero
6         logb(+-inf) = +inf
7         logb(nan) = nan
8 */
9 
logb(double x)10 double logb(double x) {
11     if (!isfinite(x))
12         return x * x;
13     if (x == 0)
14         return -1 / (x * x);
15     return ilogb(x);
16 }
17