aboutsummaryrefslogtreecommitdiff
path: root/Eigen/src/Householder/BlockHouseholder.h
diff options
context:
space:
mode:
authorYi Kong <yikong@google.com>2022-02-25 15:53:09 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-02-25 15:53:09 +0000
commit10f298fc4175c1b8537c674f654a070c871960e5 (patch)
treefb979fb4cf4f8052c8cc66b1ec9516d91fcd859b /Eigen/src/Householder/BlockHouseholder.h
parent892aea0d75825c43d5b630e2060622cbba23694c (diff)
parent79df15ea886a5fc1b85de433f9b3518c68934bae (diff)
downloadeigen-10f298fc4175c1b8537c674f654a070c871960e5.tar.gz
Original change: https://android-review.googlesource.com/c/platform/external/eigen/+/1999079 Change-Id: I0c5108390c595f0d39af8797875f2b88accb7b56
Diffstat (limited to 'Eigen/src/Householder/BlockHouseholder.h')
-rw-r--r--Eigen/src/Householder/BlockHouseholder.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/Eigen/src/Householder/BlockHouseholder.h b/Eigen/src/Householder/BlockHouseholder.h
index 01a7ed188..39ce1c2a0 100644
--- a/Eigen/src/Householder/BlockHouseholder.h
+++ b/Eigen/src/Householder/BlockHouseholder.h
@@ -63,8 +63,15 @@ void make_block_householder_triangular_factor(TriangularFactorType& triFactor, c
triFactor.row(i).tail(rt).noalias() = -hCoeffs(i) * vectors.col(i).tail(rs).adjoint()
* vectors.bottomRightCorner(rs, rt).template triangularView<UnitLower>();
- // FIXME add .noalias() once the triangular product can work inplace
- triFactor.row(i).tail(rt) = triFactor.row(i).tail(rt) * triFactor.bottomRightCorner(rt,rt).template triangularView<Upper>();
+ // FIXME use the following line with .noalias() once the triangular product can work inplace
+ // triFactor.row(i).tail(rt) = triFactor.row(i).tail(rt) * triFactor.bottomRightCorner(rt,rt).template triangularView<Upper>();
+ for(Index j=nbVecs-1; j>i; --j)
+ {
+ typename TriangularFactorType::Scalar z = triFactor(i,j);
+ triFactor(i,j) = z * triFactor(j,j);
+ if(nbVecs-j-1>0)
+ triFactor.row(i).tail(nbVecs-j-1) += z * triFactor.row(j).tail(nbVecs-j-1);
+ }
}
triFactor(i,i) = hCoeffs(i);