From: John Tapsell Date: Tue, 17 Feb 2009 15:36:03 GMT Subject: Re: [PATCH] rev-list: estimate number of bisection step left Message-ID: <43d8ce650902170736h6316f987qc783edeebf488b40@mail.gmail.com> In-Reply-To: 2009/2/17 Johannes Schindelin : > Hi, > > On Tue, 17 Feb 2009, John Tapsell wrote: > >> 2009/2/17 Johannes Schindelin : >> >> > 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 >