| 1768 | } |
| 1769 | |
| 1770 | static void ifft4pt(SPFLOAT * ioptr, SPFLOAT scale) |
| 1771 | { |
| 1772 | /*** RADIX 4 ifft ***/ |
| 1773 | SPFLOAT f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; |
| 1774 | SPFLOAT t0r, t0i, t1r, t1i; |
| 1775 | |
| 1776 | /* bit reversed load */ |
| 1777 | f0r = ioptr[0]; |
| 1778 | f0i = ioptr[1]; |
| 1779 | f1r = ioptr[4]; |
| 1780 | f1i = ioptr[5]; |
| 1781 | f2r = ioptr[2]; |
| 1782 | f2i = ioptr[3]; |
| 1783 | f3r = ioptr[6]; |
| 1784 | f3i = ioptr[7]; |
| 1785 | |
| 1786 | /* Butterflys */ |
| 1787 | /* |
| 1788 | f0 - - t0 - - f0 |
| 1789 | f1 - 1 - f1 - - f1 |
| 1790 | f2 - - f2 - 1 - f2 |
| 1791 | f3 - 1 - t1 - i - f3 |
| 1792 | */ |
| 1793 | |
| 1794 | t0r = f0r + f1r; |
| 1795 | t0i = f0i + f1i; |
| 1796 | f1r = f0r - f1r; |
| 1797 | f1i = f0i - f1i; |
| 1798 | |
| 1799 | t1r = f2r - f3r; |
| 1800 | t1i = f2i - f3i; |
| 1801 | f2r = f2r + f3r; |
| 1802 | f2i = f2i + f3i; |
| 1803 | |
| 1804 | f0r = t0r + f2r; |
| 1805 | f0i = t0i + f2i; |
| 1806 | f2r = t0r - f2r; |
| 1807 | f2i = t0i - f2i; |
| 1808 | |
| 1809 | f3r = f1r + t1i; |
| 1810 | f3i = f1i - t1r; |
| 1811 | f1r = f1r - t1i; |
| 1812 | f1i = f1i + t1r; |
| 1813 | |
| 1814 | /* store result */ |
| 1815 | ioptr[0] = scale * f0r; |
| 1816 | ioptr[1] = scale * f0i; |
| 1817 | ioptr[2] = scale * f1r; |
| 1818 | ioptr[3] = scale * f1i; |
| 1819 | ioptr[4] = scale * f2r; |
| 1820 | ioptr[5] = scale * f2i; |
| 1821 | ioptr[6] = scale * f3r; |
| 1822 | ioptr[7] = scale * f3i; |
| 1823 | } |
| 1824 | |
| 1825 | static void ifft8pt(SPFLOAT * ioptr, SPFLOAT scale) |
| 1826 | { |