CFFTS,ZFFTS(3) MathKeisan FFT routine CFFTS,ZFFTS(3)
NAME
cffts, zffts - simultaneous one-dimensional fft - complex storage mode.
(OpenMP Parallel Support).
SYNOPSIS
libfft.a
INTEGER l, incl, n, incn, iopt, ier
COMPLEX z(lenz)
CALL CFFTS (z, l, incl, n, incn, iopt, ier)
INTEGER l, incl, n, incn, iopt, ier
COMPLEX(kind=8) z(lenz)
CALL ZFFTS (z, l, incl, n, incn, iopt, ier)
libfft_64.a
INTEGER(kind=8) l, incl, n, incn, iopt, ier
COMPLEX(kind=8) z(lenz)
CALL CFFTS (z, l, incl, n, incn, iopt, ier)
INTEGER(kind=8) l, incl, n, incn, iopt, ier
COMPLEX(kind=8) z(lenz)
CALL ZFFTS (z, l, incl, n, incn, iopt, ier)
DESCRIPTION
Given a number of sets of one-dimensional complex data in a complex
array, these subprograms simultaneously compute all of their one-dimen-
sional forward or inverse discrete Fourier transforms using a mixed-
radix fast Fourier transform (FFT) algorithm.
A pair of companion subprograms, SFFTS and DFFTS, performs the same
operation, but with the complex data presented with real and imaginary
parts in separate real arrays.
Other subprograms are more suited for computing just one transform.
Set the OpenMP environmental variable OMP_NUM_THREADS to the number of
threads you would like to use.
ARGUMENTS
Input
z Array containing n data sets, each consisting of l data points,
to be transformed. Typically, z will be a two- or three-dimen-
sional array with each set of data being a one-dimensional array
section. Refer to ``Notes'' for suggested usages. Treating z
as a one-dimensional array results in
lenz = (l-1)*incl + (n-1)*incn + 1.
The i-th data point of the j-th data set, 1 <= i <= l, 1 <= j <=
n, is stored in
z((i-1)*incl + (j-1)*incn + 1).
l Number of data points in each data set (l>0).
incl Storage increment between successive elements of the same data
set, incl > 0. Use incl = 1 if each data set is stored contigu-
ously in array z.
n The number of data sets, n > 0.
incn Storage increment between corresponding data points of succes-
sive data sets, incn > 0.
iopt Option flag:
iopt >= 0 Compute forward transform.
iopt < 0 Compute inverse transform.
Output
z The transformed data replaces the input if ier = 0 is returned.
Unchanged if ier < 0.
ier Status response:
ier = 0 Normal return - transform successful.
ier = -2 incl <= 0.
ier = -3 n <= 0.
ier = -4 incn <= 0.
ier = -5 l, incl, n, and incn are incompatible.
Refer to ``Notes.''
NOTES
Typically, z will be a two- or three-dimensional array with each set of
data being a one-dimensional section of the array, i.e., all but one
subscript will be constant within a data set. If z is a two-dimen-
sional array of dimension ldz by mdz, and if the data sets are stored
in the columns of z, l <= ldz, n <= mdz, incl = 1, and incn = ldz. For
example, use
CALL CFFTS (z, l, 1, n, ldz, iopt, ier)
If z is a two-dimensional array as above and data sets are stored in
rows of z, l <= mdz, n <= ldz, incl = ldz, and incn = 1. For example,
use
CALL CFFTS (z, l, ldz, n, 1, iopt, ier)
If z is a three-dimensional array of dimension ldz by mdz by ndz, then
incl and incn will usually be 1, ldz, or ldz*mdz, depending on which of
the subscripts of the three-dimensional array varies within a data set,
which subscript varies between data sets, and which remains constant.
Specifically, if the subscript that varies within a data set is the
1st subscript, use incl = 1.
2nd subscript, use incl = ldz.
3rd subscript, use incl = ldz*mdz.
Similarly, if the subscript that varies between data sets is the
1st subscript, use incn = 1.
2nd subscript, use incn = ldz.
3rd subscript, use incn = ldz*mdz.
l, incl, n, and incn must be such that no two points of any data sets
occupy the same element of z. These subprograms detect this situation
and return ier = -5 if
incl < n * gcd(incl,incn)
and
incn < l * gcd (incl,incn)
where gcd (.,.) is the greatest common divisor.
MLIB routine CFFTS,ZFFTS(3)