| 1941 | } |
| 1942 | |
| 1943 | static void ibfR2(SPFLOAT * ioptr, int M, int NDiffU) |
| 1944 | { |
| 1945 | /*** 2nd radix 2 stage ***/ |
| 1946 | unsigned int pos; |
| 1947 | unsigned int posi; |
| 1948 | unsigned int pinc; |
| 1949 | unsigned int pnext; |
| 1950 | unsigned int NSameU; |
| 1951 | unsigned int SameUCnt; |
| 1952 | |
| 1953 | SPFLOAT * pstrt; |
| 1954 | SPFLOAT *p0r, *p1r, *p2r, *p3r; |
| 1955 | |
| 1956 | SPFLOAT f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; |
| 1957 | SPFLOAT f4r, f4i, f5r, f5i, f6r, f6i, f7r, f7i; |
| 1958 | |
| 1959 | pinc = NDiffU * 2; /* 2 floats per complex */ |
| 1960 | pnext = pinc * 4; |
| 1961 | pos = 2; |
| 1962 | posi = pos + 1; |
| 1963 | NSameU = POW2(M) / 4 / NDiffU; /* 4 Us at a time */ |
| 1964 | pstrt = ioptr; |
| 1965 | p0r = pstrt; |
| 1966 | p1r = pstrt + pinc; |
| 1967 | p2r = p1r + pinc; |
| 1968 | p3r = p2r + pinc; |
| 1969 | |
| 1970 | /* Butterflys */ |
| 1971 | /* |
| 1972 | f0 - - f4 |
| 1973 | f1 - 1 - f5 |
| 1974 | f2 - - f6 |
| 1975 | f3 - 1 - f7 |
| 1976 | */ |
| 1977 | /* Butterflys */ |
| 1978 | /* |
| 1979 | f0 - - f4 |
| 1980 | f1 - 1 - f5 |
| 1981 | f2 - - f6 |
| 1982 | f3 - 1 - f7 |
| 1983 | */ |
| 1984 | |
| 1985 | for (SameUCnt = NSameU; SameUCnt > 0; SameUCnt--) |
| 1986 | { |
| 1987 | |
| 1988 | f0r = *p0r; |
| 1989 | f1r = *p1r; |
| 1990 | f0i = *(p0r + 1); |
| 1991 | f1i = *(p1r + 1); |
| 1992 | f2r = *p2r; |
| 1993 | f3r = *p3r; |
| 1994 | f2i = *(p2r + 1); |
| 1995 | f3i = *(p3r + 1); |
| 1996 | |
| 1997 | f4r = f0r + f1r; |
| 1998 | f4i = f0i + f1i; |
| 1999 | f5r = f0r - f1r; |
| 2000 | f5i = f0i - f1i; |