From 2796bcabb1151ad8de2bf2ab9117baea40ae4d30 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Fri, 31 Jul 2009 17:35:20 +0200 Subject: [PATCH] some cleaning --- Eigen/src/QR/SelfAdjointEigenSolver.h | 30 +++++++++++---------------- Eigen/src/QR/Tridiagonalization.h | 10 +++------ 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/Eigen/src/QR/SelfAdjointEigenSolver.h b/Eigen/src/QR/SelfAdjointEigenSolver.h index 167fedebf..b003fb4d7 100644 --- a/Eigen/src/QR/SelfAdjointEigenSolver.h +++ b/Eigen/src/QR/SelfAdjointEigenSolver.h @@ -383,24 +383,18 @@ static void ei_tridiagonal_qr_step(RealScalar* diag, RealScalar* subdiag, int st int kn1 = (k+1)*n; #endif // let's do the product manually to avoid the need of temporaries... - Matrix aux = Map, ForceAligned >(matrixQ+kn,n); - Map, ForceAligned >(matrixQ+kn,n) - = Map, ForceAligned >(matrixQ+kn,n) * c - s * Map >(matrixQ+kn1,n); - - Map, ForceAligned >(matrixQ+kn1,n) - = Map, ForceAligned >(matrixQ+kn1,n) * c - s * aux;//Map >(matrixQ+kn,n); -// for (int i=0; i::_compute(MatrixType& matA, CoeffVectorType& // i.e., A = H' A H where H = I - h v v' and v = matA.col(i).end(n-i-1) matA.col(i).coeffRef(i+1) = 1; -// hCoeffs.end(n-i-1) = (matA.corner(BottomRight,n-i-1,n-i-1).template selfadjointView() -// * (h * matA.col(i).end(n-i-1))); - - hCoeffs.end(n-i-1).setZero(); - ei_product_selfadjoint_vector - (n-i-1,matA.corner(BottomRight,n-i-1,n-i-1).data(), matA.stride(), matA.col(i).end(n-i-1).data(), 1, const_cast(hCoeffs.end(n-i-1).data()), h); + hCoeffs.end(n-i-1) = (matA.corner(BottomRight,n-i-1,n-i-1).template selfadjointView() + * (h * matA.col(i).end(n-i-1))); hCoeffs.end(n-i-1) += (h*Scalar(-0.5)*(matA.col(i).end(n-i-1).dot(hCoeffs.end(n-i-1)))) * matA.col(i).end(n-i-1); @@ -290,7 +286,7 @@ void Tridiagonalization::matrixQInPlace(MatrixBase* q) con aux.end(n-i-1) = (m_hCoeffs.coeff(i) * m_matrix.col(i).end(n-i-1).adjoint() * matQ.corner(BottomRight,n-i-1,n-i-1)).lazy(); // rank one update, TODO ! make it works efficiently as expected for (int j=i+1;j