diff options
Diffstat (limited to 'internal/ceres/evaluator.cc')
-rw-r--r-- | internal/ceres/evaluator.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/internal/ceres/evaluator.cc b/internal/ceres/evaluator.cc index 31a4176..c94c62c 100644 --- a/internal/ceres/evaluator.cc +++ b/internal/ceres/evaluator.cc @@ -35,6 +35,8 @@ #include "ceres/compressed_row_sparse_matrix.h" #include "ceres/crs_matrix.h" #include "ceres/dense_jacobian_writer.h" +#include "ceres/dynamic_compressed_row_finalizer.h" +#include "ceres/dynamic_compressed_row_jacobian_writer.h" #include "ceres/evaluator.h" #include "ceres/internal/port.h" #include "ceres/program_evaluator.h" @@ -63,9 +65,17 @@ Evaluator* Evaluator::Create(const Evaluator::Options& options, BlockJacobianWriter>(options, program); case SPARSE_NORMAL_CHOLESKY: - return new ProgramEvaluator<ScratchEvaluatePreparer, - CompressedRowJacobianWriter>(options, - program); + if (options.dynamic_sparsity) { + return new ProgramEvaluator<ScratchEvaluatePreparer, + DynamicCompressedRowJacobianWriter, + DynamicCompressedRowJacobianFinalizer>( + options, program); + } else { + return new ProgramEvaluator<ScratchEvaluatePreparer, + CompressedRowJacobianWriter>(options, + program); + } + default: *error = "Invalid Linear Solver Type. Unable to create evaluator."; return NULL; |