blender/extern/libmv/third_party/ceres/ChangeLog

689 lines
25 KiB
Plaintext
Raw Normal View History

commit 80a53eebfd28bfc032cedbf7852d5c56eb1d5af5
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Jan 9 12:40:54 2014 -0800
Faster LBFGS.
1. Use column major storage for the various matrices used by
LowRankInverseHessian. Since all the operations are on columns.
2. Use a circular buffer to keep track of history of the LBFGS updates
so that an update does not require copying the entire history. This
makes the updates O(1) rather than O(rank).
The implementation has been checked against the denoising code
where it gives numerically identical results. The overhead of the
LBFGS code is now near negligible as compared to the gradient evaluation.
On a sample problem
before 1050ms after: 630ms
Change-Id: I537ba506ac35fc4960b304c10d923a8dea2ae031
commit f55780063620e7a3dcfe7e018d6488bf6a5b29da
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Jan 8 10:43:31 2014 -0800
Reduce logging verbosity.
When user specifies Solver::Options::logging_type = SILENT,
ensure that the minimizer does not log anything.
Change-Id: I94e34dae504881ab36d4a66e6adb7a19a227363e
commit 85561eee951c91e578984c6d3eecf0073acabb64
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Jan 7 22:22:14 2014 -0800
Use int32 for parameter block sizes.
CostFunction now uses int32 instead of int16
to store the size of its parameter blocks.
This is an API breaking change.
Change-Id: I032ea583bc7ea4b3009be25d23a3be143749c73e
commit a7fda3317b1a97702750bea96ac3ef3d1a2afb49
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Mon Jan 6 10:25:42 2014 +0000
Fix typos in error messages in line search config checks.
Change-Id: I3ae2ae58328e996598e3e32c12869d2b10109ef7
commit f695322eb8c5ff118f0d27f68d46d557338e5db1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Jan 4 14:28:23 2014 -0800
Remove a compilation warning on windows.
Only define NOMINMAX if it is not already defined.
Thanks to Pierre Moulon for this fix.
Change-Id: Ia5dc0f5ff2afe10e4c7e97a57f54297d82052b21
commit b811041d78d80518db153ef3030bcbdbaf80df8d
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date: Thu Jan 2 15:19:17 2014 +0600
Code cleanup: fix no previous declaration warnings
Moved some internally used functions into an anonymous namespace.
Change-Id: Ie82df61b0608abac79ccc9f7b14e7f7e04ab733d
commit f14f6bf9b7d3fbd2cab939cf4ad615b317e93c83
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Dec 26 09:50:45 2013 -0800
Speed up SPARSE_NORMAL_CHOLESKY when using CX_SPARSE.
When using sparse cholesky factorization to solve the linear
least squares problem:
Ax = b
There are two sources of computational complexity.
1. Computing H = A'A
2. Computing the sparse Cholesky factorization of H.
Doing 1. using CX_SPARSE is particularly expensive, as it uses
a generic cs_multiply function which computes the structure of
the matrix H everytime, reallocates memory and does not take
advantage of the fact that the matrix being computed is a symmetric
outer product.
This change adds a custom symmetric outer product algorithm for
CompressedRowSparseMatrix.
It has a symbolic phase, where it computes the sparsity structure
of the output matrix and a "program" which allows the actual
multiplication routine to determine exactly which entry in the
values array each term in the product contributes to.
With these two bits of information, the outer product H = A'A
can be computed extremely fast without any reasoning about
the structure of H.
Further gains in efficiency are made by exploiting the block
structure of A.
With this change, SPARSE_NORMAL_CHOLESKY with CX_SPARSE as the
backend results in > 300% speedup for some problems.
The symbolic analysis phase of the solver is a bit more expensive
now but the increased cost is made up in 3-4 iterations.
Change-Id: I5e4a72b4d03ba41b378a2634330bc22b299c0f12
commit d79f886eb87cb064e19eb12c1ad3d45bbed92198
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Dec 30 07:39:10 2013 -0800
Refactor line search error checking code.
Move the error checking code into its own function
so that it can be used in upcoming changes.
Change-Id: Icf348e5a8bbe8f8b663f04fb8cfc9a2149b12f22
commit 2b16b0080b6e673eaaf9ed478c9e971d9fcd65de
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Dec 20 15:22:26 2013 -0800
CompressedRowSparseMatrix::AppendRows and DeleteRows bugfix.
CompressedRowSparseMatrix can store the row and column block structure
but the AppendRows and DeleteRows methods did not pay attention to them.
This meant that it was possible to get to a CompressedRowSparseMatrix
whose block structure did not match the contents of the matrix.
This change fixes this problem.
Change-Id: I1b3c807fc03d8c049ee20511e2bc62806d211b81
commit 27bb4a8589c47a65b5ea2c01872a903043d0ef74
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Dec 18 13:06:58 2013 -0800
Handle empty problems consistently.
Until now Ceres was inconsistent in the way it handled a solve
call on an "empty" Problem. If the problem did not contain
any residual or parameter blocks, it failed. However, if after
constructing the reduced program, the problem was found to not
contain any modifiable parameter blocks, it was considered a valid
problem which had a constant objective function value.
When creating problems automatically, it is often the case that
an empty problem is a corner case. This change makes handling this
corner case consistent with the rest of Ceres logic.
Change-Id: Ia9da09fbf5d5cd7eae6b39a92c1976b8645db9fe
commit dcee120bac04911bf01d8365bddca87c74ce2af9
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Dec 7 21:48:56 2013 -0800
Consolidate SolverTerminationType enum.
1. Rename SolverTerminationType to TerminationType.
2. Consolidate the enum as
a. CONVERGENCE - subsumes FUNCTION_TOLERANCE, PARAMETER_TOLERANCE and GRADIENT_TOLERANCE
b. NO_CONVERGENCE
c. FAILURE - captures all kinds of failures including DID_NOT_RUN.
d. USER_SUCCESS
e. USER_FAILURE
3. Solver::Summary::error is renamed to be Solver::Summary::message, to both
reduce confusion as well as capture its true meaning.
Change-Id: I27a382e66e67f5a4750d0ee914d941f6b53c326d
commit d1cf320bb4f032cb14b20114a29ce2d867307492
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date: Thu Nov 28 23:11:11 2013 +0600
Made collections port compatible with MSVC2008
The issue was caused by the fact that in this version
of MSVC unordered_map class is defined in <unordered_map>
header file, but this file declares the class int std::tr1
namespace.
This confused existing assumption that if there's an
existing <unordered_map> file then class is declared
in std namespace.
Added an extra check to CMake which detects whether
it's std or std::tr1 which actually contains class
of unordered_map.
Change-Id: Ic5cf41913895a6ce8e791cc7602d7cf5492c34de
commit 324eccb5f6ce2a1a0061ec9f3c40778a029a2d97
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Dec 3 09:28:14 2013 -0800
Restore the state of the Problem after a call to Evaluate.
Calling Problem::Evaluate mutates the state of the parameter blocks.
In particular, depending on the set and order of parameter blocks
passed to the evaluate call, it will change the internal indexing
used by the Program object used by ProblemImpl. This needs to be
undone before Evaluate returns, otherwise the Problem object
is in an invalid state.
To help with testing and debugging in the future, a new method
Program::IsValid has been added which checks whether the problem
has its parameter and residual blocks in the right state.
Thanks to Stefan Leutenegger for reporting this.
Change-Id: I209b486a31433f0cbb58b570047649eca6d42b56
commit 3b1ad31a1fe89fe0bd78e1fffdf22d47d43faaf5
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Dec 2 15:43:20 2013 -0800
Fix build breakage on old versions of SuiteSparse.
Change-Id: I2a061615fc374abef2ed323c298359002a6fc5f1
commit 5fd480692b0a0c87e2af2f5a8754042a14f5f089
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Dec 2 12:16:53 2013 -0800
Add more documentation to the linear solver enums.
Change-Id: Id57f76f73fa38043c0b6729972b1de8578ad7ede
commit d73acd035359886dfa1c5762b01c6f6449edcab8
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Dec 2 12:02:03 2013 -0800
Lint cleanup from William Rucklidge.
Change-Id: I8abcfd369f41b895ce746a21a35f250fe05c39d1
commit 3faac6a28cec4c99c41421d3f585f3786be443b3
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Nov 28 07:13:26 2013 -0800
More lint cleanups and breakage fixes.
The previous CL was a premature submit due to lack of coffee.
Change-Id: Id425d0ef332f569a954f0413e6b1ae6087f40f30
commit ed92366592a951041bd0367c24006101ef7b6286
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Nov 28 06:50:43 2013 -0800
Lint cleanup from William Rucklidge.
Change-Id: I745810f5496a1b93263b20ff140f8883da61995e
commit 34b6359f39884683f2bbf06c93040afd42ae135d
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date: Thu Nov 28 18:51:34 2013 +0600
Fix compilation error after recent enum rename in 33e01b9
Change-Id: I920aa4754df6b013e86f0e77c61338d7a80e7f45
commit 33e01b9c5e1416fe29c55ac0332cdca21c053c83
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Nov 27 10:24:03 2013 -0800
Rename LinearSolverTerminationType enums.
This increases clarity, drops redundant enums and makes things
cleaner all around.
Change-Id: I761f195ddf17ea6bd8e4e55bf5a72863660c4c3b
commit 068437eb89d495d905465544ccd442efef457b04
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Nov 27 07:05:57 2013 -0800
Pipe minimizer termination messages to Solver::Summary.
All minimizer termination messages are now available as
Solver::Summary::error.
This is part of the ongoing refactoring or
Change-Id: I4514c3c042645bbd1471bcde9bd3dbf81d9ee8b0
commit 89a592f410fb6f80c03dea84b6b9f1a10bea36c1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Nov 26 11:35:49 2013 -0800
LinearSolver::Summary::status -> LinearSolver::Summary::message.
And a bunch of minor lint cleanups as they showed up.
Change-Id: I430a6b05710923c72daf6a5df4dfcd16fbf44b3a
commit b16e118b96c55451c0d8556f3c5b52ad36b69cac
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Nov 25 05:47:43 2013 -0800
Better error checking and reporting for linear solvers.
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.
Preconditioners are not covered by this change and will be the
subject of a future change.
Change-Id: Ibeb2572a1e67758953dde8d12e3abc6d1df9052d
commit 5794d41be2d8d6a67dcdfe607e66050f0ac04c55
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Nov 25 13:37:02 2013 -0800
Remove overzealous checks in Summary::FullReport.
Thanks to sebi.koch@gmail.com for reporting this.
Change-Id: I1ba9b375e5cf66639e292ba37b34a90446f13162
commit 40ef90304ac200bb948549e8e3748e487d27dc53
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Mon Nov 25 16:36:40 2013 +0000
Adding VLOG output to line search.
- Previously line search was sparse in terms of debug orientated VLOG
output which made debugging failure cases difficult.
Change-Id: Idfabf74d2b3f7b8256f79dff8c6b7fcdc2fcf4d3
commit 1284a5141426597f3ca1e29ae8548c9b4c43c9c1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Nov 24 15:09:43 2013 -0800
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.
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: I476933ce010d81db992f1c580d2fb23a4457eb3e
commit a9334d67d7973c0f56e65f12ae897dd53504ef0d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Nov 20 10:12:23 2013 -0800
Fix constant parameter handling in inner iterations.
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 bug. The code for RemoveFixedBlocksFromProgram
is also cleaned up and made more readable and the test have been updated.
Thanks to Mikael Persson for reporting this.
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.
- These messages were originally VLOG(2) and were mistakenly upgraded to
WARNINGs when the tolerances were reduced.
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.
- 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: I54bce9aa112b684d26b60a9ae4d11eb7925a6ee5
commit 66e15b41d80b155f333f099a0278d50312cdaa15
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Nov 22 07:59:23 2013 -0800
Lint cleanup from Jim Roseborough.
Change-Id: I6ddbf5c3d66595d27f7967a309768e5f5dd7e1fd
commit 79bde35f29291cf464b59f3dc2dd9f1fa88776a9
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Nov 21 21:33:51 2013 -0800
SuiteSparse errors do not cause a fatal crash.
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.
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: I1f60d539799dd95db7ecc340911e261fa4824f92
commit a674e0f8534ea6948f70a72fe9718e07b3d039ff
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Nov 21 22:12:15 2013 -0800
Fix corrector_test.cc.
Fix two death tests dealing with the sign of the gradient.
Change-Id: Ic91d54a64cc509307c94fce6d1fca083078936e2
commit a8006af3110e98d64fb369e958fc00ec88d771a3
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Wed Nov 20 19:56:06 2013 +0000
Adding threads libraries to exported dependencies if using OpenMP.
- 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: If0354cc07e84dbebfc870a8862e1a8ca64659791
commit 6c0d96424e2c27326757936a3738f9efc37c6c24
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Nov 20 11:52:01 2013 -0800
Minor documentation fix.
Thanks to Satya Mallick.
Change-Id: I556f1c141bf16739d54450351b0f29fd4ea40014
commit 7747bb0e6b0e54366933ed75c1bcafe6a1109c3d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Nov 20 11:29:22 2013 -0800
Minor corrections to the documentation.
Thanks to Satya Mallick for reporting these.
Change-Id: Ia52e08a7e21d5247dc475cfbf10bf57265aa118f
commit 3fca2c4b2fae9abcaa9611f2bd3885ce6b11963b
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Mon Nov 18 10:26:49 2013 +0000
Decreasing update threshold for BFGS as per L-BFGS.
- 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: If57b9957d31d8629c772c19a069e1e56e727b350
commit 54fcbf893852272ba2158d6a56572a2eb3ccc41f
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Nov 19 10:12:05 2013 -0800
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: I3d65713f152611998e196ff389a7081acfdfd8c1
commit db98425b94c9eff9b125bf4a854545162e8c1aec
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Nov 15 14:14:09 2013 -0800
Small bugfix to logging.h from Scott Ettinger.
Change-Id: Ie6d51e7883adf36c6fc7a78ff95afab6a78e488b
commit 4d0e626b55f36ab8f44a4acc8157b85cfecd4673
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Fri Nov 15 13:53:44 2013 +0000
Fixing gflags HINTS variable names (adding missing “_DIR”).
- 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.
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.
- 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.
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.
- 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: I335b6e2d10a1c64f320c2a1a68eeda1b22344e73
commit fcbbb11e37386097b1427dc3aa89f264d6951ded
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Wed Nov 13 22:22:30 2013 +0000
Ensure build paths for dependencies are searched in FindPackage(Ceres)
- 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: I9550de91025ba47f01f1ea3c3fefe80fe38d14ff
commit 7899e45d378f589a67ad8e042bf6a7cb7e15df00
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Wed Nov 13 21:08:27 2013 +0000
Fixing a documentation typo, DIRS -> DIR in HINTS variables.
Change-Id: I42b75a5e0b8a451c3a43ab29d0c14856e4b86ab8
commit 1a041c35b780e60c3b497eb096b72ad20f47960e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Nov 12 14:17:52 2013 -0800
Update to 1.8.0.
Change-Id: Id42e594f03e3575d06e18c1ef66df64f43d86839
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: Fri Nov 8 08:04:44 2013 -0800
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: I97c4e897ccbb5521c053e1fb931c5d0d32f542c7
commit 58792dc8ee0e4b56331f33f753f1b1932c5c2960
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Nov 6 09:42:46 2013 -0800
Update to 1.8.0rc2.
Change-Id: Ifbf5312377bf1791a29aefd3edc3a765999c5824
commit af04d7f18740faf452e9171af530aa1bdead44bb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Nov 5 13:47:30 2013 -0800
Remove DCHECK_GE checks from fixed_array.h
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 causes problems when compiling Ceres on linux
with miniglog.
Change-Id: Ia1d1d1483e03469c71fde029b62ca6d84e9b27e0
commit b5be6b9c065a02158337ee7eacfdb8be811dec7f
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Tue Nov 5 13:10:27 2013 +0000
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: I6eed94af49263540b8f87917b75c41b8f49658a0