Add ability to query available linear algebra backend. Change-Id: Ide349a04a69b1a377ea789b355e00b210ec792ba
diff --git a/include/ceres/types.h b/include/ceres/types.h index 2c0b7bd..30dcada 100644 --- a/include/ceres/types.h +++ b/include/ceres/types.h
@@ -324,7 +324,11 @@ LinearSolverTerminationType type); const char* SolverTerminationTypeToString(SolverTerminationType type); + bool IsSchurType(LinearSolverType type); +bool IsSparseLinearAlgebraLibraryTypeAvailable( + SparseLinearAlgebraLibraryType type); + } // namespace ceres
diff --git a/internal/ceres/types.cc b/internal/ceres/types.cc index 9339bc4..74c6af4 100644 --- a/internal/ceres/types.cc +++ b/internal/ceres/types.cc
@@ -201,4 +201,26 @@ (type == ITERATIVE_SCHUR)); } +bool IsSparseLinearAlgebraLibraryTypeAvailable( + SparseLinearAlgebraLibraryType type) { + if (type == SUITE_SPARSE) { +#ifdef CERES_NO_SUITESPARSE + return false; +#else + return true; +#endif + } + + if (type == CX_SPARSE) { +#ifdef CERES_NO_CXSPARSE + return false; +#else + return true; +#endif + } + + LOG(WARNING) << "Unknown sparse linear algebra library " << type; + return false; +} + } // namespace ceres