📄 rad4fft.c
字号:
/*******************************************************************************
*
* Function: Rad4_Twiddle_Calc - Calculate Rad4FFT twiddle factors
* Prototype:
* void Rad4_Twiddle_Calc(
* TCFFT4_simd_size length, // Size of FFT
* float *tc, // pointer to cosine array (real)
* float pm *ts); // pointer to sine array (imaginary)
*
* Synopsis: #include "Rad4FFT.h"
*
* Description:
* This routine calculates the twiddle factor for a Rad4FFT.
* The size of the FFT must be a power of 4;
*
* Author:
* Darrel Judd
* Judd Labs, Inc.
* 801-756-2057
* drjudd@ieee.org
*
* Revisions:
* Created June, 2003 Darrel Judd
*******************************************************************************/
#include <math.h>
#include "Rad4FFT.h"
void Rad4_Twiddle_Calc(TCFFT4_simd_size length,float *tc,float pm *ts)
{
U32 b[length];
U32 iter,j,k,i,index;
float k1,k2,k3,pi;
iter = length / (U32)4;
pi=4.0*atanf(1.0f);
// generate array for bit reversed addressing
for (i=1,j=1;i<=iter;i++)
{
b[i-1] = j-1;
k = iter/2;
while (k<j && k!=0)
{
j =j-k;
k = k/2;
}
j += k;
}
/* calculate tables */
k1 = (2*pi/(float)length);
k2 = (2*pi/(float)length)*2.0f;
k3 = (2*pi/(float)length)*3.0f;
for (i=0,index=0;i<iter;i++,index=index+3)
{
tc[index] = cosf(b[i]*k1);
ts[index] = sinf(b[i]*k1);
tc[index+1] = cosf(b[i]*k3);
ts[index+1] = sinf(b[i]*k3);
tc[index+2] = cosf(b[i]*k2);
ts[index+2] = sinf(b[i]*k2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -