CMSIS-DSP  Version 1.7.0
CMSIS DSP Software Library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Real FFT Tables

Functions

const q15_t __ALIGNED (4)
 Weights Table. More...
 

Variables

const float32_t realCoefA [8192]
 
const float32_t realCoefB [8192]
 
const q31_t realCoefAQ31 [8192]
 
const q31_t realCoefBQ31 [8192]
 

Description

Function Documentation

const q15_t __ALIGNED ( )

Q15 table for reciprocal.

Generation fixed-point realCoefAQ15 array in Q15 format:
n = 4096
for (i = 0; i < n; i++)
{
   pATable[2 * i]     = 0.5 * ( 1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
   pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
}
Convert to fixed point Q15 format round(pATable[i] * pow(2, 15))
Generation of real_CoefB array:
n = 4096
for (i = 0; i < n; i++)
{
   pBTable[2 * i]     = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
   pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
}
Convert to fixed point Q15 format round(pBTable[i] * pow(2, 15))
Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
C command to generate the table
for(i = 0; i< N; i++)
{ 
  weights[(2*i)]   =  cos(i*c);
  weights[(2*i)+1] = -sin(i*c);
} 
where N is the Number of weights to be calculated and c is pi/(2*N)
Converted the output to q15 format by multiplying with 2^31 and saturated if required.
In the tables below the real and imaginary values are placed alternatively, hence the array length is 2*N.
cosFactor tables are generated using the formula :
 cos_factors[n] = 2 * cos((2n+1)*pi/(4*N)) 
C command to generate the table
for (i = 0; i< N; i++)
{
  cos_factors[i] = 2 * cos((2*i+1)*c/2);
} 
where N is the number of factors to generate and c is pi/(2*N)
Then converted to q15 format by multiplying with 2^31 and saturated if required.

end of DCT4_IDCT4_Table group

Variable Documentation

const float32_t realCoefA[8192]
Generation of realCoefA array:
n = 4096
for (i = 0; i < n; i++)
{
   pATable[2 * i]     = 0.5 * ( 1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
   pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
}
const q31_t realCoefAQ31[8192]
Generation fixed-point realCoefAQ31 array in Q31 format:
n = 4096
for (i = 0; i < n; i++)
{
   pATable[2 * i]     = 0.5 * ( 1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
   pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
}
Convert to fixed point Q31 format round(pATable[i] * pow(2, 31))
const float32_t realCoefB[8192]
Generation of realCoefB array:
n = 4096
for (i = 0; i < n; i++)
{
   pBTable[2 * i]     = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
   pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
}
const q31_t realCoefBQ31[8192]
Generation of realCoefBQ31 array:
n = 4096
for (i = 0; i < n; i++)
{
   pBTable[2 * i]     = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
   pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
} 
Convert to fixed point Q31 format round(pBTable[i] * pow(2, 31))