fftReal function

void fftReal(
  1. int n,
  2. Int32List v
)

Implementation

void fftReal(int n, Int32List v) {
  int scale = kLogFftSize;
  int m = n >> 1;

  fft(n, v);

  for (int i = 1; i <= n; i <<= 1) {
    --scale;
  }

  v[0] = _mult(~v[0], 0x80008000);
  v[m] = _half(v[m]);

  for (int i = 1; i < n >> 1; ++i) {
    int x = _half(v[i]);
    int z = _half(v[n - i]);
    int y = (z - (x ^ 0xFFFF));
    x = _half((x + (z ^ 0xFFFF)));
    y = _mult(y, twiddle[i << scale]);
    v[i] = (x - y) & 0xFFFFFFFF;
    v[n - i] = ((x + y) ^ 0xFFFF);
  }
}