| 886 | } |
| 887 | |
| 888 | static void bfR2(SPFLOAT * ioptr, int M, int NDiffU) |
| 889 | { |
| 890 | /*** 2nd radix 2 stage ***/ |
| 891 | unsigned int pos; |
| 892 | unsigned int posi; |
| 893 | unsigned int pinc; |
| 894 | unsigned int pnext; |
| 895 | unsigned int NSameU; |
| 896 | unsigned int SameUCnt; |
| 897 | |
| 898 | SPFLOAT * pstrt; |
| 899 | SPFLOAT *p0r, *p1r, *p2r, *p3r; |
| 900 | |
| 901 | SPFLOAT f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; |
| 902 | SPFLOAT f4r, f4i, f5r, f5i, f6r, f6i, f7r, f7i; |
| 903 | |
| 904 | pinc = NDiffU * 2; /* 2 floats per complex */ |
| 905 | pnext = pinc * 4; |
| 906 | pos = 2; |
| 907 | posi = pos + 1; |
| 908 | NSameU = POW2(M) / 4 / NDiffU; /* 4 Us at a time */ |
| 909 | pstrt = ioptr; |
| 910 | p0r = pstrt; |
| 911 | p1r = pstrt + pinc; |
| 912 | p2r = p1r + pinc; |
| 913 | p3r = p2r + pinc; |
| 914 | |
| 915 | /* Butterflys */ |
| 916 | /* |
| 917 | f0 - - f4 |
| 918 | f1 - 1 - f5 |
| 919 | f2 - - f6 |
| 920 | f3 - 1 - f7 |
| 921 | */ |
| 922 | /* Butterflys */ |
| 923 | /* |
| 924 | f0 - - f4 |
| 925 | f1 - 1 - f5 |
| 926 | f2 - - f6 |
| 927 | f3 - 1 - f7 |
| 928 | */ |
| 929 | |
| 930 | for (SameUCnt = NSameU; SameUCnt > 0; SameUCnt--) |
| 931 | { |
| 932 | |
| 933 | f0r = *p0r; |
| 934 | f1r = *p1r; |
| 935 | f0i = *(p0r + 1); |
| 936 | f1i = *(p1r + 1); |
| 937 | f2r = *p2r; |
| 938 | f3r = *p3r; |
| 939 | f2i = *(p2r + 1); |
| 940 | f3i = *(p3r + 1); |
| 941 | |
| 942 | f4r = f0r + f1r; |
| 943 | f4i = f0i + f1i; |
| 944 | f5r = f0r - f1r; |
| 945 | f5i = f0i - f1i; |