Cholesky_decomposition_hdf5
C++ Function Reference
1 Signature
int BigDataStatMeth::Cholesky_decomposition_hdf5(BigDataStatMeth::hdf5Dataset *inDataset, BigDataStatMeth::hdf5Dataset *outDataset, int idim0, int idim1, long dElementsBlock, bool full_matrix, Rcpp::Nullable< int > threads)2 Description
Performs Cholesky decomposition with automatic algorithm selection.
3 Parameters
inDataset(BigDataStatMeth::hdf5Dataset *): Input matrix dataset (must be symmetric positive-definite)outDataset(BigDataStatMeth::hdf5Dataset *): Output dataset for the Cholesky factor Lidim0(int): Number of rowsidim1(int): Number of columnsdElementsBlock(long): Block size for processingthreads(Rcpp::Nullable< int >): Number of threads for parallel processing (optional)
4 Returns
int 0 on success, 1 if not positive definite, 2 on errors
5 Details
inDatasetInput matrix dataset (must be symmetric positive-definite) outDatasetOutput dataset for the Cholesky factor L idim0Number of rows idim1Number of columns dElementsBlockBlock size for processing threadsNumber of threads for parallel processing (optional) int 0 on success, 1 if not positive definite, 2 on errors Automatically selects appropriate algorithm based on matrix size:Matrices < CHOLESKY_OUTOFCORE_THRESHOLD: uses intermediate algorithmMatrices ≥ CHOLESKY_OUTOFCORE_THRESHOLD: uses out-of-core tiled algorithm
6 Call Graph
7 Source Code
NoteImplementation
File: inst/include/hdf5Algebra/matrixInvCholesky.hpp • Lines 313-337
inline int Cholesky_decomposition_hdf5(BigDataStatMeth::hdf5Dataset* inDataset,
BigDataStatMeth::hdf5Dataset* outDataset,
int idim0, int idim1, long dElementsBlock,
bool full_matrix, Rcpp::Nullable<int> threads = R_NilValue)
{
//.. 20260302 ..// // Detect matrix size and select algorithm
//.. 20260302 ..// // if (idim0 >= CHOLESKY_OUTOFCORE_THRESHOLD) {
//.. 20260302 ..// // Rcpp::Rcout << "\nUsing out-of-core Cholesky for large matrix (" << idim0 << "x" << idim1 << ")\n";
//.. 20260302 ..// // return Cholesky_decomposition_outofcore_hdf5(inDataset, outDataset, idim0, idim1, dElementsBlock, threads);
//.. 20260302 ..// // } else {
//.. 20260302 ..// // return Cholesky_decomposition_intermediate_hdf5(inDataset, outDataset, idim0, idim1, dElementsBlock, threads);
//.. 20260302 ..// // }
int res;
if (idim0 >= CHOLESKY_OUTOFCORE_THRESHOLD) {
res = Cholesky_decomposition_outofcore_hdf5(inDataset, outDataset, idim0, idim1, dElementsBlock, threads);
} else {
res = Cholesky_decomposition_intermediate_hdf5(inDataset, outDataset, idim0, idim1, dElementsBlock, threads);
}
if (res == 0 && full_matrix) {
setLowerTriangularMatrix(outDataset, static_cast<hsize_t>(dElementsBlock));
}
return res;
}8 Usage Example
#include "BigDataStatMeth.hpp"
// Example usage
auto result = Cholesky_decomposition_hdf5(...);