Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/libmv/third_party/ceres/ChangeLog')
-rw-r--r--extern/libmv/third_party/ceres/ChangeLog938
1 files changed, 462 insertions, 476 deletions
diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog
index b4f78ee0731..0e6c195174c 100644
--- a/extern/libmv/third_party/ceres/ChangeLog
+++ b/extern/libmv/third_party/ceres/ChangeLog
@@ -1,673 +1,659 @@
-commit 0435246de5f45e69b2c97d244ed61bedd340215a
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Oct 8 18:12:53 2014 -0700
+commit aef9c9563b08d5f39eee1576af133a84749d1b48
+Author: Alessandro Gentilini <agentilini@gmail.com>
+Date: Tue Oct 6 20:43:45 2015 +0200
- Add seene to users.rst
+ Add test for Bessel functions.
- Change-Id: If40726775a3d4b234b6e10517fe9943d122a3384
+ Change-Id: Ief5881e8027643d7ef627e60a88fdbad17f3d884
-commit fdf32b315f39553639f0becf078ad4eec763a10e
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Oct 8 16:04:32 2014 -0700
+commit 49c86018e00f196c4aa9bd25daccb9919917efee
+Author: Alessandro Gentilini <agentilini@gmail.com>
+Date: Wed Sep 23 21:59:44 2015 +0200
- Fix some errant tabs.
+ Add Bessel functions in order to use them in residual code.
- Change-Id: Iaf1906eaade49467ba282656cf0a10879d258b1f
+ See "How can I use the Bessel function in the residual function?" at
+ https://groups.google.com/d/msg/ceres-solver/Vh1gpqac8v0/NIK1EiWJCAAJ
+
+ Change-Id: I3e80d9f9d1cadaf7177076e493ff46ace5233b76
-commit 6768b3586a027bb850c0a50e2a27380f5d80142a
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Oct 8 12:48:16 2014 -0700
+commit dfb201220c034fde00a242d0533bef3f73b2907d
+Author: Simon Rutishauser <simon.rutishauser@pix4d.com>
+Date: Tue Oct 13 07:33:58 2015 +0200
- Minor cleanups in preparation for a release.
+ Make miniglog threadsafe on non-windows system by using
+ localtime_r() instead of localtime() for time formatting
- 1. Fix the release script to ignore the version.h checking.
- 2. Fix some ceres documentation formatting errors.
-
- Change-Id: I3fd6b85e771b242f463d6a36c3efd8d691f9242f
+ Change-Id: Ib8006c685cd8ed4f374893bef56c4061ca2c9747
-commit 7b6bd1cd31aa0b8cb7fb97600c1b9999846e3152
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Oct 2 16:16:26 2014 -0700
+commit 41455566ac633e55f222bce7c4d2cb4cc33d5c72
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Mon Sep 28 22:43:42 2015 +0100
- Documentation update.
+ Remove link-time optimisation (LTO).
- 1. Complete restructuring of the documentation to account for
- GradientProblemSolver.
- 2. Update the version history to account for changes since 1.9.0.
- 3. Add links and document the various examples that ship with ceres.
- 4. Documentation for GradientProblem GradientProblemSolver.
+ - On GCC 4.9+ although GCC supports LTO, it requires use of the
+ non-default gcc-ar & gcc-ranlib. Whilst we can ensure Ceres is
+ compiled with these, doing so with GCC 4.9 causes multiple definition
+ linker errors of static ints inside Eigen when compiling the tests
+ and examples when they are not also built with LTO.
+ - On OS X (Xcode 6 & 7) after the latest update to gtest, if LTO
+ is used when compiling the tests (& examples), two tests fail
+ due to typeinfo::operator== (things are fine if only Ceres itself is
+ compiled with LTO).
+ - This patch disables LTO for all compilers. It should be revisited when
+ the performance is more stable across our supported compilers.
- Change-Id: If3a18f2850cbc98be1bc34435e9ea468785b8b27
+ Change-Id: I17b52957faefbdeff0aa40846dc9b342db1b02e3
-commit b7d321f505e936b6c09aeb43ae3f7b1252388a95
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Oct 3 15:47:59 2014 -0700
+commit 89c40005bfceadb4163bd16b7464b3c2ce740daf
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sun Sep 27 13:37:26 2015 +0100
- Relax the warning/error handing in GCC.
+ Only use LTO when compiling Ceres itself, not tests or examples.
- Thanks to Matthew Woehlke for suggesting this.
+ - If Ceres is built as a shared library, and LTO is enabled for Ceres
+ and the tests, then type_info::operator==() incorrectly returns false
+ in gtests' CheckedDowncastToActualType() in the following tests:
+ -- levenberg_marquardt_strategy_test.
+ -- gradient_checking_cost_function_test.
+ on at least Xcode 6 & 7 as reported here:
+ https://github.com/google/googletest/issues/595.
+ - This does not appear to be a gtest issue, but is perhaps an LLVM bug
+ or an RTTI shared library issue. Either way, disabling the use of
+ LTO when compiling the test application resolves the issue.
+ - Allow LTO to be enabled for GCC, if it is supported.
+ - Add CMake function to allow easy appending to target properties s/t
+ Ceres library-specific compile flags can be iteratively constructed.
- Change-Id: Iae754465c086b0841a7816df1a36781371d0dc9a
+ Change-Id: I923e6aae4f7cefa098cf32b2f8fc19389e7918c9
-commit 94c6e7d27b5d48d81ab54ed9cdcbc55c3c099311
+commit 0794f41cca440f7f65d9a44e671f66f6e498ef7c
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Oct 1 15:55:13 2014 -0700
+Date: Sat Sep 26 14:10:15 2015 -0700
- Improve multithreading when using inner iterations.
-
- Inner iterations by default would use problems where the evaluator
- was configured to use exactly one thread for doing the evaluation.
- This is fine when there are multiple inner iteration problems
- being executed concurrently, but every now and then there are
- problem decompositions where there is just one parameter block
- in the current independent set and it touches every single
- residual block. In such cases it is essential that the evaluator
- be configured to use multiple threads.
+ Documentation updates.
- We now pay attention to the size of the independent set and
- dynamically configure the number of threads being used by the
- outer loop and the evaluator loop.
+ 1. Fix a typo in the Trust Region algorithm.
+ 2. Add ARL in the list of users.
+ 3. Update the version history.
- Thanks to William Rucklidge for reporting this issue and providing
- a test problem to debug.
-
- Change-Id: Iaff9a4ab6d2658cf7b61ea213575d23aab604e3b
+ Change-Id: Ic286e8ef1a71af07f3890b7592dd3aed9c5f87ce
-commit 9e11cd16d09403b9270e621e839d5948b6a74b8d
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Sep 29 14:27:58 2014 -0700
+commit 90e32a8dc437dfb0e6747ce15a1f3193c13b7d5b
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Mon Sep 21 21:08:25 2015 +0100
- Faster BlockRandomAccessSparseMatrix::SymmetricRightMultiply.
-
- Trade a small amount of memory to improve the cache coherency of
- the SymmetricRightMultiply operation.
+ Use old minimum iOS version flags on Xcode < 7.0.
- The resulting code leads to a 10-20% speedup in the linear solver
- end to end.
+ - The newer style, which are more specific and match the SDK names
+ are not available on Xcode < 7.0.
- Change-Id: I8ab2fe152099e849b211b5b19e4ef9f03d8e7f1c
+ Change-Id: I2f07a0365183d2781157cdb05fd49b30ae001ac5
-commit 46b8461fd010c1e7ffce6bb2bdf8a84b659d5e09
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Sep 29 15:10:58 2014 -0700
+commit 26cd5326a1fb99ae02c667eab9942e1308046984
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Mon Sep 21 10:16:01 2015 +0100
- Various minor fixes from William Rucklidge.
+ Add gtest-specific flags when building/using as a shared library.
+
+ - Currently these flags are only used to define the relevant DLL export
+ prefix for Windows.
- Change-Id: Ibe731d5db374ad8ee148d62a9fdd8d726b607a3f
+ Change-Id: I0c05207b512cb4a985390aefc779b91febdabb38
-commit b44cfdef25f6bf0917a23b3fd65cce38aa6a3362
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Sep 29 07:53:54 2014 -0700
+commit c4c79472112a49bc1340da0074af2d15b1c89749
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sun Sep 20 18:26:59 2015 +0100
- Let ITERATIVE_SCHUR use an explicit Schur Complement matrix.
-
- Up till now ITERATIVE_SCHUR evaluates matrix-vector products
- between the Schur complement and a vector implicitly by exploiting
- the algebraic expression for the Schur complement.
-
- This cost of this evaluation scales with the number of non-zeros
- in the Jacobian.
-
- For small to medium sized problems there is a sweet spot where
- computing the Schur complement is cheap enough that it is much
- more efficient to explicitly compute it and use it for evaluating
- the matrix-vector products.
-
- This changes implements support for an explicit Schur complement
- in ITERATIVE_SCHUR in combination with the SCHUR_JACOBI preconditioner.
-
- API wise a new bool Solver::Options::use_explicit_schur_complement
- has been added.
-
- The implementation extends the SparseSchurComplementSolver to use
- Conjugate Gradients.
-
- Example speedup:
-
- use_explicit_schur_complement = false
-
- Time (in seconds):
- Preprocessor 0.585
-
- Residual evaluation 0.319
- Jacobian evaluation 1.590
- Linear solver 25.685
- Minimizer 27.990
-
- Postprocessor 0.010
- Total 28.585
+ Clean up iOS.cmake to use xcrun/xcodebuild & libtool.
- use_explicit_schur_complement = true
+ - Substantial cleanup of iOS.cmake to use xcrun & xcodebuild to
+ determine the SDK & tool paths.
+ - Use libtool -static to link libraries instead of ar + ranlib, which
+ is not compatible with Xcode 7+, this change should be backwards
+ compatible to at least Xcode 6.
+ - Force locations of unordered_map & shared_ptr on iOS to work around
+ check_cxx_source_compiles() running in a forked CMake instance without
+ access to the variables (IOS_PLATFORM) defined by the user.
+ - Minor CMake style updates.
- Time (in seconds):
- Preprocessor 0.638
-
- Residual evaluation 0.318
- Jacobian evaluation 1.507
- Linear solver 5.930
- Minimizer 8.144
-
- Postprocessor 0.010
- Total 8.791
-
- Which indicates an end-to-end speedup of more than 3x, with the linear
- solver being sped up by > 4x.
-
- The idea to explore this optimization was inspired by the recent paper:
-
- Mining structure fragments for smart bundle adjustment
- L. Carlone, P. Alcantarilla, H. Chiu, K. Zsolt, F. Dellaert
- British Machine Vision Conference, 2014
-
- which uses a more complicated algorithm to compute parts of the
- Schur complement to speed up the matrix-vector product.
-
- Change-Id: I95324af0ab351faa1600f5204039a1d2a64ae61d
+ Change-Id: I5f83a60607db34d461ebe85f9dce861f53d98277
-commit 4ad91490827f2ebebcc70d17e63ef653bf06fd0d
+commit 155765bbb358f1d19f072a4b54825faf1c059910
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Sep 24 23:54:18 2014 -0700
+Date: Wed Sep 16 06:56:08 2015 -0700
- Simplify the Block Jacobi and Schur Jacobi preconditioners.
-
- 1. Extend the implementation of BlockRandomAccessDiagonalMatrix
- by adding Invert and RightMultiply methods.
+ Import the latest version of gtest and gmock.
- 2. Simplify the implementation of the Schur Jacobi preconditioner
- using these new methods.
-
- 3. Replace the custom storage used inside Block Jacobi preconditioner
- with BlockRandomAccessDiagonalMatrix and simplify its implementation
- too.
-
- Change-Id: I9d4888b35f0f228c08244abbdda5298b3ce9c466
+ Change-Id: I4b686c44bba823cab1dae40efa99e31340d2b52a
-commit 8f7be1036b853addc33224d97b92412b5a1281b6
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Sep 29 08:13:35 2014 -0700
+commit 0c4647b8f1496c97c6b9376d9c49ddc204aa08dd
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Wed Sep 16 20:01:11 2015 +0100
- Fix a formatting error TrustRegionMinimizer logging.
+ Remove FAQ about increasing inlining threshold for Clang.
- Change-Id: Iad1873c51eece46c3fdee1356d154367cfd7925e
+ - Changing the inlining threshold for Clang as described has a minimal
+ effect on user performance.
+ - The problem that originally prompted the belief that it did was
+ due to an erroneous CXX flag configuration (in user code).
+
+ Change-Id: I03017241c0f87b8dcefb8c984ec3b192afd97fc2
-commit c99872d48e322662ea19efb9010a62b7432687ae
+commit f4b768b69afcf282568f9ab3a3f0eb8078607468
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Sep 24 21:30:02 2014 -0700
+Date: Mon Sep 14 13:53:24 2015 -0700
- Add BlockRandomAccessSparseMatrix::SymmetricRightMultiply.
+ Lint changes from William Rucklidge
- Change-Id: Ib06a22a209b4c985ba218162dfb6bf46bd93169e
+ Change-Id: I0dac2549a8fa2bfd12f745a8d8a0db623b7ec1ac
-commit d3ecd18625ba260e0d00912a305a448b566acc59
+commit 5f2f05c726443e35767d677daba6d25dbc2d7ff8
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Sep 23 10:12:42 2014 -0700
+Date: Fri Sep 11 22:19:38 2015 -0700
- Add an explicit include for local_parameterization.h
+ Refactor system_test
+
+ 1. Move common test infrastructure into test_util.
+ 2. system_test now only contains powells function.
+ 3. Add bundle_adjustment_test.
- Thanks to cooordz for reporting this.
+ Instead of a single function which computes everything,
+ there is now a test for each solver configuration which
+ uses the reference solution computed by the fixture.
- Change-Id: I7d345404e362a94ff1eb433ad6b9dcc4960ba76d
+ Change-Id: I16a9a9a83a845a7aaf28762bcecf1a8ff5aee805
-commit 5dd76869cf45122c79579423f09e0de08cf04092
+commit 1936d47e213142b8bf29d3f548905116092b093d
Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Fri Sep 19 16:08:25 2014 +0100
+Date: Tue Sep 8 23:27:42 2015 +0100
- Fix unused-function warning with Eigen < 3.2.2.
+ Revert increased inline threshold (iff Clang) to exported Ceres target.
- - CreateBlockJacobian() is only ever used when Eigen >= 3.2.2 is
- detected, but was previously defined whenever CERES_USE_EIGEN_SPARSE
- was defined with no check on the Eigen version.
- - This resulted in an unused-function compile warning that became an
- error due to -Werror, preventing compilation when using Eigen < 3.2.2.
+ - Increasing the inline threshold results in very variable performance
+ improvements, and could potentially confuse users if they are trying
+ to set the inline threshold themselves.
+ - As such, we no longer export our inline threshold configuration for
+ Clang, but instead document how to change it in the FAQs.
- Change-Id: I24628ff329f14b087ece66bf2626bdc0de4ba224
+ Change-Id: I88e2e0001e4586ba2718535845ed1e4b1a5b72bc
-commit 820cb7b14831aa03eca1e8186000cebfdf0a42f3
+commit a66d89dcda47cefda83758bfb9e7374bec4ce866
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Sep 17 09:46:08 2014 -0700
+Date: Sat Sep 5 16:50:20 2015 -0700
- Add solver_utils.cc to Android.mk
+ Get ready for 1.11.0RC1
+
+ Update version numbers.
+ Drop CERES_VERSION_ABI macro.
- Change-Id: I358522971711280f4362a1fa39b1568160e21e63
+ Change-Id: Ib3eadabb318afe206bb196a5221b195d26cbeaa0
-commit 092b94970a073f8b47179d96160226fc19095898
+commit 1ac3dd223c179fbadaed568ac532af4139c75d84
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Sep 5 11:56:29 2014 -0700
+Date: Sat Sep 5 15:30:01 2015 -0700
- Add GradientProblem and GradientProblemSolver.
+ Fix a bug in CompressedRowSparseMatrix::AppendRows
- The line search minimizer in Ceres does not require that the
- problems that is solving is a sum of squares. Over the past
- year there have been multiple requests to expose this algorithm
- on its own so that it can be used to solve unconstrained
- non-linear minimization problems on its own.
+ The test for CompressedRowSparseMatrix::AppendRows tries to add
+ a matrix of size zero, which results in an invalid pointer deferencing
+ even though that pointer is never written to.
- With this change, a new optimization problem called
- GradientProblem is introduced which is basically a thin
- wrapper around a user defined functor that evaluates cost
- and gradients (FirstOrderFunction) and an optional LocalParameterization.
-
- Corresponding to it, a GradientProblemSolver and its associated
- options and summary structs are introduced too.
-
- An example that uses the new API to find the minimum of Rosenbrock's
- function is also added.
-
- Change-Id: I42bf687540da25de991e9bdb00e321239244e8b4
+ Change-Id: I97dba37082bd5dad242ae1af0447a9178cd92027
-commit 6c45d6b891aac01489b478a021f99081c61792cb
+commit 67622b080c8d37b5e932120a53d4ce76b80543e5
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Sep 11 07:48:30 2014 -0700
+Date: Sat Sep 5 13:18:38 2015 -0700
- Add more inspection methods to Problem.
-
- Problem::GetCostFunctionForResidualBlock
- Problem::GetLossFunctionForResidualBlock
+ Fix a pointer access bug in Ridders' algorithm.
- are added, so that users do not have to maintain this mapping
- outside the Problem.
+ A pointer to an Eigen matrix was being used as an array.
- Change-Id: I38356dfa094b2c7eec90651dafeaf3a33c5f5f56
+ Change-Id: Ifaea14fa3416eda5953de49afb78dc5a6ea816eb
-commit 6ad9b8e2ae66c9009441d0f9304486ec8dfa9a6a
+commit 5742b7d0f14d2d170054623ccfee09ea214b8ed9
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Sep 9 14:29:28 2014 -0700
+Date: Wed Aug 26 09:24:33 2015 -0700
- Ignore row/column blocks structure when using dynamic sparsity
+ Improve performance of SPARSE_NORMAL_CHOLESKY + dynamic_sparsity
- The row/column blocks can be huge when using dynamic sparsity. This
- can result in very large memory usage when augmenting the jacobian
- with the LM diagonal.
+ The outer product computation logic in SparseNormalCholeskySolver
+ does not work well with dynamic sparsity. The overhead of computing
+ the sparsity pattern of the normal equations is only amortized if
+ the sparsity is constant. If the sparsity can change from call to call
+ SparseNormalCholeskySolver will actually be more expensive.
- Thanks to Mingsong Dou for reporting this.
-
- Change-Id: I6aa140ceefa98389ae17958f89ca76e0c76f95b8
+ For Eigen and for CXSparse we now explicitly compute the normal
+ equations using their respective matrix-matrix product routines and solve.
+ Change-Id: Ifbd8ed78987cdf71640e66ed69500442526a23d4
-commit 7e43460d42e20be1ba13121655dbbfd0d1c751ae
-Author: Martin Baeuml <baeuml@gmail.com>
-Date: Mon Sep 8 16:49:06 2014 +0200
+commit d0b6cf657d6ef0dd739e958af9a5768f2eecfd35
+Author: Keir Mierle <mierle@gmail.com>
+Date: Fri Sep 4 18:43:41 2015 -0700
- Fix a few typos in the documentation.
+ Fix incorrect detect structure test
- Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3
+ Change-Id: I7062f3639147c40b57947790d3b18331a39a366b
-commit 1aef66eeae7042902655a11b0d6a1a32900abb7b
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sun Sep 7 21:18:44 2014 -0700
+commit 0e8264cc47661651a11e2dd8570c210082963545
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sat Aug 22 16:23:05 2015 +0100
- Remove errant space.
+ Add increased inline threshold (iff Clang) to exported Ceres target.
- Change-Id: Iedc06960417a9b938d57f623b4beb87a98e3d081
+ - When compiled with Clang, Ceres and all of the examples are compiled
+ with an increased inlining-threshold, as the default value can result
+ in poor Eigen performance.
+ - Previously, client code using Ceres would typically not use an
+ increased inlining-threshold (unless the user has specifically added
+ it themselves). However, increasing the inlining threshold can result
+ in significant performance improvements in auto-diffed CostFunctions.
+ - This patch adds the inlining-threshold flags to the interface flags
+ for the Ceres CMake target s/t any client code using Ceres (via
+ CMake), and compiled with Clang, will now be compiled with the same
+ increased inlining threshold as used by Ceres itself.
+
+ Change-Id: I31e8f1abfda140d22e85bb48aa57f028a68a415e
-commit 89080ab153a33008782759187fa8e9af7d2f83f1
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sat Sep 6 21:13:48 2014 -0700
+commit a1b3fce9e0a4141b973f6b4dd9b08c4c13052d52
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Mon Aug 31 14:14:56 2015 +0100
- Add LocalParameterization::MultiplyByJacobian.
-
- This is needed to efficiently support LocalParameterization objects
- in GradientProblemSolver.
+ Add optional export of Ceres build directory to new features list.
- Change-Id: Ic7b715b8be694b099dc95d6707a67474297533e6
+ Change-Id: I6f1e42b41957ae9cc98fd9dcd1969ef64c4cd96f
-commit d76da16f49d419ae3664ca1bdc2286c1ea78ebed
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sun Sep 7 18:42:49 2014 -0700
+commit e46777d8df068866ef80902401a03e29348d11ae
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Mon Aug 31 12:41:54 2015 +0100
- Move some routines to solver_utils.h/cc
-
- This moves a couple of routines from solver.cc into solver_utils.h/cc
- so that they can also be used by the upcoming GradientProblemSolver.
+ Credit reporters of buildsystem bugs in version history.
- Change-Id: I627b32ad3dc639422aacde78a8e391459d947e99
+ Change-Id: I16fe7973534cd556d97215e84268ae0b8ec4e11a
-commit cbf03ac292a0c0e9e6b7fcc1b08b67e95965922f
+commit 01548282cb620e5e3ac79a63a391cd0afd5433e4
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sat Sep 6 21:07:08 2014 -0700
+Date: Sun Aug 30 22:29:27 2015 -0700
- Make LineSearchMinimizer consistent with TrustRegionMinimizer.
+ Update the version history.
- Change the logic for how IterationSummary objects are added to
- Summary::iterations to match the one in TrustRegionMinimizer.
-
- Change-Id: I57851ad8294e58f83b9115cca9c24695d86ee92a
+ Change-Id: I29873bed31675e0108f1a44f53f7bc68976b7f98
-commit f04c32319751e1efd610acd3699bca0a6dd6c6d1
+commit 2701429f770fce69ed0c77523fa43d7bc20ac6dc
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sat Sep 6 21:05:41 2014 -0700
+Date: Sun Aug 30 21:33:57 2015 -0700
- Fix some obsolete documentation in CostFunction::Evaluate
+ Use Eigen::Dynamic instead of ceres::DYNAMIC in numeric_diff.h
- Change-Id: I1d7ee5c596fbf6a4d886dce5b989c8eb18af2dce
+ Change-Id: Iccb0284a8fb4c2160748dfae24bcd595f1d4cb5c
-commit 9263547c02a1807532b159c217e7acd124d3db10
-Author: Johannes Schönberger <hannesschoenberger@gmail.com>
-Date: Sat Sep 6 17:26:15 2014 -0400
+commit 4f049db7c2a3ee8cf9910c6eac96be6a28a5999c
+Author: Tal Ben-Nun <tbennun@gmail.com>
+Date: Wed May 13 15:43:51 2015 +0300
- Fix CG solver options for ITERATIVE_SCHUR, which did not copy min_num_iterations
+ Adaptive numeric differentiation using Ridders' method.
- Change-Id: If31bc53b49ec20426fd438b79b8fa1f69d11e861
-
-commit b41f048256d1a8184cbe874b5a96dffa7fa4630d
-Author: Martin Baeuml <baeuml@gmail.com>
-Date: Fri Sep 5 15:03:32 2014 +0200
-
- Remove obsolete include of numeric_diff_functor.h.
+ This method numerically computes function derivatives in different
+ scales, extrapolating between intermediate results to conserve function
+ evaluations. Adaptive differentiation is essential to produce accurate
+ results for functions with noisy derivatives.
- numeric_diff_functor.h was removed and does not exist anymore.
+ Full changelist:
+ -Created a new type of NumericDiffMethod (RIDDERS).
+ -Implemented EvaluateRiddersJacobianColumn in NumericDiff.
+ -Created unit tests with f(x) = x^2 + [random noise] and
+ f(x) = exp(x).
- Change-Id: I07bf04bf81142551e867b95b83a0653e11cad54c
+ Change-Id: I2d6e924d7ff686650272f29a8c981351e6f72091
-commit b7fb6056a717cc3c372cfb7115c527ee8bc05ddb
+commit 070bba4b43b4b7449628bf456a10452fd2b34d28
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Sep 3 11:19:02 2014 -0700
+Date: Tue Aug 25 13:37:33 2015 -0700
- Remove NumericDiffFunctor.
+ Lint fixes from William Rucklidge
- Its API was broken, and its implementation was an unnecessary
- layer of abstraction over CostFunctionToFunctor.
-
- Change-Id: I18fc261fc6a3620b51a9eeb4dde0af03d753af69
+ Change-Id: I719e8852859c970091df842e59c44e02e2c65827
-commit 175fa8ff09049110a8509409f60cee5fd52cdbe6
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Sep 2 06:49:08 2014 -0700
+commit 887a20ca7f02a1504e35f7cabbdfb2e0842a0b0b
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Wed Aug 12 21:41:43 2015 +0100
- CostFunctionToFunctor allows dynamic number of residuals.
+ Build position independent code when compiling Ceres statically.
- The code itself was perfectly capable of handling residuals, but there
- was an overly strict runtime check that had to be removed.
+ - Previously, when Ceres was built as a static library we did not
+ compile position independent code. This means that the resulting
+ static library could not be linked against shared libraries, but
+ could be used by executables.
+ - To enable the use of a static Ceres library by other shared libraries
+ as reported in [1], the static library must be generated from
+ position independent code (except on Windows, where PIC does not
+ apply).
- Thanks to Domink Reitzle for reporting this.
+ [1] https://github.com/Itseez/opencv_contrib/pull/290#issuecomment-130389471
- Change-Id: I6a6d000a7c5203dd5945a61b4caeda1b8aeb09c9
+ Change-Id: I99388f1784ece688f91b162d009578c5c97ddaf6
-commit 70ace0d5a5601901288974fcf27919754260cf0e
-Author: Johannes Schönberger <hannesschoenberger@gmail.com>
-Date: Sat Aug 30 15:52:34 2014 -0400
-
- Fix max. linear solver iterations in ConjugateGradientsSolver
-
- Change-Id: Ice0cef46441dbc1c121eeb42113667a46c96936f
-
-commit c5d8d0680250f5eb554577d30d28fc805b03fab9
+commit 860bba588b981a5718f6b73e7e840e5b8757fe65
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Aug 29 20:31:19 2014 -0700
+Date: Tue Aug 25 09:43:21 2015 -0700
- Fix a unused function error with Eigen version 3.2.1 or less.
+ Fix a bug in DetectStructure
- Thanks to Johannes Schoenberger for reporting this.
+ The logic for determing static/dynamic f-block size in
+ DetectStructure was broken in a corner case, where the very first
+ row block which was used to initialize the f_block_size contained
+ more than one f blocks of varying sizes. The way the if block
+ was structured, no iteration was performed on the remaining
+ f-blocks and the loop failed to detect that the f-block size
+ was actually changing.
- Change-Id: Ie17d28f2a68734a978a8c95007724bc4055de43a
-
-commit 0e1cc2a55488e4cf381833baaa3531c02ce9d69e
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Aug 29 09:16:56 2014 -0700
-
- Fix the build on Eigen version 3.2.1 and older.
+ If in the remaining row blocks, there were no row blocks
+ with varying f-block sizes, the function will erroneously
+ return a static f-block size.
+
+ Thanks to Johannes Schonberger for providing a reproduction for this
+ rather tricky corner case.
- Change-Id: I18f5cb5d42113737d7b8f78a67acee28bd5b3e08
+ Change-Id: Ib442a041d8b7efd29f9653be6a11a69d0eccd1ec
-commit 5f96c62b56222f27e606f2246a8a16b6942af8d1
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Aug 28 23:06:17 2014 -0700
+commit b0cbc0f0b0a22f01724b7b647a4a94db959cc4e4
+Author: Johannes Schönberger <hannesschoenberger@gmail.com>
+Date: Thu Aug 20 14:21:30 2015 -0400
- Add Block AMD ordering for SPARSE_SCHUR + EIGEN_SPARSE.
-
- Ordering routines for the Schur complement when using EIGEN_SPARSE.
- Also integration into SchurComplementSolver.
-
- Part of this CL is also a refactoring of the block jacobian matrix
- construction.
+ Reduce memory footprint of SubsetParameterization
- Change-Id: I11d665cc7d4867c64190e6fed1118f4d2e13d59b
+ Change-Id: If113cb4696d5aef3e50eed01fba7a3d4143b7ec8
-commit 7344626c04d19ca1dc4871c377c4422c744b1bca
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Aug 28 22:03:09 2014 -0700
+commit ad2a99777786101411a971e59576ca533a297013
+Author: Sergey Sharybin <sergey.vfx@gmail.com>
+Date: Sat Aug 22 11:18:45 2015 +0200
- Let EIGEN_SPARSE + SPARSE_NORMAL_CHOLESKY use block AMD.
+ Fix for reoder program unit test when built without suitesparse
- Modify SparseNormalCholeskySolver to use a pre-ordered Jacobian
- matrix.
+ This commit fixes failure of reorder_program_test when Ceres is built without
+ any suitesparse.
- Change-Id: Ib4d725d7a2d7bb94ea76dbb3a9b172784dbc8ea0
+ Change-Id: Ia23ae8dfd20c482cb9cd1301f17edf9a34df3235
-commit 9f7032369ea4e432f0fb507cb6d2209741ee6946
+commit 4bf3868beca9c17615f72ec03730cddb3676acaa
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Aug 28 21:46:43 2014 -0700
+Date: Sun Aug 9 15:24:45 2015 -0700
- Block AMD for SparseNormalCholesky + EIGEN_SPARSE.
+ Fix a bug in the Schur eliminator
- This is just the reordering routine. The integration with
- SparseNormalCholesky shall happen in a subsequent CL.
+ The schur eliminator treats rows with e blocks and row with
+ no e blocks separately. The template specialization logic only
+ applies to the rows with e blocks.
- Change-Id: I39ddc32aa66b11c368faf75404850fa0ae0d2b3a
-
-commit b9331cd4077100d645be22a912d5743eeda72878
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Aug 28 14:42:27 2014 -0700
-
- Cleanup reorder_program.cc
+ So, in cases where the rows with e-blocks have a fixed size f-block
+ but the rows without e-blocks have f-blocks of varying sizes,
+ DetectStructure will return a static f-block size, but we need to be
+ careful that we do not blindly use that static f-block size everywhere.
- Program::SetParameterOffsetsAndIndex() was being called willy nilly.
- Now the invariant is that any function that actually reorders the
- program, updates the offsets and indices.
+ This patch fixes a bug where such care was not being taken, where
+ it was assumed that the static f-block size could be assumed for all
+ f-block sizes.
- Also the logic around handling EIGEN_SPARSE has been simplified in
- anticipation of the block AMD code that is forthcoming.
+ A new test is added, which triggers an exception in debug mode. In
+ release mode this error does not present itself, due to a peculiarity
+ of the way Eigen works.
- Last but not the least, num_eliminate_blocks, which is a rather
- cryptic name to begin with has been replaced by the more meaningful
- size_of_first_elimination_group.
+ Thanks to Werner Trobin for reporting this bug.
- Change-Id: I77e684f699a93b53e76aa406d64f40f8704df813
+ Change-Id: I8ae7aabf8eed8c3f9cf74b6c74d632ba44f82581
-commit 79491a3f4a3939a3cce4644da7a998b7782b963a
+commit 1635ce726078f00264b89d7fb6e76fd1c2796e59
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Aug 28 13:57:50 2014 -0700
+Date: Wed Aug 19 00:26:02 2015 -0700
- Solver::FullReport now reports build config.
+ Fix a bug in the reordering code.
- The header of Summary::FullReport now looks like
+ When the user provides an ordering which starts at a non-zero group id,
+ or has gaps in the groups, then CAMD, the algorithm used to reorder
+ the program can crash or return garbage results.
- Solver Summary (v 1.10.0-suitesparse-cxsparse-lapack-no_openmp)
+ The solution is to map the ordering into grouping constraints, and then
+ to re-number the groups to be contiguous using a call to
+ MapValuesToContiguousRange. This was already done for CAMD based
+ ordering for Schur type solvers, but was not done for SPARSE_NORMAL_CHOLESKY.
- Original Reduced
- Parameter blocks 22122 22122
- Parameters 66462 66462
- Residual blocks 83718 83718
- Residual 167436 167436
+ Thanks to Bernhard Zeisl for not only reporting the bug but also
+ providing a reproduction.
- Change-Id: Id1b81bbf90ba412d19e2dd3687eeb9d372b72c1b
+ Change-Id: I5cfae222d701dfdb8e1bda7f0b4670a30417aa89
-commit 48068c753e91d77f6c96ef2d529a27ef8ee3947c
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Aug 28 13:03:40 2014 -0700
+commit 4c3f8987e7f0c51fd367cf6d43d7eb879e79589f
+Author: Simon Rutishauser <simon.rutishauser@pix4d.com>
+Date: Thu Aug 13 11:10:44 2015 +0200
- Lint cleanup from William Rucklidge.
+ Add missing CERES_EXPORT to ComposedLoss
- Change-Id: Ie0e0aa58440be7a4f67dcd633dbb6f1bb0c051a8
+ Change-Id: Id7db388d41bf53e6e5704039040c9d2c6bf4c29c
-commit 6a51b135e6298e8ba44a58cc2b54a170ab61a82f
+commit 1a740cc787b85b883a0703403a99fe49662acb79
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Aug 28 10:48:29 2014 -0700
+Date: Tue Aug 11 18:08:05 2015 -0700
- Fix solver_test.cc
+ Add the option to use numeric differentiation to nist and more_garbow_hillstrom
- When Eigen is not installed, Solver::IsValid was not detecting
- it correctly.
-
- Change-Id: Id285a84d829a9e20bc5de663adfca66ac31e08f3
+ Change-Id: If0a5caef90b524dcf5e2567c5b681987f5459401
-commit 62a8d64453ee41dae56710a4eead3fadf2fe1a4e
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Aug 27 22:54:00 2014 -0700
+commit ea667ede5c038d6bf3d1c9ec3dbdc5072d1beec6
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sun Aug 9 16:56:13 2015 +0100
- Expand check for lack of a sparse linear algebra library.
-
- The LinearSolver factory was creating a NULL linear solver
- if only Eigen's sparse linear algebra backend was available.
+ Fix EIGENSPARSE option help s/t it displays in CMake ncurses GUI.
- Thanks to Michael Samples and Domink Reitzle for reporting this.
+ - Shorten description for EIGENSPARSE to a single line, as otherwise
+ it is not correctly displayed in the ncurses CMake GUI.
+ - Made explicit in description that this results in an LGPL licensed
+ version of Ceres (this is also made clear in the CMake log output if
+ EIGENSPARSE is enabled).
- Change-Id: I35e3a6c0fd0da2a31934adb5dfe4cad29577cc73
+ Change-Id: I11678a9cbc7a817133c22128da01055a3cb8a26d
-commit 12eb389b4ec4113a2260c1a192a1d3f8d1b6a2d3
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Aug 27 22:18:33 2014 -0700
+commit a14ec27fb28ab2e8d7f1c9d88e41101dc6c0aab5
+Author: Richard Stebbing <richie.stebbing@gmail.com>
+Date: Fri Aug 7 08:42:03 2015 -0700
- Fix Eigen Row/ColMajor bug in NumericDiffCostFunction.
+ Fix SparseNormalCholeskySolver with dynamic sparsity.
- If the parameter block size is 1, asking Eigen to create
- a row-major matrix triggers a compile time error. Previously
- we were handling the case where the number of rows in the
- jacobian block was known statically, but the problem is present
- when the nummber of rows is dynamic.
+ The previous implementation incorrectly cached the outer product matrix
+ pattern even when `dynamic_sparsity = true`.
- This CL fixes this problem.
+ Change-Id: I1e58315a9b44f2f457d07c56b203ab2668bfb8a2
+
+commit 3dd7fced44ff00197fa9fcb1f2081d12be728062
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sun Aug 9 16:38:50 2015 +0100
+
+ Remove legacy dependency detection macros.
- Thanks to Dominik Reitzle for reporting this.
+ - Before the new CMake buildsystem in 1.8, Ceres used non-standard
+ HINTS variables for dependencies. For backwards compatibility CMake
+ macros were added to translate these legacy variables into the new
+ (standard) variables.
+ - As it has now been multiple releases since the legacy variables
+ were used and they no longer appear in any of the documentation
+ support for them has now expired.
- Change-Id: I99c3eec3558e66ebf4efa51c4dee8ce292ffe0c1
+ Change-Id: I2cc72927ed711142ba7943df334ee008181f86a2
-commit 6c25185bb1643d8d0f3d8e1a7b82a058156aa869
+commit 8b32e258ccce1eed2a50bb002add16cad13aff1e
Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Thu Aug 28 16:07:51 2014 +0100
+Date: Sun Aug 9 15:42:39 2015 +0100
- Fix crash in Covariance if # threads > 1 requested without OpenMP.
+ Fix failed if() condition expansion if gflags is not found.
- - Previously if options.num_threads > 1 was given to Covariance compiled
- without OpenMP, a CHECK() would be triggered in program_evalutor.
+ - If a CMake-ified version of gflags is not detected, then
+ gflags_LIBRARIES is not set and the TARGET condition within a
+ multiconditional if() statement prevents configuration.
- Change-Id: Iaade4f5ed5326b0c59a7014c750c41ee026e1124
+ Change-Id: Ia92e97523d7a1478ab36539726b9540d7cfee5d0
-commit 6f89d850fb4ace0104abccf467c4fe37ad378b79
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Aug 27 11:51:50 2014 -0700
+commit cc8d47aabb9d63ba4588ba7295058a6191c2df83
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sun Aug 9 15:18:42 2015 +0100
- Further build breakage fixes.
+ Update all CMake to lowercase function name style.
- 1. Allow the minimum number of linear solver iterations to be zero.
- 2. Fix conjugate gradients solver's iteration loop to be sane again.
+ - Updated to new CMake style where function names are all lowercase,
+ this will be backwards compatible as CMake function names are
+ case insensitive.
+ - Updated using Emacs' M-x unscreamify-cmake-buffer.
- Change-Id: I8594815fec940c2b30e28eb58ec5d8baacf13dae
+ Change-Id: If7219816f560270e59212813aeb021353a64a0e2
-commit dd596d0f0d6d08951efc2c11a639b546db2080c6
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Aug 27 11:26:50 2014 -0700
+commit 1f106904c1f47460c35ac03258d6506bb2d60838
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sun Aug 9 14:55:02 2015 +0100
- Fix the broken build.
+ Update minimum iOS version to 7.0 for shared_ptr/unordered_map.
+
+ - In order to correctly detect shared_ptr (& unordered_map)
+ the iOS version must be >= 7.0 (Xcode 5.0+). This only affects the
+ SIMULATOR(64) platform builds, as the OS (device) build uses the
+ latest SDK which is now likely 8.0+.
- Change-Id: I083cf1cca1bf4cca956193022d450364e73f833a
+ Change-Id: Iefec8f03408b8cdc7a495f442ebba081f800adb0
-commit d906afae22b05b9b9a9a2657924f4c0bf1a9b5ea
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Aug 25 22:32:38 2014 -0700
+commit 16ecd40523a408e7705c9fdb0e159cef2007b8ab
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sat Aug 8 17:32:31 2015 +0100
- A number of bug fixes.
+ Fix bug in gflags' <= 2.1.2 exported CMake configuration.
- 1. Fix a build breakage in graph_test.
- 2. Respect Solver::Options::min_num_linear_solver_iterations in
- conjugate_gradients_solver.cc
+ - gflags <= 2.1.2 has a bug in its exported gflags-config.cmake:
+ https://github.com/gflags/gflags/issues/110 whereby it sets
+ gflags_LIBRARIES to a non-existent 'gflags' target.
+ - This causes linker errors if gflags is installed in a non-standard
+ location (as otherwise CMake resolves gflags to -lgflags which
+ links if gflags is installed somewhere on the current path).
+ - We now check for this case, and search for the correct gflags imported
+ target and update gflags_LIBRARIES to reference it if found, otherwise
+ proceed on to the original manual search to try to find gflags.
- Thanks to Johannes Schönberger for reporting these.
-
- Change-Id: Ib32e3929bf5d92dd576ae5b53d4d88797095136e
+ Change-Id: Iceccc3ee53c7c2010e41cc45255f966e7b13d526
-commit dab955928c6d0942d6acc5b5f1c4c11260d0767d
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sun Aug 17 13:14:50 2014 -0700
+commit 56be8de007dfd65ed5a31c795eb4a08ad765f411
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Thu Jun 25 21:31:00 2015 +0100
- Add an unweighted graph.
-
- Rename Graph -> WeightedGraph.
- Add a new Graph class, which is cheaper to construct and
- work with if the weights are not needed.
+ Add docs for new CXX11 option & mask option for Windows.
- This cuts down the cost of building the Hessian graph
- significantly.
+ - The CXX11 option has no effect on Windows, as there, any new C++11
+ features are enabled by default, as such to avoid confusion we only
+ present the option for non-Windows.
- Change-Id: Id0cfc81dd2c0bb5ff8f63a1b55aa133c53c0c869
+ Change-Id: I38925ae3bb8c16682d404468ba95c611a519b9b9
-commit a0c282adbd268c2ad82551fab31fe1cf8d0c4282
+commit cf863b6415ac4dbf3626e70adeac1ac0f3d87ee5
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sun Aug 24 22:19:03 2014 -0700
+Date: Thu Aug 6 14:52:18 2015 -0700
- Add EIGEN_STRONG_INLINE annotation to jet.h
+ Remove the spec file needed for generating RPMs.
- This improves performance when using MSVC on Windows. On GCC
- there will be no effect.
+ Now that ceres is part of RawHide, there is no need to carry
+ this spec file with the ceres distribution.
- Change-Id: I555a81ff6823c2855d64773073f75af50c48d716
+ Change-Id: Icc400b9874ba05ba05b353e2658f1de94c72299e
-commit 20de0a7793c574e964350a623446136889f74632
-Author: Björn Piltz <bjornpiltz@gmail.com>
-Date: Mon Aug 25 17:05:54 2014 +0200
+commit 560940fa277a469c1ab34f1aa303ff1af9c3cacf
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Sat Jul 11 22:21:31 2015 -0700
- Fixed Malformed regex
+ A refactor of the cubic interpolation code
- I got the following error with MSVC:
- Syntax error at index 9 in simple regular expression "NumGroups()": '(' is unsupported.
+ 1. Push the boundary handling logic into the underlying array
+ object. This has two very significant impacts:
- Change-Id: Id1952831d81d3eb5d73bbed8c311914c4c8ab51f
+ a. The interpolation code becomes extremely simple to write
+ and to test.
+
+ b. The user has more flexibility in implementing how out of bounds
+ values are handled. We provide one default implementation.
+
+ Change-Id: Ic2f6cf9257ce7110c62e492688e5a6c8be1e7df2
-commit ccf8aea988269841d84d746e52164d5056c67a10
-Author: Björn Piltz <bjornpiltz@gmail.com>
-Date: Mon Aug 25 16:16:01 2014 +0200
+commit dfdf19e111c2b0e6daeb6007728ec2f784106d49
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Wed Aug 5 15:20:57 2015 -0700
- Fixed MSVC error C2124: divide or mod by zero
-
- Alternatively, if quiet_NaN is not available on all platforms a workaround would be:
- volatile double zero = 0.0;
- double x = 1.0/zero;
- The 'volatile' is needed to shut up "warning C4723: potential divide by 0".
+ Lint cleanup from Jim Roseborough
- Change-Id: If2bbdab8540595aa2e0079e1eb6b6fed6d4a6ef7
+ Change-Id: Id6845c85644d40e635ed196ca74fc51a387aade4
-commit 8de27be218d42b282d7f15867733ad07058b0887
+commit 7444f23ae245476a7ac8421cc2f88d6947fd3e5f
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Aug 19 08:22:40 2014 -0700
+Date: Mon Aug 3 12:22:44 2015 -0700
- Fix a bug in TrustRegionPreprocessor
+ Fix a typo in small_blas.h
- TrustRegionPreprocessor was not setting Minimizer::Options::is_constrained.
- This meant that the line search for bounds constraints was not being
- invoked for bounds constrained problems.
+ The reason this rather serious looking typo has not
+ caused any problems uptil now is because NUM_ROW_B is
+ computed but never actually used.
- And some minor lint cleanup.
+ Thanks to Werner Trobin for pointing this out.
- Change-Id: I18852cfaf1b33fd90b7d8c196f2063c128126658
+ Change-Id: Id2b4d9326ec21baec8a85423e3270aefbafb611e
-commit 1745dd615b3897a3ef9896acfdba67eee1739bf4
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu Jun 5 21:30:13 2014 -0700
+commit 5a48b92123b30a437f031eb24b0deaadc8f60d26
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sat Jul 4 17:59:52 2015 +0100
- Refactor SolverImpl.
-
- Replace SolverImpl with
+ Export Ceres build directory into local CMake package registry.
- a. A minimizer specific preprocessor class.
- b. A generic Solve function inside solver.cc
- c. Presummarize and Postsummarize functions to handle
- updates to the summary object.
+ - Optionally use CMake's export() functionality to export the Ceres
+ build directory as a package into the local CMake package registry.
+ - This enables the detection & use of Ceres from CMake *without*
+ requiring that Ceres be installed.
- The existing SolverImpl class was a mixture of the above three
- things and was increasingly complicated code to follow. This change,
- breaks it into its three separate constituents, with the aims of
- better separation of concerns and thus better testability and
- reliability.
+ Change-Id: Ib5a7588446f490e1b405878475b6b1dd13accd1f
+
+commit d9790e77894ea99d38137d359d6118315b2d1601
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Sun Jul 12 19:39:47 2015 -0700
+
+ Add ProductParameterization
- The call to Solver::Solve() now consists of
+ Often a parameter block is the Cartesian product of a number of
+ manifolds. For example, a rigid transformation SE(3) = SO(3) x R^3
+ In such cases, where you have the local parameterization
+ of the individual manifolds available,
+ ProductParameterization can be used to construct a local
+ parameterization of the cartesian product.
- 1. Presummarize - summarize the given state of the problem and solver
- options.
- 2. Preprocess - Setup everything that is needed to call the minimizer.
- This includes, removing redundant parameter and residual blocks,
- setting up the reordering for the linear solver, creating the
- linear solver, evaluator, inner iteration minimizer etc.
- 3. Minimize.
- 4. Post summarize - summarize the result of the preprocessing and the
- solve.
+ Change-Id: I4b5bcbd2407a38739c7725b129789db5c3d65a20
+
+commit 7b4fb69dad49eaefb5d2d47ef0d76f48ad7fef73
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Sun Jun 28 21:43:46 2015 +0100
+
+ Cleanup FindGflags & use installed gflags CMake config if present.
+
+ - Split out gflags namespace detection methods:
+ check_cxx_source_compiles() & regex, into separate functions.
+ - Use installed/exported gflags CMake configuration (present for
+ versions >= 2.1) if available, unless user expresses a preference not
+ to, or specifies search directories, in which case fall back to manual
+ search for components.
+ -- Prefer installed gflags CMake configurations over exported gflags
+ build directories on all OSs.
+ - Remove custom version of check_cxx_source_compiles() that attempted
+ to force the build type of the test project. This only worked for
+ NMake on Windows, not MSVC as msbuild ignored our attempts to force
+ the build type. Now we always use the regex method on Windows if
+ we cannot find an installed gflags CMake configuration which works
+ even on MSVC by bypassing msbuild.
+ - Add default search paths for gflags on Windows.
+
+ Change-Id: I083b267d97a7a5838a1314f3d41a61ae48d5a2d7
+
+commit b3063c047906d4a44503dc0187fdcbbfcdda5f38
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Wed Jul 15 20:56:56 2015 +0100
+
+ Add default glog install location on Windows to search paths.
- Change-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a
+ Change-Id: I083d368be48986e6780c11460f5a07b2f3b6c900