SFFTS,DFFTS(3) MathKeisan FFT routine SFFTS,DFFTS(3)
NAME
sffts, dffts - simultaneous one-dimensional FFT - real storage mode.
(OpenMP Parallel Support).
SYNOPSIS
libfft.a
INTEGER l, incl, n, incn, iopt, ier
REAL x(lenxy), y(lenxy)
CALL SFFTS (x, y, l, incl, n, incn, iopt, ier)
INTEGER l, incl, n, incn, iopt, ier
REAL(kind=8) x(lenxy), y(lenxy)
CALL DFFTS (x, y, l, incl, n, incn, iopt, ier)
libfft_64.a
INTEGER(kind=8) l, incl, n, incn, iopt, ier
REAL(kind=8) x(lenxy), y(lenxy)
CALL SFFTS (x, y, l, incl, n, incn, iopt, ier)
INTEGER(kind=8) l, incl, n, incn, iopt, ier
REAL(kind=8) x(lenxy), y(lenxy)
CALL DFFTS (x, y, l, incl, n, incn, iopt, ier)
DESCRIPTION
Given a number of sets of one-dimensional complex data with the real
and imaginary parts in separate real arrays, these subprograms compute
all of their one-dimensional forward or inverse discrete Fourier trans-
forms using a mixed-radix fast Fourier transform (FFT) algorithm.
A pair of companion subprograms, CFFTS and ZFFTS, performs the same
operation, but with the complex data presented in a complex array.
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
x and y
Arrays containing n data sets, each consisting of l data points,
to be transformed. Typically, x and y will be two- or three-
dimensional arrays with each data set being a one-dimensional
array section. Refer to ``Notes'' for suggested usages.
Treating x and y as one-dimensional arrays results in
lenxy = (l-1)*incl + (n-1)*incn + 1.
The real and imaginary parts of the i-th data point of the j-th
data set, 1 <= i <= l, 1 <= j <= n, are stored in
x((i-1)*incl + (j-1)*incn + 1)
and
y((i-1)*incl + (j-1)*incn + 1),
respectively.
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 arrays x and y.
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
x and y
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, x and y will be two- or three-dimensional arrays with each
data set being a one-dimensional section of the arrays, i.e., all but
one subscript will be constant within a data set. If x and y are two-
dimensional arrays of dimension ldxy by mdxy, and if the data sets are
stored in the columns of x and y, l <= ldxy, n <= mdxy, incl = 1, and
incn = ldxy. For example, use:
CALL SFFTS (x, y, l, 1, n, ldxy, iopt, ier)
If x and y are two-dimensional arrays as above and data sets are stored
in rows of x and y, l <= mdxy, n <= ldxy, incl = ldxy, and incn = 1.
For example, use:
CALL SFFTS (x, y, l, ldxy, n, 1, iopt, ier)
If x and y are three-dimensional arrays of dimension ldxy by mdxy by
ndxy, then incl and incn will usually be 1, ldxy, or ldxy*mdxy, depend-
ing 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 = ldxy.
3rd subscript, use incl = ldxy*mdxy.
Similarly, if the subscript that varies between data sets is the
1st subscript, use incn = 1.
2nd subscript, use incn = ldxy.
3rd subscript, use incn = ldxy*mdxy.
l, incl, n, and incn must be such that no two points of any data sets
occupy the same elements of x and y. 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 SFFTS,DFFTS(3)