block-Fourier algorithm