D700: Real Fast Fourier Transform

Author(s): C. Iselin Library: MATHLIB
Submitter: Submitted: 04.09.1972
Language: Fortran Revised: 15.01.1977

Let the discrete Fourier transform be defined by

displaymath162

The subroutines of package RFT compute this transform or its inverse

displaymath164

for real functions, with the restriction that N is a power of 2.

Structure:

SUBROUTINE subprograms
User Entry Names: RFT, RCA, RPA, RPS, RSA
Internal Entry Names: D700SU
Files Referenced: Printer
COMMMON Block Names and Lengths: /D700DT/ 6, /FWORK/ 321

Usage:

CALL RFT(M,X,IX,Y,IY,MODE) or
CALL RCA(M,X,IX,Y,IY) or
CALL RPA(M,X,IX,Y,IY) or
CALL RPS(M,X,IX,Y,IY) or
CALL RSA(M,X,IX,Y,IY)
M
(INTEGER) Number m (such that tex2html_wrap_inline170 ) of input values (full period or half period).
X
(REAL) Input array. The input values are taken from tex2html_wrap_inline172 for tex2html_wrap_inline174 .
Y
(REAL) Output array. The results are stored in tex2html_wrap_inline176 for tex2html_wrap_inline178 .
MODE
(INTEGER) Selects the mode of operation for RFT as follows:
MODE = 1: Analysis of a general real function.
CALL RFT(M,X,IX,Y,IY,1) or
CALL RPA(M,X,IX,Y,IY)
assumes tex2html_wrap_inline180 to define a full period of the function to be analysed. The value tex2html_wrap_inline182 is ignored. The results are returned in the following order:
tex2html_wrap_inline184
tex2html_wrap_inline186 .
The other values in Y are not changed.

MODE = 4: Synthesis of a general real function.

CALL RFT(M,X,IX,Y,IY,4) or
CALL RPS(M,X,IX,Y,IY)
is exactly the inverse of MODE=1 as described above. The value tex2html_wrap_inline188 is set equal to tex2html_wrap_inline190 .
MODE=2/5: Analysis/Synthesis of a real even function.
For an even function, the transform is identical to its inverse.
CALL RFT(M,X,IX,Y,IY,2) or
CALL RFT(M,X,IX,Y,IY,5) or
CALL RCA(M,X,IX,Y,IY)
all assume that tex2html_wrap_inline192 define a half-period of the function to be analysed and that the other half period is generated by even continuation. The results returned are the cosine terms
tex2html_wrap_inline194
Note that the full period has 2n=N points.
MODE = 3/6: Analysis/Synthesis of a real odd function.
For an odd function the transform is also identical to its inverse. All assume that tex2html_wrap_inline198 ;
CALL RFT(M,X,IX,Y,IY,3) or
CALL RFT(M,X,IX,Y,IY,6) or
CALL RSA(M,X,IX,Y,IY)
tex2html_wrap_inline200 define a half-period of the function to be analysed and that the other half period is generated by odd continuation. The results returned are the sine terms
tex2html_wrap_inline202 .
Note that tex2html_wrap_inline204 and that the values returned are tex2html_wrap_inline206 and tex2html_wrap_inline208 . Again the full period has 2n=N points.

Restrictions:

These subroutines work for any input such that the full period has at least four points, i.e., tex2html_wrap_inline212 for general functions, or tex2html_wrap_inline214 for odd or even functions. If the number of data points exceeds 129 ( tex2html_wrap_inline216 ), the calling program must provide sufficient working storage by using the statement

    COMMON /FWORK/ W(nnn)
where tex2html_wrap_inline218 .

References:

  1. C. Iselin, An approach to fast Fourier transform, CERN 71-19.
A copy of Ref. 1 is available.
tex2html_wrap_inline220

Michel Goossens Wed Jun 5 01:28:46 METDST 1996