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

Function rfft4pt

src/core/_SoundPipe_FFT.cpp:2712–2783  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2710}
2711
2712static void rfft4pt(SPFLOAT * ioptr)
2713{
2714 /*** RADIX 8 rfft ***/
2715 SPFLOAT f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
2716 SPFLOAT t0r, t0i, t1r, t1i;
2717 SPFLOAT w0r = 1.0 / MYROOT2; /* cos(pi/4) */
2718 const SPFLOAT Two = 2.0;
2719 const SPFLOAT scale = 0.5;
2720
2721 /* bit reversed load */
2722 f0r = ioptr[0];
2723 f0i = ioptr[1];
2724 f1r = ioptr[4];
2725 f1i = ioptr[5];
2726 f2r = ioptr[2];
2727 f2i = ioptr[3];
2728 f3r = ioptr[6];
2729 f3i = ioptr[7];
2730
2731 /* Butterflys */
2732 /*
2733 f0 - - t0 - - f0
2734 f1 - 1 - f1 - - f1
2735 f2 - - f2 - 1 - f2
2736 f3 - 1 - t1 - -i - f3
2737 */
2738
2739 t0r = f0r + f1r;
2740 t0i = f0i + f1i;
2741 f1r = f0r - f1r;
2742 f1i = f0i - f1i;
2743
2744 t1r = f2r - f3r;
2745 t1i = f2i - f3i;
2746 f2r = f2r + f3r;
2747 f2i = f2i + f3i;
2748
2749 f0r = t0r + f2r;
2750 f0i = t0i + f2i;
2751 f2r = t0r - f2r;
2752 f2i = f2i - t0i; /* neg for rfft */
2753
2754 f3r = f1r - t1i;
2755 f3i = f1i + t1r;
2756 f1r = f1r + t1i;
2757 f1i = f1i - t1r;
2758
2759 /* finish rfft */
2760 t0r = f0r + f0i; /* compute Re(x[0]) */
2761 t0i = f0r - f0i; /* compute Re(x[N/2]) */
2762
2763 t1r = f1r + f3r;
2764 t1i = f1i - f3i;
2765 f0r = f1i + f3i;
2766 f0i = f3r - f1r;
2767
2768 f1r = t1r + w0r * f0r + w0r * f0i;
2769 f1i = t1i - w0r * f0r + w0r * f0i;

Callers 1

rffts1Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected