<< 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 ω N k = cos θ + i sin θ is factored as ( 1 + i tan θ ) cos θ or ( cot θ + i ) sin θ , the multiplication by cos θ or sin θ can sometimes be absorbed elsewhere in the computation, assuming the constants are precomputed, andthe remaining multiplication by constants of the form ± ( 1 + i tan θ ) or ± ( cot θ + i ) 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 s N , k :

X k s N , k = U k s N / 2 , k s N , k + ω N k s N / 4 , k s N , k Z k + ω N - k s N / 4 , k s N , k Z k '

for k = 0 , , N / 4 - 1 , and where U k is evaluated with X k / s N / 2 , k , and Z k and Z k ' are evaluated with X k / s N / 4 , k .

The wavelet is crafted such that it is periodic in k (i.e., s N , k = s N , k + N / 4 ) and ω N k ( s N / 4 , k / s N , k ) is of the form ± ( 1 + i tan θ ) or ± ( cot θ + i ) . Bernstein defines the wavelet as [link] :

s N , k = 0 max cos 4 2 π k N , sin 4 2 π k N

Multiplying Z k and Z k ' by the scaled constants saves a total of four floating point operations, while scaling U k costs four operations, resulting in no gain or loss. But the cost of scaling the result back to X k is about 2 N 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 x 2 n 2 terms is itself decomposed with a split-radix decomposition into x 4 n 4 , x 8 n 8 + 2 and x 8 n 8 + 6 , resulting in a DFT of five sums:

X k = n 4 = 0 N / 4 - 1 ω N 4 n 4 k x 4 n 4 + n 8 = 0 N / 8 - 1 ω N ( 8 n 8 + 2 ) k x 8 n 8 + 2 + n 8 = 0 N / 8 - 1 ω N ( 8 n 8 + 6 ) k x 8 n 8 + 6 + n 4 = 0 N / 4 - 1 ω N ( 4 n 4 + 1 ) k x 4 n 4 + 1 + n 4 = 0 N / 4 - 1 ω N ( 4 n 4 + 3 ) k x 4 n 4 + 3

where n = 4 n 4 = 8 n 8 . As with earlier decompositions, invariants are factored out to obtain:

X k = n 4 = 0 N / 4 - 1 ω N 4 n 4 k x 4 n 4 + ω N 2 k n 8 = 0 N / 8 - 1 ω N / 8 n 8 k x 8 n 8 + 2 + ω N 6 k n 8 = 0 N / 8 - 1 ω N / 8 n 8 k x 8 n 8 + 6 + ω N k n 4 = 0 N / 4 - 1 ω N / 4 n 4 k x 4 n 4 + 1 + ω N 3 k n 4 = 0 N / 4 - 1 ω N / 4 n 4 k x 4 n 4 + 3

Following from the conjugate-pair split-radix algorithm, x 8 n 8 + 6 is shifted cyclically by - 8 and x 4 n 4 + 3 is shifted cyclically by - 4 to obtain:

X k = n 4 = 0 N / 4 - 1 ω N 4 n 4 k x 4 n 4 + ω N 2 k n 8 = 0 N / 8 - 1 ω N / 8 n 8 k x 8 n 8 + 2 + ω N - 2 k n 8 = 0 N / 8 - 1 ω N / 8 n 8 k x 8 n 8 - 2 + ω N k n 4 = 0 N / 4 - 1 ω N / 4 n 4 k x 4 n 4 + 1 + ω N - k n 4 = 0 N / 4 - 1 ω N / 4 n 4 k x 4 n 4 - 1

where x - n = x N - n . Note that the sums over x 8 n 8 + 2 and x 8 n 8 - 2 are multiplied by constants that are now conjugate pairs, as are the sums over x 4 n 4 + 1 and x 4 n 4 - 1 .

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Computing the fast fourier transform on simd microprocessors. OpenStax CNX. Jul 15, 2012 Download for free at http://cnx.org/content/col11438/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Computing the fast fourier transform on simd microprocessors' conversation and receive update notifications?

Ask