-
Home
- Large dft modules: 11, 13, 16,
- Large dft modules: 11, 13, 16,
- Large dft modules: 11, 13, 16,
Length 19 module: 372 adds / 76 mpys
This module closely follows the traditional Winograd prime-length approach.
- Use the index map
to convert the DFT into a length 18 convolution plus a correction term for the DC component.
- Reduce the length 16 convolution modulo
and
.
- Use Nussbaumer's
convolution algorithm on r100-r108. This is a transposed tensor method, however it again uses an obscure reconstruction procedure. This algorithm computes nineteen intermediate quantities, r31-r319, which are then weighted against nineteen coefficients to produce t11-t119. This data is then partially reconstructed to yield the final result of the
convolution, t32-t310.
- In the course of the
convolution algorithm the
data is reduced modulo
and stored in r31. This quantity is added to
to patch up the DC term.
- An algebraic trick is used to compute the
convolution using the
algorithm. Suppose there exists a ring homomorphism H which maps elements of the ring of real polynomials modulo
into the ring of polynomials modulo
. Then
could be used on the
data, the resulting polynomial could be convolved in the modulo
domain using the existing procedure, and the output of that procedure could be mapped back through
into the modulo
domain. Such a homomorphism does exist, and moreover it happens to be its own inverse.
where
is a polynomial (in either
or
) may be formed from
by negating the sign on all odd-numbered coefficients, that is,
. The alternate negation of data values going into and coming out of the
convolution algorithm is accomplished without an increase in computing time by appropriate placement of negative signs. The nineteen intermediate values formed are r320-r338 which are then weighted by the (purely imaginary) coefficients to produce t120-t138. A partial reconstruction yields the
convolution result, t311-t319.
- The
convolution result is reconstructed from the
(real)
and
(imaginary) vectors and mapped back to the outputs using the
reverse of the input map.
- All coefficients were computed using the author's QR decomposition
linear equation solver and are accurate to at least 14 places.
Length 25 module: 420 adds / 132 mpys
This module is a common factor type module which uses length 5 convolutional DFT submodules. The length 5 submodules are implemented in a transposed tensor configuration using an index map
followed by a reduction modulo all the irreducible factors of
. The
convolution is implemented using Toom-Cook factors of
,
and
. The reconstruction matrix is exactly the transpose of the reduction procedure. The coefficients for the length 5 submodules were found using the author's QR procedure, and the twiddle factors were generated in a special FORTRAN program. The details of saving multiplies by scaling some of the prime length submodules in a common factor algorithm are discussed below in
[link] . This length 25 module has a total of 132 multiplies and 420 adds. Using Winograd's decomposition of the length 25 OFT into two length 5 DFT's and a length 20 convolution the best operation count generated by this author was 108 multiplies and 604 adds.
Source:
OpenStax, Large dft modules: 11, 13, 16, 17, 19, and 25. revised ece technical report 8105. OpenStax CNX. Sep 14, 2009 Download for free at http://cnx.org/content/col10569/1.7
Google Play and the Google Play logo are trademarks of Google Inc.