21#include "Mathematical/Optimization/LinearEquation/LinearEquationEnvironment.hpp"
22#include "Mathematical/Optimization/LinearEquation/LinearEquationSolver.hpp"
36template <
typename _Scalar>
51 template <
typename Subject>
57 Subject accelerated_subject = diis_coefficients(0) * subjects.at(0);
58 for (
size_t i = 1; i < errors.size(); i++) {
59 accelerated_subject += diis_coefficients(i) * subjects.at(i);
61 return accelerated_subject;
72 const auto n = errors.size();
77 for (
size_t i = 0; i < n; i++) {
78 const auto& error_i = errors[i];
80 for (
size_t j = 0; j < n; j++) {
81 const auto& error_j = errors[j];
82 B(i, j) = error_i.dot(error_j);
92 auto environment = LinearEquationEnvironment<Scalar>(B, b);
93 auto solver = LinearEquationSolver<Scalar>::HouseholderQR();
94 solver.perform(environment);
VectorX< Scalar > calculateDIISCoefficients(const std::vector< VectorX< Scalar > > &errors) const
Definition: DIIS.hpp:70
Subject accelerate(const std::vector< Subject > &subjects, const std::vector< VectorX< Scalar > > &errors) const
Definition: DIIS.hpp:52
_Scalar Scalar
Definition: DIIS.hpp:39
Definition: Matrix.hpp:47
Definition: SquareMatrix.hpp:39
Definition: BaseOneElectronIntegralBuffer.hpp:25