FastLED 3.9.15
Loading...
Searching...
No Matches

◆ kiss_fftri()

void kiss_fftri ( kiss_fftr_cfg st,
const kiss_fft_cpx * freqdata,
kiss_fft_scalar * timedata )

Definition at line 123 of file kiss_fftr.c.

124{
125 /* input buffer timedata is stored row-wise */
126 int k, ncfft;
127
128 if (st->substate->inverse == 0) {
129 fprintf (stderr, "kiss fft usage error: improper alloc\n");
130 exit (1);
131 }
132
133 ncfft = st->substate->nfft;
134
135 st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r;
136 st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r;
137 C_FIXDIV(st->tmpbuf[0],2);
138
139 for (k = 1; k <= ncfft / 2; ++k) {
140 kiss_fft_cpx fk, fnkc, fek, fok, tmp;
141 fk = freqdata[k];
142 fnkc.r = freqdata[ncfft - k].r;
143 fnkc.i = -freqdata[ncfft - k].i;
144 C_FIXDIV( fk , 2 );
145 C_FIXDIV( fnkc , 2 );
146
147 C_ADD (fek, fk, fnkc);
148 C_SUB (tmp, fk, fnkc);
149 C_MUL (fok, tmp, st->super_twiddles[k-1]);
150 C_ADD (st->tmpbuf[k], fek, fok);
151 C_SUB (st->tmpbuf[ncfft - k], fek, fok);
152#ifdef USE_SIMD
153 st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0);
154#else
155 st->tmpbuf[ncfft - k].i *= -1;
156#endif
157 }
158 kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
159}
#define C_FIXDIV(c, div)
#define C_ADD(res, a, b)
#define C_SUB(res, a, b)
#define C_MUL(m, a, b)
void kiss_fft(kiss_fft_cfg cfg, const kiss_fft_cpx *fin, kiss_fft_cpx *fout)
Definition kiss_fft.c:379
kiss_fft_scalar r
Definition kiss_fft.h:73
kiss_fft_scalar i
Definition kiss_fft.h:74
kiss_fft_cfg substate
Definition kiss_fftr.c:13
kiss_fft_cpx * tmpbuf
Definition kiss_fftr.c:14
kiss_fft_cpx * super_twiddles
Definition kiss_fftr.c:15

References C_ADD, C_FIXDIV, C_MUL, C_SUB, kiss_fft_cpx::i, kiss_fft_state::inverse, kiss_fft(), kiss_fft_scalar, kiss_fft_state::nfft, kiss_fft_cpx::r, kiss_fftr_state::substate, kiss_fftr_state::super_twiddles, and kiss_fftr_state::tmpbuf.

+ Here is the call graph for this function: