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