for fixed size matrices
This commit is contained in:
Gael Guennebaud 2013-11-01 18:17:55 +01:00
parent 6dc0e59b1e
commit 8f496cd3a3

View File

@ -63,9 +63,10 @@ template<typename _MatrixType> class FullPivHouseholderQR
typedef typename MatrixType::Index Index; typedef typename MatrixType::Index Index;
typedef internal::FullPivHouseholderQRMatrixQReturnType<MatrixType> MatrixQReturnType; typedef internal::FullPivHouseholderQRMatrixQReturnType<MatrixType> MatrixQReturnType;
typedef typename internal::plain_diag_type<MatrixType>::type HCoeffsType; typedef typename internal::plain_diag_type<MatrixType>::type HCoeffsType;
typedef Matrix<Index, 1, ColsAtCompileTime, RowMajor, 1, MaxColsAtCompileTime> IntRowVectorType; typedef Matrix<Index, 1,
EIGEN_SIZE_MIN_PREFER_DYNAMIC(ColsAtCompileTime,RowsAtCompileTime), RowMajor, 1,
EIGEN_SIZE_MIN_PREFER_FIXED(MaxColsAtCompileTime,MaxRowsAtCompileTime)> IntDiagSizeVectorType;
typedef PermutationMatrix<ColsAtCompileTime, MaxColsAtCompileTime> PermutationType; typedef PermutationMatrix<ColsAtCompileTime, MaxColsAtCompileTime> PermutationType;
typedef typename internal::plain_col_type<MatrixType, Index>::type IntColVectorType;
typedef typename internal::plain_row_type<MatrixType>::type RowVectorType; typedef typename internal::plain_row_type<MatrixType>::type RowVectorType;
typedef typename internal::plain_col_type<MatrixType>::type ColVectorType; typedef typename internal::plain_col_type<MatrixType>::type ColVectorType;
@ -173,7 +174,7 @@ template<typename _MatrixType> class FullPivHouseholderQR
} }
/** \returns a const reference to the vector of indices representing the rows transpositions */ /** \returns a const reference to the vector of indices representing the rows transpositions */
const IntColVectorType& rowsTranspositions() const const IntDiagSizeVectorType& rowsTranspositions() const
{ {
eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized.");
return m_rows_transpositions; return m_rows_transpositions;
@ -369,8 +370,8 @@ template<typename _MatrixType> class FullPivHouseholderQR
protected: protected:
MatrixType m_qr; MatrixType m_qr;
HCoeffsType m_hCoeffs; HCoeffsType m_hCoeffs;
IntColVectorType m_rows_transpositions; IntDiagSizeVectorType m_rows_transpositions;
IntRowVectorType m_cols_transpositions; IntDiagSizeVectorType m_cols_transpositions;
PermutationType m_cols_permutation; PermutationType m_cols_permutation;
RowVectorType m_temp; RowVectorType m_temp;
bool m_isInitialized, m_usePrescribedThreshold; bool m_isInitialized, m_usePrescribedThreshold;
@ -538,14 +539,14 @@ template<typename MatrixType> struct FullPivHouseholderQRMatrixQReturnType
{ {
public: public:
typedef typename MatrixType::Index Index; typedef typename MatrixType::Index Index;
typedef typename internal::plain_col_type<MatrixType, Index>::type IntColVectorType; typedef typename FullPivHouseholderQR<MatrixType>::IntDiagSizeVectorType IntDiagSizeVectorType;
typedef typename internal::plain_diag_type<MatrixType>::type HCoeffsType; typedef typename internal::plain_diag_type<MatrixType>::type HCoeffsType;
typedef Matrix<typename MatrixType::Scalar, 1, MatrixType::RowsAtCompileTime, RowMajor, 1, typedef Matrix<typename MatrixType::Scalar, 1, MatrixType::RowsAtCompileTime, RowMajor, 1,
MatrixType::MaxRowsAtCompileTime> WorkVectorType; MatrixType::MaxRowsAtCompileTime> WorkVectorType;
FullPivHouseholderQRMatrixQReturnType(const MatrixType& qr, FullPivHouseholderQRMatrixQReturnType(const MatrixType& qr,
const HCoeffsType& hCoeffs, const HCoeffsType& hCoeffs,
const IntColVectorType& rowsTranspositions) const IntDiagSizeVectorType& rowsTranspositions)
: m_qr(qr), : m_qr(qr),
m_hCoeffs(hCoeffs), m_hCoeffs(hCoeffs),
m_rowsTranspositions(rowsTranspositions) m_rowsTranspositions(rowsTranspositions)
@ -585,7 +586,7 @@ public:
protected: protected:
typename MatrixType::Nested m_qr; typename MatrixType::Nested m_qr;
typename HCoeffsType::Nested m_hCoeffs; typename HCoeffsType::Nested m_hCoeffs;
typename IntColVectorType::Nested m_rowsTranspositions; typename IntDiagSizeVectorType::Nested m_rowsTranspositions;
}; };
} // end namespace internal } // end namespace internal