namespace gpr::linalg¶
Overview¶
namespace linalg {
// namespaces
namespace gpr::linalg::detail;
// typedefs
typedef int MpiCommType;
// structs
struct MpiContext;
// classes
class DenseLLTInverse;
class KernelInverse;
class ProbeExecutor;
class ScalapackState;
// global variables
MpiCommType kMpiCommNull = 0;
// global functions
bool cholesky(const EigenMatrix& C, EigenMatrix& L);
Eigen::VectorXd forward_solve(const EigenMatrix& L, const Eigen::VectorXd& b);
Eigen::VectorXd back_solve(const EigenMatrix& L, const Eigen::VectorXd& b);
EigenMatrix forward_solve_mat(const EigenMatrix& L, const EigenMatrix& B);
EigenMatrix back_solve_mat(const EigenMatrix& L, const EigenMatrix& B);
Eigen::VectorXd forward_solve_mat_colwise_squared_norm(const EigenMatrix& L, const EigenMatrix& B);
EigenMatrix cholesky_inverse(const EigenMatrix& L);
double trace_product(const EigenMatrix& A, const EigenMatrix& B);
double log_det_cholesky(const EigenMatrix& L);
void ordered_sum_bcast(double* data, int count);
bool cholesky_distributed(std::vector<double> C_dist, const int* desc, int n, EigenMatrix& L);
Eigen::VectorXd forward_solve_mat_colwise_squared_norm_distributed(const EigenMatrix& L, std::vector<double> b_buf, const int* desc_b, int m, int ncols);
double trace_cholesky_solve_scalapack(const EigenMatrix& L, const EigenMatrix& B);
double trace_cholesky_solve_scalapack_distributed_local(const EigenMatrix& L, const double* B_dist, const int* desc_b, int m, int ncols);
double trace_cholesky_solve_scalapack_distributed(const EigenMatrix& L, const double* B_dist, const int* desc_b, int m, int ncols);
void cache_cholesky_inverse(const EigenMatrix& L);
EigenMatrix cholesky_inverse_root(const EigenMatrix& L);
} // namespace linalg
Detailed Documentation¶
Global Functions¶
bool cholesky(const EigenMatrix& C, EigenMatrix& L)
Cholesky decomposition (LAPACK equivalent: dpotrf).
Decomposes a symmetric positive-definite matrix \(C = L L^T\).
Parameters:
C |
Symmetric positive-definite matrix. |
L |
Lower-triangular Cholesky factor. |
Returns:
true if C is positive-definite, false otherwise.
Eigen::VectorXd forward_solve(const EigenMatrix& L, const Eigen::VectorXd& b)
Forward triangular solve with vector RHS (BLAS equivalent: dtrsv).
Solves \(L\,x = b\) where L is lower-triangular.
Parameters:
L |
Lower-triangular matrix (e.g. from cholesky()). |
b |
Right-hand side vector. |
Returns:
Solution vector \(x = L^{-1} b\).
Eigen::VectorXd back_solve(const EigenMatrix& L, const Eigen::VectorXd& b)
Back triangular solve with vector RHS (BLAS equivalent: dtrsv).
Solves \(L^T x = b\) where L is lower-triangular.
Parameters:
L |
Lower-triangular matrix. |
b |
Right-hand side vector. |
Returns:
Solution vector \(x = L^{-T} b\).
EigenMatrix forward_solve_mat(const EigenMatrix& L, const EigenMatrix& B)
Forward triangular solve with matrix RHS (BLAS equivalent: dtrsm).
Solves \(L\,X = B\) where L is lower-triangular.
Parameters:
L |
Lower-triangular matrix. |
B |
Right-hand side matrix. |
Returns:
Solution matrix \(X = L^{-1} B\).
EigenMatrix back_solve_mat(const EigenMatrix& L, const EigenMatrix& B)
Back triangular solve with matrix RHS (BLAS equivalent: dtrsm with side=L, uplo=L, trans=T).
Solves \(L^T X = B\) where L is lower-triangular.
Parameters:
L |
Lower-triangular matrix. |
B |
Right-hand side matrix. |
Returns:
Solution matrix \(X = L^{-T} B\).
Eigen::VectorXd forward_solve_mat_colwise_squared_norm(const EigenMatrix& L, const EigenMatrix& B)
Forward triangular solve followed by columnwise squared norms.
Solves \(L\,X = B\) where L is lower-triangular and returns the vector with entries \(\sum_i X_{ij}^2\).
Parameters:
L |
Lower-triangular matrix. |
B |
Right-hand side matrix. |
Returns:
Columnwise squared norms of \(X = L^{-1} B\).
EigenMatrix cholesky_inverse(const EigenMatrix& L)
Symmetric inverse from Cholesky factor (LAPACK equivalent: dpotri).
Computes \(C^{-1} = L^{-T} L^{-1}\) given the lower-triangular Cholesky factor L.
Parameters:
L |
Lower-triangular Cholesky factor. |
Returns:
The symmetric positive-definite inverse \(C^{-1}\).
double trace_product(const EigenMatrix& A, const EigenMatrix& B)
Frobenius inner product / trace of matrix product.
Computes \(\operatorname{tr}(A\,B) = \sum_{ij} A_{ij}\,B_{ij}\). Equivalent to the Frobenius inner product when one of the matrices is symmetric.
Parameters:
A |
First matrix. |
B |
Second matrix (same dimensions as |
Returns:
The scalar trace-product.
double log_det_cholesky(const EigenMatrix& L)
Half log-determinant from Cholesky factor.
Computes \(\sum_i \ln L_{ii} = \tfrac{1}{2}\ln|C|\).
Parameters:
L |
Lower-triangular Cholesky factor. |
Returns:
The half log-determinant.