Use int32 for parameter block sizes. CostFunction now uses int32 instead of int16 to store the size of its parameter blocks. This is an API breaking change. Change-Id: I032ea583bc7ea4b3009be25d23a3be143749c73e
diff --git a/docs/source/modeling.rst b/docs/source/modeling.rst index 8278e8f..33a4098 100644 --- a/docs/source/modeling.rst +++ b/docs/source/modeling.rst
@@ -53,11 +53,11 @@ virtual bool Evaluate(double const* const* parameters, double* residuals, double** jacobians) = 0; - const vector<int16>& parameter_block_sizes(); + const vector<int32>& parameter_block_sizes(); int num_residuals() const; protected: - vector<int16>* mutable_parameter_block_sizes(); + vector<int32>* mutable_parameter_block_sizes(); void set_num_residuals(int num_residuals); };
diff --git a/include/ceres/cost_function.h b/include/ceres/cost_function.h index 8013e96..722ac77 100644 --- a/include/ceres/cost_function.h +++ b/include/ceres/cost_function.h
@@ -115,7 +115,7 @@ double* residuals, double** jacobians) const = 0; - const vector<int16>& parameter_block_sizes() const { + const vector<int32>& parameter_block_sizes() const { return parameter_block_sizes_; } @@ -124,7 +124,7 @@ } protected: - vector<int16>* mutable_parameter_block_sizes() { + vector<int32>* mutable_parameter_block_sizes() { return ¶meter_block_sizes_; } @@ -135,7 +135,7 @@ private: // Cost function signature metadata: number of inputs & their sizes, // number of outputs (residuals). - vector<int16> parameter_block_sizes_; + vector<int32> parameter_block_sizes_; int num_residuals_; CERES_DISALLOW_COPY_AND_ASSIGN(CostFunction); };
diff --git a/include/ceres/cost_function_to_functor.h b/include/ceres/cost_function_to_functor.h index fa1012d..0d01f77 100644 --- a/include/ceres/cost_function_to_functor.h +++ b/include/ceres/cost_function_to_functor.h
@@ -127,7 +127,7 @@ << N3 << ", " << N4 << ", " << N5 << ", " << N6 << ", " << N7 << ", " << N8 << ", " << N9; - const vector<int16>& parameter_block_sizes = + const vector<int32>& parameter_block_sizes = cost_function->parameter_block_sizes(); const int num_parameter_blocks = (N0 > 0) + (N1 > 0) + (N2 > 0) + (N3 > 0) + (N4 > 0) + @@ -679,7 +679,7 @@ template <typename JetT> bool EvaluateWithJets(const JetT** inputs, JetT* output) const { const int kNumParameters = N0 + N1 + N2 + N3 + N4 + N5 + N6 + N7 + N8 + N9; - const vector<int16>& parameter_block_sizes = + const vector<int32>& parameter_block_sizes = cost_function_->parameter_block_sizes(); const int num_parameter_blocks = parameter_block_sizes.size(); const int num_residuals = cost_function_->num_residuals(); @@ -732,7 +732,7 @@ output[i].v.setZero(); for (int j = 0; j < num_parameter_blocks; ++j) { - const int16 block_size = parameter_block_sizes[j]; + const int32 block_size = parameter_block_sizes[j]; for (int k = 0; k < parameter_block_sizes[j]; ++k) { output[i].v += jacobian_blocks[j][i * block_size + k] * inputs[j][k].v;
diff --git a/include/ceres/dynamic_numeric_diff_cost_function.h b/include/ceres/dynamic_numeric_diff_cost_function.h index c2bfb32..2b6e826 100644 --- a/include/ceres/dynamic_numeric_diff_cost_function.h +++ b/include/ceres/dynamic_numeric_diff_cost_function.h
@@ -104,7 +104,7 @@ << "You must call DynamicNumericDiffCostFunction::SetNumResiduals() " << "before DynamicNumericDiffCostFunction::Evaluate()."; - const vector<int16>& block_sizes = parameter_block_sizes(); + const vector<int32>& block_sizes = parameter_block_sizes(); CHECK(!block_sizes.empty()) << "You must call DynamicNumericDiffCostFunction::AddParameterBlock() " << "before DynamicNumericDiffCostFunction::Evaluate().";
diff --git a/include/ceres/gradient_checker.h b/include/ceres/gradient_checker.h index 3ec8056..79ebae5 100644 --- a/include/ceres/gradient_checker.h +++ b/include/ceres/gradient_checker.h
@@ -119,7 +119,7 @@ // Do a consistency check between the term and the template parameters. CHECK_EQ(M, term->num_residuals()); const int num_residuals = M; - const vector<int16>& block_sizes = term->parameter_block_sizes(); + const vector<int32>& block_sizes = term->parameter_block_sizes(); const int num_blocks = block_sizes.size(); CHECK_LE(num_blocks, 5) << "Unable to test functions that take more "
diff --git a/internal/ceres/block_structure.h b/internal/ceres/block_structure.h index f509067..2abb36a 100644 --- a/internal/ceres/block_structure.h +++ b/internal/ceres/block_structure.h
@@ -47,7 +47,7 @@ class BlockStructureProto; -typedef int16 BlockSize; +typedef int32 BlockSize; struct Block { Block() : size(-1), position(-1) {}
diff --git a/internal/ceres/cost_function_to_functor_test.cc b/internal/ceres/cost_function_to_functor_test.cc index 90ccc82..fd828ce 100644 --- a/internal/ceres/cost_function_to_functor_test.cc +++ b/internal/ceres/cost_function_to_functor_test.cc
@@ -42,9 +42,9 @@ EXPECT_EQ(cost_function.num_residuals(), actual_cost_function.num_residuals()); const int num_residuals = cost_function.num_residuals(); - const vector<int16>& parameter_block_sizes = + const vector<int32>& parameter_block_sizes = cost_function.parameter_block_sizes(); - const vector<int16>& actual_parameter_block_sizes = + const vector<int32>& actual_parameter_block_sizes = actual_cost_function.parameter_block_sizes(); EXPECT_EQ(parameter_block_sizes.size(), actual_parameter_block_sizes.size());
diff --git a/internal/ceres/covariance_test.cc b/internal/ceres/covariance_test.cc index 4680244..471b223 100644 --- a/internal/ceres/covariance_test.cc +++ b/internal/ceres/covariance_test.cc
@@ -125,7 +125,7 @@ class UnaryCostFunction: public CostFunction { public: UnaryCostFunction(const int num_residuals, - const int16 parameter_block_size, + const int32 parameter_block_size, const double* jacobian) : jacobian_(jacobian, jacobian + num_residuals * parameter_block_size) { set_num_residuals(num_residuals); @@ -158,8 +158,8 @@ class BinaryCostFunction: public CostFunction { public: BinaryCostFunction(const int num_residuals, - const int16 parameter_block1_size, - const int16 parameter_block2_size, + const int32 parameter_block1_size, + const int32 parameter_block2_size, const double* jacobian1, const double* jacobian2) : jacobian1_(jacobian1,
diff --git a/internal/ceres/gradient_checking_cost_function.cc b/internal/ceres/gradient_checking_cost_function.cc index 5503013..bca22e6 100644 --- a/internal/ceres/gradient_checking_cost_function.cc +++ b/internal/ceres/gradient_checking_cost_function.cc
@@ -93,7 +93,7 @@ DO_NOT_TAKE_OWNERSHIP, relative_step_size); - const vector<int16>& parameter_block_sizes = + const vector<int32>& parameter_block_sizes = function->parameter_block_sizes(); for (int i = 0; i < parameter_block_sizes.size(); ++i) { finite_diff_cost_function->AddParameterBlock(parameter_block_sizes[i]); @@ -117,7 +117,7 @@ int num_residuals = function_->num_residuals(); // Make space for the jacobians of the two methods. - const vector<int16>& block_sizes = function_->parameter_block_sizes(); + const vector<int32>& block_sizes = function_->parameter_block_sizes(); vector<Matrix> term_jacobians(block_sizes.size()); vector<Matrix> finite_difference_jacobians(block_sizes.size()); vector<double*> term_jacobian_pointers(block_sizes.size());
diff --git a/internal/ceres/gradient_checking_cost_function_test.cc b/internal/ceres/gradient_checking_cost_function_test.cc index ac06503..caba2f6 100644 --- a/internal/ceres/gradient_checking_cost_function_test.cc +++ b/internal/ceres/gradient_checking_cost_function_test.cc
@@ -264,7 +264,7 @@ // Trivial cost function that accepts a single argument. class UnaryCostFunction : public CostFunction { public: - UnaryCostFunction(int num_residuals, int16 parameter_block_size) { + UnaryCostFunction(int num_residuals, int32 parameter_block_size) { set_num_residuals(num_residuals); mutable_parameter_block_sizes()->push_back(parameter_block_size); } @@ -284,8 +284,8 @@ class BinaryCostFunction: public CostFunction { public: BinaryCostFunction(int num_residuals, - int16 parameter_block1_size, - int16 parameter_block2_size) { + int32 parameter_block1_size, + int32 parameter_block2_size) { set_num_residuals(num_residuals); mutable_parameter_block_sizes()->push_back(parameter_block1_size); mutable_parameter_block_sizes()->push_back(parameter_block2_size); @@ -305,9 +305,9 @@ class TernaryCostFunction: public CostFunction { public: TernaryCostFunction(int num_residuals, - int16 parameter_block1_size, - int16 parameter_block2_size, - int16 parameter_block3_size) { + int32 parameter_block1_size, + int32 parameter_block2_size, + int32 parameter_block3_size) { set_num_residuals(num_residuals); mutable_parameter_block_sizes()->push_back(parameter_block1_size); mutable_parameter_block_sizes()->push_back(parameter_block2_size);
diff --git a/internal/ceres/problem_impl.cc b/internal/ceres/problem_impl.cc index 09eed9e..37cd351 100644 --- a/internal/ceres/problem_impl.cc +++ b/internal/ceres/problem_impl.cc
@@ -224,7 +224,7 @@ cost_function->parameter_block_sizes().size()); // Check the sizes match. - const vector<int16>& parameter_block_sizes = + const vector<int32>& parameter_block_sizes = cost_function->parameter_block_sizes(); if (!options_.disable_all_safety_checks) {
diff --git a/internal/ceres/problem_test.cc b/internal/ceres/problem_test.cc index 3d0ea82..858600d 100644 --- a/internal/ceres/problem_test.cc +++ b/internal/ceres/problem_test.cc
@@ -56,7 +56,7 @@ // Trivial cost function that accepts a single argument. class UnaryCostFunction : public CostFunction { public: - UnaryCostFunction(int num_residuals, int16 parameter_block_size) { + UnaryCostFunction(int num_residuals, int32 parameter_block_size) { set_num_residuals(num_residuals); mutable_parameter_block_sizes()->push_back(parameter_block_size); } @@ -76,8 +76,8 @@ class BinaryCostFunction: public CostFunction { public: BinaryCostFunction(int num_residuals, - int16 parameter_block1_size, - int16 parameter_block2_size) { + int32 parameter_block1_size, + int32 parameter_block2_size) { set_num_residuals(num_residuals); mutable_parameter_block_sizes()->push_back(parameter_block1_size); mutable_parameter_block_sizes()->push_back(parameter_block2_size); @@ -97,9 +97,9 @@ class TernaryCostFunction: public CostFunction { public: TernaryCostFunction(int num_residuals, - int16 parameter_block1_size, - int16 parameter_block2_size, - int16 parameter_block3_size) { + int32 parameter_block1_size, + int32 parameter_block2_size, + int32 parameter_block3_size) { set_num_residuals(num_residuals); mutable_parameter_block_sizes()->push_back(parameter_block1_size); mutable_parameter_block_sizes()->push_back(parameter_block2_size);
diff --git a/internal/ceres/residual_block_test.cc b/internal/ceres/residual_block_test.cc index 1e03e7d..b37f50f 100644 --- a/internal/ceres/residual_block_test.cc +++ b/internal/ceres/residual_block_test.cc
@@ -43,9 +43,9 @@ class TernaryCostFunction: public CostFunction { public: TernaryCostFunction(int num_residuals, - int16 parameter_block1_size, - int16 parameter_block2_size, - int16 parameter_block3_size) { + int32 parameter_block1_size, + int32 parameter_block2_size, + int32 parameter_block3_size) { set_num_residuals(num_residuals); mutable_parameter_block_sizes()->push_back(parameter_block1_size); mutable_parameter_block_sizes()->push_back(parameter_block2_size);