home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / elan / demo / sine.eln < prev    next >
Text File  |  1987-09-02  |  1KB  |  68 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 (sin (x));
  42.     put (sine (x));
  43.     put (sin (x) - sine (x));
  44.     line
  45.   ENDREP.
  46.  
  47. speedtest:
  48.   REAL VAR x;
  49.   INT VAR mx;
  50.   put ("How many times? ");
  51.   get (mx);
  52.   line;
  53.   INT CONST dummy :: exectime;
  54.   UPTO mx
  55.   REP
  56.     x := sin (1.2);
  57.     put ("+")
  58.   ENDREP;
  59.   put (exectime);
  60.   line;
  61.   UPTO mx
  62.   REP
  63.     x := sine (1.2);
  64.     put ("-")
  65.   ENDREP;
  66.   put (exectime).
  67.  
  68.