diff --git a/include/ceres/types.h b/include/ceres/types.h index 2c0b7bddf..30dcadaa8 100644 --- a/include/ceres/types.h +++ b/include/ceres/types.h @@ -324,7 +324,11 @@ const char* LinearSolverTerminationTypeToString( 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 9339bc4f5..74c6af4a5 100644 --- a/internal/ceres/types.cc +++ b/internal/ceres/types.cc @@ -201,4 +201,26 @@ bool IsSchurType(LinearSolverType type) { (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