;;; This scheme version is for bigloo scheme, which follows more
;;; closely the language definition than GNU guile does. bigloo has
;;; the complex (do...) instead of (while ...), but lacks Scheme's
;;; (printf ...). Also, its integers are limited to 29 bits (3 less
;;; than C's int datatype), instead of expanding automatically, and
;;; transparently, into multiple-precision integers, as most other
;;; Scheme and Lisp implementations do.
(define GOLDEN-RATIO (/ (+ 1.0 (sqrt 5.0)) 2.0))
(define (Fibonacci)
"Print a table of representable Fibonacci sequence values."
(let ((hi 1)
(lo 1)
(n 1)
(ratio 0))
(write n)
(display " ")
(write lo)
(newline)
(do ()
((>= hi (expt 2 28))) ;loop exit condition
(set! n (+ 1 n))
(set! ratio (/ (exact->inexact hi) (exact->inexact lo)))
(write n)
(display " ")
(write hi)
(display " ")
(write ratio)
(display " ")
(write (- ratio GOLDEN-RATIO))
(newline)
(set! hi (+ lo hi))
(set! lo (- hi lo)))))
(Fibonacci)