summaryrefslogtreecommitdiff
path: root/libfixmath/uint32.c
blob: 2980ab90973955ea683f491beb9d69675c859d33 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "uint32.h"



uint32_t uint32_log2(uint32_t inVal) {
	if(inVal == 0)
		return 0;
	uint32_t tempOut = 0;
	if(inVal >= (1 << 16)) { inVal >>= 16; tempOut += 16; }
	if(inVal >= (1 <<  8)) { inVal >>=  8; tempOut +=  8; }
	if(inVal >= (1 <<  4)) { inVal >>=  4; tempOut +=  4; }
	if(inVal >= (1 <<  2)) { inVal >>=  2; tempOut +=  2; }
	if(inVal >= (1 <<  1)) {               tempOut +=  1; }
	return tempOut;
}