# HG changeset patch # User Chris Cannam # Date 1615554479 0 # Fri Mar 12 13:07:59 2021 +0000 # Node ID c8ab2d3d5df28cdf4a2e7680a7b74833ba6c031b # Parent 1f9833bdd0a7f20f6212563a8f97e757152b430e Minor tidy diff --git a/src/FFT.cpp b/src/FFT.cpp --- a/src/FFT.cpp +++ b/src/FFT.cpp @@ -1935,37 +1935,20 @@ // Following Don Cross's 1998 implementation, described by its // author as public domain. - if (!ri || !ro || !io) return; - - int i, j, k, m; - int blockSize, blockEnd; - double tr, ti; - double ifactor = (inverse ? -1.0 : 1.0); - - // because we are at heart a real-complex fft only + // Because we are at heart a real-complex fft only, and we know that: const int n = m_half; - if (ii) { - for (i = 0; i < n; ++i) { - ro[m_table[i]] = ri[i]; - } - for (i = 0; i < n; ++i) { - io[m_table[i]] = ii[i]; - } - } else { - for (i = 0; i < n; ++i) { - ro[m_table[i]] = ri[i]; - } - for (i = 0; i < n; ++i) { - io[m_table[i]] = 0.0; - } + for (int i = 0; i < n; ++i) { + int j = m_table[i]; + ro[j] = ri[i]; + io[j] = ii[i]; } - blockEnd = 1; - int ix = 0; + int blockEnd = 1; + double ifactor = (inverse ? -1.0 : 1.0); - for (blockSize = 2; blockSize <= n; blockSize <<= 1) { + for (int blockSize = 2; blockSize <= n; blockSize <<= 1) { double sm1, sm2, cm1, cm2; @@ -1975,17 +1958,17 @@ cm1 = m_sincos[ix++]; cm2 = m_sincos[ix++]; } else { - double delta = 2.0 * M_PI / double(blockSize); - sm1 = ifactor * sin(delta); - sm2 = ifactor * sin(2.0 * delta); - cm1 = cos(delta); - cm2 = cos(2.0 * delta); + double phase = 2.0 * M_PI / double(blockSize); + sm1 = ifactor * sin(phase); + sm2 = ifactor * sin(2.0 * phase); + cm1 = cos(phase); + cm2 = cos(2.0 * phase); } double w = 2 * cm1; double ar[3], ai[3]; - for (i = 0; i < n; i += blockSize) { + for (int i = 0; i < n; i += blockSize) { ar[2] = cm2; ar[1] = cm1; @@ -1993,9 +1976,9 @@ ai[2] = sm2; ai[1] = sm1; - j = i; + int j = i; - for (m = 0; m < blockEnd; ++m) { + for (int m = 0; m < blockEnd; ++m) { ar[0] = w * ar[1] - ar[2]; ar[2] = ar[1]; @@ -2005,9 +1988,9 @@ ai[2] = ai[1]; ai[1] = ai[0]; - k = j + blockEnd; - tr = ar[0] * ro[k] - ai[0] * io[k]; - ti = ar[0] * io[k] + ai[0] * ro[k]; + int k = j + blockEnd; + double tr = ar[0] * ro[k] - ai[0] * io[k]; + double ti = ar[0] * io[k] + ai[0] * ro[k]; ro[k] = ro[j] - tr; io[k] = io[j] - ti;