The java code that makes up this application was translated from MATLAB based code. For the main algorithmic parts of the application, the original organisation of the code has been retained as far as possible, in order to take advantage of any algorithmic optimizations in the original, as wall as allowing reference to be made to the original code when testing/debugging etc. However, as java is a rather different language characteristics compared with MATLAB, i.e. Java is object oriented and strongly typed without operator overloading, there are fairly radical rewritings of the lines that make up the individual expressions within a functional block.
The code is divided into two main modules.
The bulk of the matrix based functionality is implemented using the Matrix toolkit for Java library. This library is, in turn, layered upon netlib java library which is a pure java implementation of LAPACK and BLAS. If necessary (for large matrices) the backend can be compiled with native LAPACK and BLAS libraries, but this does increase the build complexity, and is to be avoided unless specific performance issues are being experienced.
The code is built with the maven tool. Rebuilding the code can be achieved with a