6.4.11 IFFTRealIP

Description

IFFTRealIP computes, in place, the inverse Fast Fourier Transform of a source complex vector, which was derived out of a real-vector using the FFTReal function. The algorithm to compute IFFT is based on the efficient computation of IFFT of a 2N point complex vector using the N point complex FFT with additional computations called split functions.

Prototype

fractional* IFFTRealIP (int log2N, fractcomplex* srcCV, fractcomplex* twidFactors);

Arguments

Parameters

Description

log2N

Base 2 logarithm of N (number of complex elements in source vector)

srcCV

Pointer to the complex source vector

twidFactors

Pointer to complex twiddle factors

Return

Pointer to the base address of the real destination sample.

Remarks

N must be an integer power of 2.

The complex srcCV vector must be of size N/2 + 1, holding zero to N/2 elements.

The elements in the source complex vector are expected in a natural order, and the resultant vector, likewise, returned in a natural order. The resulting transform is a real vector of size N stored in the same location as that of the source complex vector.

This function operates in-place. srcV must be a complex vector with N/2 + 1 elements. The resultant vector will be a real-vector of size N stored in same location as that of complex srcCV vector.

The dstCV vector must be allocated at a modulo alignment of N in y-memory space.

To avoid saturation (overflow) during computation, the values of the source vector should be in the range [-0.5, 0.5].

Only the first N/2 twiddle factors are needed.

This function internally utilizes the BitReversal function and parts of the FFTReal function.

The twiddle factors must be initialized with conjFlag set to a value other than zero.

Output is scaled by the factor of N.

Source File

  • irfft_aa.s

Function Profile

Program Words

PIC32A

68 + program word counts of BitReversalComplex functions

Cycle count

Transform Size (N)

PIC32A

Cycles if Twiddle Factors in X-mem

Cycles if Twiddle Factors in P-mem

32

1,229

1,712

64

2,599

3,770

128

5,629

8,390

256

12,250

18,618

512

26,768

41,160

1024

57,970

90,095

2048

125,050

195,958

Note: The above cycle count values include cycles of BitReversalComplex functions that are internally used.

System resource usage

  • W0…W7 - used, not restored
  • W8…W9 - saved, used, restored
  • ACCA/ACCB - used, not restored
  • CORCON - saved, used, restored
  • REPEAT instruction(s) usage – 1
  • Plus resources used by the BitReversalComplex function.