Re: [PATCH] rev-list: estimate number of bisection step left
2009/2/17 Johannes Schindelin <Johannes.Schindelin@gmx.de>:
Show 44 quoted lines
> Hi,
>
> On Tue, 17 Feb 2009, John Tapsell wrote:
>
>> 2009/2/17 Johannes Schindelin <Johannes.Schindelin@gmx.de>:
>>
>> > 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;
>> }
>
> That assumes that your floats are IEEE floats, right?Yeah. Is it a bad assumption? Does git run on any system in which they aren't?
>
> Ciao,
> Dscho
>