C FFT45.FTN C A FAST-FOURIER TRANSFORM SUBROUTINE, AND A C MAIN PROGRAM TO CALL IT. (CUSTOMER-SUPPLIED) C COMMON DATA(512) C C COMMON WHICH REFERENCES LOGICAL UNIT ASSIGNMENTS C COMMON /LUNS/ ICRD,ILPT,IKBD,ITTY C F=8.0 C C WRITE(ITTY, 83) 83 FORMAT('BENCHMARK - FFT45 * 10') WRITE(ITTY,1000) 1000 FORMAT(' TO COMPARE TO PREVIOUS RESULTS DIVIDE SECS BY 10') C ***** BEGINNING OF TIMED INTERVAL ***** CALL TIMRB C ***** ***** C C ************PREVIOUS VERSION OF PROGRAM: DO 1492 KEND=1,10****** DO 1492 KEND=1,100 DO 10 J=1,512,2 DATA(J)=SIN(3.14159*FLOAT(J)/F) 10 DATA(J+1)=0.0 CALL FOUR1(256,-1) I=-1 DO 21 J=1,256,2 I=I+1 C=SQRT(DATA(J)**2+DATA(J+1)**2) IF (C.LT.2.0) GOTO 21 IF (KEND.NE.10) GOTO 21 C20 WRITE(ITTY,73) I,C 21 CONTINUE 73 FORMAT(I4,G 17.10) 1492 CONTINUE C C ***** END OF TIMED INTERVAL ***** CALL TIMRE C ***** ***** C STOP END SUBROUTINE FOUR1(NN,ISIGN) COMMON DATA(512) N=2*NN J=1 DO 5 I=1,N,2 IF(I-J)1,2,2 1 TEMPR=DATA(J) TEMPI=DATA(J+1) DATA(J)=DATA(I) DATA(J+1)=DATA(I+1) DATA(I)=TEMPR DATA(I+1)=TEMPI 2 M=N/2 3 IF(J-M)5,5,4 4 J=J-M M=M/2 IF(M-2)5,3,3 5 J=J+M MMAX=2 6 IF(MMAX-N)7,9,9 7 ISTEP=2*MMAX DO 8 M=1,MMAX,2 THETA=3.1415926*FLOAT(ISIGN*(M-1))/FLOAT(MMAX) WR=COS(THETA) WI=SIN(THETA) DO 8 I=M,N,ISTEP J=I+MMAX TEMPR=WR*DATA(J)-WI*DATA(J+1) TEMPI=WR*DATA(J+1)+WI*DATA(J) DATA(J)=DATA(I)-TEMPR DATA(J+1)=DATA(I+1)-TEMPI DATA(I)=DATA(I)+TEMPR 8 DATA(I+1)=DATA(I+1)+TEMPI MMAX=ISTEP GOTO6 9 RETURN END