xref: /aosp_15_r20/external/musl/src/math/logb.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
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 Worker double 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