Liste des Groupes | Revenir à cl c++ |
On Tue, 17 Dec 2024 12:54:19 -0800[...]
Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:
>Michael S <already5chosen@yahoo.com> writes:
>
>#include <stdio.h>>
#include <stdlib.h>
#include <intrin.h>
>
static long long fib(long n)
{
if (fib <= 0)
return 0;
long long f0 = 0, f1 = 1;
for (long i = 1; i < n; ++i) {
long long f2 = f0 + f1;
f0 = f1;
f1 = f2;
}
return f1;
}
Here is my second fastest fibonacci calculation code (for
relatively small inputs):
>
typedef long unsigned long ULL;
>
ULL
fibonacci( unsigned n ){
ULL b = n&1, a = b^1;
>
if( n & 2 ) a += b, b += a;
if( n & 4 ) a += b, b += a, a += b, b += a;
if( n & 8 ){
ULL na = 13*a+21*b, nb = 21*a+34*b;
a = na, b = nb;
}
>
n >>= 4;
while( n-- ){
ULL na = 610*a + 987*b, nb = 987*a + 1597*b;
a = na, b = nb;
}
>
return b;
}
From BigO perspective this code looks like it's still O(n) so no
better than simple loop.
According to my measurement gear, in range 0 to 92 there are few
points where it is faster than simple loop, but in majority of
cases it is slower.
Les messages affichés proviennent d'usenet.