home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
LANGUAGS
/
MODULA2
/
FIBONACC.MOD
< prev
next >
Wrap
Text File
|
2000-06-30
|
797b
|
31 lines
(* Compute the Fibonacci numbers F(1) ... F(N) in two diff. ways:
1. By repeated addition according to F(n) = F(n-1) + F(n-2),
F(0) = F(1) = 1.
2. Using the formula F(n) ~ (phi^n)/sqrt(5),
where phi = (1+sqrt(5))/2.
Terminate as soon as the two results differ
(or before it overflows). *)
MODULE fibonacci;
FROM InOut IMPORT WriteCard, WriteLn;
CONST root5 = 2.236068;
VAR i,fib0,fib1,fib3,t: CARDINAL;
phi,fib2: REAL;
BEGIN
phi := (1.0 + root5)/2.0;
i := 0; fib0 := 1;
fib1 := 0; fib2 := 1.0/root5;
REPEAT
INC(i);
t := fib0 + fib1;
fib0 := fib1; fib1 := t;
fib2 := fib2 * phi;
fib3 := TRUNC(fib2 + 0.5);
WriteCard(i,6); WriteCard(fib1,6);
WriteCard(fib3,6); WriteLn;
UNTIL i >= 24; (*fib1 # fib3*)
END fibonacci.