For a data cube with dimensions , each iteration requires *n _{1}* forward and reverse 2D FFTs. Therefore, in 2D the number of operations per iteration is about for the FFT method. For the DCT method, the number of operations per iteration is about . In 3D the FFT method requires about operations where as the DCT only requires . Because there is a certain about of overhead in each iteration common to both algorithms, the actually cost saving is typically a factor of two to four in 2D and three to five in 3D depending on the size of the problem.

The DCT method also has a significant advantage in memory usage as compared to the DCT. Without requiring mirroring, the DCT saves a factor of four in 2D and eight in 3D, however, again there is a certain amount of overhead common to both algorithms. In 2D, the DCT requires about 9*n* memory allocation as opposed to the 23*n* memory of the FFT algorithm. In 3D, the DCT requires still about 9*n* where as the FFT jumps up to 39*n*. In summary, the DCT saves greater than a factor of two in 2D and greater than a factor of four in 3D in memory requirements.

plane3D
The dipping planes synthetic model. Although a trivial flattening test case, the boundaries of the divergence of the dip are not periodic.
Figure 1 |

plane3D.fft_mirr.flat_cos
The data in Figure flattened using the FFT method with mirrors.
Figure 2 |

4/5/2006