;;; This scheme version is for PLT Scheme's mzscheme, which follows
;;; more closely the language definition than GNU guile does.
;;; mzscheme has the complex (do...) instead of (while ...), but does
;;; have Scheme's (printf ...), albeit with an extremely limited set
;;; of format items, and no field width control.

(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))
    (printf "~a	~a~%" n lo)
    (do ()
	((>= hi (expt 2 63)))		;loop exit condition
	(set! n (+ 1 n))
	(set! ratio (/ (exact->inexact hi) (exact->inexact lo)))
	(printf "~a	~a	~a	~a~%" n hi ratio (- ratio GOLDEN-RATIO))
	(set! hi (+ lo hi))
	(set! lo (- hi lo)))))

(Fibonacci)
(exit)
