Skip to main content

Knowledge Base

MtxVec encapsulates LAPACK

The computing standard for linear algebra is included

A quote from www.netlib.org : "LAPACK provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision."

Users guide is available at: http://www.netlib.org/lapack/lug/lapack_lug.html

MtxVec wraps LAPACK and offers complete functionality of LAPACK except for support of packed matrices and overcomes. LAPACK differs between 9 matrix types: general, symmetric, hermitian, positive definite symmetric, positive definite hermitian, general banded, positive definite symmetric banded, positive definite hermitian banded and triangular. With MtxVec fairly long argument lists and function sequences are reduced to (real or complex, single or double):

In case of multiplication:

a.Mul(b,c); {general matrix}
a.Mul(b,c, mtSymmetric); {b is symmetric}
a.Mul(b,c, mtGeneral,mtSymmetric); {c is symmetric}
a.Mul(b,c, mtGeneral,mtHermitian, opTransp); {b is transposed}

Solving a system of linear equations:

a.LUSolve(b,x); {general matrix}
a.LUSolve(b,x, mtTriangular) {a is triangular}

Eigenvalues:

a.Eig(b);

LeastSquare fit:

a.LQRSolve(b,x,R); {A * X = B}
a.LQRSolve(b,x); {does not compute and return R}

Delphi, C++ And C# (and MtxVec) use row major array ordering. Appropriate adjustments were made to interface FORTRAN column major array ordering, with minimum overhead.