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
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.