X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/c7f552fd8888da2f0d8cfb228fe0f28d3df3a12c..b4b6f2ea75b9f0f3ca918f5b84016610bf7a4d4f:/dsp_files/mrfaustlib/fft.lib diff --git a/dsp_files/mrfaustlib/fft.lib b/dsp_files/mrfaustlib/fft.lib deleted file mode 100644 index 6d29068..0000000 --- a/dsp_files/mrfaustlib/fft.lib +++ /dev/null @@ -1,69 +0,0 @@ -/****************************************************************** - * FFT - * Implementation contributed by Remy Muller - *****************************************************************/ - - -// twiddle_mult(n) : n parallel cables - -W(k, n) = 1, (0, ( k, ((2 * PI) / n) : *) : -) : polar_cplx; - -twiddle_mult(k, n) = _, W(k, n) : pcplx_mul; - -// butterfly(n) : addition then substraction of interleaved signals : -xbutterfly(n) = (bus(n/2), par(k, n/2, twiddle_mult(k, n))) <: interleave(n/2,2), interleave(n/2,2) : par(i, n/2, pcplx_add), par(i, n/2, pcplx_sub); - -//btf_downside(n) = bus(n) : interleave(n/2,2); - -// fft(n) : fft matrix function of size n = 2^k -//fft(2) = butterfly(2); -//fft(n) = butterfly(n) : (fft(n/2) , fft(n/2)); - -xbutterflies(2) = xbutterfly(2); -xbutterflies(n) = (xbutterflies(n/2) , xbutterflies(n/2)) : xbutterfly(n); - - -evens = case { - (2) => _ , ! ; - (n) => _ , ! , evens(n - 2); -}; -odds = case { - (2) => ! , _ ; - (n) => ! , _ , odds(n - 2); -}; - -eo(n) = evens(n), odds(n); - -shuffling = case { - (2) => eo(2); - (n) => (evens(n) <: shuffling(n/2)), (odds(n) <: shuffling(n/2)); -}; - -shuffle(n) = bus(n) <: shuffling(n); - -real2pcplx(n) = par(i, n, (sca2pcplx)); - -//fft(n) = shuffle(n) : xbutterflies(n); -fft(n) = _ <: picks(n) : real2pcplx(n) : shuffle(n) : xbutterflies(n); -fftc(n) = _ <: picks(n) : shuffle(n) : xbutterflies(n) : pcplx_moduls(n); // already complex input - - -picks(n) = par(i, n, [i]); - -concats = case { - (1) => vectorize(1); - (n) => concats(n-1) # vectorize(1); -}; - -nconcat(n) = concats(n); //fake name for svg block encapsulation - -pack = case { - (1) => _; - (n) => pack(n-1), _ : #; -}; - -delays(m) = _ <: par(i, m, @(i)); - -overlap(n,m) = vectorize(n/m) : delays(m) : pack(m); - -stops(n) = par(i, n, !);