103 const SubMultiVectorView<Scalar> &A,
104 const ArrayView<int> &ipiv,
109 const int maxRank = TEUCHOS_MIN( A.subDim(), A.numSubCols() );
111 TEUCHOS_TEST_FOR_EXCEPT( A.subDim() == 0 );
112 TEUCHOS_TEST_FOR_EXCEPT( A.numSubCols() == 0 );
113 TEUCHOS_TEST_FOR_EXCEPT( is_null(A.values()) );
114 TEUCHOS_ASSERT_EQUALITY( as<int>(ipiv.size()), maxRank );
117 Teuchos::LAPACK<int, Scalar> lapack;
119 lapack.GETRF( A.subDim(), A.numSubCols(), A.values().get(), A.leadingDim(),
122 TEUCHOS_TEST_FOR_EXCEPTION(
123 info < 0, std::invalid_argument
124 ,
"getrf(...): Error, Invalid argument "
125 << -info <<
" sent to LAPACK function xGETRF(...)" );
133 const ConstSubMultiVectorView<Scalar> &A,
134 const ArrayView<const int> &ipiv,
136 const Ptr<
const SubMultiVectorView<Scalar> > &BX
141 TEUCHOS_ASSERT( !is_null(BX) );
142 TEUCHOS_ASSERT_EQUALITY( A.subDim(), BX->subDim() );
143 TEUCHOS_ASSERT_EQUALITY( A.subDim(), A.numSubCols() );
144 TEUCHOS_TEST_FOR_EXCEPT( A.subDim() == 0 );
145 TEUCHOS_TEST_FOR_EXCEPT( A.numSubCols() == 0 );
146 TEUCHOS_TEST_FOR_EXCEPT( is_null(A.values()) );
147 TEUCHOS_ASSERT_EQUALITY( A.subDim(), ipiv.size() );
149 Teuchos::LAPACK<int, Scalar> lapack;
153 A.subDim(), BX->numSubCols(), A.values().get(), A.leadingDim(),
154 &ipiv[0], BX->values().get(), BX->leadingDim(), &info
156 TEUCHOS_TEST_FOR_EXCEPTION(
157 info < 0, std::invalid_argument
158 ,
"getrs(...): Error, Invalid argument "
159 << -info <<
" sent to LAPACK function xGETRS(...)" );
void getrf(const SubMultiVectorView< Scalar > &A, const ArrayView< int > &ipiv, const Ptr< int > &rank)
Peform an in-place factorization of a square or rectangular matrix.