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 A).

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.