/** Print ascending members of the Fibonacci sequence that are
representable as 64-bit signed integers, prefixed by their term
numbers, and followed by the ratio of successive terms, to
demonstrate the 1.618...^n growth (the ratio approaches the golden
ratio, (1 + sqrt(5))/2 = 1.6180339887498949, and reaches it (to
machine precision) at 41 terms: the fourth item on each line is
the difference from the golden ratio). */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int
main(void)
{
    long long lo = 1LL;
    long long hi = 1LL;
    long long n = 1LL;
    double ratio;
    double golden_ratio = (1.0 + sqrt(5.0))/2.0;

    (void)printf("%2lld\t%19lld\n", n, lo);

    while (hi > 0LL)
    {
	n++;
	ratio = (double)hi/(double)lo;
	(void)printf("%2lld\t%19lld\t%19.15f\t%19.15f\n",
		     n, hi, ratio, (ratio - golden_ratio));
	hi = lo + hi;
	lo = hi - lo;
    }
    return (EXIT_SUCCESS);
}
