76 stage_count = factors[0];
78 mstride = factors[ (stage_count << 1) - 1 ];
79 N = factors[ stage_count << 1 ];
92 for (f_count = 0; f_count < fstride; f_count ++)
94 Fout1 = & Fout[ f_count * 8 ];
107 scratch_in[0].
r = Fin1[0].
r + Fin1[fstride * 4].
r;
108 scratch_in[0].
i = Fin1[0].
i + Fin1[fstride * 4].
i;
109 scratch_in[1].
r = Fin1[0].
r - Fin1[fstride * 4].
r;
110 scratch_in[1].
i = Fin1[0].
i - Fin1[fstride * 4].
i;
111 scratch_in[2].
r = Fin1[fstride].
r + Fin1[fstride * 5].
r;
112 scratch_in[2].
i = Fin1[fstride].
i + Fin1[fstride * 5].
i;
113 scratch_in[3].
r = Fin1[fstride].
r - Fin1[fstride * 5].
r;
114 scratch_in[3].
i = Fin1[fstride].
i - Fin1[fstride * 5].
i;
115 scratch_in[4].
r = Fin1[fstride * 2].
r + Fin1[fstride * 6].
r;
116 scratch_in[4].
i = Fin1[fstride * 2].
i + Fin1[fstride * 6].
i;
117 scratch_in[5].
r = Fin1[fstride * 2].
r - Fin1[fstride * 6].
r;
118 scratch_in[5].
i = Fin1[fstride * 2].
i - Fin1[fstride * 6].
i;
119 scratch_in[6].
r = Fin1[fstride * 3].
r + Fin1[fstride * 7].
r;
120 scratch_in[6].
i = Fin1[fstride * 3].
i + Fin1[fstride * 7].
i;
121 scratch_in[7].
r = Fin1[fstride * 3].
r - Fin1[fstride * 7].
r;
122 scratch_in[7].
i = Fin1[fstride * 3].
i - Fin1[fstride * 7].
i;
125 scratch[0] = scratch_in[0];
126 scratch[1] = scratch_in[1];
128 scratch[2] = scratch_in[2];
132 scratch[4] = scratch_in[4];
133 scratch[5].
r = scratch_in[5].
i;
134 scratch[5].
i = -scratch_in[5].
r;
136 scratch[6].
r = scratch_in[6].
r;
137 scratch[6].
i = scratch_in[6].
i;
142 scratch[8].
r = scratch[0].
r + scratch[4].
r;
143 scratch[8].
i = scratch[0].
i + scratch[4].
i;
144 scratch[9].
r = scratch[1].
r + scratch[5].
r;
145 scratch[9].
i = scratch[1].
i + scratch[5].
i;
147 scratch[10].
r = scratch[0].
r - scratch[4].
r;
148 scratch[10].
i = scratch[0].
i - scratch[4].
i;
149 scratch[11].
r = scratch[1].
r - scratch[5].
r;
150 scratch[11].
i = scratch[1].
i - scratch[5].
i;
153 scratch[12].
r = scratch[2].
r + scratch[6].
r;
154 scratch[12].
i = scratch[2].
i + scratch[6].
i;
155 scratch[13].
r = scratch[3].
r + scratch[7].
r;
156 scratch[13].
i = scratch[3].
i + scratch[7].
i;
158 scratch[14].
r = scratch[2].
r - scratch[6].
r;
159 scratch[14].
i = scratch[2].
i - scratch[6].
i;
160 scratch[15].
r = scratch[3].
r - scratch[7].
r;
161 scratch[15].
i = scratch[3].
i - scratch[7].
i;
164 scratch_out[4].
r = scratch[8].
r - scratch[12].
r;
165 scratch_out[4].
i = scratch[8].
i - scratch[12].
i;
166 scratch_out[5].
r = scratch[9].
r - scratch[13].
r;
167 scratch_out[5].
i = scratch[9].
i - scratch[13].
i;
170 scratch_out[0].
r = scratch[8].
r + scratch[12].
r;
171 scratch_out[0].
i = scratch[8].
i + scratch[12].
i;
172 scratch_out[1].
r = scratch[9].
r + scratch[13].
r;
173 scratch_out[1].
i = scratch[9].
i + scratch[13].
i;
176 scratch_out[2].
r = scratch[10].
r + scratch[14].
i;
177 scratch_out[2].
i = scratch[10].
i - scratch[14].
r;
178 scratch_out[3].
r = scratch[11].
r + scratch[15].
i;
179 scratch_out[3].
i = scratch[11].
i - scratch[15].
r;
182 scratch_out[6].
r = scratch[10].
r - scratch[14].
i;
183 scratch_out[6].
i = scratch[10].
i + scratch[14].
r;
184 scratch_out[7].
r = scratch[11].
r - scratch[15].
i;
185 scratch_out[7].
i = scratch[11].
i + scratch[15].
r;
188 Fout1[0] = scratch_out[0];
189 Fout1[1] = scratch_out[1];
190 Fout1[2] = scratch_out[2];
191 Fout1[3] = scratch_out[3];
192 Fout1[4] = scratch_out[4];
193 Fout1[5] = scratch_out[5];
194 Fout1[6] = scratch_out[6];
195 Fout1[7] = scratch_out[7];
210 for (f_count = fstride; f_count ; f_count --)
213 scratch_in[0] = *Fin1;
214 Fin2 = Fin1 + fstride;
215 scratch_in[1] = *Fin2;
216 Fin2 = Fin2 + fstride;
217 scratch_in[2] = *Fin2;
218 Fin2 = Fin2 + fstride;
219 scratch_in[3] = *Fin2;
222 if (scaled_flag == 1)
231 scratch[0].
r = scratch_in[0].
r + scratch_in[2].
r;
232 scratch[0].
i = scratch_in[0].
i + scratch_in[2].
i;
234 scratch[1].
r = scratch_in[0].
r - scratch_in[2].
r;
235 scratch[1].
i = scratch_in[0].
i - scratch_in[2].
i;
238 scratch[2].
r = scratch_in[1].
r + scratch_in[3].
r;
239 scratch[2].
i = scratch_in[1].
i + scratch_in[3].
i;
241 scratch[3].
r = scratch_in[1].
r - scratch_in[3].
r;
242 scratch[3].
i = scratch_in[1].
i - scratch_in[3].
i;
245 scratch_out[2].
r = scratch[0].
r - scratch[2].
r;
246 scratch_out[2].
i = scratch[0].
i - scratch[2].
i;
249 scratch_out[0].
r = scratch[0].
r + scratch[2].
r;
250 scratch_out[0].
i = scratch[0].
i + scratch[2].
i;
253 scratch_out[1].
r = scratch[1].
r + scratch[3].
i;
254 scratch_out[1].
i = scratch[1].
i - scratch[3].
r;
257 scratch_out[3].
r = scratch[1].
r - scratch[3].
i;
258 scratch_out[3].
i = scratch[1].
i + scratch[3].
r;
261 * Fout1 ++ = scratch_out[0];
262 * Fout1 ++ = scratch_out[1];
263 * Fout1 ++ = scratch_out[2];
264 * Fout1 ++ = scratch_out[3];
283 scratch_in[0] = Fin1[0];
284 scratch_in[1] = Fin1[1];
286 if (scaled_flag == 1)
292 Fout1[0].
r = scratch_in[0].
r + scratch_in[1].
r;
293 Fout1[0].
i = scratch_in[0].
i + scratch_in[1].
i;
294 Fout1[1].
r = scratch_in[0].
r - scratch_in[1].
r;
295 Fout1[1].
i = scratch_in[0].
i - scratch_in[1].
i;
305 for (; stage_count > 1 ; stage_count--)
308 for (f_count = 0; f_count < fstride; f_count ++)
310 Fout1 = & Fout[ f_count * mstride << 2 ];
312 for (m_count = mstride; m_count ; m_count --)
315 scratch_tw[0] = *tw1;
317 scratch_tw[1] = *tw2;
319 scratch_tw[2] = *tw2;
320 scratch_in[0] = * Fin1;
322 scratch_in[1] = * Fin2;
324 scratch_in[2] = * Fin2;
326 scratch_in[3] = * Fin2;
327 if (scaled_flag == 1)
337 scratch[0] = scratch_in[0];
354 scratch[4].
r = scratch[0].
r + scratch[2].
r;
355 scratch[4].
i = scratch[0].
i + scratch[2].
i;
357 scratch[5].
r = scratch[0].
r - scratch[2].
r;
358 scratch[5].
i = scratch[0].
i - scratch[2].
i;
361 scratch[6].
r = scratch[1].
r + scratch[3].
r;
362 scratch[6].
i = scratch[1].
i + scratch[3].
i;
364 scratch[7].
r = scratch[1].
r - scratch[3].
r;
365 scratch[7].
i = scratch[1].
i - scratch[3].
i;
368 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
369 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
372 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
373 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
376 scratch_out[1].
r = scratch[5].
r + scratch[7].
i;
377 scratch_out[1].
i = scratch[5].
i - scratch[7].
r;
380 scratch_out[3].
r = scratch[5].
r - scratch[7].
i;
381 scratch_out[3].
i = scratch[5].
i + scratch[7].
r;
384 *Fout1 = scratch_out[0];
385 Fout2 = Fout1 + mstride;
386 *Fout2 = scratch_out[1];
388 *Fout2 = scratch_out[2];
390 *Fout2 = scratch_out[3];
413 for (f_count = 0; f_count < fstride; f_count ++)
416 for (m_count = mstride; m_count ; m_count --)
419 scratch_tw[0] = *tw1;
421 scratch_tw[1] = *tw2;
423 scratch_tw[2] = *tw2;
424 scratch_in[0] = * Fin1;
426 scratch_in[1] = * Fin2;
428 scratch_in[2] = * Fin2;
430 scratch_in[3] = * Fin2;
431 if (scaled_flag == 1)
441 scratch[0] = scratch_in[0];
458 scratch[4].
r = scratch[0].
r + scratch[2].
r;
459 scratch[4].
i = scratch[0].
i + scratch[2].
i;
461 scratch[5].
r = scratch[0].
r - scratch[2].
r;
462 scratch[5].
i = scratch[0].
i - scratch[2].
i;
465 scratch[6].
r = scratch[1].
r + scratch[3].
r;
466 scratch[6].
i = scratch[1].
i + scratch[3].
i;
468 scratch[7].
r = scratch[1].
r - scratch[3].
r;
469 scratch[7].
i = scratch[1].
i - scratch[3].
i;
472 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
473 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
476 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
477 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
480 scratch_out[1].
r = scratch[5].
r + scratch[7].
i;
481 scratch_out[1].
i = scratch[5].
i - scratch[7].
r;
484 scratch_out[3].
r = scratch[5].
r - scratch[7].
i;
485 scratch_out[3].
i = scratch[5].
i + scratch[7].
r;
488 *Fout1 = scratch_out[0];
490 *Fout2 = scratch_out[1];
492 *Fout2 = scratch_out[2];
494 *Fout2 = scratch_out[3];
528 stage_count = factors[0];
529 fstride = factors[1];
530 mstride = factors[ (stage_count << 1) - 1 ];
531 N = factors[ stage_count << 1 ];
544 for (f_count = 0; f_count < fstride; f_count ++)
546 Fout1 = & Fout[ f_count * 8 ];
548 if (scaled_flag == 1)
560 scratch_in[0].
r = Fin1[0].
r + Fin1[fstride * 4].
r;
561 scratch_in[0].
i = Fin1[0].
i + Fin1[fstride * 4].
i;
562 scratch_in[1].
r = Fin1[0].
r - Fin1[fstride * 4].
r;
563 scratch_in[1].
i = Fin1[0].
i - Fin1[fstride * 4].
i;
564 scratch_in[2].
r = Fin1[fstride].
r + Fin1[fstride * 5].
r;
565 scratch_in[2].
i = Fin1[fstride].
i + Fin1[fstride * 5].
i;
566 scratch_in[3].
r = Fin1[fstride].
r - Fin1[fstride * 5].
r;
567 scratch_in[3].
i = Fin1[fstride].
i - Fin1[fstride * 5].
i;
568 scratch_in[4].
r = Fin1[fstride * 2].
r + Fin1[fstride * 6].
r;
569 scratch_in[4].
i = Fin1[fstride * 2].
i + Fin1[fstride * 6].
i;
570 scratch_in[5].
r = Fin1[fstride * 2].
r - Fin1[fstride * 6].
r;
571 scratch_in[5].
i = Fin1[fstride * 2].
i - Fin1[fstride * 6].
i;
572 scratch_in[6].
r = Fin1[fstride * 3].
r + Fin1[fstride * 7].
r;
573 scratch_in[6].
i = Fin1[fstride * 3].
i + Fin1[fstride * 7].
i;
574 scratch_in[7].
r = Fin1[fstride * 3].
r - Fin1[fstride * 7].
r;
575 scratch_in[7].
i = Fin1[fstride * 3].
i - Fin1[fstride * 7].
i;
579 scratch[0] = scratch_in[0];
580 scratch[1] = scratch_in[1];
582 scratch[2] = scratch_in[2];
586 scratch[4] = scratch_in[4];
587 scratch[5].
r = -scratch_in[5].
i;
588 scratch[5].
i = scratch_in[5].
r;
590 scratch[6].
r = scratch_in[6].
r;
591 scratch[6].
i = scratch_in[6].
i;
596 scratch[8].
r = scratch[0].
r + scratch[4].
r;
597 scratch[8].
i = scratch[0].
i + scratch[4].
i;
598 scratch[9].
r = scratch[1].
r + scratch[5].
r;
599 scratch[9].
i = scratch[1].
i + scratch[5].
i;
601 scratch[10].
r = scratch[0].
r - scratch[4].
r;
602 scratch[10].
i = scratch[0].
i - scratch[4].
i;
603 scratch[11].
r = scratch[1].
r - scratch[5].
r;
604 scratch[11].
i = scratch[1].
i - scratch[5].
i;
607 scratch[12].
r = scratch[2].
r + scratch[6].
r;
608 scratch[12].
i = scratch[2].
i + scratch[6].
i;
609 scratch[13].
r = scratch[3].
r + scratch[7].
r;
610 scratch[13].
i = scratch[3].
i + scratch[7].
i;
612 scratch[14].
r = scratch[2].
r - scratch[6].
r;
613 scratch[14].
i = scratch[2].
i - scratch[6].
i;
614 scratch[15].
r = scratch[3].
r - scratch[7].
r;
615 scratch[15].
i = scratch[3].
i - scratch[7].
i;
618 scratch_out[4].
r = scratch[8].
r - scratch[12].
r;
619 scratch_out[4].
i = scratch[8].
i - scratch[12].
i;
620 scratch_out[5].
r = scratch[9].
r - scratch[13].
r;
621 scratch_out[5].
i = scratch[9].
i - scratch[13].
i;
624 scratch_out[0].
r = scratch[8].
r + scratch[12].
r;
625 scratch_out[0].
i = scratch[8].
i + scratch[12].
i;
626 scratch_out[1].
r = scratch[9].
r + scratch[13].
r;
627 scratch_out[1].
i = scratch[9].
i + scratch[13].
i;
630 scratch_out[2].
r = scratch[10].
r - scratch[14].
i;
631 scratch_out[2].
i = scratch[10].
i + scratch[14].
r;
632 scratch_out[3].
r = scratch[11].
r - scratch[15].
i;
633 scratch_out[3].
i = scratch[11].
i + scratch[15].
r;
636 scratch_out[6].
r = scratch[10].
r + scratch[14].
i;
637 scratch_out[6].
i = scratch[10].
i - scratch[14].
r;
638 scratch_out[7].
r = scratch[11].
r + scratch[15].
i;
639 scratch_out[7].
i = scratch[11].
i - scratch[15].
r;
642 Fout1[0] = scratch_out[0];
643 Fout1[1] = scratch_out[1];
644 Fout1[2] = scratch_out[2];
645 Fout1[3] = scratch_out[3];
646 Fout1[4] = scratch_out[4];
647 Fout1[5] = scratch_out[5];
648 Fout1[6] = scratch_out[6];
649 Fout1[7] = scratch_out[7];
664 for (f_count = fstride; f_count ; f_count --)
667 scratch_in[0] = *Fin1;
668 Fin2 = Fin1 + fstride;
669 scratch_in[1] = *Fin2;
670 Fin2 = Fin2 + fstride;
671 scratch_in[2] = *Fin2;
672 Fin2 = Fin2 + fstride;
673 scratch_in[3] = *Fin2;
676 if (scaled_flag == 1)
685 scratch[0].
r = scratch_in[0].
r + scratch_in[2].
r;
686 scratch[0].
i = scratch_in[0].
i + scratch_in[2].
i;
688 scratch[1].
r = scratch_in[0].
r - scratch_in[2].
r;
689 scratch[1].
i = scratch_in[0].
i - scratch_in[2].
i;
692 scratch[2].
r = scratch_in[1].
r + scratch_in[3].
r;
693 scratch[2].
i = scratch_in[1].
i + scratch_in[3].
i;
695 scratch[3].
r = scratch_in[1].
r - scratch_in[3].
r;
696 scratch[3].
i = scratch_in[1].
i - scratch_in[3].
i;
699 scratch_out[2].
r = scratch[0].
r - scratch[2].
r;
700 scratch_out[2].
i = scratch[0].
i - scratch[2].
i;
703 scratch_out[0].
r = scratch[0].
r + scratch[2].
r;
704 scratch_out[0].
i = scratch[0].
i + scratch[2].
i;
707 scratch_out[1].
r = scratch[1].
r - scratch[3].
i;
708 scratch_out[1].
i = scratch[1].
i + scratch[3].
r;
711 scratch_out[3].
r = scratch[1].
r + scratch[3].
i;
712 scratch_out[3].
i = scratch[1].
i - scratch[3].
r;
715 * Fout1 ++ = scratch_out[0];
716 * Fout1 ++ = scratch_out[1];
717 * Fout1 ++ = scratch_out[2];
718 * Fout1 ++ = scratch_out[3];
737 scratch_in[0] = Fin1[0];
738 scratch_in[1] = Fin1[1];
740 if (scaled_flag == 1)
746 Fout1[0].
r = scratch_in[0].
r + scratch_in[1].
r;
747 Fout1[0].
i = scratch_in[0].
i + scratch_in[1].
i;
748 Fout1[1].
r = scratch_in[0].
r - scratch_in[1].
r;
749 Fout1[1].
i = scratch_in[0].
i - scratch_in[1].
i;
760 for (; stage_count > 1 ; stage_count--)
763 for (f_count = 0; f_count < fstride; f_count ++)
765 Fout1 = & Fout[ f_count * mstride << 2 ];
767 for (m_count = mstride; m_count ; m_count --)
770 scratch_tw[0] = *tw1;
772 scratch_tw[1] = *tw2;
774 scratch_tw[2] = *tw2;
775 scratch_in[0] = * Fin1;
777 scratch_in[1] = * Fin2;
779 scratch_in[2] = * Fin2;
781 scratch_in[3] = * Fin2;
782 if (scaled_flag == 1)
792 scratch[0] = scratch_in[0];
809 scratch[4].
r = scratch[0].
r + scratch[2].
r;
810 scratch[4].
i = scratch[0].
i + scratch[2].
i;
812 scratch[5].
r = scratch[0].
r - scratch[2].
r;
813 scratch[5].
i = scratch[0].
i - scratch[2].
i;
816 scratch[6].
r = scratch[1].
r + scratch[3].
r;
817 scratch[6].
i = scratch[1].
i + scratch[3].
i;
819 scratch[7].
r = scratch[1].
r - scratch[3].
r;
820 scratch[7].
i = scratch[1].
i - scratch[3].
i;
823 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
824 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
827 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
828 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
831 scratch_out[1].
r = scratch[5].
r - scratch[7].
i;
832 scratch_out[1].
i = scratch[5].
i + scratch[7].
r;
835 scratch_out[3].
r = scratch[5].
r + scratch[7].
i;
836 scratch_out[3].
i = scratch[5].
i - scratch[7].
r;
839 *Fout1 = scratch_out[0];
840 Fout2 = Fout1 + mstride;
841 *Fout2 = scratch_out[1];
843 *Fout2 = scratch_out[2];
845 *Fout2 = scratch_out[3];
868 for (f_count = 0; f_count < fstride; f_count ++)
871 for (m_count = mstride; m_count ; m_count --)
874 scratch_tw[0] = *tw1;
876 scratch_tw[1] = *tw2;
878 scratch_tw[2] = *tw2;
879 scratch_in[0] = * Fin1;
881 scratch_in[1] = * Fin2;
883 scratch_in[2] = * Fin2;
885 scratch_in[3] = * Fin2;
886 if (scaled_flag == 1)
896 scratch[0] = scratch_in[0];
913 scratch[4].
r = scratch[0].
r + scratch[2].
r;
914 scratch[4].
i = scratch[0].
i + scratch[2].
i;
916 scratch[5].
r = scratch[0].
r - scratch[2].
r;
917 scratch[5].
i = scratch[0].
i - scratch[2].
i;
920 scratch[6].
r = scratch[1].
r + scratch[3].
r;
921 scratch[6].
i = scratch[1].
i + scratch[3].
i;
923 scratch[7].
r = scratch[1].
r - scratch[3].
r;
924 scratch[7].
i = scratch[1].
i - scratch[3].
i;
927 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
928 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
931 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
932 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
935 scratch_out[1].
r = scratch[5].
r - scratch[7].
i;
936 scratch_out[1].
i = scratch[5].
i + scratch[7].
r;
939 scratch_out[3].
r = scratch[5].
r + scratch[7].
i;
940 scratch_out[3].
i = scratch[5].
i - scratch[7].
r;
943 *Fout1 = scratch_out[0];
945 *Fout2 = scratch_out[1];
947 *Fout2 = scratch_out[2];
949 *Fout2 = scratch_out[3];
974 dst[0].
r = tdc.
r + tdc.
i;
975 dst[ncfft].
r = tdc.
r - tdc.
i;
976 dst[ncfft].
i = dst[0].
i = 0;
978 for (k = 1; k <= ncfft / 2 ; ++k)
981 fpnk.
r = src[ncfft - k].
r;
982 fpnk.
i = - src[ncfft - k].
i;
989 f1k.
r = fpk.
r + fpnk.
r;
990 f1k.
i = fpk.
i + fpnk.
i;
992 f2k.
r = fpk.
r - fpnk.
r;
993 f2k.
i = fpk.
i - fpnk.
i;
998 dst[k].
r = (f1k.
r + tw.
r) >> 1;
999 dst[k].
i = (f1k.
i + tw.
i) >> 1;
1000 dst[ncfft - k].
r = (f1k.
r - tw.
r) >> 1;
1001 dst[ncfft - k].
i = (tw.
i - f1k.
i) >> 1;
1016 dst[0].
r = src[0].
r + src[ncfft].
r;
1017 dst[0].
i = src[0].
r - src[ncfft].
r;
1022 for (k = 1; k <= ncfft / 2; k++)
1025 fnkc.
r = src[ncfft - k].
r;
1026 fnkc.
i = -src[ncfft - k].
i;
1033 fek.
r = fk.
r + fnkc.
r;
1034 fek.
i = fk.
i + fnkc.
i;
1036 tmp.
r = fk.
r - fnkc.
r;
1037 tmp.
i = fk.
i - fnkc.
i;
1042 dst[k].
r = fek.
r + fok.
r;
1043 dst[k].
i = fek.
i + fok.
i;
1045 dst[ncfft - k].
r = fek.
r - fok.
r;
1046 dst[ncfft - k].
i = fok.
i - fek.
i;
1118 switch (algorithm_flag)
1123 ne10_mixed_radix_butterfly_inverse_int32_c (fout, fin, cfg->
factors, cfg->
twiddles, cfg->
buffer, scaled_flag);
1127 ne10_mixed_radix_butterfly_int32_c (fout, fin, cfg->
factors, cfg->
twiddles, cfg->
buffer, scaled_flag);
1202 for (; stage_count > 0; stage_count --)
1204 cur_radix = factors[2 * stage_count];
1205 fstride /= cur_radix;
1206 mstride = factors[2 * stage_count + 1];
1207 for (j = 0; j < mstride; j++)
1209 for (k = 1; k < cur_radix; k++)
1211 phase = -2 * pi * fstride * k * j / ncfft;
1216 twiddles += mstride * (cur_radix - 1);
1220 for (j = 0; j < ncfft / 2; j++)
#define NE10_FFT_ALG_DEFAULT
ne10_fft_cpx_int32_t * twiddles
#define NE10_MAXFACTORS
Structure for the floating point FFT function.
ne10_int32_t ne10_factor(ne10_int32_t n, ne10_int32_t *facbuf, ne10_int32_t ne10_factor_flags)
#define NE10_FFT_BYTE_ALIGNMENT
void ne10_fft_r2c_1d_int32_c(ne10_fft_cpx_int32_t *fout, ne10_int32_t *fin, ne10_fft_r2c_cfg_int32_t cfg, ne10_int32_t scaled_flag)
Specific implementation of ne10_fft_r2c_1d_int32 using plain C.
ne10_fft_cpx_int32_t * ne10_fft_generate_twiddles_int32(ne10_fft_cpx_int32_t *twiddles, const ne10_int32_t *factors, const ne10_int32_t nfft)
void ne10_mixed_radix_generic_butterfly_int32_c(ne10_fft_cpx_int32_t *Fout, const ne10_fft_cpx_int32_t *Fin, const ne10_int32_t *factors, const ne10_fft_cpx_int32_t *twiddles, ne10_fft_cpx_int32_t *buffer, const ne10_int32_t scaled_flag)
Generic (forward) FFT function for 32-bit fixed point.
#define NE10_F2I32_SAMPPROD
#define NE10_PI
NE10 defines a number of macros for use in its function signatures.
#define NE10_F2I32_FIXDIV(c, div)
ne10_fft_r2c_state_int32_t * ne10_fft_r2c_cfg_int32_t
void ne10_fft_c2c_1d_int32_c(ne10_fft_cpx_int32_t *fout, ne10_fft_cpx_int32_t *fin, ne10_fft_cfg_int32_t cfg, ne10_int32_t inverse_fft, ne10_int32_t scaled_flag)
Specific implementation of ne10_fft_c2c_1d_int32 using plain C.
Structure for the 32-bit fixed point FFT function.
#define NE10_FACTOR_EIGHT_FIRST_STAGE
ne10_fft_r2c_cfg_int32_t ne10_fft_alloc_r2c_int32(ne10_int32_t nfft)
Creates a configuration structure for variants of ne10_fft_r2c_1d_int32 and ne10_fft_c2r_1d_int32.
ne10_fft_cpx_int32_t * twiddles
ne10_fft_cpx_int32_t * buffer
#define NE10_BYTE_ALIGNMENT(address, alignment)
ne10_fft_cpx_int32_t * buffer
ne10_fft_cfg_int32_t ne10_fft_alloc_c2c_int32_c(ne10_int32_t nfft)
Specific implementation of ne10_fft_alloc_c2c_int32 for ne10_fft_c2c_1d_int32_c.
void ne10_fft_c2r_1d_int32_c(ne10_int32_t *fout, ne10_fft_cpx_int32_t *fin, ne10_fft_r2c_cfg_int32_t cfg, ne10_int32_t scaled_flag)
Specific implementation of ne10_fft_c2r_1d_int32 using plain C.
ne10_fft_cpx_int32_t * super_twiddles
void ne10_mixed_radix_generic_butterfly_inverse_int32_c(ne10_fft_cpx_int32_t *Fout, const ne10_fft_cpx_int32_t *Fin, const ne10_int32_t *factors, const ne10_fft_cpx_int32_t *twiddles, ne10_fft_cpx_int32_t *buffer, const ne10_int32_t scaled_flag)
Generic IFFT function for 32-bit fixed point.
#define NE10_FACTOR_DEFAULT
ne10_fft_state_int32_t * ne10_fft_cfg_int32_t