Daniel L Elliott wrote: [...]
I am working on adding identity matrices (and perhaps some others) to the gesv method of the LAPACK bindings.
As far as I know, LAPACK does not have a notion of identity matrix.
I have a couple questions about the code.
In the template
inline int gesv (MatrA& a, IVec& ipiv, MatrB& b) method the static asserts are checking for the matrix types allowed within the gesv type?
Yes. These are types which LAPACK's _gesv routines expect. Bindings library are (almost) nothing more than a syntactic sugar for Fortran or C numerical libraries (BLAS, ATLAS, LAPACK, ...).
Instead of using gesv to invert a very large matrix (which would require us to create a very large identity matrix), would it be advisable to simply triangularize matrix A (maybe using LU) and use the uBLAS solver and an identity_matrix?
The answer is partly outside of the scope of bindings, but the idea is interesting. gesv.hpp contains bindings for LAPACK's _getrf routines which compute LU factorisations. Regarding the second step, LAPACK also has _getri routines which compute the inverse of a matrix, using the factorisation obtained by _getrf. Adding _getri to bindings is on the TO DO list. (There are getri in ATLAS bindings, in clapack.hpp.) On the other hand, I think that the use of the uBLAS solver with ublas::identity_matrix is outside of the scope of bindings library.
Also, any overview of how the bindings and traits work would be very helpful!
Docs are in the sandbox: Intro: http://tinyurl.com/6acht Traits: http://tinyurl.com/3t4kz LAPACK bindings: http://tinyurl.com/4pagj ATLAS bindings: http://tinyurl.com/4ao22 Hope this helps, fres