DSP_ifft16x16_imre
DSP_ifft16x16_imre Complex Inverse Mixed Radix 16 x
Function | void DSP_ifft16x16_imre(const short * restrict w, int nx, short * restrict x, short | |
| * restrict y) |
|
Arguments | w[2*nx] | Pointer to complex Q.15 FFT coefficients. |
| nx | Length of FFT in complex samples. Must be power of 2 or 4, |
|
| and 16 ≤ nx ≤ 32768. |
| x[2*nx] | Pointer to complex data input. |
| y[2*nx] | Pointer to complex data output. |
Description | This routine computes a complex inverse mixed radix IFFT with rounding and | |
| digit reversal. Input data x[ ], output data y[ ], and coefficients w[ ] are | |
| The output is returned in the separate array y[ ] in normal order. Each complex | |
| value is stored with interleaved imaginary and real parts. The code uses a | |
| special ordering of IFFT coefficients (also called twiddle factors) and memory | |
| accesses to improve performance in the presence of cache. | |
| The fft16x16_imre can be used to perform IFFT, by first conjugating the input, | |
| performing the FFT, and conjugating again. This allows fft16x16_imre to | |
| perform the IFFT as well. However, if the double conjugation needs to be | |
| avoided, then this routine uses the same twiddle factors as the FFT and | |
| performs an IFFT. The change in the sign of the twiddle factors is adjusted for | |
| in the routine. Hence, this routine uses the same twiddle factors as the | |
| fft16x16_imre routine. | |
Algorithm | The C equivalent of the assembly code without restrictions is similar to the one | |
| of the ifft16x16 routine. For further details, see the source code of the C version | |
| of this function which is provided with this library. |
Special Requirements
-
-The size of the FFT, nx, must be a power of 4 or 2 and greater than or equal to 16 and less than 32768.
-The arrays for the complex input data x[ ], complex output data y[ ], and twiddle factors w[ ] must be
-The input and output data are complex, with the imaginary/real components stored in adjacent locations in the array. The imaginary components are stored at even array indices, and the real components are stored at odd array indices.
-Scaling by two is performed after each