Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/ceres/internal/ceres/partitioned_matrix_view.cc')
-rw-r--r--extern/ceres/internal/ceres/partitioned_matrix_view.cc162
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