diff --git a/CHANGELOG.md b/CHANGELOG.md
index c69f6bed0ff1147b88e5db72f7335c7143befbd4..d03ab7b129d4671f63f93798c40478a703464958 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -37,6 +37,7 @@ release.
### Changed
+- Changed cholmod 32 bit calls to 64 bit calls [#5173](https://github.com/DOI-USGS/ISIS3/issues/5173) and [#5176](https://github.com/DOI-USGS/ISIS3/issues/5176)
- Removed the `.py` extention from the _isisdataeval_ tool `isisdata_mockup` for consistency and install it in $ISISROOT/bin; added the `--tojson` and `--hasher` option to _isisdata_mockup_ tool improve utility; updated the tool `README.md` documentation to reflect this change, removed help output and trimmed example results; fixed paths to test data in `make_isisdata_mockup.sh`. [#5163](https://github.com/DOI-USGS/ISIS3/pull/5163)
- Significantly refactored FASTGEOM processing in findfeatures to accommodate stability and functionality. The scope of the algorithm was taken out of the ImageSource class and isolated to support this feature. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Report better information regarding the behavior of findfeatures, FASTGEOM algorithms, and creation of the output network. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
diff --git a/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp b/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp
index e8d1463c6c2b4049a3d477ba9dea23cf6f71ba61..aece7a40012a50ff32714503b359f0a501775f37 100644
--- a/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp
+++ b/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp
@@ -713,7 +713,7 @@ namespace Isis {
m_cholmodTriplet = NULL;
- cholmod_start(&m_cholmodCommon);
+ cholmod_l_start(&m_cholmodCommon);
// set user-defined cholmod error handler
m_cholmodCommon.error_handler = cholmodErrorHandler;
@@ -736,11 +736,11 @@ namespace Isis {
*/
bool BundleAdjust::freeCHOLMODLibraryVariables() {
- cholmod_free_triplet(&m_cholmodTriplet, &m_cholmodCommon);
- cholmod_free_sparse(&m_cholmodNormal, &m_cholmodCommon);
- cholmod_free_factor(&m_L, &m_cholmodCommon);
+ cholmod_l_free_triplet(&m_cholmodTriplet, &m_cholmodCommon);
+ cholmod_l_free_sparse(&m_cholmodNormal, &m_cholmodCommon);
+ cholmod_l_free_factor(&m_L, &m_cholmodCommon);
- cholmod_finish(&m_cholmodCommon);
+ cholmod_l_finish(&m_cholmodCommon);
return true;
}
@@ -1076,7 +1076,7 @@ namespace Isis {
// if we're using CHOLMOD and still going, release cholmod_factor
// (if we don't, memory leaks will occur), otherwise we need it for error propagation
if (!m_bundleResults.converged() || !m_bundleSettings->errorPropagation()) {
- cholmod_free_factor(&m_L, &m_cholmodCommon);
+ cholmod_l_free_factor(&m_L, &m_cholmodCommon);
}
iterationSummary();
@@ -1807,17 +1807,17 @@ namespace Isis {
}
// convert triplet to sparse matrix
- m_cholmodNormal = cholmod_triplet_to_sparse(m_cholmodTriplet,
+ m_cholmodNormal = cholmod_l_triplet_to_sparse(m_cholmodTriplet,
m_cholmodTriplet->nnz,
&m_cholmodCommon);
// analyze matrix
// TODO should we analyze just 1st iteration?
- m_L = cholmod_analyze(m_cholmodNormal, &m_cholmodCommon);
+ m_L = cholmod_l_analyze(m_cholmodNormal, &m_cholmodCommon);
// create cholmod cholesky factor
// CHOLMOD will choose LLT or LDLT decomposition based on the characteristics of the matrix.
- cholmod_factorize(m_cholmodNormal, m_L, &m_cholmodCommon);
+ cholmod_l_factorize(m_cholmodNormal, m_L, &m_cholmodCommon);
// check for "matrix not positive definite" error
if (m_cholmodCommon.status == CHOLMOD_NOT_POSDEF) {
@@ -1832,7 +1832,7 @@ namespace Isis {
cholmod_dense *x, *b;
// initialize right-hand side vector
- b = cholmod_zeros(m_cholmodNormal->nrow, 1, m_cholmodNormal->xtype, &m_cholmodCommon);
+ b = cholmod_l_zeros(m_cholmodNormal->nrow, 1, m_cholmodNormal->xtype, &m_cholmodCommon);
// copy right-hand side vector into b
double *px = (double*)b->x;
@@ -1841,7 +1841,7 @@ namespace Isis {
}
// cholmod solve
- x = cholmod_solve(CHOLMOD_A, m_L, b, &m_cholmodCommon);
+ x = cholmod_l_solve(CHOLMOD_A, m_L, b, &m_cholmodCommon);
// copy solution vector x out into m_imageSolution
double *sx = (double*)x->x;
@@ -1850,9 +1850,9 @@ namespace Isis {
}
// free cholmod structures
- cholmod_free_sparse(&m_cholmodNormal, &m_cholmodCommon);
- cholmod_free_dense(&b, &m_cholmodCommon);
- cholmod_free_dense(&x, &m_cholmodCommon);
+ cholmod_l_free_sparse(&m_cholmodNormal, &m_cholmodCommon);
+ cholmod_l_free_dense(&b, &m_cholmodCommon);
+ cholmod_l_free_dense(&x, &m_cholmodCommon);
return true;
}
@@ -1873,7 +1873,7 @@ namespace Isis {
if ( m_iteration == 1 ) {
int numElements = m_sparseNormals.numberOfElements();
- m_cholmodTriplet = cholmod_allocate_triplet(m_rank, m_rank, numElements,
+ m_cholmodTriplet = cholmod_l_allocate_triplet(m_rank, m_rank, numElements,
-1, CHOLMOD_REAL, &m_cholmodCommon);
if ( !m_cholmodTriplet ) {
@@ -1883,15 +1883,15 @@ namespace Isis {
m_cholmodTriplet->nnz = 0;
}
- int *tripletColumns = (int*) m_cholmodTriplet->i;
- int *tripletRows = (int*) m_cholmodTriplet->j;
+ long *tripletColumns = (long*) m_cholmodTriplet->i;
+ long *tripletRows = (long*) m_cholmodTriplet->j;
double *tripletValues = (double*)m_cholmodTriplet->x;
double entryValue;
- int numEntries = 0;
+ long numEntries = 0;
- int numBlockcolumns = m_sparseNormals.size();
+ long numBlockcolumns = m_sparseNormals.size();
for (int columnIndex = 0; columnIndex < numBlockcolumns; columnIndex++) {
SparseBlockColumnMatrix *normalsColumn = m_sparseNormals[columnIndex];
@@ -2529,8 +2529,8 @@ namespace Isis {
bool BundleAdjust::errorPropagation() {
emit(statusBarUpdate("Error Propagation"));
// free unneeded memory
- cholmod_free_triplet(&m_cholmodTriplet, &m_cholmodCommon);
- cholmod_free_sparse(&m_cholmodNormal, &m_cholmodCommon);
+ cholmod_l_free_triplet(&m_cholmodTriplet, &m_cholmodCommon);
+ cholmod_l_free_sparse(&m_cholmodNormal, &m_cholmodCommon);
LinearAlgebra::Matrix T(3, 3);
// *** TODO ***
@@ -2557,7 +2557,7 @@ namespace Isis {
cholmod_dense *x; // solution vector
cholmod_dense *b; // right-hand side (column vectors of identity)
- b = cholmod_zeros ( m_rank, 1, CHOLMOD_REAL, &m_cholmodCommon );
+ b = cholmod_l_zeros ( m_rank, 1, CHOLMOD_REAL, &m_cholmodCommon );
double *pb = (double*)b->x;
double *px = NULL;
@@ -2623,7 +2623,7 @@ namespace Isis {
}
pb[columnIndex] = 1.0;
- x = cholmod_solve ( CHOLMOD_A, m_L, b, &m_cholmodCommon );
+ x = cholmod_l_solve ( CHOLMOD_A, m_L, b, &m_cholmodCommon );
px = (double*)x->x;
int rp = 0;
@@ -2642,7 +2642,7 @@ namespace Isis {
columnIndex++;
localCol++;
- cholmod_free_dense(&x,&m_cholmodCommon);
+ cholmod_l_free_dense(&x,&m_cholmodCommon);
}
// save adjusted target body sigmas if solving for target
@@ -2770,7 +2770,7 @@ namespace Isis {
m_sparseNormals.wipe();
// free b (right-hand side vector)
- cholmod_free_dense(&b,&m_cholmodCommon);
+ cholmod_l_free_dense(&b,&m_cholmodCommon);
outputBundleStatus("\n\n");