diff options
Diffstat (limited to 'extern/libmv/third_party/ceres/ChangeLog')
-rw-r--r-- | extern/libmv/third_party/ceres/ChangeLog | 914 |
1 files changed, 480 insertions, 434 deletions
diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog index 6bb33068b2a..2bd4206cf47 100644 --- a/extern/libmv/third_party/ceres/ChangeLog +++ b/extern/libmv/third_party/ceres/ChangeLog @@ -1,638 +1,684 @@ -commit 682cd3c27864ba6d67ca81890760a5f697f21d63 -Author: Keir Mierle <mierle@gmail.com> -Date: Tue Sep 3 14:28:32 2013 -0700 - - Update version history with shared libs changes - - Change-Id: Iafd55087bc5eef4c15c3b544222147aa99df7690 - -commit 340d7c1415f144ca335ec1e87832c3f41d5d515b -Author: Keir Mierle <mierle@gmail.com> -Date: Tue Sep 3 13:50:03 2013 -0700 - - Update version history with miniglog fix - - Change-Id: Ic69f4994259e05fa88548b957146a1aac73b7af7 - -commit ac061c0f2334868e671f26d24e34a14c77fac716 -Author: Keir Mierle <mierle@gmail.com> -Date: Tue Sep 3 13:03:28 2013 -0700 +commit 33e01b9c5e1416fe29c55ac0332cdca21c053c83 +Author: Sameer Agarwal <sameeragarwal@google.com> +Date: Wed Nov 27 10:24:03 2013 -0800 - Cleanups in logging.h + Rename LinearSolverTerminationType enums. - Thanks to Scott Ettinger for the patch this is based off of, - which restores the NDK build. + This increases clarity, drops redundant enums and makes things + cleaner all around. - Change-Id: I8036dc1388438a4940e6f4ae297162902afd8d3a + Change-Id: I761f195ddf17ea6bd8e4e55bf5a72863660c4c3b -commit 0338f9a8e69582a550ef6d128e447779536d623c +commit 068437eb89d495d905465544ccd442efef457b04 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Sep 2 22:28:40 2013 -0700 +Date: Wed Nov 27 07:05:57 2013 -0800 - ITERATIVE_SCHUR works with no f-blocks. - - When the Schur complement is of size zero, - i.e. none of the parameter blocks interact - with each other, the ITERATIVE_SCHUR linear - solver crashes due to some checks that are - triggered in the SCHUR_JACOBI preconditioner. + Pipe minimizer termination messages to Solver::Summary. - This patch adds logic to detect this condition - and to deal with it and adds tests that verify - the fix. + All minimizer termination messages are now available as + Solver::Summary::error. - Thanks to Soohyun Bae for reporting this bug. + This is part of the ongoing refactoring or - Change-Id: If29ddf32463cbb1960414fff0e29bbf0d2ee7989 + Change-Id: I4514c3c042645bbd1471bcde9bd3dbf81d9ee8b0 -commit 263de47419167786c9ab6d93fa2f3e32e8e75fe1 -Author: Taylor Braun-Jones <taylor@braun-jones.org> -Date: Thu Aug 29 10:33:29 2013 -0400 +commit 89a592f410fb6f80c03dea84b6b9f1a10bea36c1 +Author: Sameer Agarwal <sameeragarwal@google.com> +Date: Tue Nov 26 11:35:49 2013 -0800 - Incorporate RHEL build fixes from Brian Pitts + LinearSolver::Summary::status -> LinearSolver::Summary::message. - CMake build fixed so that versioned shared libraries are installed - (along with .so symlinks) + And a bunch of minor lint cleanups as they showed up. - Change-Id: Ibbaea9d37d17754cb8c3cd36fc17d015ca7d2a57 + Change-Id: I430a6b05710923c72daf6a5df4dfcd16fbf44b3a -commit 6b4131993ec0db6c850bb2ae07ba8793dbab3e39 +commit b16e118b96c55451c0d8556f3c5b52ad36b69cac Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Aug 26 00:02:50 2013 -0700 +Date: Mon Nov 25 05:47:43 2013 -0800 - Update spec file + Better error checking and reporting for linear solvers. - Change-Id: Id6426d7cad41cde2cbab411964ac013d724a066c - -commit c24a4ec6fb6202d1f6a576f211b99fbe9c9906ef -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Aug 23 06:49:22 2013 -0700 - - Cmake refactoring + A lot of error checking cruft has accumulated over the years + in the various linear solvers. This change makes the error reporting + more robust and consistent across the various solvers. - 1. Use CMake FindLAPACK and FindBLAS Modules. - 2. Remove SEARCH_HEADERS and SEARCH_LIBS and replace them with - CMAKE variables. This leads to simplification of the FIND_LIBRARY - and FIND_PATH calls. - 3. Make miniglog a fallback when glog is not present and the - user indicates MINIGLOG=OFF. - 4. Add time.h to miniglog. - 5. Remove shared library building. + Preconditioners are not covered by this change and will be the + subject of a future change. - Change-Id: I8a97156d3d7cf645fbbfe8e571761bc16c89f43f + Change-Id: Ibeb2572a1e67758953dde8d12e3abc6d1df9052d -commit 48e9cd31db0bf7223beb83cdc90e3cd2b5aad054 +commit 5794d41be2d8d6a67dcdfe607e66050f0ac04c55 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Aug 21 10:55:16 2013 -0700 +Date: Mon Nov 25 13:37:02 2013 -0800 - Add a test name + Remove overzealous checks in Summary::FullReport. + + Thanks to sebi.koch@gmail.com for reporting this. - Change-Id: I06dfc9cad2c54ef6078342766577eab92645283f + Change-Id: I1ba9b375e5cf66639e292ba37b34a90446f13162 -commit 126dfbe27df9c5b9f41cf7cc92b75c1219518283 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Aug 20 22:34:34 2013 -0700 +commit 40ef90304ac200bb948549e8e3748e487d27dc53 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Nov 25 16:36:40 2013 +0000 - Fix how Ceres calls CAMD. + Adding VLOG output to line search. - CAMD requires that the id of the largest numbered elimination - group be less than the number of columns in the matrix. + - Previously line search was sparse in terms of debug orientated VLOG + output which made debugging failure cases difficult. - This patch ensures that this is the case. Without this, - in certain cases its possible for CAMD to silently fail - while doing out of bounds access and then causing Ceres to fail. - - Also add some logging about the problem size before and after - the reduced program has been created. - - Change-Id: I0ea3c6572a7c29cbbf09afec9ba5b4f4d4b21a9b + Change-Id: Idfabf74d2b3f7b8256f79dff8c6b7fcdc2fcf4d3 -commit 69af5d8b4d7c48b2efa3c61e51c86cfa1b380b8a +commit 1284a5141426597f3ca1e29ae8548c9b4c43c9c1 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Aug 20 13:58:59 2013 -0700 +Date: Sun Nov 24 15:09:43 2013 -0800 - Add comments to trust_region_minimizer.cc. + Use explicit formula to solve quadratic polynomials. + + polynomial.cc implements a companion matrix base method for solving + polynomials. This is both expensive and numerically sensitive. - trust_region_minimizer.cc now contains a comment that explains - the reasoning behind he inner iteration step acceptance change. + This change adds a quadratic equation solver. Instead of using the + usual quadratic formula, it uses the formula suggested by BKP Horn + for improved numerical stability. - Change-Id: I4eaa69d6bab92c543bba3f119c09f44625d393bd + Change-Id: I476933ce010d81db992f1c580d2fb23a4457eb3e -commit e45db9d05aaa26b1ddffa44c9190a1018aa2655f +commit a9334d67d7973c0f56e65f12ae897dd53504ef0d Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Aug 19 23:13:29 2013 -0700 +Date: Wed Nov 20 10:12:23 2013 -0800 - Improve inner iteration step acceptance. - - Normally, in a trust region algorithm the quality of a trust region step - is measured by the ratio - - nonlinear_cost_change - r = --------------------- - model_cost_change - - All the change in the nonlinear objective is due to the trust region step - so this ratio is a good measure of the quality of the trust region radius. - - However, when inner iterations are being used, nonlinear_cost_change - includes the contribution of the inner iterations and its not fair to - credit it all to the trust region algorithm. So we change the ratio to be - - nonlinear_cost_change - r = ------------------------------------------------ - (model_cost_change + inner_iteration_cost_change) - - In most cases this is fine, but it can be the case that the - change in solution quality due to inner iterations is so large - and the trust region step is so bad, that this ratio can become - quite small. + Fix constant parameter handling in inner iterations. - This can cause the trust region loop to reject this step. + There was a bug in the way RemoveFixedBlocksFromProgram was working. + It only removed the constant parameter blocks from the + linear_solver_ordering, it was not even aware of the + inner_iteration_ordering. - This change, fixes this problem by looking at the inner_iteration_cost_change - explicitly and accepting a step if the inner iterations led to a net - decrease in the objective function value. + This change fixes this bug. The code for RemoveFixedBlocksFromProgram + is also cleaned up and made more readable and the test have been updated. - Along the way it also fixes the way model_cost_change is computed. - Changing to a more numerically robust way of computing it. + Thanks to Mikael Persson for reporting this. - The last and final change is to ensure that inner iterations and the - non-monotonic version of the trust region algorithm interact correctly. - - This addresses part 2 of - - https://code.google.com/p/ceres-solver/issues/detail?id=115 - - As an illustration of the change. - - Before this change + Change-Id: I454fa89f9b6f4f6320b02d5235e6f322cc15ff51 + +commit 331ff090dcae7096cea50144047b71cab2d3e819 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Nov 25 13:44:53 2013 +0000 + + Downgrading log status of BFGS secant condition messages. - [master] build: ./bin/bundle_adjuster --input ~/Downloads/problem-245-198739-pre.txt -num_iterations 10 -translation_sigma 0.01 -rotation_sigma 0.001 -point_sigma 0.1 -inner_iterations -num_threads 4 - 0: f: 7.731660e+15 d: 0.00e+00 g: 3.51e+12 h: 0.00e+00 rho: 0.00e+00 mu: 1.00e+04 li: 0 it: 5.87e-01 tt: 9.37e+00 - 1: f: 7.731660e+15 d: 7.73e+15 g: 0.00e+00 h: 1.20e+10 rho: 2.43e-11 mu: 5.00e+03 li: 1 it: 1.41e+01 tt: 2.35e+01 - 2: f: 7.731660e+15 d: 7.73e+15 g: 0.00e+00 h: 1.25e+10 rho: 1.70e-07 mu: 1.25e+03 li: 1 it: 1.86e+01 tt: 4.22e+01 - 3: f: 7.731660e+15 d:-2.39e+40 g: 0.00e+00 h: 3.53e+10 rho:-2.63e-13 mu: 1.56e+02 li: 1 it: 3.35e+01 tt: 7.57e+01 - 4: f: 7.731660e+15 d:-1.66e+39 g: 0.00e+00 h: 1.21e+11 rho:-6.58e-15 mu: 9.77e+00 li: 1 it: 3.86e+01 tt: 1.14e+02 - 5: f: 7.731660e+15 d:-3.57e+55 g: 0.00e+00 h: 5.00e+12 rho:-1.89e-14 mu: 3.05e-01 li: 1 it: 3.84e+01 tt: 1.53e+02 - 6: f: 7.731660e+15 d:-2.26e+35 g: 0.00e+00 h: 3.82e+12 rho:-1.77e-20 mu: 4.77e-03 li: 1 it: 3.45e+01 tt: 1.87e+02 - 7: f: 7.731660e+15 d:-5.31e+19 g: 0.00e+00 h: 1.22e+11 rho:-9.96e-21 mu: 3.73e-05 li: 1 it: 2.77e+01 tt: 2.15e+02 - 8: f: 1.784990e+08 d: 7.73e+15 g: 4.13e+07 h: 1.20e+10 rho: 1.00e+00 mu: 1.12e-04 li: 1 it: 1.13e+01 tt: 2.26e+02 - 9: f: 1.524025e+08 d: 2.61e+07 g: 5.81e+10 h: 2.41e+08 rho: 1.00e+00 mu: 3.35e-04 li: 1 it: 1.13e+01 tt: 2.37e+02 - 10: f: 1.488524e+08 d: 3.55e+06 g: 2.79e+09 h: 5.01e+08 rho: 1.00e+00 mu: 1.01e-03 li: 1 it: 1.09e+01 tt: 2.48e+02 + - These messages were originally VLOG(2) and were mistakenly upgraded to + WARNINGs when the tolerances were reduced. - After this change + Change-Id: I89dee666a09bc82cfa89b793dc0907268662f95e + +commit 9697a08a2bf29531671526b49df73bfbc0d7d237 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sat Nov 23 10:03:37 2013 +0000 + + Defining CERES_FOUND in addition to Ceres_FOUND in CeresConfig. - [inner] build: ./bin/bundle_adjuster --input ~/Downloads/problem-245-198739-pre.txt -num_iterations 10 -translation_sigma 0.01 -rotation_sigma 0.001 -point_sigma 0.1 -inner_iterations -num_threads 4 - 0: f: 7.731660e+15 d: 0.00e+00 g: 3.51e+12 h: 0.00e+00 rho: 0.00e+00 mu: 1.00e+04 li: 0 it: 5.66e-01 tt: 9.31e+00 - 1: f: 5.941477e+09 d: 7.73e+15 g: 1.20e+18 h: 1.20e+10 rho: 2.43e-11 mu: 5.00e+03 li: 1 it: 1.38e+01 tt: 2.32e+01 - 2: f: 3.341986e+08 d: 5.61e+09 g: 1.42e+14 h: 1.37e+09 rho: 9.38e-08 mu: 2.50e+03 li: 1 it: 1.30e+01 tt: 3.61e+01 - 3: f: 3.241492e+08 d: 1.00e+07 g: 3.64e+13 h: 8.26e+08 rho: 6.12e-08 mu: 1.25e+03 li: 1 it: 1.15e+01 tt: 4.77e+01 - 4: f: 3.152280e+08 d: 8.92e+06 g: 2.02e+13 h: 2.95e+08 rho: 1.56e-05 mu: 6.25e+02 li: 1 it: 1.11e+01 tt: 5.88e+01 - 5: f: 3.078535e+08 d: 7.37e+06 g: 9.72e+12 h: 4.57e+08 rho: 6.55e-09 mu: 3.13e+02 li: 1 it: 1.16e+01 tt: 7.04e+01 - 6: f: 3.025353e+08 d: 5.32e+06 g: 1.33e+13 h: 2.14e+08 rho: 7.21e-01 mu: 3.42e+02 li: 1 it: 1.14e+01 tt: 8.18e+01 - 7: f: 2.908298e+08 d: 1.17e+07 g: 5.97e+12 h: 7.25e+08 rho: 5.73e-01 mu: 3.43e+02 li: 1 it: 1.08e+01 tt: 9.26e+01 - 8: f: 2.803927e+08 d: 1.04e+07 g: 1.07e+12 h: 9.72e+07 rho: 5.27e-01 mu: 3.43e+02 li: 1 it: 1.03e+01 tt: 1.03e+02 - 9: f: 2.767074e+08 d: 3.69e+06 g: 2.10e+11 h: 7.35e+07 rho: 7.37e-01 mu: 3.84e+02 li: 1 it: 1.03e+01 tt: 1.13e+02 - 10: f: 2.744282e+08 d: 2.28e+06 g: 2.17e+11 h: 1.23e+08 rho: 3.11e-01 mu: 3.64e+02 li: 1 it: 9.61e+00 tt: 1.23e+02 + - Previously we relied on FindPackage() to define Ceres_FOUND when + find_package(Ceres) was called. + - This is fine, but users might legitimately expect the variable to be + CERES_FOUND given the form of CERES_INCLUDE_DIRS/LIBRARIES. + - As there is an inconsistency in the CMake recommended names when + FindPackage() is called in Module vs Config form, we now explicltly + define both. - Change-Id: I7c3b132f7ce62719795bfa489ec2276d0455cc97 + Change-Id: I54bce9aa112b684d26b60a9ae4d11eb7925a6ee5 -commit 3e6ef29be6f3cd672a73cefb52838832a49e5427 +commit 66e15b41d80b155f333f099a0278d50312cdaa15 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Aug 20 09:53:54 2013 -0700 +Date: Fri Nov 22 07:59:23 2013 -0800 - Update version history to reflect API changes + Lint cleanup from Jim Roseborough. - Change-Id: I5ce744d72b991abba17b5cf9c6a1e1f158693151 + Change-Id: I6ddbf5c3d66595d27f7967a309768e5f5dd7e1fd -commit 1918453aeeae629be1f02eb333e91c4f728ace12 +commit 79bde35f29291cf464b59f3dc2dd9f1fa88776a9 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Aug 19 14:15:48 2013 -0700 +Date: Thu Nov 21 21:33:51 2013 -0800 - Fix build breakage on old SuiteSparse. - - Errant semi colon is to blame. + SuiteSparse errors do not cause a fatal crash. - Thanks to Timothy Langlois for reporting this. + 1. Move LinearSolverTerminationType to ceres::internal. + 2. Add FATAL_ERROR as a new enum to LinearSolverTerminationType. + 3. Pipe SuiteSparse errors via a LinearSolverTerminationType so + to distinguish between fatal and non-fatal errors. + 4. Update levenberg marquardt and dogleg strategies to deal + with FATAL_ERROR. + 5. Update trust_region_minimizer to terminate when FATAL_ERROR + is encountered. + 6. Remove SuiteSparse::SolveCholesky as it screws up the error + handling. + 7. Fix all clients calling SuiteSparse to handle the result of + SuiteSparse::Cholesky correctly. + 8. Remove fatal failures in SuiteSparse when symbolic factorization + fails. + 9. Fix all clients of SuiteSparse to deal with null symbolic factors. - Change-Id: I57bb1cd69d78ab1897ead3627539a0da11b97455 - -commit 8f33332c598d8209df73eb1c729e0abe2c890468 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Aug 18 23:25:00 2013 -0700 - - Documentation update for 1.7.0rc2 + This is a temporary fix to deal with some production problems. A more + extensive cleanup and testing regime will be put in place in a + subsequent CL. - Change-Id: I6b0c19bed57b51a0f6591c60a4ae0d849c62451b + Change-Id: I1f60d539799dd95db7ecc340911e261fa4824f92 -commit ad2819a1afa94990022999a96eb158add68419e0 +commit a674e0f8534ea6948f70a72fe9718e07b3d039ff Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sat Aug 17 23:44:09 2013 -0700 +Date: Thu Nov 21 22:12:15 2013 -0800 - Fix breakage on old versions of SuiteSparse. + Fix corrector_test.cc. - Thanks to Fisher Yu for reporting this. + Fix two death tests dealing with the sign of the gradient. - Change-Id: Iefa89816cbb60e3512338a7c2a65655c017877ac + Change-Id: Ic91d54a64cc509307c94fce6d1fca083078936e2 -commit 880cba0939b2caa2641a5752373ffd47b64edd0f -Author: Petter Strandmark <petter.strandmark@gmail.com> -Date: Fri Aug 16 20:05:30 2013 +0200 +commit a8006af3110e98d64fb369e958fc00ec88d771a3 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Wed Nov 20 19:56:06 2013 +0000 - Fix warning C4373 in Visual Studio + Adding threads libraries to exported dependencies if using OpenMP. - The warning occurs because an overridden function added a const - to one argument. + - Previously we were only adding the flags to the link flags for the + Ceres project, which resulted in them not being exported. Thus + projects importing Ceres (if using OpenMP) would have to manually + specify them in addition to CERES_LIBRARIES. - Change-Id: Idd24f7c6ab60064747104bfc75ae9bf112f61b3e + Change-Id: If0354cc07e84dbebfc870a8862e1a8ca64659791 -commit d61b68aaac3fa51b8fca8b1a268e83b0d5da01ea +commit 6c0d96424e2c27326757936a3738f9efc37c6c24 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Aug 16 17:02:56 2013 -0700 +Date: Wed Nov 20 11:52:01 2013 -0800 - Lint cleanups from William Rucklidge + Minor documentation fix. - Change-Id: Ia4756ef97e65837d55838ee0b30806a234565bfd + Thanks to Satya Mallick. + + Change-Id: I556f1c141bf16739d54450351b0f29fd4ea40014 -commit b22d063075ec545a59a25abd5d83e4642dc329c2 +commit 7747bb0e6b0e54366933ed75c1bcafe6a1109c3d Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 15 22:55:23 2013 -0700 +Date: Wed Nov 20 11:29:22 2013 -0800 - Reduce memory usage in covariance estimation. - - When using the SPARSE_QR algorithm, now a Q-less - factorization is used. This results in significantly - less memory usage. + Minor corrections to the documentation. - The inversion of the semi-normal equations is now - threaded using openmp. Indeed if one has SuiteSparse - compiled with TBB, then both the factorization - and the inversion are completely threaded. + Thanks to Satya Mallick for reporting these. - Change-Id: Ia07591e48e7958d427ef91ff9e67662f6e982c21 + Change-Id: Ia52e08a7e21d5247dc475cfbf10bf57265aa118f -commit f258e4624f5bd86105ea28b9b92dd70a3f4a3a44 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Thu Aug 15 14:50:08 2013 +0600 +commit 3fca2c4b2fae9abcaa9611f2bd3885ce6b11963b +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Nov 18 10:26:49 2013 +0000 - Move most of suitesparse/cxsparse ifdef code to their headers - - Main purpose of this is to make implementation files free from - endless ifdef blocks every time this libraries are needed to be - included. This would hopefully prevent compilation errors in - the future caused by missing ifdef around header include. + Decreasing update threshold for BFGS as per L-BFGS. - This also includes some stubs added to suitesparse/cxsparse - headers to make code even more free from ifdefs. + - Improves performance of BFGS on NIST, as per L-BFGS. + - Adding explanation of origin and purpose of Secant condition + tolerance check for Hessian update in (L)BFGS. - Change-Id: Ic8554e7df31d8c4751583fe004b99e71b3c9087b + Change-Id: If57b9957d31d8629c772c19a069e1e56e727b350 -commit dc60d9c4519b5eb5e2cff8741680fecf4d6eb2c5 +commit 54fcbf893852272ba2158d6a56572a2eb3ccc41f Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 15 10:13:45 2013 -0700 +Date: Tue Nov 19 10:12:05 2013 -0800 - Fix broken android build. + Relax the requirements on loss functiond derivatives. + + We now require that the first derivative of the loss function + be positive only if the second derivative is non-zero. This is + because when the second derivative is non-positive, we do not use + the second order correction suggested by BANS and instead use + a simpler first order strategy which does not use a division by + the gradient of the loss function. - Change-Id: I6f27e3ef9bd678f7393c9f573491064978e9c368 + Change-Id: I3d65713f152611998e196ff389a7081acfdfd8c1 -commit 367b65e17a541a9f29b9ea63682fe6f6b5b54074 +commit db98425b94c9eff9b125bf4a854545162e8c1aec Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Aug 9 10:35:37 2013 -0700 +Date: Fri Nov 15 14:14:09 2013 -0800 - Multiple dense linear algebra backends. + Small bugfix to logging.h from Scott Ettinger. - 1. When a LAPACK implementation is present, then - DENSE_QR, DENSE_NORMAL_CHOLESKY and DENSE_SCHUR - can use it for doing dense linear algebra operations. - - 2. The user can switch dense linear algebra libraries - by setting Solver::Options::dense_linear_algebra_library_type. - - 3. Solver::Options::sparse_linear_algebra_library is now - Solver::Options::sparse_linear_algebra_library_type to be consistent - with all the other enums in Solver::Options. - - 4. Updated documentation as well as Solver::Summary::FullReport - to reflect these changes. - - Change-Id: I5ab930bc15e90906b648bc399b551e6bd5d6498f + Change-Id: Ie6d51e7883adf36c6fc7a78ff95afab6a78e488b -commit 080d1d04bdf722c3f602833c4c07ac1c5d26fcc0 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Aug 12 16:28:37 2013 -0700 +commit 4d0e626b55f36ab8f44a4acc8157b85cfecd4673 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Fri Nov 15 13:53:44 2013 +0000 - Use more performant, less conservative Eigen solvers. + Fixing gflags HINTS variable names (adding missing “_DIR”). - colPivHouseholderQR -> householderQR - ldlt -> llt. + - The HINTS variables for gflags were incorrectly used as + GFLAGS_[INCLUDE/LIBRARY]_HINTS when they should have been + GFLAGS_[INCLUDE/LIBRARY]_DIR_HINTS as per the docs. + - Also removing a completed TODO in the main CMakeLists. + - Updating method of extracting current directory in CeresConfig.cmake + to avoid use of CMAKE_CURRENT_LIST_DIR, which was not present in + CMake =< v2.8.3. - The resulting performance differences are significant enough - to justify switching. + Change-Id: I42ae696e3b785febe48688d912f0f343e8947cb0 + +commit bf4c1b76e4926c738fc805e9ff4be0ed584d9eee +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Thu Nov 14 21:27:20 2013 +0000 + + Decreasing threshold at which L-BFGS Hessian is updated. - LAPACK's dgels routine used for solving linear least squares - problems does not use pivoting either. + - Decreasing threshold at which L-BFGS Hessian is updated from 1e-10 + to 1e-14 results in a very significant improvement in NIST scores + (43 -> 53 for CUBIC). + - Adding comment in FindPolynomialRoots() explaining why behaviour + is correct. - Similarly, we are not actually using the fact that the matrix - being factorized can be indefinite when using LDLT factorization, so - its not clear that the performance hit is worth it. + Change-Id: If668e087e7a86d29659aa74e8528b192b604c841 + +commit 7124c3474cd201134c3a3350b46aca468f1edafa +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Thu Nov 7 16:10:02 2013 +0000 + + Fixes for some line search bugs & corner cases. + + - Increase precision of numeric values output in error messages to + allow for easier debugging. + - Ensure termination after Wolfe search bracketing phase if bracket + width has been shrunk to below tolerance. + - Cleaned up return value for BracketingPhase(), now false iff + optimisation should stop, true otherwise. + - Fix bug whereby we would mark a step size as satisfying the Wolfe + conditions when it did not due to numerical issues in the cost + function. + - Adding explanation of a subtlety in which a zoom could still be + acceptably invoked with bracket_low.f > bracket_high.f. + - Replacing hard check of a pre-condition of ZoomPhase() with a + conditional return if not satisfied to address issue whereby a + bracket could be incorrectly identified due to inconsistent values + & gradients returned from the cost function. + - Adding missing check for step size validity in line search minimizer. + - Adding ToDebugString() for FunctionSample. + + Change-Id: Iad98e635749877f80c079ebad126bf022d82232d + +commit 54fc9423673886ac9ed3fe329a80f07544aeea70 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Thu Nov 14 11:42:00 2013 +0000 + + Removing incorrect specialisation of install dirs on Windows. - These two changes result in Eigen being able to use blocking - algorithms, which for Cholesky factorization, brings the performance - closer to hardware optimized LAPACK. Similarly for dense QR - factorization, on intel there is a 2x speedup. + - Previously on Windows the leaf include & lib install directories + passed to CeresConfig.cmake.in when configured where capitalised on + Windows. + - This capitalisation was incorrect, as the actual paths used are + specified in the install() statements and are always in the standard + lower-case form. + - This likely did not cause any issues previously as although NTFS is + case sensitive, the Win32 API is not, and most applications access + files through the Win32 API, and are thus not case-sensitive. - Change-Id: I4459ee0fc8eb87d58e2b299dfaa9e656d539dc5e + Change-Id: I335b6e2d10a1c64f320c2a1a68eeda1b22344e73 -commit fb465a03b83fad2dceaea091ee3763c3dc6e83d2 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Mon Aug 5 22:35:14 2013 -0700 +commit fcbbb11e37386097b1427dc3aa89f264d6951ded +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Wed Nov 13 22:22:30 2013 +0000 - Fix compilation error caused by missing suitesparse headers - - Covariance implementation file used to unconditionally include - SuiteSparseQR.hpp which caused compilation error in cases you - don't have SuiteSuite installed to the system + Ensure build paths for dependencies are searched in FindPackage(Ceres) - Moved the include to #ifdef block. + - Append to hint locations used by FindPackage scripts for public + dependencies (glog & Eigen) the locations of the dependencies when + Ceres was built. + - This means that the user should not have to supply them again when + using find_package(Ceres) even if they are installed in a + non-standard location. - Change-Id: I3a52c0f81711b2b70ae625fe80b758ecb0817cc6 + Change-Id: I9550de91025ba47f01f1ea3c3fefe80fe38d14ff -commit 2460bf0733b4070e52d68a4a85046c1b20913e2c -Author: Steven Lovegrove <stevenlovegrove@gmail.com> -Date: Sun Jul 21 13:13:11 2013 -0400 +commit 7899e45d378f589a67ad8e042bf6a7cb7e15df00 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Wed Nov 13 21:08:27 2013 +0000 - Check GCC Version before adding -fast compiler option on OSX. - - -fast compiler option is only supported using Apple's GCC packaged with XCode. - Other GCC versions will fail when this flag is enabled. This commit checks the - GCC version on OSX and only enables this flag when < 4.3. Apple's GCC is - currently 4.2.1 and a user is unlikely to install a non-apple version this old - on OSX. + Fixing a documentation typo, DIRS -> DIR in HINTS variables. - Change-Id: Ifca9149625c065cd16559d7e30c218a322cf79aa + Change-Id: I42b75a5e0b8a451c3a43ab29d0c14856e4b86ab8 -commit c5bcfc01af37b4f667be075c3c58dc024f3c7f06 +commit 1a041c35b780e60c3b497eb096b72ad20f47960e Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Jul 19 15:50:27 2013 -0700 +Date: Tue Nov 12 14:17:52 2013 -0800 - Lint fixes from Jim Roseborough. + Update to 1.8.0. - Change-Id: If93e1972041b36410225a509e3c8c7c818f92124 + Change-Id: Id42e594f03e3575d06e18c1ef66df64f43d86839 -commit 16924168ce0b3e29d9b1e16a08d2b3d2930e017a +commit 36b26139296060511718b3ef0da03a52706db481 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Thu Nov 7 16:57:36 2013 +0000 + + Fix ordering of ParseCommandLineFlags() & InitGoogleTest() for Windows. + + - On Windows gtest passes additional non-gflags command line flags + for death-tests, to avoid gflags invoking an error for these flags + InitGoogleTest() must be called before ParseCommandLineFlags() to + handle and remove them before gflags parses the remaining flags. + + Change-Id: I0c705ecd3aa029b70a2589b592e6a2c192745c0e + +commit 8c155d51fab099ee7bf64f4bdbfeda82881925a5 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Jul 18 12:52:35 2013 -0700 +Date: Fri Nov 8 08:04:44 2013 -0800 - Update version from 1.6.0 -> 1.7.0rc1. + Speed up the application of robust loss functions. + + Since we added special handling for the case for rho[2] < 0, + the bulk of CorrectJacobian is pointless in the common case. + So add a simple one dimensional loop which rescales the Jacobian. + This speeds up this method immensely. + + The robustification of a Jacobian gets speeded up by > 50%. - Change-Id: I420a8907142bffad0e3aa6c7196541ca2309c099 + Change-Id: I97c4e897ccbb5521c053e1fb931c5d0d32f542c7 -commit 588228bdadcc0a1ffc55442a0672998241e53e09 +commit 58792dc8ee0e4b56331f33f753f1b1932c5c2960 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Jul 18 11:29:19 2013 -0700 +Date: Wed Nov 6 09:42:46 2013 -0800 - Add the ability to turn shared library compilation on and off + Update to 1.8.0rc2. - Change-Id: Ib9eacfbc894bb2b66aafff3b930c63e2ad8a555e + Change-Id: Ifbf5312377bf1791a29aefd3edc3a765999c5824 -commit 6d93450cb563dc992cbc29ca069c886bf24bb458 +commit af04d7f18740faf452e9171af530aa1bdead44bb Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Jul 18 11:08:07 2013 -0700 +Date: Tue Nov 5 13:47:30 2013 -0800 - Fix build breakage on old versions of SuiteSparse. + Remove DCHECK_GE checks from fixed_array.h - SuiteSparse_long is only defined in recent versions of SuiteSparse - as the index variable type for large matrices. In older versions - UF_long was used. Ubuntu still ships with an older version of - SuiteSparse, so an ifdef is needed to fix the build. + This triggers -Wtype-limits warnings on comparisons + which are always true, since the test being done is + n >= 0, where n is of type size_t, which is always + true. - This patch has been tested on mac and on linux with older and - newer versions of SuiteSparse. + This causes problems when compiling Ceres on linux + with miniglog. - Change-Id: I4ada86d7973784a79bde4afec13ce3ca4e8dc225 + Change-Id: Ia1d1d1483e03469c71fde029b62ca6d84e9b27e0 -commit 42be9cafe6203745fb09d611773305433c117396 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Jul 18 08:02:08 2013 -0700 +commit b5be6b9c065a02158337ee7eacfdb8be811dec7f +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Tue Nov 5 13:10:27 2013 +0000 - Update documentation for Covariance + Cleaning up messages output when SuiteSparse is not found. + + - Automatically generated failure message now provides more + information as to which sub-modules are missing. - Change-Id: Ia4a7347ef8267b7107698d85fcbfc986111958dc + Change-Id: I6eed94af49263540b8f87917b75c41b8f49658a0 -commit 5a974716e111e4aa87a4840902b957060bd644fc +commit 9ba0b352a282f08b1b6368a5690434407d7c81af Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Jun 7 22:38:30 2013 -0700 +Date: Tue Nov 5 13:04:56 2013 -0800 - Covariance estimation using SuiteSparseQR. + Lint and other cleanups from William Rucklidge - Change-Id: I70d1686e3288fdde5f9723e832e15ffb857d6d85 + Change-Id: I7fb23c2db85f0f121204560b79f1966f3d584431 -commit 719889b8b7a3ef6712516d169a4ce3a33d272fda -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Jul 17 11:31:08 2013 -0700 +commit 69bd65ff4368ce2841519f00ff48c5284c1743a3 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Nov 4 23:01:14 2013 +0000 - Minor fixes + Downgrading warning messages when optional deps are not found. - 1. Typo in c_api.h - 2. The stream operator for FunctionSample is now in the ceres::internal namespace. + - Now when find_package() is called for a dependency without the + REQUIRED or QUIET qualifiers, we emit no priority (above STATUS, but + below WARNING) messages and continue. - Change-Id: Id927a7a49c47d8903505535749ecca78cd2e83b3 + Change-Id: I8cdeda7a8f6c91d45fb7f24fb366244c6c9b66e1 -commit 12cc164f79bb8a31e0eb3946e6f4898ac3c21c55 +commit b0a8731fcdde31e6c37a54e8c1e1c00f853c0d5c Author: Alex Stewart <alexs.mac@gmail.com> -Date: Wed Jul 17 12:08:33 2013 +0100 +Date: Mon Nov 4 20:32:40 2013 +0000 - Minor fix to reject a line search config with negative L-BFGS rank. + Removing duplicate SuiteSparse found message. + + - Also flipping ordering of variables in + find_package_handle_standard_args() so that the automatically + generated message prints the include directories, not TRUE. - Change-Id: Iad4c678efe574ef6696c34bd2a0ce61a504c7344 + Change-Id: I2bf62eacd5c96f27152e9542b9a74651243a584e -commit 9aa0e3cf7243a2e837bbfa22d4677010463f6a4e +commit 6fed9fe0de9d1737095c24e19ad8df9735b7e572 Author: Alex Stewart <alexs.mac@gmail.com> -Date: Fri Jul 5 20:22:37 2013 +0100 +Date: Mon Nov 4 18:33:05 2013 +0000 - Adding Wolfe line search algorithm and full BFGS search direction options. + Fix FindPackage scripts to emit warnings, not errors if not found. - Change-Id: I9d3fb117805bdfa5bc33613368f45ae8f10e0d79 + - Previously we used message priority: SEND_ERROR when a package was + not found and find_package() was called without QUIET or REQUIRED, + which emits an error message, and prevents generation, but continues + configuration. + - The fact SEND_ERROR induces an error message was confusing for users + as it implies that something bad has happened and they cannot + continue, when in fact we were disabling the option in question + and were thus able to continue, all they had to do was re-configure. + + - This commit also reorders the search lists for includes/libraries + so that we always search user installed locations (e.g. /usr/local) + before system installed locations. Thus we will now always prefer + a user install to a system install if both are available, which is + likely to be the users desired intention. + + Change-Id: Ide84919f27d3373f31282f70c685720cd77a6723 -commit 51c772c843ccecca006c706a9f64b8cbaf5416f9 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Jul 16 16:42:52 2013 -0700 +commit cada337149cbc4b9e6f2bae14593b87ecf8f1a5c +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Nov 4 18:08:24 2013 +0000 - householderQR -> colPivHouseholderQR. + Fixing CXSparse include directories statement. + + - Reported as issue #135: + https://code.google.com/p/ceres-solver/issues/detail?id=135. + - CXSPARSE_INCLUDE was the legacy include directory variable, since + the buildsystem updates we now use the CMake standard: + CXSPARSE_INCLUDE_DIRS. - Change-Id: Ida623e853711f665e7a9d3b140a93e861591f96d + Change-Id: Iab0c2de14d524bb9e9da230bc574b5e6f09e1f31 -commit c2c6411d16db95cde0cc3a7a80bac87266234bb7 +commit c71085ed326239dc2d318d848ded9a99e4e3c107 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sat Jul 13 18:47:49 2013 -0700 +Date: Thu Oct 31 13:56:38 2013 -0700 - DENSE_QR solver now uses non pivoting QR decomposition. + Update to 1.8.0rc1. - Change-Id: I9099221448ccf71d0de20b9f652405009a6c24c5 + Change-Id: Iaa10fd5a20be2ef84aca0119306c44669d87cc5d -commit 3c2ad4018c8d2271434b9ff2bd05437b96f4927c -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Jul 15 08:09:38 2013 -0700 +commit 88a703f44ff0d6d5d4601584fa77f5ce853025f4 +Author: Petter Strandmark <petter.strandmark@gmail.com> +Date: Thu Oct 31 21:13:48 2013 +0100 - Speed up Automatic differentiation by 7%. + Fix compilation in Visual C++ 2013. - 1. Templatize Make1stOrderPerturbation. - 2. Convert a hard CHECK into DCHECK. + I had to fix the following things to make Ceres compile in 2013: + * Not link to 'm' (GNU math library). + * Excplicitly convert an std::ostream to bool. + * Include <algorithm> for std::max. - Change-Id: I02cd67f2b87bc5722f1a090057d55f23e98d2c3b + Change-Id: I3ff65413baf8711364360d46dd71fd553fa63e72 -commit 0a07fbf8731adcdce98c8e73127d379199341132 +commit f06b9face5bfbbc2b338aa2460bee2298a3865c5 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Jul 10 11:57:35 2013 -0700 +Date: Sun Oct 27 21:38:13 2013 -0700 - Use ATLAS as the example BLAS in building.rst + Add support for multiple visibility clustering algorithms. + + The original visibility based preconditioning paper and + implementation only used the canonical views algorithm. + + This algorithm for large dense graphs can be particularly + expensive. As its worst case complexity is cubic in size + of the graph. + + Further, for many uses the SCHUR_JACOBI preconditioner + was both effective enough while being cheap. It however + suffers from a fatal flaw. If the camera parameter blocks + are split between two or more parameter blocks, e.g, + extrinsics and intrinsics. The preconditioner because + it is block diagonal will not capture the interactions + between them. - OpenBLAS has subtle issues releated to threading. It - conflicts with the use of threads in the other parts of - the application. + Using CLUSTER_JACOBI or CLUSTER_TRIDIAGONAL will fix + this problem but as mentioned above this can be quite + expensive depending on the problem. - Careful users can still use it by disabling threads via - an environment variable, but by default we want to use - a BLAS/LAPACK that does not suffer from these problems. + This change extends the visibility based preconditioner + to allow for multiple clustering algorithms. And adds + a simple thresholded single linkage clustering algorithm + which allows you to construct versions of CLUSTER_JACOBI + and CLUSTER_TRIDIAGONAL preconditioners that are cheap + to construct and are more effective than SCHUR_JACOBI. - Change-Id: I8c1c0ed0b526453564c5f9ea69b646fac32fe027 + Currently the constants controlling the threshold above + which edges are considered in the single linkage algorithm + are not exposed. This would be done in a future change. + + Change-Id: I7ddc36790943f24b19c7f08b10694ae9a822f5c9 -commit aee5597acf9c2c064977e937f52689254ebd1a39 +commit 5a161a2b9653489ee9040f054b24df971e6b9bbc Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Jul 9 23:30:07 2013 -0700 +Date: Tue Oct 29 22:08:15 2013 -0700 - Minor fix to curve_fitting.c + Template specializations for PartitionedMatrixView. + + This speeds up the matrix vector products in the + IterativeSchurSolver by upto 40%. - Change-Id: Ib3669a5c4c73178b088dc1e80141f844f807b179 + Change-Id: Ib5e8d77c7269cf5ffdd2d161893734bb6d38215d -commit bd82f82c3afeb3c57fa03f61fdbb0388f9ed8b02 +commit e5ce1170bc9993085c81a788e16eb48f1b2fdb97 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Jul 9 23:19:09 2013 -0700 +Date: Tue Oct 29 07:40:51 2013 -0700 - More CMake file cleanup. + Minor bug fix to autodiff.h - Reduce the verbosity of the Cmake file. All the "Checking for" - messages have been removed since we log both success and failures. + Change-Id: Ib41050a2f2ba1898c71ff19d74f8eca2496212c0 + +commit 9e9a7d6ca0e75727293f94452d602f02b56d10ba +Author: Sameer Agarwal <sameeragarwal@google.com> +Date: Tue Oct 29 06:54:44 2013 -0700 + + Documentation update. - Further, UFConfig is only searched for if SuiteSparse_config cannot - be found. + Add documentation for the new methods added to Problem. + Fix a bunch of ReST bugs. - Change-Id: I601a6ffc808e566ff78ce232c86519ef413f0b33 + Change-Id: I8a79a84040cfa8a679cc5355baccbe6d69bc9e70 -commit 9f4552b6475616df7e60681e60cd5afebb45a4ea +commit c6bafdd02c33ec0ccb705578d83e4f601ddeedea Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Jul 9 00:10:08 2013 -0700 +Date: Mon Oct 28 19:38:08 2013 -0700 - Stop CMake from trying to detect OpenMP when using Clang. + Comments from Jim Roseborough. + + 1. Fix the tolerance on the rotation matrix conversion test. + 2. Fix some out of date comments. - Change-Id: Ie14c6466475b401ba35dbf13adc2e8701999c969 + Change-Id: I65e80da1f96d7b4d9ac0630ad8cb708c41739840 -commit 6e8bd501b25dc308df7b1a5eed16edfd8442002e +commit fda69b52130955479591e8f03f97b1cfceca369f Author: Keir Mierle <mierle@gmail.com> -Date: Thu May 23 01:49:08 2013 -0700 +Date: Thu Oct 10 00:25:24 2013 -0700 - Extend the C API to support loss functions + Export the structure of a problem to the public API + + This adds three new public methods to ceres::Problem: - This extends the C API to support loss functions. Both - user-supplied cost functions as well as the stock Ceres cost - functions (Cauchy, Huber, etc) are supported. In addition, this - adds a simple unit test for the C API. + Problem::GetResidualBlocks() + Problem::GetParameterBlocksForResidualBlock() + Problem::GetResidualBlocksForParameterBlock() - Supporting loss functions required changing the signature of the - ceres_add_residual_block() function to also take a thunk for the - loss function. + These permit access to the underlying graph structure of the problem. - Change-Id: Iefa58cf709adbb8f24588e5eb6aed9aef46b6d73 + Change-Id: I55a4c7f0e5f325f140cb4830e7a7070554594650 -commit 1ab7fde626c3d3ac02664183f21fedd397785bea +commit 63bcdffa7d188b8d8c5309a62c255ba33f061764 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Jul 8 10:03:49 2013 -0700 +Date: Sun Oct 27 21:34:13 2013 -0700 - Update gmock and gtest to the latest svn versions. + Add the 2_d_d SchurEliminator specialization. - This fixes a variety of mac/clang/c++11 issues. + This occurs far too often in bundle adjustment problems to be ignored. - Change-Id: I52e76d733cd53c9bb2fda125e51a6b58a90e41b3 + Change-Id: Ib137f1566acf5fffa63e50a55fe8e78ea9eb1c14 -commit eeedd2e191f5ce404453c735061ad13bd45b939b +commit 602096c91363a0b9384f887a15c82e2dac1fb923 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Jul 7 23:04:31 2013 -0700 +Date: Sun Oct 27 05:09:38 2013 -0700 - Rationalize some of the variable names in Solver::Options. + Move CERES_HASH_NAMESPACE macros to collections_port.h - lm_max_diagonal -> max_lm_diagonal - lm_min_diagonal -> min_lm_diagonal - linear_solver_max_num_iterations -> max_linear_solver_iterations - linear_solver_min_num_iterations -> min_linear_solver_iterations + Now that we have a clearer understanding of the naming rules + there is no need for these macro definitions to be done in + the cmake file. - This follows the pattern for the other parameters in Solver::Options - where, the max/min is the first word followed by the name of the - parameter. + This cleans up the compilation command line. - Change-Id: I0893610fceb6b7983fdb458a65522ba7079596a7 + Change-Id: Idc8fc7a7c9376e021dc4790af66e599105351917 -commit 7a8f79792467e56012d43b5f9aa7aefce14d5ee9 +commit f6b67df54ad6daa7036f5b6619243f722d678892 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Jul 3 09:03:55 2013 -0700 +Date: Fri Oct 25 06:24:19 2013 -0700 - Lint fixes + Fix handling of unordered_map/unordered_set on OSX 10.9.0. - Change-Id: Ic453597488ef92723a81a224e7443e8f454b25da - -commit 67ccb7379e7eab709480e227323ea48ea91e7ccc -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Jul 3 06:28:34 2013 -0700 - - Fix broken build. + Depending on the compiler + standard library combination, + unordered_map/set may or may not be available. If available + they maybe in the std or the std::tr1 namespaces. - Change-Id: Ieb122bb96d5776f962fff6d6e9345dfc855bfed7 - -commit 4f010b2db02f22cee8243ed83a49e63a305dbb76 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Jul 1 08:01:01 2013 -0700 - - Improve Summary::FullReport when line search is used. + Apple switched to using libc++ with 10.9.0 which places + unordered_map in std, breaking our assumptions about the + platform. - Disable reporting of preconditioner when direct factorization - is being used. + This change refactors our logic for dealing with the namespace + switching, making it a three state thing rather than two. There + are three defines now, CERES_NO_UNORDERED_MAP, CERES_STD_UNORDERED_MAP + and CERES_TR1_UNORDERED_MAP. Earlier the first two were conflated + into one, leading to the breakage. - Change-Id: Id264d2292c5cab608724a6a8fab5d588db950468 + Change-Id: I904fe8c49529169bdefa9f2ee6d629e7eab0b855 -commit 09244015e304b0ebfb2f2399edd2d97e3b9dcd8f +commit 21d6a99fe68e99fa51db32d55f587b42ef9a476c Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Jun 30 14:33:23 2013 -0700 +Date: Fri Oct 25 10:20:24 2013 -0700 - Expose line search parameters in Solver::Options. + Fix AngleAxisToRotationMatrix near zero. + + The Taylor series approximation had its sign flipped and the + tests did not catch it since we were switching exactly at zero, + which was not getting triggered. - Change-Id: Ifc52980976e7bac73c8164d80518a5a19db1b79d + This changes modifies the tolerance, adds a test that triggers + and fixes the bug. + + Thanks to Michael Samples for reporting this. + + Change-Id: I6f92f6348e5d4421ffe194fba92c04285449484c -commit 1c70ae9aa626e591cda987a970c240dd40d23a69 +commit 0e2743e24d013b25109396cfa0d8d0f1e8e84964 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Jun 30 12:50:43 2013 -0700 +Date: Wed Oct 23 14:51:07 2013 -0700 - Fix Solver::Summary when line search is used. + Add BlockRandomAccessDiagonalMatrix. - Also enable line search in bundle_adjuster. + This class is used in the SchurJacobiPreconditioner for + storing the preconditioner matrix. Using it speeds up + the computation of the preconditioner by ~15% due to + the elimination of a hash table lookup. - Change-Id: Ic4343a4334b9f5a6fdeab38d4e3e1f6932bbc601 + Change-Id: Iba2b34aad0d9eb9bcb7f6e6fad16aa416aac0d2a -commit 70b06c89c7491d7749957c8454769bfcb0108a97 +commit 6a2bcaa1d55d38bc10d043f1458657caac2be7a7 Author: Alex Stewart <alexs.mac@gmail.com> -Date: Sun Jun 30 18:49:56 2013 +0100 +Date: Wed Oct 23 14:06:44 2013 +0100 - Fix update of L-BFGS history buffers after they become full. - - Previously there was an assignment dimension mismatch in the - history update; thus, over time, the history would contain - (only) replicated copies of the (max_num_corrections_ -1)-th - update and the most recent update. + Adding explicit link to libm for pure-C curve fitting example. - Change-Id: I26203acf689686d41a5029c675ebbe001fe05d90 - -commit a427c877f968d951b3cdcb5f5298deaf84647830 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Jun 24 17:50:56 2013 -0700 - - Lint cleanup. + - Any pure-C program #including <math.h> will need to link against + libm, some compilers will let an indirect link slide (via Ceres in + this case) but some won't. - Change-Id: Ie489f1ff182d99251ed8c0728cc6ea8e1c262ce0 + Change-Id: I6890702fa0d2c3fbb747f0f81fc3fa3631839de4 |