C C C * * * * * * * * * * * * * * * * * * * * * * C * * C * SUBROUTINE VRFFTF(M,N,R,RT,MDIMR,WSAVE) * C * * C * * * * * * * * * * * * * * * * * * * * * * C C C SUBROUTINE VRFFTF COMPUTES THE FOURIER COEFFICIENTS (FORWARD C TRANSFORM) OF A NUMBER OF REAL PERIODIC SEQUENCES. SPECIFICALLY, C FOR EACH SEQUENCE THE SUBROUTINE CALCULATES THE INDEPENDENT C FOURIER COEFFICIENTS DESCRIBED ABOVE. C C C INPUT PARAMETERS C C M THE NUMBER OF TRANSFORMS TO BE COMPUTED. C C N THE LENGTH OF THE TRANSFORMS. THE METHOD IS MOST C EFFICIENT WHEN N IS A PRODUCT OF SMALL PRIMES, HOWEVER N C MAY BE ANY POSITIVE INTEGER. C C R A REAL TWO-DIMENSIONAL ARRAY OF SIZE MDIMR X N THAT C CONTAINS THE SEQUENCES TO BE TRANSFORMED. THE I-TH C SEQUENCE TO BE TRANSFORMED, X(I,J), J=0,1,...,N-1, IS C STORED AS C C R(I,J) = X(I,J-1) , J=1, 2, . . . , N. C C RT A REAL TWO-DIMENSIONAL WORK ARRAY OF SIZE MDIMR X N. C C MDIMR THE ROW (OR FIRST) DIMENSION OF THE ARRAYS R AND RT AS C THEY APPEAR IN THE CALLING PROGRAM. THIS PARAMETER IS C USED TO SPECIFY THE VARIABLE DIMENSION OF THESE ARRAYS. C C WSAVE A REAL ONE-DIMENSIONAL WORK ARRAY THAT MUST BE DIMENSIONED C AT LEAST N+15. THE WSAVE ARRAY MUST BE INITIALIZED BY C CALLING SUBROUTINE VRFFTI. A DIFFERENT WSAVE ARRAY MUST C BE USED FOR EACH DIFFERENT VALUE OF N. THIS INITIALIZATION C DOES NOT HAVE TO BE REPEATED SO LONG AS N REMAINS C UNCHANGED. THE SAME WSAVE ARRAY CAN BE USED BY VRFFTF AND C VRFFTB. C C C OUTPUT PARAMETERS C C R CONTAINS THE FOURIER COEFFICIENTS F(K) DESCRIBED ABOVE C FOR EACH OF THE M INPUT SEQUENCES. SPECIFICALLY, ROW I C OF R, R(I,J), J=1,2,..,N, CONTAINS THE INDEPENDENT C FOURIER COEFFICIENTS F(I,K), FOR THE I-TH INPUT SEQUENCE C STORED AS C C R(I,1) = REAL( F(I,0) ), C = SQRT(1/N)*SUM(J=0,N-1)[ X(I,J) ], C C R(I,2*K) = REAL( F(I,K) ) C = SQRT(1/N)*SUM(J=0,N-1)[X(I,J)*COS(2J*K*PI/N)] C C R(I,2*K+1) = IMAG( F(I,K) ) C =-SQRT(1/N)*SUM(J=0,N-1)[X(I,J)*SIN(2J*K*PI/N)] C C FOR K = 1, 2, . . . , M-1, C C AND, WHEN N IS EVEN, C C R(I,N) = REAL( F(I,N/2) ). C = SQRT(1/N)*SUM(J=0,N-1)[ (-1)**J*X(I,J) ]. C C WSAVE CONTAINS RESULTS THAT MUST NOT BE DESTROYED BETWEEN C CALLS TO VRFFTF OR VRFFTB. C C C * * * * * * * * * * * * * * * * * * * * * C * * C * PROGRAM SPECIFICATIONS * C * * C * * * * * * * * * * * * * * * * * * * * * C C C C DIMENSION OF R(MDIMR,N), RT(MDIMR,N), WSAVE(N+15) C ARGUMENTS C C LATEST AUGUST 1, 1985 C REVISION C C SUBPROGRAMS VRFFTI, VRFTI1, VRFFTF, VRFTF1, VRADF2, VRADF3, C REQUIRED VRADF4, VRADF5, VRADFG, VRFFTB, VRFTB1, VRADB2, C VRADB3, VRADB4, VRADB5, VRADBG, PIMACH C C SPECIAL NONE C CONDITIONS C C COMMON NONE C BLOCKS C C I/O NONE C C PRECISION SINGLE C C SPECIALIST ROLAND SWEET C C LANGUAGE FORTRAN C C HISTORY WRITTEN BY LINDA LINDGREN AND ROLAND SWEET AT THE C NATIONAL BUREAU OF STANDARDS (BOULDER). C C ALGORITHM A REAL VARIANT OF THE STOCKHAM AUTOSORT VERSION C OF THE COOLEY-TUKEY FAST FOURIER TRANSFORM. C C PORTABILITY AMERICAN NATIONAL STANDARDS INSTITUTE FORTRAN 77. C THE ONLY MACHINE DEPENDENT CONSTANT IS LOCATED IN C THE FUNCTION PIMACH. C C REQUIRED COS,SIN C RESIDENT C ROUTINES C