43 #ifndef RTOPPACK_LAPACK_WRAPPERS_HPP 44 #define RTOPPACK_LAPACK_WRAPPERS_HPP 48 #include "Teuchos_LAPACK.hpp" 49 #include "Teuchos_as.hpp" 62 extern const Teuchos::Tuple<char,NUM_ETRANS_ARGS>
transpMap;
75 template<
class Scalar>
78 const ArrayView<int> &ipiv,
84 template<
class Scalar>
87 const ArrayView<const int> &ipiv,
101 template<
class Scalar>
104 const ArrayView<int> &ipiv,
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;
122 TEUCHOS_TEST_FOR_EXCEPTION(
123 info < 0, std::invalid_argument
124 ,
"getrf(...): Error, Invalid argument " 125 << -info <<
" sent to LAPACK function xGETRF(...)" );
131 template<
class Scalar>
134 const ArrayView<const int> &ipiv,
141 TEUCHOS_ASSERT( !is_null(BX) );
142 TEUCHOS_ASSERT_EQUALITY( A.
subDim(), BX->subDim() );
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;
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(...)" );
164 #endif // RTOPPACK_LAPACK_WRAPPERS_HPP
void getrs(const ConstSubMultiVectorView< Scalar > &A, const ArrayView< const int > &ipiv, const ETransp transp, const Ptr< const SubMultiVectorView< Scalar > > &BX)
const int NUM_ETRANS_ARGS
Class for a changeable sub-vector.
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.
const Teuchos::Tuple< char, NUM_ETRANS_ARGS > transpMap
Ordinal numSubCols() const
const ArrayRCP< Scalar > values() const
Class for a non-changeable sub-multi-vector (submatrix).
Ordinal leadingDim() const
const ArrayRCP< const Scalar > values() const