From 126a8e6a69fb3bb21e3971fa04d71433bfba8b3d Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Wed, 18 Nov 2009 17:40:45 -0500 Subject: [PATCH] fix remaining bug in ColPivHouseholderQR, so now all tests pass again --- Eigen/src/QR/ColPivHouseholderQR.h | 3 ++- test/qr_colpivoting.cpp | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Eigen/src/QR/ColPivHouseholderQR.h b/Eigen/src/QR/ColPivHouseholderQR.h index 4e983684f..e59ecac66 100644 --- a/Eigen/src/QR/ColPivHouseholderQR.h +++ b/Eigen/src/QR/ColPivHouseholderQR.h @@ -366,7 +366,8 @@ struct ei_solve_retval, Rhs> .template triangularView() .solveInPlace(c.corner(TopLeft, dec().rank(), c.cols())); - dst = dec().colsPermutation() * c; + for(int i = 0; i < dec().rank(); ++i) dst.row(dec().colsPermutation().indices().coeff(i)) = c.row(i); + for(int i = dec().rank(); i < cols; ++i) dst.row(dec().colsPermutation().indices().coeff(i)).setZero(); } }; diff --git a/test/qr_colpivoting.cpp b/test/qr_colpivoting.cpp index bdf273926..600a94133 100644 --- a/test/qr_colpivoting.cpp +++ b/test/qr_colpivoting.cpp @@ -57,8 +57,6 @@ template void qr() MatrixType c = MatrixType::Zero(rows,cols); for(int i = 0; i < cols; ++i) c.col(qr.colsPermutation().indices().coeff(i)) = b.col(i); - std::cout << "m1:\n" << m1 << std::endl; - std::cout << "c:\n" << c << std::endl; VERIFY_IS_APPROX(m1, c); MatrixType m2 = MatrixType::Random(cols,cols2);