GSoC/GCI Archive
Google Summer of Code 2014

GNU Octave

License: GNU General Public License version 3.0 (GPLv3)

Web Page:

Mailing List:

GNU Octave ( is a free numerical computing environment largely compatible with Matlab. John W. Eaton began the project in 1992 and remains the primary maintainer. Development is quite active with more than 20 volunteers currently involved. Octave is also widely used in teaching, industry, and research. It has gained attention as the recommended tool for a number of distributed online courses such as Stanford's machine learning course ( GNU Octave has an extensive core of functions useful for computations in several fields, such as numerical analysis, optimisation, signal and image processing, and control theory. Its sister project, Octave Forge (, helps in speeding up development, increasing user contributions, and testing code before it is included in GNU Octave's core set of functions. Recent and ongoing improvements include a GUI and just-in-time compilation capabilities, both of which started as GSoC projects.


  • General Purpose Finite Elements Library The goal of this project is to provide an interface to integrate FEniCS, an FE library, into Octave. This will improve Octave features, and also make FE software more accessible, allowing for straightforward visualisation capabilities and the exploitation of Octave utilities, solvers, etc. It will not start from scratch, but build on the work done during the previous GSoC to further optimise the code and provide other functionalities not yet available in the Octave Forge package, fem-fenics.
  • Implement ichol and ilu functions. Octave lacks of some useful functions related with sparse linear systems as ilu and ichol are. They are known to be nice algorithms to build good preconditioners for iterative methods like GMRES. The pourpose of the project is to continue the last year's one so finally ilu and ichol can be integrated successfully into octave.
  • Sparse Matrix Indexing and Cleanup Octave's sparse matrices still have many missing features that are otherwise available for full matrices. Particularly logical indexing currently requires converting to a full matrix (which is generally infeasible). For my project, I'd like to make sparse matrix indexing work properly and also possibly clean up various other bugs and gaps related to sparse matrices.