| 769 | } |
| 770 | |
| 771 | static void fft8pt(SPFLOAT * ioptr) |
| 772 | { |
| 773 | /*** RADIX 8 fft ***/ |
| 774 | SPFLOAT w0r = (SPFLOAT)(1.0 / MYROOT2); /* cos(pi/4) */ |
| 775 | SPFLOAT f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; |
| 776 | SPFLOAT f4r, f4i, f5r, f5i, f6r, f6i, f7r, f7i; |
| 777 | SPFLOAT t0r, t0i, t1r, t1i; |
| 778 | const SPFLOAT Two = 2.0; |
| 779 | |
| 780 | /* bit reversed load */ |
| 781 | f0r = ioptr[0]; |
| 782 | f0i = ioptr[1]; |
| 783 | f1r = ioptr[8]; |
| 784 | f1i = ioptr[9]; |
| 785 | f2r = ioptr[4]; |
| 786 | f2i = ioptr[5]; |
| 787 | f3r = ioptr[12]; |
| 788 | f3i = ioptr[13]; |
| 789 | f4r = ioptr[2]; |
| 790 | f4i = ioptr[3]; |
| 791 | f5r = ioptr[10]; |
| 792 | f5i = ioptr[11]; |
| 793 | f6r = ioptr[6]; |
| 794 | f6i = ioptr[7]; |
| 795 | f7r = ioptr[14]; |
| 796 | f7i = ioptr[15]; |
| 797 | /* Butterflys */ |
| 798 | /* |
| 799 | f0 - - t0 - - f0 - - f0 |
| 800 | f1 - 1 - f1 - - f1 - - f1 |
| 801 | f2 - - f2 - 1 - f2 - - f2 |
| 802 | f3 - 1 - t1 - -i - f3 - - f3 |
| 803 | f4 - - t0 - - f4 - 1 - t0 |
| 804 | f5 - 1 - f5 - - f5 - w3 - f4 |
| 805 | f6 - - f6 - 1 - f6 - -i - t1 |
| 806 | f7 - 1 - t1 - -i - f7 - iw3- f6 |
| 807 | */ |
| 808 | |
| 809 | t0r = f0r + f1r; |
| 810 | t0i = f0i + f1i; |
| 811 | f1r = f0r - f1r; |
| 812 | f1i = f0i - f1i; |
| 813 | |
| 814 | t1r = f2r - f3r; |
| 815 | t1i = f2i - f3i; |
| 816 | f2r = f2r + f3r; |
| 817 | f2i = f2i + f3i; |
| 818 | |
| 819 | f0r = t0r + f2r; |
| 820 | f0i = t0i + f2i; |
| 821 | f2r = t0r - f2r; |
| 822 | f2i = t0i - f2i; |
| 823 | |
| 824 | f3r = f1r - t1i; |
| 825 | f3i = f1i + t1r; |
| 826 | f1r = f1r + t1i; |
| 827 | f1i = f1i - t1r; |
| 828 | |