#include <cxxstd/iostream.h>
#define USE_CXXLAPACK #include <flens/flens.cxx> /// /// We now include the second version of `mylapack`. /// #include "tut05-mylapack-version2.h" using namespace flens; using namespace std; typedef double T; int main() { typedef GeMatrix<FullStorage<T> > Matrix; typedef DenseVector<Array<T> > Vector; typedef Matrix::IndexType IndexType; typedef DenseVector<Array<IndexType> > IndexVector; const IndexType n = 4; Matrix A(n,n); Vector b(n); IndexVector piv(n); A = 2, 3, -1, 0, -6, -5, 0, 2, 2, -5, 6, -6, 4, 6, 2, -3.1; b = 20, -33, -43, 49; cerr << "A = " << A << endl; cerr << "b = " << b << endl; IndexType info = mylapack::trf(A, piv); if (info==0) { /// /// Like in the first example we again pass a non-view object. So here /// `b` is a non-const lvalue again. /// mylapack::trs(NoTrans, A, piv, b); cerr << "x = " << b << endl; } else { cerr << "A is numerically singular." << endl; } } |