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);
    56   for(
Index i = nbVecs-1; i >=0 ; --i)
    58     Index rs = vectors.rows() - i - 1;
    59     Index rt = nbVecs-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>();
    67       triFactor.row(i).tail(rt) = triFactor.row(i).tail(rt) * triFactor.bottomRightCorner(rt,rt).template triangularView<Upper>();
    70     triFactor(i,i) = hCoeffs(i);
    78 template<
typename MatrixType,
typename VectorsType,
typename CoeffsType>
    81   enum { TFactorSize = MatrixType::ColsAtCompileTime };
    82   Index nbVecs = vectors.cols();
    90   Matrix<
typename MatrixType::Scalar,VectorsType::ColsAtCompileTime,MatrixType::ColsAtCompileTime,0,
    91          VectorsType::MaxColsAtCompileTime,MatrixType::MaxColsAtCompileTime> tmp = V.adjoint() * mat;
    93   if(forward) tmp = T.template triangularView<Upper>()           * tmp;
    94   else        tmp = T.template triangularView<Upper>().adjoint() * tmp;
    95   mat.noalias() -= V * tmp;
   102 #endif // EIGEN_BLOCK_HOUSEHOLDER_H void apply_block_householder_on_the_left(MatrixType &mat, const VectorsType &vectors, const CoeffsType &hCoeffs, bool forward)
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API. 
Expression of a triangular part in a matrix. 
The matrix class, also used for vectors and row-vectors. 
void make_block_householder_triangular_factor(TriangularFactorType &triFactor, const VectorsType &vectors, const CoeffsType &hCoeffs)