numerics
0.1.0
Loading...
Searching...
No Matches
lanczos.cpp
Go to the documentation of this file.
1
/// @file eigen/lanczos.cpp
2
/// @brief Lanczos overload wrappers.
3
4
#include "
linalg/eigen/lanczos.hpp
"
5
#include "
operator/operators.hpp
"
6
#include <stdexcept>
7
8
namespace
num
{
9
10
LanczosResult
lanczos
(
const
Matrix
& A,
idx
k,
real
tol,
idx
max_steps,
Backend
backend) {
11
if
(A.
rows
() != A.
cols
()) {
12
throw
std::invalid_argument(
"lanczos: matrix must be square"
);
13
}
14
operators::DenseOp
op(A, backend);
15
return
lanczos
(op, k, tol, max_steps, backend);
16
}
17
18
LanczosResult
lanczos
(
const
SparseMatrix
& A,
19
idx
k,
20
real
tol,
21
idx
max_steps,
22
Backend
backend) {
23
if
(A.
n_rows
() != A.
n_cols
()) {
24
throw
std::invalid_argument(
"lanczos: matrix must be square"
);
25
}
26
(void)backend;
27
operators::SparseOp
op(A);
28
return
lanczos
(op, k, tol, max_steps, backend);
29
}
30
31
}
// namespace num
num::BasicMatrix< real >
num::BasicMatrix::rows
constexpr idx rows() const noexcept
Definition
matrix.hpp:87
num::BasicMatrix::cols
constexpr idx cols() const noexcept
Definition
matrix.hpp:88
num::SparseMatrix
Sparse matrix in Compressed Sparse Row (CSR) format.
Definition
sparse.hpp:15
num::SparseMatrix::n_cols
idx n_cols() const
Definition
sparse.hpp:34
num::SparseMatrix::n_rows
idx n_rows() const
Definition
sparse.hpp:33
lanczos.hpp
Lanczos eigensolver for symmetric operators.
num
Definition
quadrature.hpp:8
num::real
double real
Definition
types.hpp:10
num::Backend
Backend
Definition
policy.hpp:7
num::idx
std::size_t idx
Definition
types.hpp:11
num::lanczos
LanczosResult lanczos(const Op &A, idx k, real tol=1e-10, idx max_steps=0, Backend backend=Backend::seq)
Operator Lanczos for any symmetric adapter.
Definition
lanczos.hpp:31
operators.hpp
Umbrella include for operator concepts and adapters.
num::LanczosResult
Definition
lanczos.hpp:21
num::operators::DenseOp
Adapt a dense Matrix to the operator protocol.
Definition
dense.hpp:12
num::operators::SparseOp
Adapt a SparseMatrix to the operator protocol.
Definition
sparse.hpp:11
src
linalg
eigen
lanczos.cpp
Generated by
1.9.8