#include <nitro/math/fft.h>
void MATH_IFFT( fx32* data, u32 nShift, const fx16* sinTable );
data | Pointer to the data to transform. Data after the transform is overwritten. |
nShift | The value obtained by taking the base-2 logarithm of the number of the input complex numbers. |
sinTable | Pointer to the table of sine values. |
None.
Uses a fast Fourier transform algorithm to perform the inverse transform of a discrete Fourier transform. Takes a sequence of complex number as input, and outputs a sequence of complex numbers. This is the reverse operation of the MATH_FFT function.
In the explanation below, the value 2nShift (2 to the nShift power) is represented as N. data is a type fx32 array of length 2*N. N number of complex numbers is passed to data in a format that stores real numbers and imaginary numbers alternately. Thus, if i is the unit for imaginary numbers, then the input data is the complex number sequence of N length {data[0]+i*data[1], data[2]+i*data[3], ..., data[N*2-2]+i*data[N*2-1]}
. sinTable is the pointer to the array of N*3/4 length that has fx16 type sine values assigned that satisfy sinTable[k] = sin( (2π/N) * k ) (k = 0, 1,..., N*3/4-1)
. This can be created using the MATH_MakeFFTSinTable
function. The result of the inverse transform of a discrete Fourier transform also becomes a sequence of complex numbers, and overwritten in data as the same format as the input and returned.
The calculations are performed using fixed-decimal numbers, so if a large value is given as the input, there is a risk of overflow. When the input value is viewed as type s32, the absolute value should not be greater than or equal to 0x80000000/N
. Also note that the maximum error when performing both the forward transform and inverse transform is around several times FX32_ONE
.
MATH_MakeFFTSinTable, MATH_FFT, MATH_FFTReal, MATH_IFFTReal
07/21/2005 Corrected the explanation for sinTable.
07/11/2005 Corrected the explanation.
05/13/2005 Initial version.