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.