home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / elan1v5 / demo / sine.e < prev    next >
Encoding:
Text File  |  1989-03-10  |  1.2 KB  |  71 lines

  1.  
  2. REAL PROC sine (REAL CONST arg):
  3.   REAL CONST twopi :: 2.0 * pi;
  4.   REAL VAR x :: arg;
  5.   REAL VAR term :: x, sum :: 0.0, xsquared :: x * x;
  6.   INT VAR n :: 1;
  7.   reduce domain;
  8.   REP
  9.     REAL CONST old :: sum;
  10.     take next term
  11.   UNTIL sum = old
  12.   ENDREP;
  13.   sum.
  14.   
  15.   reduce domain:
  16.     IF x > pi
  17.     THEN
  18.       REP x DECR twopi
  19.       UNTIL x <= pi
  20.       ENDREP
  21.     ELIF x < - pi
  22.     THEN
  23.       REP x INCR twopi
  24.       UNTIL x >= - pi
  25.       ENDREP
  26.     FI.
  27.   
  28.   take next term:
  29.     sum INCR term;
  30.     n INCR 1;
  31.     term := - term * xsquared / real ((2 * n - 1) * (2 * n - 2)).
  32. ENDPROC sine;
  33.  
  34. program:
  35.   put ("    built in        programmed      difference");
  36.   line (2);
  37.   INT VAR i;
  38.   FOR i FROM 1 UPTO 15
  39.   REP
  40.     REAL CONST x :: pi * real (i) / 18.0;
  41.     put ("    ");
  42.     put (sin (x));
  43.     put ("    ");
  44.     put (sine (x));
  45.     put ("    ");
  46.     put (sin (x) - sine (x));
  47.     line
  48.   ENDREP.
  49.  
  50. speedtest:
  51.   REAL VAR x;
  52.   INT VAR mx;
  53.   put ("How many times? ");
  54.   get (mx);
  55.   line;
  56.   INT CONST dummy :: exectime;
  57.   UPTO mx
  58.   REP
  59.     x := sin (1.2);
  60.     put ("+")
  61.   ENDREP;
  62.   put (exectime);
  63.   line;
  64.   UPTO mx
  65.   REP
  66.     x := sine (1.2);
  67.     put ("-")
  68.   ENDREP;
  69.   put (exectime).
  70.