12 #include "LapackWrapperExtra.h"
29 template <
typename Scalar =
double>
33 typedef arma::Mat<Scalar> Matrix;
34 typedef arma::Col<Scalar> Vector;
35 typedef arma::Col<int> IntVector;
49 dim_n(0), computed(false)
75 throw std::invalid_argument(
"GeneralLU: matrix must be square");
79 vec_fac.set_size(dim_n);
82 arma::lapack::getrf(&dim_n, &dim_n, mat_fac.memptr(), &dim_n,
83 vec_fac.memptr(), &info);
86 throw std::invalid_argument(
"Lapack getrf: illegal value");
88 throw std::logic_error(
"GeneralLU: matrix is singular");
104 void solve(Vector &vec_in, Vector &vec_out)
114 arma::lapack::getrs(&no_trans, &dim_n, &one, mat_fac.memptr(), &dim_n,
115 vec_fac.memptr(), vec_out.memptr(), &dim_n, &info);
117 throw std::invalid_argument(
"Lapack getrs: illegal value");
123 #endif // GENERAL_LU_H
void compute(const Matrix &mat)
void solve(Vector &vec_in, Vector &vec_out)
GeneralLU(const Matrix &mat)