MCPcopy Create free account
hub / github.com/ceres-solver/ceres-solver / IsValid

Method IsValid

internal/ceres/program.cc:160–188  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158}
159
160bool Program::IsValid() const {
161 for (int i = 0; i < residual_blocks_.size(); ++i) {
162 const ResidualBlock* residual_block = residual_blocks_[i];
163 if (residual_block->index() != i) {
164 LOG(WARNING) << "Residual block: " << i
165 << " has incorrect index: " << residual_block->index();
166 return false;
167 }
168 }
169
170 int state_offset = 0;
171 int delta_offset = 0;
172 for (int i = 0; i < parameter_blocks_.size(); ++i) {
173 const ParameterBlock* parameter_block = parameter_blocks_[i];
174 if (parameter_block->index() != i ||
175 parameter_block->state_offset() != state_offset ||
176 parameter_block->delta_offset() != delta_offset) {
177 LOG(WARNING) << "Parameter block: " << i
178 << "has incorrect indexing information: "
179 << parameter_block->ToString();
180 return false;
181 }
182
183 state_offset += parameter_blocks_[i]->Size();
184 delta_offset += parameter_blocks_[i]->TangentSize();
185 }
186
187 return true;
188}
189
190bool Program::ParameterBlocksAreFinite(std::string* message) const {
191 CHECK(message != nullptr);

Callers

nothing calls this directly

Calls 5

indexMethod · 0.80
ToStringMethod · 0.80
sizeMethod · 0.45
SizeMethod · 0.45
TangentSizeMethod · 0.45

Tested by

no test coverage detected