commit | f11c2562657254af63b656d01bca6923e785a163 | [log] [tgz] |
---|---|---|
author | Alex Stewart <alexs.mac@gmail.com> | Sat Jun 04 11:34:07 2022 +0100 |
committer | Alex Stewart <alexs.mac@gmail.com> | Wed Jun 22 14:19:55 2022 +0100 |
tree | b7804b2b4631a80f4e8a221131a99381d7c2cf8a | |
parent | b90053f1ad4c7ea84cecb246371916977b75998c [diff] |
Fix fmin/fmax() to use Jet averaging on equality - Prior to 48cb54d1, Ceres' fmin/fmax() for Jets followed the convention of std::min/max(), and always returned the first argument on equality, irrespective of whether this argument was natively a scalar or a Jet. - After 48cb54d1, Ceres' fmin/fmax() instead returned the second argument on equality, again irrespective of whether this argument was natively a scalar or a Jet. - Now on equality we average the arguments as Jets, which ensures that a consistent answer is produced irrespective of the ordering or type (Jet or scalar) of the input arguments. This also ensures that we preserve a non-zero derivative where it exists, excluding the edge case of two Jet inputs with equal but oppositely signed infinitesimal components. - We retain the behaviour introduced in 48cb54d1 whereby NaNs are treated as missing values, following the convention of std::fmin/fmax(). - Raised as issue #816. Change-Id: I01217c0e32c1be83be440e4515b57c79dd290923
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.