/* * Calculate Fibonacci numbers using analytic expression * * F[n] = 1./sqrt(5.) * ( ((1. + sqrt(5.))/2)^n - ((1. - sqrt(5.))/2)^n ) * * To compile: * * make fib2 * * or * * gcc -O0 fib2.c -o fib2 * * or * * clang -O0 fib2.c -o fib2 */ #include #include double fibonacci(int); int main(void) { int n = 1474; double ff; ff = fibonacci(n); printf("%d %g\n", n, ff); return 0; } double fibonacci(int n) { double x = sqrt(5.); return 1./x*(pow((1.+ x)/2, n) - pow((1. - x)/2, n)); }