39 size_t subsize = 0, memneeded;
43 FL_WARN(
"Real FFT optimization must be even.");
54 if (*lenmem >= memneeded)
63 #pragma GCC diagnostic push
64 #pragma GCC diagnostic ignored "-Wcast-align"
67 #pragma GCC diagnostic pop
72 for (i = 0; i < nfft/2; ++i) {
74 -3.14159265358979323846264338327 * ((double) (i+1) / nfft + .5);
90 FL_WARN(
"kiss fft usage error: improper alloc");
113 freqdata[0].
r = tdc.
r + tdc.
i;
114 freqdata[ncfft].
r = tdc.
r - tdc.
i;
116 freqdata[ncfft].
i = freqdata[0].
i = _mm_set1_ps(0);
118 freqdata[ncfft].
i = freqdata[0].
i = 0;
121 for ( k=1;k <= ncfft/2 ; ++k ) {
128 C_ADD( f1k, fpk , fpnk );
129 C_SUB( f2k, fpk , fpnk );
146 FL_WARN(
"kiss fft usage error: improper alloc");
152 st->
tmpbuf[0].
r = freqdata[0].
r + freqdata[ncfft].
r;
153 st->
tmpbuf[0].
i = freqdata[0].
r - freqdata[ncfft].
r;
156 for (k = 1; k <= ncfft / 2; ++k) {
159 fnkc.
r = freqdata[ncfft - k].
r;
160 fnkc.
i = -freqdata[ncfft - k].
i;
164 C_ADD (fek, fk, fnkc);
165 C_SUB (tmp, fk, fnkc);
170 st->
tmpbuf[ncfft - k].
i *= _mm_set1_ps(-1.0);
#define CHECK_OVERFLOW_OP(a, op, b)
#define kf_cexp(x, phase)
void kiss_fft(kiss_fft_cfg cfg, const kiss_fft_cpx *fin, kiss_fft_cpx *fout)
kiss_fft_cfg kiss_fft_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem)
struct kiss_fft_state * kiss_fft_cfg
#define KISS_FFT_MALLOC(nbytes)
void kiss_fftr(kiss_fftr_cfg st, const kiss_fft_scalar *timedata, kiss_fft_cpx *freqdata)
void kiss_fftri(kiss_fftr_cfg st, const kiss_fft_cpx *freqdata, kiss_fft_scalar *timedata)
kiss_fftr_cfg kiss_fftr_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem)
kiss_fft_cpx * super_twiddles
struct kiss_fftr_state * kiss_fftr_cfg
Centralized logging categories for FastLED hardware interfaces and subsystems.
FASTLED_FORCE_INLINE void exit(int code)
No-op exit function for embedded systems In embedded environments, calling exit is typically not mean...