81 const Eigen::MatrixXd& x,
83 const Eigen::MatrixXd Hvv = Hqp.topLeftCorner(vtotal, vtotal);
84 const Eigen::MatrixXd Hcc = Hqp.block(vtotal, vtotal, ctotal, ctotal);
85 Eigen::MatrixXd y(x.rows(), x.cols());
87 Eigen::Map<const Eigen::MatrixXd> X_all(x.data(), ctotal, vtotal * x.cols());
88 Eigen::Map<Eigen::MatrixXd> Y_all(y.data(), ctotal, vtotal * x.cols());
89 Y_all.noalias() = prefactor * Hcc * X_all;
90 for (
Index col = 0; col < x.cols(); ++col) {
91 Eigen::Map<const Eigen::MatrixXd> X(x.col(col).data(), ctotal, vtotal);
92 Eigen::Map<Eigen::MatrixXd> Y(y.col(col).data(), ctotal, vtotal);
93 Y.noalias() -= prefactor * X * Hvv;
Eigen::MatrixXd ApplyBSEExchange(const TCMatrix_gwbse &Mout, const BSEWindow &out, const TCMatrix_gwbse &Min, const BSEWindow &in, const Eigen::MatrixXd &x, double prefactor)