next up previous contents
Next: 1.3 Scope Up: 1 Introduction Previous: 1.1 Authors   Contents

1.2 Overview

EMatrix is a lightweight matrix library developed in C++. EMatrix is designed to aid in solving engineering problems requiring linear algebra and matrix math. EMatrix is operating system independent, and is as portable as can be made.

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: $P_1 = a P_0 a^T - aP_0c^T s^{-1} c P_0 a^T + S_w$ 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.


next up previous contents
Next: 1.3 Scope Up: 1 Introduction Previous: 1.1 Authors   Contents
Andrew Douglas 2005-03-15