Add support for up to 10 parameters in Problem

Following the last commit, which extends the number of parameters blocks autodiff can accept, the interface of Problem::AddResidualBlock is extended to accept up to 10 parameter blocks.

Change-Id: I162c3d1b1868fdda32c1522d57e9a211a9c02f90
This commit is contained in:
Fisher
2012-10-21 14:12:04 -04:00
parent f1e67cc90b
commit 12626e8cba
4 changed files with 151 additions and 0 deletions
+21
View File
@@ -208,6 +208,27 @@ class Problem {
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6, double* x7);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8,
double* x9);
// Add a parameter block with appropriate size to the problem.
// Repeated calls with the same arguments are ignored. Repeated
+40
View File
@@ -106,6 +106,46 @@ ResidualBlockId Problem::AddResidualBlock(
x0, x1, x2, x3, x4, x5);
}
ResidualBlockId Problem::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6) {
return problem_impl_->AddResidualBlock(cost_function,
loss_function,
x0, x1, x2, x3, x4, x5, x6);
}
ResidualBlockId Problem::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6, double* x7) {
return problem_impl_->AddResidualBlock(cost_function,
loss_function,
x0, x1, x2, x3, x4, x5, x6, x7);
}
ResidualBlockId Problem::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8) {
return problem_impl_->AddResidualBlock(cost_function,
loss_function,
x0, x1, x2, x3, x4, x5, x6, x7, x8);
}
ResidualBlockId Problem::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8, double* x9) {
return problem_impl_->AddResidualBlock(cost_function,
loss_function,
x0, x1, x2, x3, x4, x5, x6, x7, x8, x9);
}
void Problem::AddParameterBlock(double* values, int size) {
problem_impl_->AddParameterBlock(values, size);
}
+69
View File
@@ -301,6 +301,75 @@ const ResidualBlock* ProblemImpl::AddResidualBlock(
return AddResidualBlock(cost_function, loss_function, residual_parameters);
}
const ResidualBlock* ProblemImpl::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6) {
vector<double*> residual_parameters;
residual_parameters.push_back(x0);
residual_parameters.push_back(x1);
residual_parameters.push_back(x2);
residual_parameters.push_back(x3);
residual_parameters.push_back(x4);
residual_parameters.push_back(x5);
residual_parameters.push_back(x6);
return AddResidualBlock(cost_function, loss_function, residual_parameters);
}
const ResidualBlock* ProblemImpl::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6, double* x7) {
vector<double*> residual_parameters;
residual_parameters.push_back(x0);
residual_parameters.push_back(x1);
residual_parameters.push_back(x2);
residual_parameters.push_back(x3);
residual_parameters.push_back(x4);
residual_parameters.push_back(x5);
residual_parameters.push_back(x6);
residual_parameters.push_back(x7);
return AddResidualBlock(cost_function, loss_function, residual_parameters);
}
const ResidualBlock* ProblemImpl::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8) {
vector<double*> residual_parameters;
residual_parameters.push_back(x0);
residual_parameters.push_back(x1);
residual_parameters.push_back(x2);
residual_parameters.push_back(x3);
residual_parameters.push_back(x4);
residual_parameters.push_back(x5);
residual_parameters.push_back(x6);
residual_parameters.push_back(x7);
residual_parameters.push_back(x8);
return AddResidualBlock(cost_function, loss_function, residual_parameters);
}
const ResidualBlock* ProblemImpl::AddResidualBlock(
CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2, double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8, double* x9) {
vector<double*> residual_parameters;
residual_parameters.push_back(x0);
residual_parameters.push_back(x1);
residual_parameters.push_back(x2);
residual_parameters.push_back(x3);
residual_parameters.push_back(x4);
residual_parameters.push_back(x5);
residual_parameters.push_back(x6);
residual_parameters.push_back(x7);
residual_parameters.push_back(x8);
residual_parameters.push_back(x9);
return AddResidualBlock(cost_function, loss_function, residual_parameters);
}
void ProblemImpl::AddParameterBlock(double* values, int size) {
InternalAddParameterBlock(values,
+21
View File
@@ -93,6 +93,27 @@ class ProblemImpl {
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6, double* x7);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8);
ResidualBlockId AddResidualBlock(CostFunction* cost_function,
LossFunction* loss_function,
double* x0, double* x1, double* x2,
double* x3, double* x4, double* x5,
double* x6, double* x7, double* x8,
double* x9);
void AddParameterBlock(double* values, int size);
void AddParameterBlock(double* values,
int size,