13 for (
idx i = 0; i < k; ++i) {
14 h[i] =
dot(v, basis[i]);
15 axpy(-h[i], basis[i], v);
23 for (
idx l = 0; l < k; ++l) {
25 for (
idx i = 0; i < n; ++i) {
26 proj += basis(i, l) * v[i];
28 for (
idx i = 0; i < n; ++i) {
29 v[i] -= proj * basis(i, l);
constexpr idx rows() const noexcept
real mgs_orthogonalize(const std::vector< Vector > &basis, Vector &v, std::vector< real > &h, idx k)
Modified Gram-Schmidt against basis[0..k-1].
real dot(const Vector &x, const Vector &y, Backend b=default_backend)
Compute .
real norm(const Vector &x, Backend b=default_backend)
Compute .
void axpy(real alpha, const Vector &x, Vector &y, Backend b=default_backend)
Compute .
Subspace construction and orthogonalization kernels.