bug in comment fixed:
// real values in freq_domain[0] - freq_domain[(fft_len/2)-1]
// imaginary values in freq_domain[fft_len-1] - freq_domain[fft_len/2]