home *** CD-ROM | disk | FTP | other *** search
-
- TYPE RAT = STRUCT (INT denom, nomin);
-
- program:
- put ("Some applications of rational arithmetic.");
- INT VAR i;
- RAT VAR x;
- golden ratio;
- computing e;
- square root;
- sum of reciprocal numbers.
-
- golden ratio:
- line (3);
- put ("Computing the golden ratio.");
- line;
- x := one;
- FOR i FROM 1 UPTO 40
- REP
- x := one + RECIP x;
- line;
- put (i);
- put val (x);
- put (x)
- ENDREP;
- line;
- put ("real ====>");
- put ((1.0 + sqrt (5.0)) / 2.0).
-
- computing e:
- line (3);
- put ("Computing e as a sum of reciprocal factorials.");
- line;
- RAT VAR e sum :: one;
- RAT VAR fact :: one;
- FOR i UPTO 8
- REP
- line;
- put (i);
- fact := fact * fract (1, i);
- e sum := e sum + fact;
- put val (e sum);
- put (e sum)
- ENDREP;
- line;
- put ("real ====>");
- put (e).
-
- square root:
- RAT VAR arg;
- line (2);
- put ("Computing the square root of a rational number.");
- line;
- put ("please give nominator and denominator: ");
- get (arg);
- line;
- put (" =====> ");
- put val (arg);
- put (arg);
- x := zero;
- RAT CONST a1 :: arg - one;
- FOR i FROM 1 UPTO 15
- REP
- x := a1 / (one + one + x);
- line;
- put (i);
- put val (one + x);
- put (one + x)
- ENDREP;
- line;
- put (" real=====>");
- put (sqrt (real (arg))).
-
- sum of reciprocal numbers:
- line (3);
- put ("Summing reciprocal numbers.");
- line;
- RAT VAR sum :: zero;
- FOR i UPTO 19
- REP
- line;
- put (i);
- sum := sum + fract (1, i);
- put val (sum);
- put (sum)
- ENDREP.
-