Mok-Kong Shen wrote: > > I like to compute log base 2 of a fairly large integer n but > with math.log(n,2) I got: > > OverflowError: long int too large to convert to float. > > Is there any feasible work-around for that?
If you want the integer log2, that is, the floor of log2, the simplest way is calculate it like this: def log2(n): """Return the floor of log2(n).""" if n <= 0: raise ValueError i = -1 while n: n //= 2 i += 1 return i log2(511) => returns 8 log2(512) => returns 9 log2(513) => returns 9 Does that help? -- Steven -- https://mail.python.org/mailman/listinfo/python-list