aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Householder/Householder.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-08-15 13:12:50 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-08-15 13:12:50 +0200
commit13a8956188d1c8441c01a6218dc24c745ff0b210 (patch)
tree2012391d821debd79cbe5e4ada1ec291ec885c1b /Eigen/src/Householder/Householder.h
parent7b60713e87ba24d3b0fa8f486bba8665151e9f31 (diff)
bugfix in inner-product specialization,
compilation fix in stable norm, optimize apply householder
Diffstat (limited to 'Eigen/src/Householder/Householder.h')
-rw-r--r--Eigen/src/Householder/Householder.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/Eigen/src/Householder/Householder.h b/Eigen/src/Householder/Householder.h
index 2a4b1395c..42635cb18 100644
--- a/Eigen/src/Householder/Householder.h
+++ b/Eigen/src/Householder/Householder.h
@@ -73,7 +73,8 @@ void MatrixBase<Derived>::applyHouseholderOnTheLeft(
{
Matrix<Scalar, 1, ColsAtCompileTime, PlainMatrixType::Options, 1, MaxColsAtCompileTime> tmp(cols());
Block<Derived, EssentialPart::SizeAtCompileTime, Derived::ColsAtCompileTime> bottom(derived(), 1, 0, rows()-1, cols());
- tmp = row(0) + essential.adjoint() * bottom;
+ tmp = (essential.adjoint() * bottom).lazy();
+ tmp += row(0);
row(0) -= beta * tmp;
bottom -= beta * essential * tmp;
}
@@ -86,7 +87,8 @@ void MatrixBase<Derived>::applyHouseholderOnTheRight(
{
Matrix<Scalar, RowsAtCompileTime, 1, PlainMatrixType::Options, MaxRowsAtCompileTime, 1> tmp(rows());
Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(), cols()-1);
- tmp = col(0) + right * essential.conjugate();
+ tmp = (right * essential.conjugate()).lazy();
+ tmp += col(0);
col(0) -= beta * tmp;
right -= beta * tmp * essential.transpose();
}