void FactorQTZRep<T>::solve( const Matrix_<T>& b, Matrix_<T>& x ) const { SimTK_APIARGCHECK_ALWAYS(isFactored ,"FactorQTZ","solve", "No matrix was passed to FactorQTZ. \n" ); SimTK_APIARGCHECK2_ALWAYS(b.nrow()==nRow,"FactorQTZ","solve", "number of rows in right hand side=%d does not match number of rows in original matrix=%d \n", b.nrow(), nRow ); x.resize(nCol, b.ncol() ); Matrix_<T> tb; tb.resize(maxmn, b.ncol() ); for(int j=0;j<b.ncol();j++) for(int i=0;i<b.nrow();i++) tb(i,j) = b(i,j); doSolve(tb, x); }
void FactorQTZRep<T>::inverse( Matrix_<T>& inverse ) const { Matrix_<T> iden(mn,mn); inverse.resize(mn,mn); iden = 1.0; doSolve( iden, inverse ); return; }