diff options
Diffstat (limited to 'extern/ceres/internal/ceres/partitioned_matrix_view.cc')
-rw-r--r-- | extern/ceres/internal/ceres/partitioned_matrix_view.cc | 162 |
1 files changed, 91 insertions, 71 deletions
diff --git a/extern/ceres/internal/ceres/partitioned_matrix_view.cc b/extern/ceres/internal/ceres/partitioned_matrix_view.cc index d7a998d68a3..b67bc905d15 100644 --- a/extern/ceres/internal/ceres/partitioned_matrix_view.cc +++ b/extern/ceres/internal/ceres/partitioned_matrix_view.cc @@ -41,122 +41,142 @@ #include "ceres/linear_solver.h" #include "ceres/partitioned_matrix_view.h" -#include "ceres/internal/eigen.h" namespace ceres { namespace internal { -PartitionedMatrixViewBase* -PartitionedMatrixViewBase::Create(const LinearSolver::Options& options, - const BlockSparseMatrix& matrix) { +PartitionedMatrixViewBase* PartitionedMatrixViewBase::Create( + const LinearSolver::Options& options, const BlockSparseMatrix& matrix) { #ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION - if ((options.row_block_size == 2) && + if ((options.row_block_size == 2) && (options.e_block_size == 2) && (options.f_block_size == 2)) { - return new PartitionedMatrixView<2, 2, 2>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 2, 2>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 2) && (options.f_block_size == 3)) { - return new PartitionedMatrixView<2, 2, 3>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 2, 3>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 2) && (options.f_block_size == 4)) { - return new PartitionedMatrixView<2, 2, 4>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 2, 4>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 2)) { - return new PartitionedMatrixView<2, 2, Eigen::Dynamic>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 2, Eigen::Dynamic>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 3) && (options.f_block_size == 3)) { - return new PartitionedMatrixView<2, 3, 3>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 3, 3>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 3) && (options.f_block_size == 4)) { - return new PartitionedMatrixView<2, 3, 4>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 3, 4>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 3) && (options.f_block_size == 6)) { - return new PartitionedMatrixView<2, 3, 6>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 3, 6>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 3) && (options.f_block_size == 9)) { - return new PartitionedMatrixView<2, 3, 9>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 3, 9>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 3)) { - return new PartitionedMatrixView<2, 3, Eigen::Dynamic>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 3, Eigen::Dynamic>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 4) && (options.f_block_size == 3)) { - return new PartitionedMatrixView<2, 4, 3>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 4, 3>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 4) && (options.f_block_size == 4)) { - return new PartitionedMatrixView<2, 4, 4>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 4, 4>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 4) && (options.f_block_size == 6)) { - return new PartitionedMatrixView<2, 4, 6>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 4, 6>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 4) && (options.f_block_size == 8)) { - return new PartitionedMatrixView<2, 4, 8>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 4, 8>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 4) && (options.f_block_size == 9)) { - return new PartitionedMatrixView<2, 4, 9>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 2) && + return new PartitionedMatrixView<2, 4, 9>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 2) && (options.e_block_size == 4)) { - return new PartitionedMatrixView<2, 4, Eigen::Dynamic>(matrix, options.elimination_groups[0]); - } - if (options.row_block_size == 2){ - return new PartitionedMatrixView<2, Eigen::Dynamic, Eigen::Dynamic>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 3) && + return new PartitionedMatrixView<2, 4, Eigen::Dynamic>(matrix, + options.elimination_groups[0]); + } + if (options.row_block_size == 2) { + return new PartitionedMatrixView<2, Eigen::Dynamic, Eigen::Dynamic>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 3) && (options.e_block_size == 3) && (options.f_block_size == 3)) { - return new PartitionedMatrixView<3, 3, 3>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 4) && + return new PartitionedMatrixView<3, 3, 3>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 4) && (options.e_block_size == 4) && (options.f_block_size == 2)) { - return new PartitionedMatrixView<4, 4, 2>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 4) && + return new PartitionedMatrixView<4, 4, 2>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 4) && (options.e_block_size == 4) && (options.f_block_size == 3)) { - return new PartitionedMatrixView<4, 4, 3>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 4) && + return new PartitionedMatrixView<4, 4, 3>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 4) && (options.e_block_size == 4) && (options.f_block_size == 4)) { - return new PartitionedMatrixView<4, 4, 4>(matrix, options.elimination_groups[0]); - } - if ((options.row_block_size == 4) && + return new PartitionedMatrixView<4, 4, 4>(matrix, + options.elimination_groups[0]); + } + if ((options.row_block_size == 4) && (options.e_block_size == 4)) { - return new PartitionedMatrixView<4, 4, Eigen::Dynamic>(matrix, options.elimination_groups[0]); - } + return new PartitionedMatrixView<4, 4, Eigen::Dynamic>(matrix, + options.elimination_groups[0]); + } #endif VLOG(1) << "Template specializations not found for <" - << options.row_block_size << "," - << options.e_block_size << "," + << options.row_block_size << "," << options.e_block_size << "," << options.f_block_size << ">"; - return new PartitionedMatrixView<Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic>( - matrix, options.elimination_groups[0]); + return new PartitionedMatrixView<Eigen::Dynamic, + Eigen::Dynamic, + Eigen::Dynamic>( + matrix, options.elimination_groups[0]); }; } // namespace internal |