78 stage_count = factors[0];
80 mstride = factors[ (stage_count << 1) - 1 ];
81 N = factors[ stage_count << 1 ];
94 for (f_count = 0; f_count < fstride; f_count ++)
96 Fout1 = & Fout[ f_count * 8 ];
109 scratch_in[0].
r = Fin1[0].
r + Fin1[fstride * 4].
r;
110 scratch_in[0].
i = Fin1[0].
i + Fin1[fstride * 4].
i;
111 scratch_in[1].
r = Fin1[0].
r - Fin1[fstride * 4].
r;
112 scratch_in[1].
i = Fin1[0].
i - Fin1[fstride * 4].
i;
113 scratch_in[2].
r = Fin1[fstride].
r + Fin1[fstride * 5].
r;
114 scratch_in[2].
i = Fin1[fstride].
i + Fin1[fstride * 5].
i;
115 scratch_in[3].
r = Fin1[fstride].
r - Fin1[fstride * 5].
r;
116 scratch_in[3].
i = Fin1[fstride].
i - Fin1[fstride * 5].
i;
117 scratch_in[4].
r = Fin1[fstride * 2].
r + Fin1[fstride * 6].
r;
118 scratch_in[4].
i = Fin1[fstride * 2].
i + Fin1[fstride * 6].
i;
119 scratch_in[5].
r = Fin1[fstride * 2].
r - Fin1[fstride * 6].
r;
120 scratch_in[5].
i = Fin1[fstride * 2].
i - Fin1[fstride * 6].
i;
121 scratch_in[6].
r = Fin1[fstride * 3].
r + Fin1[fstride * 7].
r;
122 scratch_in[6].
i = Fin1[fstride * 3].
i + Fin1[fstride * 7].
i;
123 scratch_in[7].
r = Fin1[fstride * 3].
r - Fin1[fstride * 7].
r;
124 scratch_in[7].
i = Fin1[fstride * 3].
i - Fin1[fstride * 7].
i;
127 scratch[0] = scratch_in[0];
128 scratch[1] = scratch_in[1];
130 scratch[2] = scratch_in[2];
134 scratch[4] = scratch_in[4];
135 scratch[5].
r = scratch_in[5].
i;
136 scratch[5].
i = -scratch_in[5].
r;
138 scratch[6].
r = scratch_in[6].
r;
139 scratch[6].
i = scratch_in[6].
i;
144 scratch[8].
r = scratch[0].
r + scratch[4].
r;
145 scratch[8].
i = scratch[0].
i + scratch[4].
i;
146 scratch[9].
r = scratch[1].
r + scratch[5].
r;
147 scratch[9].
i = scratch[1].
i + scratch[5].
i;
149 scratch[10].
r = scratch[0].
r - scratch[4].
r;
150 scratch[10].
i = scratch[0].
i - scratch[4].
i;
151 scratch[11].
r = scratch[1].
r - scratch[5].
r;
152 scratch[11].
i = scratch[1].
i - scratch[5].
i;
155 scratch[12].
r = scratch[2].
r + scratch[6].
r;
156 scratch[12].
i = scratch[2].
i + scratch[6].
i;
157 scratch[13].
r = scratch[3].
r + scratch[7].
r;
158 scratch[13].
i = scratch[3].
i + scratch[7].
i;
160 scratch[14].
r = scratch[2].
r - scratch[6].
r;
161 scratch[14].
i = scratch[2].
i - scratch[6].
i;
162 scratch[15].
r = scratch[3].
r - scratch[7].
r;
163 scratch[15].
i = scratch[3].
i - scratch[7].
i;
166 scratch_out[4].
r = scratch[8].
r - scratch[12].
r;
167 scratch_out[4].
i = scratch[8].
i - scratch[12].
i;
168 scratch_out[5].
r = scratch[9].
r - scratch[13].
r;
169 scratch_out[5].
i = scratch[9].
i - scratch[13].
i;
172 scratch_out[0].
r = scratch[8].
r + scratch[12].
r;
173 scratch_out[0].
i = scratch[8].
i + scratch[12].
i;
174 scratch_out[1].
r = scratch[9].
r + scratch[13].
r;
175 scratch_out[1].
i = scratch[9].
i + scratch[13].
i;
178 scratch_out[2].
r = scratch[10].
r + scratch[14].
i;
179 scratch_out[2].
i = scratch[10].
i - scratch[14].
r;
180 scratch_out[3].
r = scratch[11].
r + scratch[15].
i;
181 scratch_out[3].
i = scratch[11].
i - scratch[15].
r;
184 scratch_out[6].
r = scratch[10].
r - scratch[14].
i;
185 scratch_out[6].
i = scratch[10].
i + scratch[14].
r;
186 scratch_out[7].
r = scratch[11].
r - scratch[15].
i;
187 scratch_out[7].
i = scratch[11].
i + scratch[15].
r;
190 Fout1[0] = scratch_out[0];
191 Fout1[1] = scratch_out[1];
192 Fout1[2] = scratch_out[2];
193 Fout1[3] = scratch_out[3];
194 Fout1[4] = scratch_out[4];
195 Fout1[5] = scratch_out[5];
196 Fout1[6] = scratch_out[6];
197 Fout1[7] = scratch_out[7];
212 for (f_count = fstride; f_count ; f_count --)
215 scratch_in[0] = *Fin1;
216 Fin2 = Fin1 + fstride;
217 scratch_in[1] = *Fin2;
218 Fin2 = Fin2 + fstride;
219 scratch_in[2] = *Fin2;
220 Fin2 = Fin2 + fstride;
221 scratch_in[3] = *Fin2;
224 if (scaled_flag == 1)
233 scratch[0].
r = scratch_in[0].
r + scratch_in[2].
r;
234 scratch[0].
i = scratch_in[0].
i + scratch_in[2].
i;
236 scratch[1].
r = scratch_in[0].
r - scratch_in[2].
r;
237 scratch[1].
i = scratch_in[0].
i - scratch_in[2].
i;
240 scratch[2].
r = scratch_in[1].
r + scratch_in[3].
r;
241 scratch[2].
i = scratch_in[1].
i + scratch_in[3].
i;
243 scratch[3].
r = scratch_in[1].
r - scratch_in[3].
r;
244 scratch[3].
i = scratch_in[1].
i - scratch_in[3].
i;
247 scratch_out[2].
r = scratch[0].
r - scratch[2].
r;
248 scratch_out[2].
i = scratch[0].
i - scratch[2].
i;
251 scratch_out[0].
r = scratch[0].
r + scratch[2].
r;
252 scratch_out[0].
i = scratch[0].
i + scratch[2].
i;
255 scratch_out[1].
r = scratch[1].
r + scratch[3].
i;
256 scratch_out[1].
i = scratch[1].
i - scratch[3].
r;
259 scratch_out[3].
r = scratch[1].
r - scratch[3].
i;
260 scratch_out[3].
i = scratch[1].
i + scratch[3].
r;
263 * Fout1 ++ = scratch_out[0];
264 * Fout1 ++ = scratch_out[1];
265 * Fout1 ++ = scratch_out[2];
266 * Fout1 ++ = scratch_out[3];
285 scratch_in[0] = Fin1[0];
286 scratch_in[1] = Fin1[1];
288 if (scaled_flag == 1)
294 Fout1[0].
r = scratch_in[0].
r + scratch_in[1].
r;
295 Fout1[0].
i = scratch_in[0].
i + scratch_in[1].
i;
296 Fout1[1].
r = scratch_in[0].
r - scratch_in[1].
r;
297 Fout1[1].
i = scratch_in[0].
i - scratch_in[1].
i;
308 for (; stage_count > 1 ; stage_count--)
311 for (f_count = 0; f_count < fstride; f_count ++)
313 Fout1 = & Fout[ f_count * mstride << 2 ];
315 for (m_count = mstride; m_count ; m_count --)
318 scratch_tw[0] = *tw1;
320 scratch_tw[1] = *tw2;
322 scratch_tw[2] = *tw2;
323 scratch_in[0] = * Fin1;
325 scratch_in[1] = * Fin2;
327 scratch_in[2] = * Fin2;
329 scratch_in[3] = * Fin2;
330 if (scaled_flag == 1)
340 scratch[0] = scratch_in[0];
357 scratch[4].
r = scratch[0].
r + scratch[2].
r;
358 scratch[4].
i = scratch[0].
i + scratch[2].
i;
360 scratch[5].
r = scratch[0].
r - scratch[2].
r;
361 scratch[5].
i = scratch[0].
i - scratch[2].
i;
364 scratch[6].
r = scratch[1].
r + scratch[3].
r;
365 scratch[6].
i = scratch[1].
i + scratch[3].
i;
367 scratch[7].
r = scratch[1].
r - scratch[3].
r;
368 scratch[7].
i = scratch[1].
i - scratch[3].
i;
371 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
372 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
375 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
376 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
379 scratch_out[1].
r = scratch[5].
r + scratch[7].
i;
380 scratch_out[1].
i = scratch[5].
i - scratch[7].
r;
383 scratch_out[3].
r = scratch[5].
r - scratch[7].
i;
384 scratch_out[3].
i = scratch[5].
i + scratch[7].
r;
387 *Fout1 = scratch_out[0];
388 Fout2 = Fout1 + mstride;
389 *Fout2 = scratch_out[1];
391 *Fout2 = scratch_out[2];
393 *Fout2 = scratch_out[3];
416 for (f_count = 0; f_count < fstride; f_count ++)
419 for (m_count = mstride; m_count ; m_count --)
422 scratch_tw[0] = *tw1;
424 scratch_tw[1] = *tw2;
426 scratch_tw[2] = *tw2;
427 scratch_in[0] = * Fin1;
429 scratch_in[1] = * Fin2;
431 scratch_in[2] = * Fin2;
433 scratch_in[3] = * Fin2;
434 if (scaled_flag == 1)
444 scratch[0] = scratch_in[0];
461 scratch[4].
r = scratch[0].
r + scratch[2].
r;
462 scratch[4].
i = scratch[0].
i + scratch[2].
i;
464 scratch[5].
r = scratch[0].
r - scratch[2].
r;
465 scratch[5].
i = scratch[0].
i - scratch[2].
i;
468 scratch[6].
r = scratch[1].
r + scratch[3].
r;
469 scratch[6].
i = scratch[1].
i + scratch[3].
i;
471 scratch[7].
r = scratch[1].
r - scratch[3].
r;
472 scratch[7].
i = scratch[1].
i - scratch[3].
i;
475 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
476 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
479 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
480 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
483 scratch_out[1].
r = scratch[5].
r + scratch[7].
i;
484 scratch_out[1].
i = scratch[5].
i - scratch[7].
r;
487 scratch_out[3].
r = scratch[5].
r - scratch[7].
i;
488 scratch_out[3].
i = scratch[5].
i + scratch[7].
r;
491 *Fout1 = scratch_out[0];
493 *Fout2 = scratch_out[1];
495 *Fout2 = scratch_out[2];
497 *Fout2 = scratch_out[3];
531 stage_count = factors[0];
532 fstride = factors[1];
533 mstride = factors[ (stage_count << 1) - 1 ];
534 N = factors[ stage_count << 1 ];
547 for (f_count = 0; f_count < fstride; f_count ++)
549 Fout1 = & Fout[ f_count * 8 ];
551 if (scaled_flag == 1)
563 scratch_in[0].
r = Fin1[0].
r + Fin1[fstride * 4].
r;
564 scratch_in[0].
i = Fin1[0].
i + Fin1[fstride * 4].
i;
565 scratch_in[1].
r = Fin1[0].
r - Fin1[fstride * 4].
r;
566 scratch_in[1].
i = Fin1[0].
i - Fin1[fstride * 4].
i;
567 scratch_in[2].
r = Fin1[fstride].
r + Fin1[fstride * 5].
r;
568 scratch_in[2].
i = Fin1[fstride].
i + Fin1[fstride * 5].
i;
569 scratch_in[3].
r = Fin1[fstride].
r - Fin1[fstride * 5].
r;
570 scratch_in[3].
i = Fin1[fstride].
i - Fin1[fstride * 5].
i;
571 scratch_in[4].
r = Fin1[fstride * 2].
r + Fin1[fstride * 6].
r;
572 scratch_in[4].
i = Fin1[fstride * 2].
i + Fin1[fstride * 6].
i;
573 scratch_in[5].
r = Fin1[fstride * 2].
r - Fin1[fstride * 6].
r;
574 scratch_in[5].
i = Fin1[fstride * 2].
i - Fin1[fstride * 6].
i;
575 scratch_in[6].
r = Fin1[fstride * 3].
r + Fin1[fstride * 7].
r;
576 scratch_in[6].
i = Fin1[fstride * 3].
i + Fin1[fstride * 7].
i;
577 scratch_in[7].
r = Fin1[fstride * 3].
r - Fin1[fstride * 7].
r;
578 scratch_in[7].
i = Fin1[fstride * 3].
i - Fin1[fstride * 7].
i;
582 scratch[0] = scratch_in[0];
583 scratch[1] = scratch_in[1];
585 scratch[2] = scratch_in[2];
589 scratch[4] = scratch_in[4];
590 scratch[5].
r = -scratch_in[5].
i;
591 scratch[5].
i = scratch_in[5].
r;
593 scratch[6].
r = scratch_in[6].
r;
594 scratch[6].
i = scratch_in[6].
i;
599 scratch[8].
r = scratch[0].
r + scratch[4].
r;
600 scratch[8].
i = scratch[0].
i + scratch[4].
i;
601 scratch[9].
r = scratch[1].
r + scratch[5].
r;
602 scratch[9].
i = scratch[1].
i + scratch[5].
i;
604 scratch[10].
r = scratch[0].
r - scratch[4].
r;
605 scratch[10].
i = scratch[0].
i - scratch[4].
i;
606 scratch[11].
r = scratch[1].
r - scratch[5].
r;
607 scratch[11].
i = scratch[1].
i - scratch[5].
i;
610 scratch[12].
r = scratch[2].
r + scratch[6].
r;
611 scratch[12].
i = scratch[2].
i + scratch[6].
i;
612 scratch[13].
r = scratch[3].
r + scratch[7].
r;
613 scratch[13].
i = scratch[3].
i + scratch[7].
i;
615 scratch[14].
r = scratch[2].
r - scratch[6].
r;
616 scratch[14].
i = scratch[2].
i - scratch[6].
i;
617 scratch[15].
r = scratch[3].
r - scratch[7].
r;
618 scratch[15].
i = scratch[3].
i - scratch[7].
i;
621 scratch_out[4].
r = scratch[8].
r - scratch[12].
r;
622 scratch_out[4].
i = scratch[8].
i - scratch[12].
i;
623 scratch_out[5].
r = scratch[9].
r - scratch[13].
r;
624 scratch_out[5].
i = scratch[9].
i - scratch[13].
i;
627 scratch_out[0].
r = scratch[8].
r + scratch[12].
r;
628 scratch_out[0].
i = scratch[8].
i + scratch[12].
i;
629 scratch_out[1].
r = scratch[9].
r + scratch[13].
r;
630 scratch_out[1].
i = scratch[9].
i + scratch[13].
i;
633 scratch_out[2].
r = scratch[10].
r - scratch[14].
i;
634 scratch_out[2].
i = scratch[10].
i + scratch[14].
r;
635 scratch_out[3].
r = scratch[11].
r - scratch[15].
i;
636 scratch_out[3].
i = scratch[11].
i + scratch[15].
r;
639 scratch_out[6].
r = scratch[10].
r + scratch[14].
i;
640 scratch_out[6].
i = scratch[10].
i - scratch[14].
r;
641 scratch_out[7].
r = scratch[11].
r + scratch[15].
i;
642 scratch_out[7].
i = scratch[11].
i - scratch[15].
r;
645 Fout1[0] = scratch_out[0];
646 Fout1[1] = scratch_out[1];
647 Fout1[2] = scratch_out[2];
648 Fout1[3] = scratch_out[3];
649 Fout1[4] = scratch_out[4];
650 Fout1[5] = scratch_out[5];
651 Fout1[6] = scratch_out[6];
652 Fout1[7] = scratch_out[7];
667 for (f_count = fstride; f_count ; f_count --)
670 scratch_in[0] = *Fin1;
671 Fin2 = Fin1 + fstride;
672 scratch_in[1] = *Fin2;
673 Fin2 = Fin2 + fstride;
674 scratch_in[2] = *Fin2;
675 Fin2 = Fin2 + fstride;
676 scratch_in[3] = *Fin2;
679 if (scaled_flag == 1)
688 scratch[0].
r = scratch_in[0].
r + scratch_in[2].
r;
689 scratch[0].
i = scratch_in[0].
i + scratch_in[2].
i;
691 scratch[1].
r = scratch_in[0].
r - scratch_in[2].
r;
692 scratch[1].
i = scratch_in[0].
i - scratch_in[2].
i;
695 scratch[2].
r = scratch_in[1].
r + scratch_in[3].
r;
696 scratch[2].
i = scratch_in[1].
i + scratch_in[3].
i;
698 scratch[3].
r = scratch_in[1].
r - scratch_in[3].
r;
699 scratch[3].
i = scratch_in[1].
i - scratch_in[3].
i;
702 scratch_out[2].
r = scratch[0].
r - scratch[2].
r;
703 scratch_out[2].
i = scratch[0].
i - scratch[2].
i;
706 scratch_out[0].
r = scratch[0].
r + scratch[2].
r;
707 scratch_out[0].
i = scratch[0].
i + scratch[2].
i;
710 scratch_out[1].
r = scratch[1].
r - scratch[3].
i;
711 scratch_out[1].
i = scratch[1].
i + scratch[3].
r;
714 scratch_out[3].
r = scratch[1].
r + scratch[3].
i;
715 scratch_out[3].
i = scratch[1].
i - scratch[3].
r;
718 * Fout1 ++ = scratch_out[0];
719 * Fout1 ++ = scratch_out[1];
720 * Fout1 ++ = scratch_out[2];
721 * Fout1 ++ = scratch_out[3];
740 scratch_in[0] = Fin1[0];
741 scratch_in[1] = Fin1[1];
743 if (scaled_flag == 1)
749 Fout1[0].
r = scratch_in[0].
r + scratch_in[1].
r;
750 Fout1[0].
i = scratch_in[0].
i + scratch_in[1].
i;
751 Fout1[1].
r = scratch_in[0].
r - scratch_in[1].
r;
752 Fout1[1].
i = scratch_in[0].
i - scratch_in[1].
i;
763 for (; stage_count > 1 ; stage_count--)
766 for (f_count = 0; f_count < fstride; f_count ++)
768 Fout1 = & Fout[ f_count * mstride << 2 ];
770 for (m_count = mstride; m_count ; m_count --)
773 scratch_tw[0] = *tw1;
775 scratch_tw[1] = *tw2;
777 scratch_tw[2] = *tw2;
778 scratch_in[0] = * Fin1;
780 scratch_in[1] = * Fin2;
782 scratch_in[2] = * Fin2;
784 scratch_in[3] = * Fin2;
785 if (scaled_flag == 1)
795 scratch[0] = scratch_in[0];
812 scratch[4].
r = scratch[0].
r + scratch[2].
r;
813 scratch[4].
i = scratch[0].
i + scratch[2].
i;
815 scratch[5].
r = scratch[0].
r - scratch[2].
r;
816 scratch[5].
i = scratch[0].
i - scratch[2].
i;
819 scratch[6].
r = scratch[1].
r + scratch[3].
r;
820 scratch[6].
i = scratch[1].
i + scratch[3].
i;
822 scratch[7].
r = scratch[1].
r - scratch[3].
r;
823 scratch[7].
i = scratch[1].
i - scratch[3].
i;
826 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
827 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
830 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
831 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
834 scratch_out[1].
r = scratch[5].
r - scratch[7].
i;
835 scratch_out[1].
i = scratch[5].
i + scratch[7].
r;
838 scratch_out[3].
r = scratch[5].
r + scratch[7].
i;
839 scratch_out[3].
i = scratch[5].
i - scratch[7].
r;
842 *Fout1 = scratch_out[0];
843 Fout2 = Fout1 + mstride;
844 *Fout2 = scratch_out[1];
846 *Fout2 = scratch_out[2];
848 *Fout2 = scratch_out[3];
871 for (f_count = 0; f_count < fstride; f_count ++)
874 for (m_count = mstride; m_count ; m_count --)
877 scratch_tw[0] = *tw1;
879 scratch_tw[1] = *tw2;
881 scratch_tw[2] = *tw2;
882 scratch_in[0] = * Fin1;
884 scratch_in[1] = * Fin2;
886 scratch_in[2] = * Fin2;
888 scratch_in[3] = * Fin2;
889 if (scaled_flag == 1)
899 scratch[0] = scratch_in[0];
916 scratch[4].
r = scratch[0].
r + scratch[2].
r;
917 scratch[4].
i = scratch[0].
i + scratch[2].
i;
919 scratch[5].
r = scratch[0].
r - scratch[2].
r;
920 scratch[5].
i = scratch[0].
i - scratch[2].
i;
923 scratch[6].
r = scratch[1].
r + scratch[3].
r;
924 scratch[6].
i = scratch[1].
i + scratch[3].
i;
926 scratch[7].
r = scratch[1].
r - scratch[3].
r;
927 scratch[7].
i = scratch[1].
i - scratch[3].
i;
930 scratch_out[2].
r = scratch[4].
r - scratch[6].
r;
931 scratch_out[2].
i = scratch[4].
i - scratch[6].
i;
934 scratch_out[0].
r = scratch[4].
r + scratch[6].
r;
935 scratch_out[0].
i = scratch[4].
i + scratch[6].
i;
938 scratch_out[1].
r = scratch[5].
r - scratch[7].
i;
939 scratch_out[1].
i = scratch[5].
i + scratch[7].
r;
942 scratch_out[3].
r = scratch[5].
r + scratch[7].
i;
943 scratch_out[3].
i = scratch[5].
i - scratch[7].
r;
946 *Fout1 = scratch_out[0];
948 *Fout2 = scratch_out[1];
950 *Fout2 = scratch_out[2];
952 *Fout2 = scratch_out[3];
977 dst[0].
r = tdc.
r + tdc.
i;
978 dst[ncfft].
r = tdc.
r - tdc.
i;
979 dst[ncfft].
i = dst[0].
i = 0;
981 for (k = 1; k <= ncfft / 2 ; ++k)
984 fpnk.
r = src[ncfft - k].
r;
985 fpnk.
i = - src[ncfft - k].
i;
992 f1k.
r = fpk.
r + fpnk.
r;
993 f1k.
i = fpk.
i + fpnk.
i;
995 f2k.
r = fpk.
r - fpnk.
r;
996 f2k.
i = fpk.
i - fpnk.
i;
1003 dst[k].
r = (f1k.
r + tw.
r) >> 1;
1004 dst[k].
i = (f1k.
i + tw.
i) >> 1;
1005 dst[ncfft - k].
r = (f1k.
r - tw.
r) >> 1;
1006 dst[ncfft - k].
i = (tw.
i - f1k.
i) >> 1;
1021 dst[0].
r = src[0].
r + src[ncfft].
r;
1022 dst[0].
i = src[0].
r - src[ncfft].
r;
1027 for (k = 1; k <= ncfft / 2; k++)
1030 fnkc.
r = src[ncfft - k].
r;
1031 fnkc.
i = -src[ncfft - k].
i;
1038 fek.
r = fk.
r + fnkc.
r;
1039 fek.
i = fk.
i + fnkc.
i;
1041 tmp.
r = fk.
r - fnkc.
r;
1042 tmp.
i = fk.
i - fnkc.
i;
1049 dst[k].
r = fek.
r + fok.
r;
1050 dst[k].
i = fek.
i + fok.
i;
1052 dst[ncfft - k].
r = fek.
r - fok.
r;
1053 dst[ncfft - k].
i = fok.
i - fek.
i;
1112 for (; stage_count > 0; stage_count --)
1114 cur_radix = factors[2 * stage_count];
1115 fstride /= cur_radix;
1116 mstride = factors[2 * stage_count + 1];
1117 for (j = 0; j < mstride; j++)
1119 for (k = 1; k < cur_radix; k++)
1121 phase = -2 * pi * fstride * k * j / nfft;
1126 twiddles += mstride * (cur_radix - 1);
1144 ne10_mixed_radix_butterfly_inverse_int16_c (fout, fin, cfg->
factors, cfg->
twiddles, cfg->
buffer, scaled_flag);
1146 ne10_mixed_radix_butterfly_int16_c (fout, fin, cfg->
factors, cfg->
twiddles, cfg->
buffer, scaled_flag);
1208 for (; stage_count > 0; stage_count --)
1210 cur_radix = factors[2 * stage_count];
1211 fstride /= cur_radix;
1212 mstride = factors[2 * stage_count + 1];
1213 for (j = 0; j < mstride; j++)
1215 for (k = 1; k < cur_radix; k++)
1217 phase = -2 * pi * fstride * k * j / ncfft;
1222 twiddles += mstride * (cur_radix - 1);
1226 for (j = 0; j < ncfft / 2; j++)
Structure for the 16-bit fixed point FFT function.
ne10_fft_cpx_int16_t * twiddles
ne10_fft_cpx_int16_t * twiddles
#define NE10_MAXFACTORS
Structure for the floating point FFT function.
void ne10_fft_c2r_1d_int16_c(ne10_int16_t *fout, ne10_fft_cpx_int16_t *fin, ne10_fft_r2c_cfg_int16_t cfg, ne10_int32_t scaled_flag)
Specific implementation of ne10_fft_c2r_1d_int16 using plain C.
ne10_int32_t ne10_factor(ne10_int32_t n, ne10_int32_t *facbuf, ne10_int32_t ne10_factor_flags)
void ne10_fft_c2c_1d_int16_c(ne10_fft_cpx_int16_t *fout, ne10_fft_cpx_int16_t *fin, ne10_fft_cfg_int16_t cfg, ne10_int32_t inverse_fft, ne10_int32_t scaled_flag)
Specific implementation of ne10_fft_c2c_1d_int16 using plain C.
void ne10_fft_r2c_1d_int16_c(ne10_fft_cpx_int16_t *fout, ne10_int16_t *fin, ne10_fft_r2c_cfg_int16_t cfg, ne10_int32_t scaled_flag)
Specific implementation of ne10_fft_r2c_1d_int16 using plain C.
#define NE10_F2I16_SAMPPROD
#define NE10_FFT_BYTE_ALIGNMENT
ne10_fft_cpx_int16_t * super_twiddles
#define NE10_PI
NE10 defines a number of macros for use in its function signatures.
Structure for the 32-bit fixed point FFT function.
#define NE10_F2I16_FIXDIV(c, div)
#define NE10_FACTOR_EIGHT_FIRST_STAGE
ne10_fft_cpx_int16_t * buffer
ne10_fft_r2c_cfg_int16_t ne10_fft_alloc_r2c_int16(ne10_int32_t nfft)
Creates a configuration structure for variants of ne10_fft_r2c_1d_int16 and ne10_fft_c2r_1d_int16.
#define NE10_BYTE_ALIGNMENT(address, alignment)
ne10_fft_r2c_state_int16_t * ne10_fft_r2c_cfg_int16_t
ne10_fft_cfg_int16_t ne10_fft_alloc_c2c_int16(ne10_int32_t nfft)
Creates a configuration structure for variants of ne10_fft_c2c_1d_int16.
ne10_fft_state_int16_t * ne10_fft_cfg_int16_t
ne10_fft_cpx_int16_t * buffer