11 #ifndef EIGEN_BLOCK_HOUSEHOLDER_H
12 #define EIGEN_BLOCK_HOUSEHOLDER_H
54 template <
typename TriangularFactorType,
typename VectorsType,
typename CoeffsType>
56 const CoeffsType& hCoeffs) {
57 const Index nbVecs = vectors.cols();
58 eigen_assert(triFactor.rows() == nbVecs && triFactor.cols() == nbVecs && vectors.rows() >= nbVecs);
60 for (
Index i = nbVecs - 1;
i >= 0; --
i) {
61 Index rs = vectors.rows() -
i - 1;
65 triFactor.row(
i).tail(rt).noalias() = -hCoeffs(
i) * vectors.col(
i).tail(rs).adjoint() *
66 vectors.bottomRightCorner(rs, rt).template triangularView<UnitLower>();
73 triFactor(
i,
j) = z * triFactor(
j,
j);
74 if (nbVecs -
j - 1 > 0) 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 = VectorsType::ColsAtCompileTime };
89 Index nbVecs = vectors.cols();
100 (VectorsType::MaxColsAtCompileTime == 1 && MatrixType::MaxColsAtCompileTime != 1) ?
RowMajor :
ColMajor,
101 VectorsType::MaxColsAtCompileTime, MatrixType::MaxColsAtCompileTime>
105 tmp =
T.template triangularView<Upper>() *
tmp;
107 tmp =
T.template triangularView<Upper>().adjoint() *
tmp;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
MatrixXcd V
Definition: EigenSolver_EigenSolver_MatrixType.cpp:15
Eigen::SparseMatrix< double > mat
Definition: EigenUnitTest.cpp:10
Eigen::Triplet< double > T
Definition: EigenUnitTest.cpp:11
#define eigen_assert(x)
Definition: Macros.h:910
SCALAR Scalar
Definition: bench_gemm.cpp:45
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Expression of a triangular part in a matrix.
Definition: TriangularMatrix.h:167
@ ColMajor
Definition: Constants.h:318
@ RowMajor
Definition: Constants.h:320
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
void make_block_householder_triangular_factor(TriangularFactorType &triFactor, const VectorsType &vectors, const CoeffsType &hCoeffs)
Definition: BlockHouseholder.h:55
void apply_block_householder_on_the_left(MatrixType &mat, const VectorsType &vectors, const CoeffsType &hCoeffs, bool forward)
Definition: BlockHouseholder.h:86
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Definition: Eigen_Colamd.h:49
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2