HP MLIB User's Guide Vol. 2 7th Ed.
Chapter 5 Fast Fourier Transforms 551
Three-dimensional FFT C3DFFT/Z3DFFT
Name C3DFFT/Z3DFFT
Three-dimensional FFT
Purpose Given an array of complex data, these subprograms compute the
three-dimensional forward or inverse DFT. Two companion subprograms,
S3DFFT and D3DFFT, perform the same operation but with the complex data
presented with real and imaginary parts in separate real arrays.
The three-dimensional forward DFT of z(n
1
, n
2
, n
3
), for n
1
= 1, 2, ..., l
1
,
n
2
= 1, 2, ..., l
2
, and n
3
= 1, 2, ..., l
3
, is defined by
e
−2πi(m
1
−1)(n
1
−1)/l
1
e
−2πi(m
2
−1)(n
2
−1)/l
2
e
−2πi(m
3
−1)(n
3
−1)/l
3
for m
1
= 1, 2, ..., l
1
, m
2
= 1, 2, ..., l
2
, m
3
= 1, 2, ..., l
3
, and .
Alternatively, the three-dimensional inverse DFT of Z(m
1
,m
2
,m
3
), for
m
1
= 1, 2, ..., l
1
, m
2
= 1, 2, ..., l
2
, and m
3
= 1, 2, ..., l
3
, is defined by
e
+2πi(m
1
−1)(n
1
−1)/l
1
e
+2πi(m
2
−1)(n
2
−1)/l
2
e
+2πi(m
3
−1)(n
3
−1)/l
3
for n
1
= 1, 2, ..., l
1
, n
2
= 1, 2, ..., l
2
, and n
3
= 1, 2, ..., l
3
.
For best performance, these subprograms require that l
1
, l
2
, and l
3
be products
of powers of 2, 3, and 5, that is, of the form
l
k
=2
p
k
3
q
k
5
r
k
,
where p
k
, q
k
, r
k
≥ 0, k = 1,2,3.
Usage VECLIB:
INTEGER*4 l1, l2, l3, ldz, mdz, iopt, ier
COMPLEX*8 z(ldz, mdz, l3)
CALL C3DFFT(z, l1, l2, l3, ldz, mdz, iopt, ier)
INTEGER*4 l1, l2, l3, ldz, mdz, iopt, ier
COMPLEX*16 z(ldz, mdz, l3)
CALL Z3DFFT(z, l1, l2, l3, ldz, mdz, iopt, ier)
Z(m
1
,m
2
,m
3
)
n
1
1=
l
1
∑
n
2
1=
l
2
∑
n
3
1=
l
3
∑
z(n
1
,n
2
,n
3
) ×=
i 1–=
z(n
1
,n
2
,n
3
)
1
l
1
l
2
l
3
--------------
m
1
1=
l
1
∑
m
2
1=
l
2
∑
m
3
1=
l
3
∑
Z(m
1
,m
2
,m
3
) ×=