From 14ee795aea6b71e0c05bcb29649ca511479e7dc8 Mon Sep 17 00:00:00 2001 From: Sameer Agarwal Date: Thu, 6 Sep 2012 11:05:32 -0700 Subject: [PATCH] Add ability to query available linear algebra backend. Change-Id: Ide349a04a69b1a377ea789b355e00b210ec792ba --- include/ceres/types.h | 4 ++++ internal/ceres/types.cc | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) 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