2009/2/17 Johannes Schindelin <Johannes.Schindelin@xxxxxx>: > Hi, > > On Tue, 17 Feb 2009, Christian Couder wrote: > >> +static int estimate_bisect_steps(int all) >> +{ >> + int log2 = 0; >> + int left = (all >> 1) - 1; >> + >> + if (left <= 0) >> + return 0; >> + >> + do { >> + left = left >> 1; >> + log2++; >> + } while (left); >> + >> + return log2; >> +} > > How about this instead, calling it from cmd_rev_list directly? > > static int log2(int n) > { > int log2; > > for (log2 = 0; n > 1; log2++) > n >>= 1; > > return log2; > } This would work, if you want a non-iterative solution unsigned int log2_integer_approximate(unsigned int n){ *((float*)&n) = (float)n; return ((n & (~((1<<23) - 1))) >> 23) - 127; } (It's correct up to 2^25, then it's off by 1 for a few.) > Ciao, > Dscho > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html