home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 02 / fftest.mod < prev    next >
Text File  |  1987-12-09  |  2KB  |  66 lines

  1. MODULE FFTTest; 
  2. (* (C) M. Kowalik & PASCAL INTERNATIONAL *)
  3. (*       Aladin ETH Modula-2             *)
  4.  
  5. FROM SYSTEM       IMPORT PROCESS;
  6. FROM OutTerminal  IMPORT WriteC;
  7. FROM Terminal     IMPORT Write, WriteString, 
  8.                          WriteLn, ClearTerminal;
  9. FROM RealTerminal IMPORT WriteR, RFixed;
  10. FROM Fourier      IMPORT Interpolation, RungeFaltung, DFT, FFT;
  11.  
  12. CONST N  = 512;  (* max number of points *)
  13.       NN = N - 1;
  14.       p  = N DIV 2;
  15.       L  = 4;
  16.       tim=16cH;   (* 60 tics per second timer addres *)
  17.                   (* for Aladin {Mac as well}        *)
  18.       
  19. TYPE Field = ARRAY [0..NN] OF REAL;
  20.  
  21. VAR
  22.     i                           : CARDINAL;
  23.     t                           : REAL;
  24.     x, y, A, B                  : Field;
  25.     a                           : ARRAY [0..p] OF REAL;
  26.     b                           : ARRAY [1..p] OF REAL;
  27.     Start, Stop, s[tim], z[tim] : CARDINAL;
  28.   
  29. BEGIN
  30.   FOR i := 1 TO N - 1 DO
  31.     y[i] := -1.0 + (FLOAT(i) - 1.0)/FLOAT(N - 2)
  32.   END;
  33.  
  34.   ClearTerminal;
  35.   WriteString(' Fourier interpolation...'); WriteLn;
  36.   Start := s;
  37.   Interpolation(x, y, a, b);
  38.   Stop := z;
  39.   WriteString('Elapsed time in tics (1/60 s) =');
  40.   WriteC(Stop-Start,8);
  41.   WriteLn;
  42.  
  43.   WriteString(' Runge Faltung...'); WriteLn;
  44.   Start := s;
  45.   RungeFaltung(x, y, a, b);
  46.   Stop := z;
  47.   WriteString('Elapsed time in tics (1/60 s) =');
  48.   WriteC(Stop-Start,8);
  49.   WriteLn;
  50.  
  51.   WriteString(' Discrete Fourier Transformation...'); WriteLn;
  52.   Start := s;
  53.   DFT(x, y, a, b);
  54.   Stop := z;
  55.   WriteString('Elapsed time in tics (1/60 s) =');
  56.   WriteC(Stop-Start,8);
  57.   WriteLn;
  58.   WriteString(' Fast Fourier Transformation...'); WriteLn;
  59.   Start := s;
  60.   FFT(x, y, a, b);
  61.   Stop := z;
  62.   WriteString('Elapsed time in tics (1/60 s) =');
  63.   WriteC(Stop-Start,8);
  64.   WriteLn
  65. END FFTTest.
  66.