Challenge Overview
Our client BG100 wants to create a test suite that will verify the correctness an FTT and inverse FTT implementation using well-known FTT/iFFT implementations (e.g. fftw), optimized for the x86 AVX2 architecture.
Detailed Requirements for the Test Suite
Create a Test Suite in C that will test:
-
The correctness of the results using well-known FTT/iFFT implementations (e.g. fftw).
-
The performance of the FFT/iFFT functions, e.g. the number of processor cycles used etc...
Implementation notes:
-
The FFT/iFFT function prototypes may look like:
void init_fft(); // Initialize FFT twiddle factors
void fft(Complex *out, Complex *in); // Perform out = FFT(in)
void init_ifft(); // Initialize inverse FFT twiddle factors
void ifft(Complex *out, Complex *in); // Perform out = inverse FFT(in) -
The Complex structure definition will look like:
typedef struct {
int16_t re;
int16_t im;
} Complex; -
The number of samples the test suite needs to generate and test will be passed as an argument when running it from CLI but it should have a default configurable value.
NOTE: Customer expects this to work on a single core. Solutions that spawn additional worker-threads, are not valid and will be rejected.