CSFFTM,ZDFFTM(3) MathKeisan FFT routine CSFFTM,ZDFFTM(3)
NAME
csfftm, zdfftm - one-dimensional multiple complex-to-real FFT. (OpenMP
Parallel Support).
SYNOPSIS
libfft.a
INTEGER isign, n, lot, ldx, ldy, isys
COMPLEX x(ldx,lot)
REAL scale, y(ldy,lot), table(2*n+64), work(4*n*lot)
CALL CSFFTM ( isign, n, lot, scale, x, ldx, y, ldy,
table, work, isys )
INTEGER isign, n, lot, ldx, ldy, isys
COMPLEX(kind=8) x(ldx,lot)
REAL(kind=8) scale, y(ldy,lot), table(2*n+64), work(4*n*lot)
CALL ZDFFTM ( isign, n, lot, scale, x, ldx, y, ldy,
table, work, isys )
libfft_64.a
INTEGER(kind=8) isign, n, lot, ldx, ldy, isys
COMPLEX(kind=8) x(ldx,lot)
REAL(kind=8) scale, y(ldy,lot), table(2*n+64), work(4*n*lot)
CALL CSFFTM ( isign, n, lot, scale, x, ldx, y, ldy,
table, work, isys )
INTEGER(kind=8) isign, n, lot, ldx, ldy, isys
COMPLEX(kind=8) x(ldx,lot)
REAL(kind=8) scale, y(ldy,lot), table(2*n+64), work(4*n*lot)
CALL ZDFFTM ( isign, n, lot, scale, x, ldx, y, ldy,
table, work, isys )
DESCRIPTION
This subroutine computes the one-dimensional discrete Fourier transform
of the lot complex vectors stored in x; the transformed data is stored
in the real array y. Examining a single vector to be transformed, if
we take x and y to be dimensioned as x(0:n/2) and y(0:n-1), the trans-
form is expressed by the following formula:
n/2
y(k) = scale * Sum x(j) * exp(isign*j*k*2*pi*i/n)
j=0
for k = 0, ..., n-1, where i = sqrt(-1).
In order to accomodate multiple calls of the same size to this routine,
an additional initialization step is required prior to the computation
of any transforms. Hence, whenever it is desired to use [(CS)(ZD)]FFTM
in a program, it must be called at least twice.
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 are to be input to this routine.
Set the OpenMP environmental variable OMP_NUM_THREADS to the number of
threads you would like to use.
ARGUMENTS
Input
isign Option flag:
If isign = 0, the routine is initialized for the given value of
n.
If isign = +1, the transform is calculated, and isign is the
sign of the exponential in the transform.
n Number of data points in a given data set (n>0).
lot Number of data sets to transform (lot>0).
scale Scaling factor for the transform.
Not used if isign = 0.
x Array of data to be transformed.
Not used if isign = 0.
ldx Leading dimension of x. ldx >= n/2 + 1.
ldy Leading dimension of y. ldy >= n.
isys Currently unused.
Working Storage
table If isign = 0, table is initialized for computing transforms of
length n.
If isign != 0, table must have been initialized by a previous
call with this value of n in which isign was 0.
work Workspace for computing the transform.
Not used if isign = 0.
Output
y Transformed data.
Not used if isign = 0.
SciLib routine CSFFTM,ZDFFTM(3)