From 6be06745dfa177560388beaaf862653865df3a07 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 24 Jun 2010 17:48:38 +0200 Subject: [PATCH] block householder : minor optimization --- Eigen/src/Householder/BlockHouseholder.h | 3 +-- Eigen/src/QR/HouseholderQR.h | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Eigen/src/Householder/BlockHouseholder.h b/Eigen/src/Householder/BlockHouseholder.h index 60da512e1..de5d960f2 100644 --- a/Eigen/src/Householder/BlockHouseholder.h +++ b/Eigen/src/Householder/BlockHouseholder.h @@ -42,9 +42,8 @@ void ei_make_block_householder_triangular_factor(TriangularFactorType& triFactor Index rs = vectors.rows() - i; Scalar Vii = vectors(i,i); vectors.const_cast_derived().coeffRef(i,i) = Scalar(1); - triFactor.col(i).head(i).noalias() = vectors.block(i, 0, rs, i).adjoint() + triFactor.col(i).head(i).noalias() = -hCoeffs(i) * vectors.block(i, 0, rs, i).adjoint() * vectors.col(i).tail(rs); - triFactor.col(i).head(i) *= -hCoeffs(i); vectors.const_cast_derived().coeffRef(i, i) = Vii; // FIXME add .noalias() once the triangular product can work inplace triFactor.col(i).head(i) = triFactor.block(0,0,i,i).template triangularView() diff --git a/Eigen/src/QR/HouseholderQR.h b/Eigen/src/QR/HouseholderQR.h index 29044e905..1d6f85ba4 100644 --- a/Eigen/src/QR/HouseholderQR.h +++ b/Eigen/src/QR/HouseholderQR.h @@ -62,7 +62,7 @@ template class HouseholderQR typedef typename MatrixType::Scalar Scalar; typedef typename MatrixType::RealScalar RealScalar; typedef typename MatrixType::Index Index; - typedef Matrix::Flags&RowMajorBit ? RowMajor : ColMajor, MaxRowsAtCompileTime, MaxRowsAtCompileTime> MatrixQType; + typedef Matrix MatrixQType; typedef typename ei_plain_diag_type::type HCoeffsType; typedef typename ei_plain_row_type::type RowVectorType; typedef typename HouseholderSequence::ConjugateReturnType HouseholderSequenceType; @@ -245,7 +245,7 @@ void ei_householder_qr_inplace_blocked(MatrixQR& mat, HCoeffs& hCoeffs, Index cols = mat.cols(); Index size = std::min(rows, cols); - typedef Matrix TempType; + typedef Matrix TempType; TempType tempVector; if(tempData==0) {