home *** CD-ROM | disk | FTP | other *** search
- PROGRAM d12r2(input,output);
- (* driver for routine TWOFFT *)
- CONST
- n=32;
- n2=64; (* n2=2*n *)
- per=8;
- pi=3.1415926;
- TYPE
- glnarray = ARRAY [1..n] OF real;
- gl2narray = ARRAY [1..n2] OF real;
- gldarray = gl2narray;
- VAR
- i,isign : integer;
- data1,data2 : glnarray;
- fft1,fft2 : gl2narray;
-
- PROCEDURE prntft(data : gldarray; nn : integer);
- VAR
- ii,mm,n : integer;
- BEGIN
- writeln('n':4,'real(n)':13,'imag.(n)':13,'real(N-n)':12,'imag.(N-n)':13);
- writeln (0:4,data[1]:14:6,data[2]:12:6,data[1]:12:6,data[2]:12:6);
- mm := nn DIV 2;
- FOR ii := 1 to mm DO BEGIN
- n := 2*ii+1;
- writeln (((n-1) DIV 2):4,data[n]:14:6,data[n+1]:12:6,
- data[2*nn+2-n]:12:6,data[2*nn+3-n]:12:6)
- END;
- writeln (' press return to continue ...');
- readln
- END;
-
- (*$I MODFILE.PAS *)
- (*$I FOUR1.PAS *)
-
- (*$I TWOFFT.PAS *)
-
- BEGIN
- FOR i := 1 to n DO BEGIN
- data1[i] := round(cos(i*2.0*pi/per));
- data2[i] := round(sin(i*2.0*pi/per));
- END;
- twofft(data1,data2,fft1,fft2,n);
- writeln ('fourier transform of first function:');
- prntft(fft1,n);
- writeln ('fourier transform of second function:');
- prntft(fft2,n);
- (* invert transform *)
- isign := -1;
- four1(fft1,n,isign);
- writeln ('inverted transform = first function:');
- prntft(fft1,n);
- four1(fft2,n,isign);
- writeln ('inverted transform = second function:');
- prntft(fft2,n)
- END.
-