home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / developm / language / elan.sit / rat / RATXAMPL.E < prev    next >
Encoding:
Text File  |  1988-11-09  |  1.6 KB  |  88 lines

  1.  
  2. TYPE RAT = STRUCT (INT denom, nomin);
  3.  
  4. program:
  5.   put ("Some applications of rational arithmetic.");
  6.   INT VAR i;
  7.   RAT VAR x;
  8.   golden ratio;
  9.   computing e;
  10.   square root;
  11.   sum of reciprocal numbers.
  12.  
  13.   golden ratio:
  14.     line (3);
  15.     put ("Computing the golden ratio.");
  16.     line;
  17.     x := one;
  18.     FOR i FROM 1 UPTO 40
  19.     REP
  20.       x := one + RECIP x;
  21.       line;
  22.       put (i);
  23.       put val (x);
  24.       put (x)
  25.     ENDREP;
  26.     line;
  27.     put ("real ====>");
  28.     put ((1.0 + sqrt (5.0)) / 2.0).
  29.   
  30.   computing e:
  31.     line (3);
  32.     put ("Computing e as a sum of reciprocal factorials.");
  33.     line;
  34.     RAT VAR e sum :: one;
  35.     RAT VAR fact :: one;
  36.     FOR i UPTO 8
  37.     REP
  38.       line;
  39.       put (i);
  40.       fact := fact * fract (1, i);
  41.       e sum := e sum + fact;
  42.       put val (e sum);
  43.       put (e sum)
  44.     ENDREP;
  45.     line;
  46.     put ("real  ====>");
  47.     put (e).
  48.   
  49.   square root:
  50.     RAT VAR arg;
  51.     line (2);
  52.     put ("Computing the square root of a rational number.");
  53.     line;
  54.     put ("please give nominator and denominator: ");
  55.     get (arg);
  56.     line;
  57.     put ("   =====>  ");
  58.     put val (arg);
  59.     put (arg);
  60.     x := zero;
  61.     RAT CONST a1 :: arg - one;
  62.     FOR i FROM 1 UPTO 15
  63.     REP
  64.       x := a1 / (one + one + x);
  65.       line;
  66.       put (i);
  67.       put val (one + x);
  68.       put (one + x)
  69.     ENDREP;
  70.     line;
  71.     put (" real=====>");
  72.     put (sqrt (real (arg))).
  73.   
  74.   sum of reciprocal numbers:
  75.     line (3);
  76.     put ("Summing reciprocal numbers.");
  77.     line;
  78.     RAT VAR sum :: zero;
  79.     FOR i UPTO 19
  80.     REP
  81.       line;
  82.       put (i);
  83.       sum := sum + fract (1, i);
  84.       put val (sum);
  85.       put (sum)
  86.     ENDREP.
  87.   
  88.