#include #include #include using namespace std; #include #define M_PI 3.14159265358979323846 int main() { } vector> FFT(vector>& samples) { int N = samples.size(); if (N == 1) return samples; int M = N / 2; vector> Xeven(M, 0); vector> Xodd(M, 0); for (int i = 0; i != M; i++) { Xeven[i] = samples[2 * i]; Xodd[i] = samples[2 * i + 1]; } vector> Feven(M, 0); Feven = FFT(Xeven); vector> Fodd(M, 0); Fodd = FFT(Xodd); vector> freqbins(N, 0); for (int k = 0; k != N / 2; k++) { complex cmplxexponential = polar(1.0, -2 * M_PI * k / N)*Fodd[k]; freqbins[k] = Feven[k] + cmplxexponential; freqbins[k + N / 2] = Feven[k] - cmplxexponential; } return freqbins; }