code: private static void FFT(double[] real, double[] imag) {
          int n = real.length;
          if (n == 0) {
              return;
          } else if ((n & (n - 1)) == 0)  // Is power of 2
              transformRadix2(real, imag);
          else  // More complicated algorithm for arbitrary sizes
              transformBluestein(real, imag);
      }
docs: /*
  Computes the discrete Fourier transform (DFT) of the given complex vector, storing the result back into the vector.
  The vector can have any length. This is a wrapper function.