We require that a Java wrapper be written to encapsulate the Numerix SigLib portable C library ([login to view URL]) with a Java-like API.
The functions that we need to have wrapped are contained within the following modules (from the attached table of contents):
Milestone 1:
1.1 Fast Fourier Transform Functions (ffourier.c)
1.2 Fourier Transform Functions (fourier.c)
1.3 SIGNAL GENERATION FUNCTIONS (siggen.c)
Milestone 2:
Power Spectrum Functions (pspect.c)
2.1 WINDOWING FUNCTIONS (window.c)
2.2 FIR Filtering Functions (firfilt.c)
2.3 IIR Filtering Functions (iirfilt.c)
2.4 Generic Filtering Functions (filter.c)
Milestone 3:
CONVOLUTION FUNCTIONS (convolve.c)
CORRELATION FUNCTIONS (correlat.c)
Decimation And Interpolation Functions (decint.c)
DSP UTILITY FUNCTIONS (dsputils.c and dsputil2.c)
Not all functions in each section are required. Consider the number of functions in each section as an upper limit for the purposes of quotation.
Here is an example of how we wrapped the FFT function. Emphasis on API simplicity. Notice that the intention is to provide a higher-level, Java-like API hiding the swig/c functions:
package [login to view URL];
import uk.co.numerix.*;
public class FFT {
double[] realData;
double[] imagData;
double[] realResult;
double[] imagResult;
public FFT(double[] realData, double[] imagData) {
if ([login to view URL] != [login to view URL]) {
throw new RuntimeException("FFT requires realData and imageData of equal lengths");
}
[login to view URL] = realData;
[login to view URL] = imagData;
[login to view URL] = new double[[login to view URL]];
[login to view URL] = new double[[login to view URL]];
}
public double[] getRealResult() {
return [login to view URL];
}
public double[] getImagResult() {
return [login to view URL];
}
public void calculate() {
int fftLength = [login to view URL];
int log2FftLength = (int) ([login to view URL](fftLength)/[login to view URL](2));
SWIGTYPE_p_double real = siglib_wrap.new_doubleArray(fftLength);
SWIGTYPE_p_double imag = siglib_wrap.new_doubleArray(fftLength);
SWIGTYPE_p_double fftCoeffTable = siglib_wrap.new_doubleArray(fftLength);
SWIGTYPE_p_long bitReverseAddressTable = siglib_wrap.new_longArray(fftLength);
for (int i=0; i<fftLength; i++) {
siglib_wrap.doubleArray_setitem(real, i, [login to view URL][i]);
siglib_wrap.doubleArray_setitem(imag, i, [login to view URL][i]);
}
siglib_wrap.SIF_Fft(fftCoeffTable, bitReverseAddressTable, fftLength);
siglib_wrap.SDA_Cfft(real, imag, fftCoeffTable, bitReverseAddressTable, fftLength, log2FftLength);
for (int i=0; i<fftLength; i++) {
[login to view URL][i] = siglib_wrap.doubleArray_getitem(real, i);
[login to view URL][i] = siglib_wrap.doubleArray_getitem(imag, i);
}
siglib_wrap.delete_doubleArray(real);
siglib_wrap.delete_doubleArray(imag);
siglib_wrap.delete_doubleArray(fftCoeffTable);
siglib_wrap.delete_longArray(bitReverseAddressTable);
}
}
WHAT WE PROVIDE:
1. Numerix library compiled for your platform. (Source may not be provided as per Numerix license agreement).
2. Jar containing the SWIG generated siglib_wrap of the C functions.
3. Advice for structuring the API as needed.
WHAT YOU PROVIDE (at each of the milestones listed above):
1. Java source code.
2. Test program demonstrating the operation of the wrapped functions. It is not required to validate the output and you do not require any specialist knowledge. Simply exercise the API to demonstrate how the each of the wrapped functions is called and that it does so.
INSTRUCTIONS FOR CANDIDATES BIDDING ON THIS PROJECT:
1. Provide a quotation fixed price cost and estimates on duration of completion of each milestone
2. Provide a CV (remove contact information)
3. Indicate your level of familiarity with DSP (if any)
4. Identify your development platform
5. Acknowledge that you accept all work-product ownership transferring to us.
Hi,
I would like to to get this interesting project. So i will complete each milestone with in 7 days, so it means i will spend 21 days to complete the project. And you can see my feedback here and contact me with confident...
Thank you in advance.
your satisfaction is my success.
muthumuni.
I like the challenges of these project and look forward to the gainful experiences of it. If your supplemental documentation is as organized as your posting I am pretty sure that we will be able to get you what you need. Also, I agree to all of the terms of your proprietary demands however, I only make this request. Upon the successfully completion of this project, I would like that substantial recommendation be given on my behalf as applicable to terms of Freelancer.com. Thanks.
P.S. The projected delivery date