RFFTMLT,DFFTMLT(3) MathKeisan FFT routine RFFTMLT,DFFTMLT(3)
NAME
rfftmlt, dfftmlt - one-dimensional multiple real-to-
complex or complex-to-real FFT. (OpenMP Parallel
Support).
SYNOPSIS
libfft.a
INTEGER ifax(32), inc, jump, n, lot, isign
REAL x(n+2,lot), work(3*n*lot), trigs(2*n)
CALL RFFTMLT ( x, work, trigs, ifax, inc, jump, n, lot, isign )
INTEGER ifax(32), inc, jump, n, lot, isign
REAL(kind=8) x(n+2,lot),work(3*n*lot), trigs(2*n)
CALL DFFTMLT ( x, work, trigs, ifax, inc, jump, n, lot, isign )
libfft_64.a
INTEGER(kind=8) ifax(32), inc, jump, n, lot, isign
REAL(kind=8) x(n+2,lot), work(3*n*lot), trigs(2*n)
CALL RFFTMLT ( x, work, trigs, ifax, inc, jump, n, lot, isign )
INTEGER(kind=8) ifax(32), inc, jump, n, lot, isign
REAL(kind=8) x(n+2,lot), work(3*n*lot), trigs(2*n)
CALL DFFTMLT ( x, work, trigs, ifax, inc, jump, n, lot, isign )
DESCRIPTION
This subroutine computes in place the one-dimensional discrete Fourier
transform of the lot real or complex vectors stored in x. The trans-
formed data replaces the original contents of the real array x. Please
consult the ARGUMENTS list for more detail on the input and output for-
mat of [RD]FFTMLT.
Conceptually, if we consider a real-to-complex transformation (i.e.
isign = -1) of a real vector stored in x, then its transform, y, is
expressed by the following formula, where x and y are dimensioned as
x(0:n-1) and y(0:n/2), respectively:
n-1
y(k) = (1/n) * Sum x(j) * exp(-j*k*2*pi*i/n)
j=0
for k = 0, ..., n/2, where i = sqrt(-1).
The corresponding complex-to-real transform is similar, but with the
exponent having positive sign:
n-1
y(k) = Sum x(j) * exp(j*k*2*pi*i/n)
j=0
Note that both ifax and trigs must be initialized with a call to
[FD]FTFAX prior to the computation of any transforms. Furthermore, the
values of ifax and trigs are valid only for the value of n specified
for the call to [FD]FTFAX; if multiple values of n are desired, then
multiple calls to [FD]FTFAX are required.
A result of Fourier theory is that a transform of real data is conju-
gate symmetric; hence, only the first n/2 + 1 complex data points of
each data set will be output by this routine.
Set the OpenMP environmental variable OMP_NUM_THREADS to the number of
threads you would like to use.
ARGUMENTS
Input
x Contains the input values before the call to [RD]FFTMLT, and
output values after the call. When isign = -1, x contains the
lot real vectors of length n.(i.e (x(j,m) is stored in
X(j*inc,m) for j=0,1,.., n-1 and m=1,2,..,lot). When isign = 1,
x contains the lot complex vectors of length n/2 + 1. (i.e
Real(x(j,m)) is stored in X(2*k*inc,m), Imaginary(x(k,m)) is
stored in X((2*k+1)*inc,m) for k=0,1,..,n/2 and m=1,2,..,lot.
inc Storage increment between successive elements in a given data
set in x, (inc>0).
jump Storage increment between corresponding elements in successive
data sets in x, (jump>0).
n Number of data elements in a given data set in x, (n>0).
lot Number of data sets in x to transform, (lot>0).
isign Determines the sign of the exponential in the transform. Addi-
tionally, for isign = -1, [RD]FFTMLT performs a real-to-complex
multiple FFT; for isign = 1, [RD]FFTMLT performs a complex-to-
real multiple FFT.
Working Storage
work Workspace for computing the transform.
trigs A table of relevant trigonometric values. trigs must be ini-
tialized by a call to [FD]FTFAX prior to the call to [RD]FFTMLT.
ifax A table of relevant factorization information. ifax must be
initialized by a call to [FD]FTFAX prior to the call to
[RD]FFTMLT.
Output
x The transformed data sets. When isign = -1, contains the lot
complex vectors of length n/2 + 1. When isign = 1, contains the
lot real vectors of length n.
SciLib routine RFFTMLT,DFFTMLT(3)