<< Chapter < Page | Chapter >> Page > |
Bernstein expresses a DIF decomposition of the tangent FFT in a very concise but somewhat obscure polynomial formthat was first practised by Fiduccia [link] . In order to be consistent with earlier sections, a DIT decomposition ofthe tangent FFT using linear functions will be described in this section. Although derived differently, the underlying structure presented here is identical to the network transpose of Bernstein'stangent FFT. In contrast to Johnson and Frigo's algorithm of four sub-transforms, the view presented here uses only one sub-transform and ascaled split-radix transform. While the polynomial form is more elegant and concise, expressing the FFT in terms of linear functions has the advantage ofmapping to software or hardware more directly.
The key to the tangent FFT is Van Buskirk's observation that if the trigonometric constant is factored as or , the multiplication by or can sometimes be absorbed elsewhere in the computation, assuming the constants are precomputed, andthe remaining multiplication by constants of the form or now only costs four floating point operations instead of six, assuming the usual scheme of complex multiplication using four multiply and two add operations.
Firstly, consider the conjugate-pair FFT being recursively scaled by a wavelet :
for , and where is evaluated with , and and are evaluated with .
The wavelet is crafted such that it is periodic in (i.e., ) and is of the form or . Bernstein defines the wavelet as [link] :
Multiplying and by the scaled constants saves a total of four floating point operations, while scaling costs four operations, resulting in no gain or loss. But the cost of scaling the result back to is about real operations. In order to realize a reduction in the number of floating point operations, the split-radix FFT is decomposed further, so thatthe extra operations can be absorbed into constants in the sub-transform. Starting with the unscaled split-radix FFT (see [link] ), the sum over the terms is itself decomposed with a split-radix decomposition into , and , resulting in a DFT of five sums:
where . As with earlier decompositions, invariants are factored out to obtain:
Following from the conjugate-pair split-radix algorithm, is shifted cyclically by and is shifted cyclically by to obtain:
where . Note that the sums over and are multiplied by constants that are now conjugate pairs, as are the sums over and .
Notification Switch
Would you like to follow the 'Computing the fast fourier transform on simd microprocessors' conversation and receive update notifications?