static unsigned int prescale(unsigned int n) { if(n <= 4095) { return 0; } n = (n * 16)/65536; if (!isPowerOfTwo(n)) { n = nearestPowerOf2(n); } return (Log2n(n) + 1); }
unsigned int Log2n(unsigned int n) { return (n > 1)? 1 + Log2n(n/2): 0; }
int findPosition(unsigned n) { if (!isPowerOfTwo(n)) return -1; return Log2n(n) + 1; }