12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #include <cmath>
- #include <cstdlib>
- #include "ceres/ceres.h"
- #include "glog/logging.h"
- #include "gtest/gtest.h"
- namespace ceres::internal {
- class QuadraticFirstOrderFunction : public ceres::FirstOrderFunction {
- public:
- bool Evaluate(const double* parameters,
- double* cost,
- double* gradient) const final {
- cost[0] = parameters[0] * parameters[0];
- if (gradient != nullptr) {
- gradient[0] = 2.0 * parameters[0];
- }
- return true;
- }
- int NumParameters() const final { return 1; }
- };
- TEST(LineSearchMinimizerTest, FinalCostIsZero) {
- double parameters[1] = {2.0};
- ceres::GradientProblem problem(new QuadraticFirstOrderFunction);
- ceres::GradientProblemSolver::Options options;
- ceres::GradientProblemSolver::Summary summary;
- ceres::Solve(options, problem, parameters, &summary);
- EXPECT_NEAR(summary.final_cost, 0.0, std::numeric_limits<double>::epsilon());
- }
- }
|