BG100 - Vector FFT/iFFT Test Suite in C

Register
Submit a solution
The challenge is finished.

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:

  1. The correctness of the results using well-known FTT/iFFT implementations (e.g. fftw).

  2. 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.



Final Submission Guidelines

Please submit your source code in a zip file including a detailed deployment guide.

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30060963