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 139 of file kiss_fftr.cpp.hpp.

140{
141 /* input buffer timedata is stored row-wise */
142 int k, ncfft;
143
144 if (st->substate->inverse == 0) {
145 //fprintf (stderr, "kiss fft usage error: improper alloc\n");
146 FL_WARN("kiss fft usage error: improper alloc");
147 fl::exit(1);
148 }
149
150 ncfft = st->substate->nfft;
151
152 st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r;
153 st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r;
154 C_FIXDIV(st->tmpbuf[0],2);
155
156 for (k = 1; k <= ncfft / 2; ++k) {
157 kiss_fft_cpx fk, fnkc, fek, fok, tmp;
158 fk = freqdata[k];
159 fnkc.r = freqdata[ncfft - k].r;
160 fnkc.i = -freqdata[ncfft - k].i;
161 C_FIXDIV( fk , 2 );
162 C_FIXDIV( fnkc , 2 );
163
164 C_ADD (fek, fk, fnkc);
165 C_SUB (tmp, fk, fnkc);
166 C_MUL (fok, tmp, st->super_twiddles[k-1]);
167 C_ADD (st->tmpbuf[k], fek, fok);
168 C_SUB (st->tmpbuf[ncfft - k], fek, fok);
169#ifdef USE_SIMD
170 st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0);
171#else
172 st->tmpbuf[ncfft - k].i *= -1;
173#endif
174 }
175 kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
176}
#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) FL_NOEXCEPT
kiss_fft_scalar r
Definition kiss_fft.h:85
kiss_fft_scalar i
Definition kiss_fft.h:86
kiss_fft_cfg substate
kiss_fft_cpx * tmpbuf
kiss_fft_cpx * super_twiddles
#define FL_WARN(X)
Definition log.h:276
void exit(int code)
No-op exit function for embedded systems In embedded environments, calling exit is typically not mean...
Definition exit.h:8

References C_ADD, C_FIXDIV, C_MUL, C_SUB, fl::exit(), FL_NOEXCEPT, FL_WARN, kiss_fft_cpx::i, kiss_fft(), kiss_fft_scalar, and kiss_fft_cpx::r.

+ Here is the call graph for this function: