|Learning / Internship Projects & Reports||Search||Add Entry|
Armadillo is a C++ linear algebra library (matrix maths) aiming towards a good balance between speed and ease of use. Integer, floating point and complex numbers are supported, as well as a subset of trigonometric and statistics functions. Various matrix decompositions are provided through optional integration with LAPACK and ATLAS libraries.
A delayed evaluation approach is employed (during compile time) to combine several operations into one and reduce (or eliminate) the need for temporaries. This is accomplished through recursive templates and template meta-programming.
This library is useful if C++ has been decided as the language of choice (due to speed and/or integration capabilities), rather than another language like Matlab ® or Octave. It is distributed under a license that is useful in both open-source and commercial contexts.
Armadillo is primarily developed at NICTA (Australia), with contributions from around the world.
1) Developing an industrial robust fft-ifft feels like a kiss of death -- DONT TRY THIS AT HOME!!!
My evolvement in the project:
- I sent an email to the developer of the project, where i introduced myself and asked to implement new functions for the project. The developer's answer was rather positive. He warned me that it would not be easy but they were open to collaboration and asked me what functionality i was thinking about.
- I proposed some functionalities (repmat, covariance matrix, pca, etc) and he found them useful. He also told me i should have the same programming style as the rest of the project and that i should send him the source code for repmat.
- I asked him to give me some time to comprehend the programming style and change the source code to comply with their standards. He agreed and when i sent him the source code he thanked me for the contribution and pointed out some issues about the implementation.
- We exchanged several emails about the repmat function and collaborated to get it done correctly. After that, i implemented one by one the rest of the functionalities and their documentation. We exchanged emails continuously about comments/corrections on the source code i implemented.
- I was promoted to Main Developer to the project.
Difficulties I encountered: