The Fibonacci sequence is defined by

One characteristic of the sequence is that the ratio tends to the Golden Ration

We want to write a program that computes the first 50 terms in the Fibonacci sequence; at each step we check whether the above ratio is sufficiently close to the Golden Ratio; and if it is, we print a message and end the computations.

The implementation follows.

PROGRAM fibonacci ! implicit none real :: x0=1.0, x1=1.0, x2 real :: ratio, golden, tol=1.e-6 integer :: i, n_max=50 ! golden = (1.0+sqrt(5.0))/2.0 ! do i=2,n_max x2 = x0+x1 print *,"x",i," = ",x2 ratio = x2/x1 if ( abs(ratio-golden) .lt. tol ) then print *,"ratio did converge at i = ",i exit end if x0=x1; x1=x2 end do ! if ( i .gt. n_max ) then print *,"ratio did not converge, i = ",i end if ! end program fibonacci

During each sweep through the DO loop we compute and print
the new element in the
sequence, `x2`. Then, we calculate the `x2/x1` `ratio`,
and compare it to the golden ration; if they are suffieciently close
we exit the loop. If the loop is terminated normally, the counter is
`n_max+1`, and in this case the ratio did not converge.
At the end of each sweep we prepare for the next iteration
by assigning `x1, x2` to `x0,x1).
`

Adrian Sandu 2001-08-26