| 1823 | } |
| 1824 | |
| 1825 | static void ifft8pt(SPFLOAT * ioptr, SPFLOAT scale) |
| 1826 | { |
| 1827 | /*** RADIX 8 ifft ***/ |
| 1828 | SPFLOAT w0r = 1.0 / MYROOT2; /* cos(pi/4) */ |
| 1829 | SPFLOAT f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; |
| 1830 | SPFLOAT f4r, f4i, f5r, f5i, f6r, f6i, f7r, f7i; |
| 1831 | SPFLOAT t0r, t0i, t1r, t1i; |
| 1832 | const SPFLOAT Two = 2.0; |
| 1833 | |
| 1834 | /* bit reversed load */ |
| 1835 | f0r = ioptr[0]; |
| 1836 | f0i = ioptr[1]; |
| 1837 | f1r = ioptr[8]; |
| 1838 | f1i = ioptr[9]; |
| 1839 | f2r = ioptr[4]; |
| 1840 | f2i = ioptr[5]; |
| 1841 | f3r = ioptr[12]; |
| 1842 | f3i = ioptr[13]; |
| 1843 | f4r = ioptr[2]; |
| 1844 | f4i = ioptr[3]; |
| 1845 | f5r = ioptr[10]; |
| 1846 | f5i = ioptr[11]; |
| 1847 | f6r = ioptr[6]; |
| 1848 | f6i = ioptr[7]; |
| 1849 | f7r = ioptr[14]; |
| 1850 | f7i = ioptr[15]; |
| 1851 | |
| 1852 | /* Butterflys */ |
| 1853 | /* |
| 1854 | f0 - - t0 - - f0 - - f0 |
| 1855 | f1 - 1 - f1 - - f1 - - f1 |
| 1856 | f2 - - f2 - 1 - f2 - - f2 |
| 1857 | f3 - 1 - t1 - i - f3 - - f3 |
| 1858 | f4 - - t0 - - f4 - 1 - t0 |
| 1859 | f5 - 1 - f5 - - f5 - w3 - f4 |
| 1860 | f6 - - f6 - 1 - f6 - i - t1 |
| 1861 | f7 - 1 - t1 - i - f7 - iw3- f6 |
| 1862 | */ |
| 1863 | |
| 1864 | t0r = f0r + f1r; |
| 1865 | t0i = f0i + f1i; |
| 1866 | f1r = f0r - f1r; |
| 1867 | f1i = f0i - f1i; |
| 1868 | |
| 1869 | t1r = f2r - f3r; |
| 1870 | t1i = f2i - f3i; |
| 1871 | f2r = f2r + f3r; |
| 1872 | f2i = f2i + f3i; |
| 1873 | |
| 1874 | f0r = t0r + f2r; |
| 1875 | f0i = t0i + f2i; |
| 1876 | f2r = t0r - f2r; |
| 1877 | f2i = t0i - f2i; |
| 1878 | |
| 1879 | f3r = f1r + t1i; |
| 1880 | f3i = f1i - t1r; |
| 1881 | f1r = f1r - t1i; |
| 1882 | f1i = f1i + t1r; |