48 uint16_t twidCoefModifier);
52 const uint16_t bitRevLen,
53 const uint16_t * pBitRevTable);
210 float32_t * pCol1, * pCol2, * pMid1, * pMid2;
213 float32_t t1[4], t2[4], t3[4], t4[4], twR, twI;
227 for ( l = L >> 2; l > 0; l-- )
249 *p1++ = t1[0] + t2[0];
250 *p1++ = t1[1] + t2[1];
251 *p1++ = t1[2] + t2[2];
252 *p1++ = t1[3] + t2[3];
254 t2[0] = t1[0] - t2[0];
255 t2[1] = t1[1] - t2[1];
256 t2[2] = t1[2] - t2[2];
257 t2[3] = t1[3] - t2[3];
259 *pMid1++ = t3[0] + t4[0];
260 *pMid1++ = t3[1] + t4[1];
261 *pMid1++ = t3[2] + t4[2];
262 *pMid1++ = t3[3] + t4[3];
264 t4[0] = t4[0] - t3[0];
265 t4[1] = t4[1] - t3[1];
266 t4[2] = t4[2] - t3[2];
267 t4[3] = t4[3] - t3[3];
321 uint32_t L = S->
fftLen >> 1;
322 float32_t * pCol1, *pCol2, *pCol3, *pCol4, *pEnd1, *pEnd2, *pEnd3, *pEnd4;
328 float32_t p1ap3_0, p1sp3_0, p1ap3_1, p1sp3_1;
330 uint32_t l, twMod2, twMod3, twMod4;
352 p1ap3_0 = p1[0] + p3[0];
353 p1sp3_0 = p1[0] - p3[0];
354 p1ap3_1 = p1[1] + p3[1];
355 p1sp3_1 = p1[1] - p3[1];
358 t2[0] = p1sp3_0 + p2[1] - p4[1];
359 t2[1] = p1sp3_1 - p2[0] + p4[0];
361 t3[0] = p1ap3_0 - p2[0] - p4[0];
362 t3[1] = p1ap3_1 - p2[1] - p4[1];
364 t4[0] = p1sp3_0 - p2[1] + p4[1];
365 t4[1] = p1sp3_1 + p2[0] - p4[0];
367 *p1++ = p1ap3_0 + p2[0] + p4[0];
368 *p1++ = p1ap3_1 + p2[1] + p4[1];
382 for (l = (L - 2) >> 1; l > 0; l-- )
385 p1ap3_0 = p1[0] + p3[0];
386 p1sp3_0 = p1[0] - p3[0];
387 p1ap3_1 = p1[1] + p3[1];
388 p1sp3_1 = p1[1] - p3[1];
390 t2[0] = p1sp3_0 + p2[1] - p4[1];
391 t2[1] = p1sp3_1 - p2[0] + p4[0];
393 t3[0] = p1ap3_0 - p2[0] - p4[0];
394 t3[1] = p1ap3_1 - p2[1] - p4[1];
396 t4[0] = p1sp3_0 - p2[1] + p4[1];
397 t4[1] = p1sp3_1 + p2[0] - p4[0];
399 *p1++ = p1ap3_0 + p2[0] + p4[0];
400 *p1++ = p1ap3_1 + p2[1] + p4[1];
403 p1ap3_1 = pEnd1[-1] + pEnd3[-1];
404 p1sp3_1 = pEnd1[-1] - pEnd3[-1];
405 p1ap3_0 = pEnd1[0] + pEnd3[0];
406 p1sp3_0 = pEnd1[0] - pEnd3[0];
408 t2[2] = pEnd2[0] - pEnd4[0] + p1sp3_1;
409 t2[3] = pEnd1[0] - pEnd3[0] - pEnd2[-1] + pEnd4[-1];
411 t3[2] = p1ap3_1 - pEnd2[-1] - pEnd4[-1];
412 t3[3] = p1ap3_0 - pEnd2[0] - pEnd4[0];
414 t4[2] = pEnd2[0] - pEnd4[0] - p1sp3_1;
415 t4[3] = pEnd4[-1] - pEnd2[-1] - p1sp3_0;
417 *pEnd1-- = p1ap3_0 + pEnd2[0] + pEnd4[0];
418 *pEnd1-- = p1ap3_1 + pEnd2[-1] + pEnd4[-1];
497 p1ap3_0 = p1[0] + p3[0];
498 p1sp3_0 = p1[0] - p3[0];
499 p1ap3_1 = p1[1] + p3[1];
500 p1sp3_1 = p1[1] - p3[1];
503 t2[0] = p1sp3_0 + p2[1] - p4[1];
504 t2[1] = p1sp3_1 - p2[0] + p4[0];
506 t3[0] = p1ap3_0 - p2[0] - p4[0];
507 t3[1] = p1ap3_1 - p2[1] - p4[1];
509 t4[0] = p1sp3_0 - p2[1] + p4[1];
510 t4[1] = p1sp3_1 + p2[0] - p4[0];
512 *p1++ = p1ap3_0 + p2[0] + p4[0];
513 *p1++ = p1ap3_1 + p2[1] + p4[1];
578 uint8_t bitReverseFlag)
580 uint32_t L = S->
fftLen, l;
624 *pSrc = -(*pSrc) * invL;
void arm_cfft_f32(const arm_cfft_instance_f32 *S, float32_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
Processing function for the floating-point complex FFT.
float float32_t
32-bit floating-point type definition.
const uint16_t * pBitRevTable
Instance structure for the floating-point CFFT/CIFFT function.
void arm_cfft_radix8by2_f32(arm_cfft_instance_f32 *S, float32_t *p1)
void arm_bitreversal_32(uint32_t *pSrc, const uint16_t bitRevLen, const uint16_t *pBitRevTable)
void arm_cfft_radix8by4_f32(arm_cfft_instance_f32 *S, float32_t *p1)
void arm_radix8_butterfly_f32(float32_t *pSrc, uint16_t fftLen, const float32_t *pCoef, uint16_t twidCoefModifier)
const float32_t * pTwiddle