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