class gpr::linalg::KernelInverse¶
Overview¶
#include <KernelInverse.h>
class KernelInverse {
public:
// enums
enum Kind;
// construction
virtual ~KernelInverse();
// methods
virtual Kind kind() const = 0;
virtual Eigen::VectorXd solve(const Eigen::VectorXd& b) const = 0;
virtual EigenMatrix solve_mat(const EigenMatrix& B) const = 0;
virtual double log_det() const = 0;
virtual double trace_inv_times(const EigenMatrix& A) const = 0;
};
Detailed Documentation¶
Methods¶
virtual Kind kind() const = 0
Reports whether the operator parallelises internally (Distributed) or is rank-local (RankLocal). Used by ProbeExecutor to choose the dispatch strategy.
virtual Eigen::VectorXd solve(const Eigen::VectorXd& b) const = 0
Solve K x = b for a single right-hand side.
virtual EigenMatrix solve_mat(const EigenMatrix& B) const = 0
Solve K X = B for a multi right-hand side.
virtual double log_det() const = 0
Returns log |K|.
virtual double trace_inv_times(const EigenMatrix& A) const = 0
Returns tr(K^{-1} A). Implementations may exploit structure (e.g. ScaLAPACK’s distributed dpotri) rather than materialising K^{-1} A.
Symmetry contract: A is treated as a general dense matrix; no symmetry of A is exploited by the base contract. Concrete implementations may relax this contract if their override docstring documents the additional assumption.