Inline Jet operators and implement compound assignments in-place

- Implement Jet compound assignment operators (+=, -=, *=, /=) in-place
  instead of constructing temporary Jets (*this = *this + y). Scalar +=
  and -= now only update the scalar part .a without touching .v.
- Initialize .a via the member initializer list in Jet constructors.
- Add EIGEN_STRONG_INLINE across Jet constructors, compound assignments,
  arithmetic operators, and mathematical functions.

Benchmark (Apple M1 Pro, kAutoDiff, kResidualsAndJacobians):
----------------------------------------------------------------------
Benchmark                                     Before    After   Change
----------------------------------------------------------------------
SnavelyReprojectionError                     78.4 ns  73.2 ns    -6.6%
ColmapFullOpenCVReprojectionError            86.2 ns  78.5 ns    -8.9%
ColmapSampsonError                           86.2 ns  79.6 ns    -7.7%
PoseGraph3dError                              139 ns   132 ns    -5.0%
----------------------------------------------------------------------

Change-Id: I184ceebad76cbb0eddc42be6368872a9e5543b6f
1 file changed
tree: fdb2f15bc96c85a32e000412e48cd64ead7a67c8
  1. .github/
  2. bazel/
  3. cmake/
  4. config/
  5. data/
  6. docs/
  7. examples/
  8. include/
  9. internal/
  10. LICENSES/
  11. scripts/
  12. third_party/
  13. .bazelignore
  14. .clang-format
  15. .gitignore
  16. .gitmodules
  17. .readthedocs.yaml
  18. BUILD
  19. CITATION.cff
  20. CMakeLists.txt
  21. CONTRIBUTING.md
  22. LICENSE
  23. MODULE.bazel
  24. package.xml
  25. README.md
  26. REUSE.toml
  27. WORKSPACE
README.md

Android Linux macOS Windows

Ceres Solver

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.

  1. Non-linear Least Squares problems with bounds constraints.
  2. General unconstrained optimization problems.

Please see ceres-solver.org for more information.