| // Copyright 2011 Google Inc. All Rights Reserved. |
| // Author: sameeragarwal@google.com (Sameer Agarwal) |
| // |
| // ======================================== |
| // THIS FILE IS AUTOGENERATED. DO NOT EDIT. |
| // THIS FILE IS AUTOGENERATED. DO NOT EDIT. |
| // THIS FILE IS AUTOGENERATED. DO NOT EDIT. |
| // THIS FILE IS AUTOGENERATED. DO NOT EDIT. |
| //========================================= |
| // |
| // This file is generated using generate_template_specializations.py. |
| // Editing it manually is not recommended. |
| |
| #include "ceres/linear_solver.h" |
| #include "ceres/schur_eliminator.h" |
| #include "ceres/internal/eigen.h" |
| |
| namespace ceres { |
| namespace internal { |
| |
| SchurEliminatorBase* |
| SchurEliminatorBase::Create(const LinearSolver::Options& options) { |
| #ifndef CERES_RESTRICT_SCHUR_SPECIALIZATION |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 2) && |
| (options.f_block_size == 2)) { |
| return new SchurEliminator<2, 2, 2>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 2) && |
| (options.f_block_size == 3)) { |
| return new SchurEliminator<2, 2, 3>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 2) && |
| (options.f_block_size == 4)) { |
| return new SchurEliminator<2, 2, 4>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 2) && |
| (options.f_block_size == Eigen::Dynamic)) { |
| return new SchurEliminator<2, 2, Eigen::Dynamic>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 3) && |
| (options.f_block_size == 3)) { |
| return new SchurEliminator<2, 3, 3>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 3) && |
| (options.f_block_size == 4)) { |
| return new SchurEliminator<2, 3, 4>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 3) && |
| (options.f_block_size == 9)) { |
| return new SchurEliminator<2, 3, 9>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 3) && |
| (options.f_block_size == Eigen::Dynamic)) { |
| return new SchurEliminator<2, 3, Eigen::Dynamic>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 4) && |
| (options.f_block_size == 3)) { |
| return new SchurEliminator<2, 4, 3>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 4) && |
| (options.f_block_size == 4)) { |
| return new SchurEliminator<2, 4, 4>(options); |
| } |
| if ((options.row_block_size == 2) && |
| (options.e_block_size == 4) && |
| (options.f_block_size == Eigen::Dynamic)) { |
| return new SchurEliminator<2, 4, Eigen::Dynamic>(options); |
| } |
| if ((options.row_block_size == 4) && |
| (options.e_block_size == 4) && |
| (options.f_block_size == 2)) { |
| return new SchurEliminator<4, 4, 2>(options); |
| } |
| if ((options.row_block_size == 4) && |
| (options.e_block_size == 4) && |
| (options.f_block_size == 3)) { |
| return new SchurEliminator<4, 4, 3>(options); |
| } |
| if ((options.row_block_size == 4) && |
| (options.e_block_size == 4) && |
| (options.f_block_size == 4)) { |
| return new SchurEliminator<4, 4, 4>(options); |
| } |
| if ((options.row_block_size == 4) && |
| (options.e_block_size == 4) && |
| (options.f_block_size == Eigen::Dynamic)) { |
| return new SchurEliminator<4, 4, Eigen::Dynamic>(options); |
| } |
| if ((options.row_block_size == Eigen::Dynamic) && |
| (options.e_block_size == Eigen::Dynamic) && |
| (options.f_block_size == Eigen::Dynamic)) { |
| return new SchurEliminator<Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic>(options); |
| } |
| |
| #endif |
| VLOG(1) << "Template specializations not found for <" |
| << options.row_block_size << "," |
| << options.e_block_size << "," |
| << options.f_block_size << ">"; |
| return new SchurEliminator<Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic>(options); |
| } |
| |
| } // namespace internal |
| } // namespace ceres |