home *** CD-ROM | disk | FTP | other *** search
- PROGRAM d12r5(input,output);
- (* driver for routine COSFT *)
- LABEL 1,99;
- CONST
- eps=1.0e-3;
- np=16;
- np2=18; (* np2=np+2 *)
- width=30.0;
- pi=3.1415926;
- TYPE
- gldarray=ARRAY [1..np2] OF real;
- glyarray=gldarray;
- VAR
- big,per,scal,small : real;
- i,jj,j,nlim : integer;
- data,size : gldarray;
-
- (*$I MODFILE.PAS *)
- (*$I FOUR1.PAS *)
-
- (*$I REALFT.PAS *)
-
- (*$I COSFT.PAS *)
-
- BEGIN
- 1: writeln('period of cosine in channels (2-',np:2,')');
- readln(per);
- IF (per <= 0.0) THEN GOTO 99;
- FOR i := 1 to np DO BEGIN
- data[i] := cos(2.0*pi*(i-1)/per)
- END;
- cosft(data,np,+1);
- big := -1.0e10;
- small := 1.0e10;
- FOR i := 1 to np DO BEGIN
- IF (data[i] < small) THEN small := data[i];
- IF (data[i] > big) THEN big := data[i]
- END;
- scal := width/(big-small);
- FOR i := 1 to np DO BEGIN
- nlim := round(scal*(data[i]-small)+eps);
- write(i:4,' ');
- FOR j := 1 to nlim+1 DO write('*');
- writeln
- END;
- writeln('press RETURN to continue ...');
- readln;
- cosft(data,np,-1);
- big := -1.0e10;
- small := 1.0e10;
- FOR i := 1 to np DO BEGIN
- IF (data[i] < small) THEN small := data[i];
- IF (data[i] > big) THEN big := data[i]
- END;
- scal := width/(big-small);
- FOR i := 1 to np DO BEGIN
- nlim := round(scal*(data[i]-small)+eps);
- write(i:4,' ');
- FOR j := 1 to nlim+1 DO write('*');
- writeln
- END;
- GOTO 1;
- 99:
- END.
-