48 uint16_t twidCoefModifier);
54 uint16_t twidCoefModifier,
60 uint16_t bitRevFactor,
61 uint16_t * pBitRevTab);
132 uint16_t twidCoefModifier)
141 #ifndef ARM_MATH_CM0_FAMILY 149 for (k = n2; k > 0; k--)
151 cosVal = pCoef[ia * 2];
152 sinVal = pCoef[(ia * 2) + 1];
155 ia += twidCoefModifier;
162 a0 = pSrc[2 * i] + pSrc[2 * l];
163 xt = pSrc[2 * i] - pSrc[2 * l];
165 yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
166 a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
174 pSrc[2 * i + 1] = a1;
176 pSrc[2 * l] = p0 + p1;
177 pSrc[2 * l + 1] = p2 - p3;
182 twidCoefModifier <<= 1u;
185 for (k = n2; k > 2; k = k >> 1)
195 cosVal = pCoef[ia * 2];
196 sinVal = pCoef[(ia * 2) + 1];
197 ia += twidCoefModifier;
204 a0 = pSrc[2 * i] + pSrc[2 * l];
205 xt = pSrc[2 * i] - pSrc[2 * l];
207 yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
208 a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
216 pSrc[2 * i + 1] = a1;
218 pSrc[2 * l] = p0 + p1;
219 pSrc[2 * l + 1] = p2 - p3;
222 }
while( i < fftLen );
225 twidCoefModifier <<= 1u;
229 for (i = 0; i < fftLen; i += 2)
231 a0 = pSrc[2 * i] + pSrc[2 * i + 2];
232 xt = pSrc[2 * i] - pSrc[2 * i + 2];
234 yt = pSrc[2 * i + 1] - pSrc[2 * i + 3];
235 a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1];
238 pSrc[2 * i + 1] = a1;
239 pSrc[2 * i + 2] = xt;
240 pSrc[2 * i + 3] = yt;
248 for (k = fftLen; k > 1; k = k >> 1)
258 cosVal = pCoef[ia * 2];
259 sinVal = pCoef[(ia * 2) + 1];
260 ia += twidCoefModifier;
267 a0 = pSrc[2 * i] + pSrc[2 * l];
268 xt = pSrc[2 * i] - pSrc[2 * l];
270 yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
271 a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
279 pSrc[2 * i + 1] = a1;
281 pSrc[2 * l] = p0 + p1;
282 pSrc[2 * l + 1] = p2 - p3;
288 twidCoefModifier <<= 1u;
291 #endif // #ifndef ARM_MATH_CM0_FAMILY 300 uint16_t twidCoefModifier,
310 #ifndef ARM_MATH_CM0_FAMILY 316 for (i = 0; i < n2; i++)
318 cosVal = pCoef[ia * 2];
319 sinVal = pCoef[(ia * 2) + 1];
320 ia += twidCoefModifier;
323 a0 = pSrc[2 * i] + pSrc[2 * l];
324 xt = pSrc[2 * i] - pSrc[2 * l];
326 yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
327 a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
335 pSrc[2 * i + 1] = a1;
337 pSrc[2 * l] = p0 - p1;
338 pSrc[2 * l + 1] = p2 + p3;
341 twidCoefModifier <<= 1u;
344 for (k = fftLen / 2; k > 2; k = k >> 1)
354 cosVal = pCoef[ia * 2];
355 sinVal = pCoef[(ia * 2) + 1];
356 ia += twidCoefModifier;
363 a0 = pSrc[2 * i] + pSrc[2 * l];
364 xt = pSrc[2 * i] - pSrc[2 * l];
366 yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
367 a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
375 pSrc[2 * i + 1] = a1;
377 pSrc[2 * l] = p0 - p1;
378 pSrc[2 * l + 1] = p2 + p3;
381 }
while( i < fftLen );
385 twidCoefModifier <<= 1u;
389 for (i = 0; i < fftLen; i += 2)
391 a0 = pSrc[2 * i] + pSrc[2 * i + 2];
392 xt = pSrc[2 * i] - pSrc[2 * i + 2];
394 a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1];
395 yt = pSrc[2 * i + 1] - pSrc[2 * i + 3];
397 p0 = a0 * onebyfftLen;
398 p2 = xt * onebyfftLen;
399 p1 = a1 * onebyfftLen;
400 p3 = yt * onebyfftLen;
403 pSrc[2 * i + 1] = p1;
404 pSrc[2 * i + 2] = p2;
405 pSrc[2 * i + 3] = p3;
413 for (k = fftLen; k > 2; k = k >> 1)
423 cosVal = pCoef[ia * 2];
424 sinVal = pCoef[(ia * 2) + 1];
425 ia = ia + twidCoefModifier;
432 a0 = pSrc[2 * i] + pSrc[2 * l];
433 xt = pSrc[2 * i] - pSrc[2 * l];
435 yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
436 a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
444 pSrc[2 * i + 1] = a1;
446 pSrc[2 * l] = p0 - p1;
447 pSrc[2 * l + 1] = p2 + p3;
450 }
while( i < fftLen );
454 twidCoefModifier = twidCoefModifier << 1u;
461 for (i = 0; i < fftLen; i += n1)
465 a0 = pSrc[2 * i] + pSrc[2 * l];
466 xt = pSrc[2 * i] - pSrc[2 * l];
468 a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
469 yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
471 p0 = a0 * onebyfftLen;
472 p2 = xt * onebyfftLen;
473 p1 = a1 * onebyfftLen;
474 p3 = yt * onebyfftLen;
479 pSrc[2 * i + 1] = p1;
480 pSrc[2u * l + 1u] = p3;
483 #endif // #ifndef ARM_MATH_CM0_FAMILY
float float32_t
32-bit floating-point type definition.
uint16_t twidCoefModifier
void arm_radix2_butterfly_inverse_f32(float32_t *pSrc, uint32_t fftLen, float32_t *pCoef, uint16_t twidCoefModifier, float32_t onebyfftLen)
void arm_cfft_radix2_f32(const arm_cfft_radix2_instance_f32 *S, float32_t *pSrc)
Radix-2 CFFT/CIFFT.
void arm_bitreversal_f32(float32_t *pSrc, uint16_t fftSize, uint16_t bitRevFactor, uint16_t *pBitRevTab)
Instance structure for the floating-point CFFT/CIFFT function.
void arm_radix2_butterfly_f32(float32_t *pSrc, uint32_t fftLen, float32_t *pCoef, uint16_t twidCoefModifier)