7 #ifndef SYM_GEIGS_CHOLESKY_OP_H 8 #define SYM_GEIGS_CHOLESKY_OP_H 11 #include "../DenseSymMatProd.h" 12 #include "../DenseCholesky.h" 24 template <
typename Scalar = double,
25 typename OpType = DenseSymMatProd<double>,
26 typename BOpType = DenseCholesky<double> >
46 m_op(op), m_Bop(Bop), m_cache(op.
rows())
52 Index
rows()
const {
return m_Bop.rows(); }
56 Index
cols()
const {
return m_Bop.rows(); }
67 m_Bop.upper_triangular_solve(x_in, y_out);
68 m_op.perform_op(y_out, m_cache.
data());
69 m_Bop.lower_triangular_solve(m_cache.
data(), y_out);
75 #endif // SYM_GEIGS_CHOLESKY_OP_H
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar * data() const
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
SymGEigsCholeskyOp(OpType &op, BOpType &Bop)
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
void perform_op(const Scalar *x_in, Scalar *y_out)
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix