class gpr::linalg::DenseLLTInverse¶
Overview¶
#include <DenseLLTInverse.h>
class DenseLLTInverse: public gpr::linalg::KernelInverse {
public:
// methods
bool factorise(const EigenMatrix& K);
virtual Kind kind() const;
virtual Eigen::VectorXd solve(const Eigen::VectorXd& b) const;
virtual EigenMatrix solve_mat(const EigenMatrix& B) const;
virtual double log_det() const;
virtual double trace_inv_times(const EigenMatrix& A) const;
};
Inherited Members¶
public:
// enums
enum Kind;
// 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¶
bool factorise(const EigenMatrix& K)
Factor K via Eigen LLT. Returns true on success, false if the decomposition reports NumericalIssue (i.e. K is not numerically PD); the caller decides how to react. Each subsequent solve / solve_mat / log_det / trace_inv_times call requires a successful factorise; otherwise the op throws std::logic_error.
virtual Kind kind() const
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
Solve K x = b for a single right-hand side.
virtual EigenMatrix solve_mat(const EigenMatrix& B) const
Solve K X = B for a multi right-hand side.
virtual double log_det() const
Returns log |K|.
virtual double trace_inv_times(const EigenMatrix& A) const
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.