can multi-core improve single funciton?

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Tue Feb 10 17:26:39 EST 2009


On Tue, 10 Feb 2009 02:05:35 -0800, Niklas Norrthon wrote:

> According to the common definition of fibonacci numbers fib(0) = 0, fib
> (1) = 1 and fib(n) = fib(n-1) + fib(n-2) for n > 1. So the number above
> is fib(501).

So it is. Oops, off by one error!

Or, if you prefer, it's the right algorithm for a Lucas sequence with 
first two values 1 and 1 instead of 0 and 1. :)



>>>> timeit.Timer('fib(500)', 'from __main__ import fib').timeit(1)
>>
>> 0.00083398818969726562
> 
> And now for my version (which admitedly isn't really mine, and returns
> slightly incorrect fib(n) for large values of n, due to the limited
> floating point precision).

The floating point version is nice, but it starts giving incorrect 
answers relatively early, from n=71. But if you don't need accurate 
results (a relative error of 3e-15 for n=71), it is very fast.



-- 
Steven



More information about the Python-list mailing list