diff options
author | Gael Guennebaud <g.gael@free.fr> | 2009-08-15 13:12:50 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2009-08-15 13:12:50 +0200 |
commit | 13a8956188d1c8441c01a6218dc24c745ff0b210 (patch) | |
tree | 2012391d821debd79cbe5e4ada1ec291ec885c1b /Eigen/src/Householder/Householder.h | |
parent | 7b60713e87ba24d3b0fa8f486bba8665151e9f31 (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.h | 6 |
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(); } |