Diana
0.8.3
|
#include <DianaLSQRSolver.hpp>
Public Member Functions | |
DianaLSQRSolver (const DianaSparseArray &spar) throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadArgument, Common::Error::ECapeOutOfBounds, Common::Error::ECapeSolvingError, Common::Error::ECapeNoMemory) | |
DianaLSQRSolver & | operator= (const DianaSparseArray &spar) throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadArgument, Common::Error::ECapeOutOfBounds, Common::Error::ECapeSolvingError, Common::Error::ECapeNoMemory) |
void | solve (const Common::Types::CapeArrayDouble &rhs, Common::Types::CapeArrayDouble &sol, Common::Types::CapeBoolean transpose=false) throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadArgument, Common::Error::ECapeOutOfBounds, Common::Error::ECapeSolvingError, Common::Error::ECapeNoMemory) |
void | solve (int n, const double *rhs, double *sol, Common::Types::CapeBoolean transpose=false) throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadArgument, Common::Error::ECapeOutOfBounds, Common::Error::ECapeSolvingError, Common::Error::ECapeNoMemory) |
void | mulvec (const Common::Types::CapeArrayDouble &vec, Common::Types::CapeArrayDouble &res, Common::Types::CapeBoolean transpose=false) throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadArgument, Common::Error::ECapeOutOfBounds, Common::Error::ECapeSolvingError, Common::Error::ECapeNoMemory) |
void | mulvec (int nvec, const double *vec, int nres, double *res, Common::Types::CapeBoolean transpose=false) throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadArgument, Common::Error::ECapeOutOfBounds, Common::Error::ECapeSolvingError, Common::Error::ECapeNoMemory) |
Private Member Functions | |
void | init_matrix (const DianaSparseArray &spar) throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadArgument, Common::Error::ECapeOutOfBounds, Common::Error::ECapeSolvingError, Common::Error::ECapeNoMemory) |
double | norm2 (int n, const double *vec) |
Private Attributes | |
DianaSparseArray::crc_type | crc32sa |
long | nRows |
long | nCols |
long | nNonZeros |
std::vector< long > | irow |
std::vector< long > | jcol |
std::vector< double > | aval |
Common::Types::CapeDouble | dblUround |
Solver based on the algorithm proposed in the paper C. C. Paige and M. A. Saunders. LSQR: An algorithm for sparse linear equations and sparse least squares, TOMS 8(1), 43-71 (1982).