| 3149 | } |
| 3150 | |
| 3151 | static void rifft2pt(SPFLOAT * ioptr, SPFLOAT scale) |
| 3152 | { |
| 3153 | /*** RADIX 4 rifft ***/ |
| 3154 | SPFLOAT f0r, f0i, f1r, f1i; |
| 3155 | SPFLOAT t0r, t0i; |
| 3156 | const SPFLOAT Two = 2.0; |
| 3157 | |
| 3158 | /* bit reversed load */ |
| 3159 | t0r = ioptr[0]; |
| 3160 | t0i = ioptr[1]; |
| 3161 | f1r = Two * ioptr[2]; |
| 3162 | f1i = Two * ioptr[3]; |
| 3163 | |
| 3164 | /* start rifft */ |
| 3165 | f0r = t0r + t0i; |
| 3166 | f0i = t0r - t0i; |
| 3167 | /* Butterflys */ |
| 3168 | /* |
| 3169 | f0 - - t0 |
| 3170 | f1 - 1 - f1 |
| 3171 | */ |
| 3172 | |
| 3173 | t0r = f0r + f1r; |
| 3174 | t0i = f0i - f1i; |
| 3175 | f1r = f0r - f1r; |
| 3176 | f1i = f0i + f1i; |
| 3177 | |
| 3178 | /* store result */ |
| 3179 | ioptr[0] = scale * t0r; |
| 3180 | ioptr[1] = scale * t0i; |
| 3181 | ioptr[2] = scale * f1r; |
| 3182 | ioptr[3] = scale * f1i; |
| 3183 | } |
| 3184 | |
| 3185 | static void rifft4pt(SPFLOAT * ioptr, SPFLOAT scale) |
| 3186 | { |