EMatrix overloads the addition, subtraction and multiplication operators after the standard mathematical definitions, including scalar multiplication and the unary sign operators. Additional operator overloading extends the library compatibility to that of the Octave syntax as well as other matrix laboratories. The goal of the library is for the user to translate an equation like the following Kalman filter covariance update equation: into C++ of a similar form; e.g.,

P1 = a*P0*trans(a) - a*P0*trans(c)*inv(s)*c*P0*trans(a) + Sw;

EMatrix supports all C++ primitive types as well as the `<complex>`
type from the C++ standard library. The library supports both C++ and
FORTRAN indexing of matrices; i.e. `A(1,2) == A[0][1]`. However, the
memory storage of elements is row-wise as in C++. Calls to the Lapack
library are transparent to the user and account for the differences in
storage between C++ and FORTRAN either explicitly by transposing
matrices when necessary or implicitly by solving a different algebraic
problem that yields the desired solution.