n = n/2 iden = np.identity(n) diag = np.diag([exp(I*pi*j/n) for j in range(n)]) coeff = np.block([[iden, diag], [iden, -diag]]) ye = y[0:][::2] yo = y[1:][::2] return mv(coeff, np.concatenate((fft(ye), fft(yo))))