CMSIS-DSP  
CMSIS DSP Software Library
Real FFT Q31 Functions

Functions

arm_status arm_rfft_init_8192_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 8192 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_4096_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 4096 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_2048_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 2048 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_1024_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 1024 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_512_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 512 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_256_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 256 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_128_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 128 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_64_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 64 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_32_q31 (arm_rfft_instance_q31 *S, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Initialization function for the 32 pt Q31 real FFT. More...
 
arm_status arm_rfft_init_q31 (arm_rfft_instance_q31 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
 Generic initialization function for the Q31 RFFT/RIFFT. More...
 
void arm_rfft_q31 (const arm_rfft_instance_q31 *S, q31_t *pSrc, q31_t *pDst)
 Processing function for the Q31 RFFT/RIFFT. More...
 

Description

Function Documentation

◆ arm_rfft_init_1024_q31()

arm_status arm_rfft_init_1024_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_128_q31()

arm_status arm_rfft_init_128_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_2048_q31()

arm_status arm_rfft_init_2048_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_256_q31()

arm_status arm_rfft_init_256_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_32_q31()

arm_status arm_rfft_init_32_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_4096_q31()

arm_status arm_rfft_init_4096_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_512_q31()

arm_status arm_rfft_init_512_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_64_q31()

arm_status arm_rfft_init_64_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_8192_q31()

arm_status arm_rfft_init_8192_q31 ( arm_rfft_instance_q31 S,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.

◆ arm_rfft_init_q31()

arm_status arm_rfft_init_q31 ( arm_rfft_instance_q31 S,
uint32_t  fftLenReal,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
Parameters
[in,out]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]fftLenReallength of the FFT
[in]ifftFlagRflag that selects transform direction
  • value = 0: forward transform
  • value = 1: inverse transform
[in]bitReverseFlagflag that enables / disables bit reversal of output
  • value = 0: disables bit reversal of output
  • value = 1: enables bit reversal of output
Returns
execution status
Details
The parameter fftLenReal specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192.
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
This function also initializes Twiddle factor table.
This function should be used only if you don't know the FFT sizes that you'll need at build time. The use of this function will prevent the linker from removing the FFT tables that are not needed and the library code size will be bigger than needed.
If you use CMSIS-DSP as a static library, and if you know the FFT sizes that you need at build time, then it is better to use the initialization functions defined for each FFT size.

◆ arm_rfft_q31()

void arm_rfft_q31 ( const arm_rfft_instance_q31 S,
q31_t pSrc,
q31_t pDst 
)
Parameters
[in]Spoints to an instance of the Q31 RFFT/RIFFT structure
[in]pSrcpoints to input buffer (Source buffer is modified by this function)
[out]pDstpoints to output buffer
Returns
none
Input an output formats
Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. Hence the output format is different for different RFFT sizes. The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:
Input and Output formats for RFFT Q31
RFFT Size Input Format Output Format Number of bits to upscale
32 1.31 6.26 5
64 1.31 7.25 6
128 1.31 8.24 7
256 1.31 9.23 8
512 1.31 10.22 9
1024 1.31 11.21 10
2048 1.31 12.20 11
4096 1.31 13.19 12
8192 1.31 14.18 13
Input and Output formats for RIFFT Q31
RIFFT Size Input Format Output Format Number of bits to upscale
32 1.31 6.26 0
64 1.31 7.25 0
128 1.31 8.24 0
256 1.31 9.23 0
512 1.31 10.22 0
1024 1.31 11.21 0
2048 1.31 12.20 0
4096 1.31 13.19 0
8192 1.31 14.18 0
If the input buffer is of length N (fftLenReal), the output buffer must have length 2N since it is containing the conjugate part (except for MVE version where N+2 is enough). The input buffer is modified by this function.
For the RIFFT, the source buffer must have length N+2 since the Nyquist frequency value is needed but conjugate part is ignored. It is not using the packing trick of the float version.