Final Report
User documentation
This project integrates a more accurate maths library in to scilab, fdlibm. Currently, it exists in the development branch. Once the changes are merged and a stable release is available, the user should be able to compile and use the library using basic compilation process.
./configure
make
make install
A user doesn’t have to take any extra steps to use this library. It replaces libm which means all the elementary functions in scilab use fdlibm out of the box. Your scripts needn’t be modified as a result of fdlibm.
Help pages - The documentation remains the same, only the underlying library has changed.
In order to run the unitary tests, the user should install the assert and floating point module which comes under "numerical maths" category, developed by Michael Baudin.
Developer documentation
The library fdlibm has been integrated into the scilab. The code resides in the apef branch. There are no known bugs.
There is a lack of benchmarks in elementary_functions module and we can provide the user an option to select the back-end maths library he/she needs.
The primary aim of the project has been completed - integration of a new maths library. Plenty of unitary tests with a bulk of new test cases have been added. A small performance test has also been done, comparing fdlibm’s performance with libm.
The project wasn’t a completely different feature development, so the concept of version numbering doesn’t exactly fit here. But if we are trying to compare the extent of completion then I would give it 1.0 with the features mentioned above resulting in sub-versions later.
No, I haven’t generated a tagged tarball. As soon as the apef branch is merged into the master and the dev. branch is ready for a stable release, the code should be readily available.
I’ve successfully integrated fdlibm on x86 architecture both 32 and 64 bit.
I have added unit tests for 12 elementary functions - sin, cos, tan, acos, asin, atan, sinh, cosh, log, log10, exp and pow. They reside in the “master” branch of dev. tree.
This project was fun and I'd like to be involved in the development of scilab, especially in the maintenance of apef project. The next target as I see is to integrate more tests and make the integration of fdlibm optional.
One should note that, the results for exp function were terrible, I've included it for the mentors to review the results.
Me and Gsoc
The major time was consumed by the integration part. I had no experience with gnu-autotools, hence learning and using them took a while. Even after the integration, fdlibm wasn’t returning correct results because of a 2nd level compilation optimization used in scilab. Debugging it took a lot of time and energy.
Currently, the library is well integrated. I’ve added plenty of unit tests, but there is still a lack of benchmarks. I did a small performance test by comparing the execution speed of elementary functions on different versions of scilab but for comparing performance with other scientific computation suites(matlab etc.), we’ll need something better.
Contributors are a must for any open source community. By submitting more projects next year, scilab could get more good developers involved in the program resulting in more contribution.
I’ll rate my projects difficulty as moderate. It had very little programming part, that too mainly scripting used in the testing phase. Although in my opinion, researching for the background check of fdlibm and integration were the difficult parts. I didn’t have any prior knowledge or experience in the field and with the tools. Working on my own took time and energy.