Preserve caller orderings during preprocessing Trust-region preprocessing removes constant blocks from parameter orderings. Solver::Options copies share these objects. Removal therefore changes the caller's ordering, and a later Solve can reject it. Copy supplied linear solver and inner iteration orderings before preprocessing mutates them. Keep automatic ordering creation unchanged. Add public Solve tests for both supplied orderings. The linear solver test makes a constant block variable between calls. The inner iteration test checks caller group membership after both calls. Tests: focused regressions 2/2 and affected CTest targets 3/3. Full build passed. Full CTest passed 139/191; 52 bundle tests could not find source data from the out-of-tree build. Each of those 52 tests passed with TEST_SRCDIR set to internal/ceres within the checkout. Tested on arm64 macOS with Apple Clang 21.0.0. Issue: https://github.com/ceres-solver/ceres-solver/issues/836 Codex used. Change-Id: Ia0df3722c0905715cf37677621933040d18c1fa6
Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010. Ceres Solver can solve two kinds of problems.
Please see ceres-solver.org for more information.