MCPcopy Create free account
hub / github.com/LabSound/LabSound / rifft8pt

Function rifft8pt

src/core/_SoundPipe_FFT.cpp:3256–3408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3254}
3255
3256static void rifft8pt(SPFLOAT * ioptr, SPFLOAT scale)
3257{
3258 /*** RADIX 16 rifft ***/
3259 SPFLOAT w0r = (SPFLOAT)(1.0 / MYROOT2); /* cos(pi/4) */
3260 SPFLOAT w1r = MYCOSPID8; /* cos(pi/8) */
3261 SPFLOAT w1i = MYSINPID8; /* sin(pi/8) */
3262 SPFLOAT f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
3263 SPFLOAT f4r, f4i, f5r, f5i, f6r, f6i, f7r, f7i;
3264 SPFLOAT t0r, t0i, t1r, t1i;
3265 const SPFLOAT Two = 2.0;
3266
3267 /* bit reversed load */
3268 t0r = ioptr[0];
3269 t0i = ioptr[1];
3270 f4r = ioptr[2];
3271 f4i = ioptr[3];
3272 f2r = ioptr[4];
3273 f2i = ioptr[5];
3274 f6r = ioptr[6];
3275 f6i = ioptr[7];
3276 f1r = Two * ioptr[8];
3277 f1i = Two * ioptr[9];
3278 f5r = ioptr[10];
3279 f5i = ioptr[11];
3280 f3r = ioptr[12];
3281 f3i = ioptr[13];
3282 f7r = ioptr[14];
3283 f7i = ioptr[15];
3284
3285 /* start rfft */
3286 f0r = t0r + t0i; /* compute Re(x[0]) */
3287 f0i = t0r - t0i; /* compute Re(x[N/2]) */
3288
3289 t0r = f2r + f3r;
3290 t0i = f2i - f3i;
3291 t1r = f2r - f3r;
3292 t1i = f2i + f3i;
3293
3294 f2r = t0r - w0r * t1r - w0r * t1i;
3295 f2i = t0i + w0r * t1r - w0r * t1i;
3296 f3r = Two * t0r - f2r;
3297 f3i = f2i - Two * t0i;
3298
3299 t0r = f4r + f7r;
3300 t0i = f4i - f7i;
3301 t1r = f4r - f7r;
3302 t1i = f4i + f7i;
3303
3304 f4r = t0r - w1i * t1r - w1r * t1i;
3305 f4i = t0i + w1r * t1r - w1i * t1i;
3306 f7r = Two * t0r - f4r;
3307 f7i = f4i - Two * t0i;
3308
3309 t0r = f6r + f5r;
3310 t0i = f6i - f5i;
3311 t1r = f6r - f5r;
3312 t1i = f6i + f5i;
3313

Callers 1

riffts1Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected