11 #ifndef EIGEN_BLOCK_HOUSEHOLDER_H
12 #define EIGEN_BLOCK_HOUSEHOLDER_H
50 template<
typename TriangularFactorType,
typename VectorsType,
typename CoeffsType>
53 const Index nbVecs = vectors.cols();
54 eigen_assert(triFactor.rows() == nbVecs && triFactor.cols() == nbVecs && vectors.rows()>=nbVecs);
58 Index rs = vectors.rows() -
i - 1;
63 triFactor.row(
i).tail(rt).noalias() = -hCoeffs(
i) * vectors.col(
i).tail(rs).adjoint()
64 * vectors.bottomRightCorner(rs, rt).template triangularView<UnitLower>();
71 triFactor(
i,
j) =
z * triFactor(
j,
j);
73 triFactor.row(
i).tail(nbVecs-
j-1) +=
z * triFactor.row(
j).tail(nbVecs-
j-1);
77 triFactor(
i,
i) = hCoeffs(
i);
85 template<
typename MatrixType,
typename VectorsType,
typename CoeffsType>
88 enum { TFactorSize = MatrixType::ColsAtCompileTime };
89 Index nbVecs = vectors.cols();
98 (VectorsType::MaxColsAtCompileTime==1 && MatrixType::MaxColsAtCompileTime!=1)?
RowMajor:
ColMajor,
99 VectorsType::MaxColsAtCompileTime,MatrixType::MaxColsAtCompileTime> tmp =
V.adjoint() *
mat;
101 if(
forward) tmp =
T.template triangularView<Upper>() * tmp;
102 else tmp =
T.template triangularView<Upper>().adjoint() * tmp;
103 mat.noalias() -=
V * tmp;
110 #endif // EIGEN_BLOCK_HOUSEHOLDER_H