| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077 | 
							- .. _chapter-version-history:
 
- ===============
 
- Version History
 
- ===============
 
- 1.11.0
 
- ======
 
- New Features
 
- ------------
 
- #. Adaptive numeric differentiation using Ridders' method. (Tal Ben-Nun)
 
- #. Add ``CubicInterpolator`` and ``BiCubicInterpolator`` to allow
 
-    smooth interpolation of sampled functions and integration with
 
-    automatic differentiation.
 
- #. Add method to return covariance in tangent space. (Michael Vitus &
 
-    Steve Hsu)
 
- #. Add Homogeneous vector parameterization. (Michael Vitus)
 
- #. Add a ``ProductParameterization``, a local parameterization that
 
-    can be constructed as a cartesian product of other local
 
-    parameterization.
 
- #. Add DynamicCostFunctionToFunctor. (David Gossow)
 
- #. Optionally export Ceres build directory into local CMake package
 
-    registry.
 
- #. Faster ``SPARSE_NORMAL_CHOLESKY`` in the presence of dynamic
 
-    sparsity.
 
- Bug Fixes & Minor Changes
 
- -------------------------
 
- #. Remove use of link-time optimisation (LTO) for all compilers due to
 
-    portability issues with gtest / type_info::operator== & Eigen with
 
-    Clang on OS X vs GCC 4.9+ on Linux requiring contradictory 'fixes'.
 
- #. Use link-time optimisation (LTO) only when compiling Ceres itself,
 
-    not tests or examples, to bypass gtest / type_info::operator== issue.
 
- #. Use old minimum iOS version flags on Xcode < 7.0.
 
- #. Add gtest-specific flags when building/using as a shared library.
 
- #. Clean up iOS.cmake to use xcrun/xcodebuild & libtool.
 
- #. Import the latest version of ``googletest``.
 
- #. Refactored ``system_test`` into ``bundle_adjustment_test`` and
 
-    ``system_test``, where each test case is its own test.
 
- #. Fix invalid memory access bug in
 
-    ``CompressedRowSparseMatrix::AppendRows`` when it was called with a
 
-    matrix of size zero.
 
- #. Build position independent code when compiling Ceres statically
 
-    (Alexander Alekhin).
 
- #. Fix a bug in DetectStructure (Johannes Schonberger).
 
- #. Reduce memory footprint of SubsetParameterization (Johannes
 
-    Schonberger).
 
- #. Fix for reorder program unit test when built without suitesparse
 
-    (Sergey Sharybin).
 
- #. Fix a bug in the Schur eliminator (Werner Trobin).
 
- #. Fix a bug in the reordering code (Bernhard Zeisl).
 
- #. Add missing CERES_EXPORT to ComposedLoss (Simon Rutishauser).
 
- #. Add the option to use numeric differentiation to ``nist`` and
 
-    ``more_garbow_hillstrom``.
 
- #. Fix EIGENSPARSE option help s/t it displays in CMake ncurses GUI.
 
- #. Fix SparseNormalCholeskySolver with dynamic sparsity (Richie Stebbing).
 
- #. Remove legacy dependency detection macros.
 
- #. Fix failed if() condition expansion if gflags is not found.
 
- #. Update all CMake to lowercase function name style.
 
- #. Update minimum iOS version to 7.0 for shared_ptr/unordered_map.
 
- #. Fix bug in gflags' <= 2.1.2 exported CMake configuration.
 
- #. Remove the spec file needed for generating RPMs.
 
- #. Fix a typo in small_blas.h (Werber Trobin).
 
- #. Cleanup FindGflags & use installed gflags CMake config if present.
 
- #. Add default glog install location on Windows to search paths (bvanevery).
 
- #. Add default Eigen install location on Windows to search paths (bvanevery).
 
- #. Fix explanation of config.h generation in bare config.h.
 
- #. Fix unused parameter compiler warnings in numeric_diff.h.
 
- #. Increase tolerance for a test in polynomial_test (Taylor Braun
 
-    Jones).
 
- #. Fix addition of Gerrit commit hook when Ceres is a git submodule
 
-    (Chris Cooper).
 
- #. Fix missing EIGEN_VERSION expansion typo.
 
- #. Fix links to SuiteSparse & CXSparse (Henrique Mendonça).
 
- #. Ensure Eigen is at least 3.1.0 for Eigen/SparseCore.
 
- #. Add option to use C++11 (not TR1) shared_ptr & unordered_map
 
-    (Norman Goldstein).
 
- #. Fix an incorrect usage message in bundle_adjuster.cc
 
- #. Gracefully disable docs if Sphinx is not found.
 
- #. Explicitly use (new) default OS X rpath policy if present.
 
- #. Add support of EIGEN_SPARSE type in
 
-    IsSparseLinearAlgebraLibraryTypeAvailable function (Pierre Moulon).
 
- #. Allow the LossFunction contained in a LossFunctionWrapper to be
 
-    NULL. This is consistent with how NULL LossFunctions are treated
 
-    everywhere else. (Simon Rutishauser).
 
- #. Improve numeric differentation near zero.
 
- #. Refactored DynamicNumericDiffCostFunction to use NumericDiff (Tal
 
-    Ben-Nun).
 
- #. Remove use of :caption tag in Sphinx.
 
- #. Add a small test to make sure GradientProblemSolver works correctly
 
-    (Petter Strandmark).
 
- #. Add simple unit tests for GradientProblem (Petter Strandmark).
 
- #. Make the robust curve fitting example robust.
 
- #. Homogenize convergence operators in docs and code (Johannes
 
-    Schonberger).
 
- #. Add parameter_tolerance convergence to line search minimizer
 
-    (Johannes Schonberger).
 
- #. Fix bug where pow(JetA,JetB) returned wrong result for JetA==0
 
-    (Russell Smith).
 
- #. Remove duplicate step norm computation (Johannes Schonberger).
 
- #. Enhance usability when encountering Eigen version mismatches (Andrew Hundt).
 
- #. Add PLY file logger before and after BA in order to ease visual
 
-    comparison (Pierre Moulon).
 
- #. Fix CMake config file docs to include 2.8.x & 3.x styles.
 
- #. Python3 fixes (Markus Moll).
 
- #. Remove confusing code from DenseJacobianWriter (Michael Vitus).
 
- #. Add documentation on CMake package installation process.
 
- #. Revert a call to SolveUpperTriangularUsingCholesky.
 
- #. Make CERES_EIGEN_VERSION macro independent of CMake.
 
- #. Add versions of dependencies used to FullReport().
 
- #. Ensure local config.h is used if Ceres is already installed.
 
- #. Small messaging and comment updates in CMake
 
- #. Handle possible presence of library prefixes in MSVC (Sylvain Duchêne).
 
- #. Use -O2 not -O3 on MinGW to workaround issue with Eigen (s1m3mu3@gmail.com).
 
- #. Increase tolerance in small_blas test for Cygwin (s1m3mu3@gmail.com).
 
- #. Fix iOS cmake file for cmake 3.0 (Jack Feng)
 
- #. Fix missing gflags shlwapi dependency on MinGW (s1m3mu3@gmail.com).
 
- #. Add thread dependency & fix namespace detection on Windows for gflags
 
-    (arrigo.benedetti@gmail.com).
 
- #. Rename macros in the public API to have a ``CERES_`` prefix.
 
- #. Fix ``OrderedGroup::Reverse()`` when it is empty (Chris Sweeney).
 
- #. Update the code to point to ceres-solver.org.
 
- #. Update documentation to point to the GitHub issue tracker.
 
- #. Disable ``LAPACK`` for iOS builds. (Greg Coombe)
 
- #. Force use of single-thread in ``Problem::Evaluate()`` without OpenMP.
 
- #. Less strict check for multithreading. (Chris Sweeney)
 
- #. Update tolerances in small_blas_test.cc (Philipp Hubner)
 
- #. Documentation corrections (Steve Hsu)
 
- #. Fixed ``sampled_function.cc`` (Pablo Speciale)
 
- #. Fix example code in the documentation. (Rodney Hoskinson)
 
- #. Improve the error handling in Conjugate Gradients.
 
- #. Improve preconditioner documentation.
 
- #. Remove dead code from fpclassify.h.
 
- #. Make Android.mk threads sensitive.
 
- #. Changed the ``CURRENT_CONFIG_INSTALL_DIR`` to be a variable local
 
-    to Ceres. (Chris Sweeney)
 
- #. Fix typo in the comments in ``Jet.h``. (Julius Ziegler)
 
- #. Add the ASL at ETH Zurich, Theia & OpenPTrack to the list of users.
 
- #. Fixed a typo in the documentation. (Richard Stebbing)
 
- #. Fixed a boundary handling bug in the BiCubic interpolation
 
-    code. (Bernhard Zeisl)
 
- #. Fixed a ``MSVC`` compilation bug in the cubic interpolation code
 
-    (Johannes Schönberger)
 
- #. Add covariance related files to the Android build.
 
- #. Update Ubuntu 14.04 installation instructions. (Filippo Basso)
 
- #. Improved logging for linear solver failures.
 
- #. Improved crash messages in ``Problem``.
 
- #. Hide Homebrew related variables in CMake GUI.
 
- #. Add SuiteSparse link dependency for
 
-    compressed_col_sparse_matrix_utils_test.
 
- #. Autodetect Homebrew install prefix on OSX.
 
- #. Lint changes from William Rucklidge and Jim Roseborough.
 
- #. Remove ``using namespace std:`` from ``port.h``
 
- #. Add note about glog not currently compiling against gflags 2.1.
 
- #. Add explicit no sparse linear algebra library available option.
 
- #. Improve some wording in the FAQ. (Vasily Vylkov)
 
- #. Delete Incomplete LQ Factorization.
 
- #. Add a pointer to MacPorts. (Markus Moll)
 
- 1.10.0
 
- ======
 
- New Features
 
- ------------
 
- #. Ceres Solver can now be used to solve general unconstrained
 
-    optimization problems. See the documentation for
 
-    ``GradientProblem`` and ``GradientProblemSolver``.
 
- #. ``Eigen`` can now be as a sparse linear algebra backend. This can
 
-    be done by setting
 
-    ``Solver::Options::sparse_linear_algebra_library_type`` to
 
-    ``EIGEN_SPARSE``. Performance should be comparable to ``CX_SPARSE``.
 
-    .. NOTE::
 
-       Because ``Eigen`` is a header only library, and some of the code
 
-       related to sparse Cholesky factorization is LGPL, building Ceres
 
-       with support for Eigen's sparse linear algebra is disabled by
 
-       default and should be enabled explicitly.
 
-    .. NOTE::
 
-       For good performance, use Eigen version 3.2.2 or later.
 
- #. Added ``EIGEN_SPARSE_QR`` algorithm for covariance estimation using
 
-    ``Eigen``'s sparse QR factorization. (Michael Vitus)
 
- #. Faster inner iterations when using multiple threads.
 
- #. Faster ``ITERATIVE_SCHUR`` + ``SCHUR_JACOBI`` for small to medium
 
-    sized problems (see documentation for
 
-    ``Solver::Options::use_explicit_schur_complement``).
 
- #. Faster automatic Schur ordering.
 
- #. Reduced memory usage when solving problems with dynamic sparsity.
 
- #. ``CostFunctionToFunctor`` now supports dynamic number of residuals.
 
- #. A complete re-write of the problem preprocessing phase.
 
- #. ``Solver::Summary::FullReport`` now reports the build configuration
 
-    for Ceres.
 
- #. When building on Android, the ``NDK`` version detection logic has
 
-    been improved.
 
- #. The ``CERES_VERSION`` macro has been improved and replaced with the
 
-    ``CERES_VERSION_STRING`` macro.
 
- #. Added ``Solver::Options::IsValid`` which allows users to validate
 
-    their solver configuration before calling ``Solve``.
 
- #. Added ``Problem::GetCostFunctionForResidualBlock`` and
 
-    ``Problem::GetLossFunctionForResidualBlock``.
 
- #. Added Tukey's loss function. (Michael Vitus)
 
- #. Added RotationMatrixToQuaternion
 
- #. Compute & report timing information for line searches.
 
- #. Autodetect gflags namespace.
 
- #. Expanded ``more_garbow_hillstrom.cc``.
 
- #. Added a pointer to Tal Ben-Nun's MSVC wrapper to the docs.
 
- #. Added the ``<2,3,6>`` Schur template specialization. (Alessandro
 
-    Dal Grande)
 
- Backward Incompatible API Changes
 
- ---------------------------------
 
- #. ``NumericDiffFunctor`` has been removed. It's API was broken, and
 
-    the implementation was an unnecessary layer of abstraction over
 
-    ``CostFunctionToFunctor``.
 
- #. ``POLAK_RIBIRERE`` conjugate gradients direction type has been
 
-    renamed to ``POLAK_RIBIERE``.
 
- #. ``Solver::Options::solver_log`` has been removed. If needed this
 
-    iteration callback can easily be implemented in user code.
 
- #. The ``SPARSE_CHOLESKY`` algorithm for covariance estimation has
 
-    been removed. It is not rank revealing and numerically poorly
 
-    behaved. Sparse QR factorization is a much better way to do this.
 
- #. The ``SPARSE_QR`` algorithm for covariance estimation has been
 
-    renamed to ``SUITE_SPARSE_QR`` to be consistent with
 
-    ``EIGEN_SPARSE_QR``.
 
- #. ``Solver::Summary::preconditioner_type`` has been replaced with
 
-    ``Solver::Summary::preconditioner_type_given`` and
 
-    ``Solver::Summary::preconditioner_type_used`` to be more consistent
 
-    with how information about the linear solver is communicated.
 
- #. ``CERES_VERSION`` and ``CERES_ABI_VERSION`` macros were not
 
-    terribly useful. They have been replaced with
 
-    ``CERES_VERSION_MAJOR``, ``CERES_VERSION_MINOR`` ,
 
-    ``CERES_VERSION_REVISION`` and ``CERES_VERSION_ABI`` macros. In
 
-    particular the functionality of ``CERES_VERSION`` is provided by
 
-    ``CERES_VERSION_STRING`` macro.
 
- Bug Fixes
 
- ---------
 
- #. Do not try the gradient step if TR step line search fails.
 
- #. Fix missing include in libmv_bundle_adjuster on OSX.
 
- #. Conditionally log evaluation failure warnings.
 
- #. Runtime uses four digits after the decimal in Summary:FullReport.
 
- #. Better options checking for TrustRegionMinimizer.
 
- #. Fix RotationMatrixToAngleAxis when the angle of rotation is near
 
-    PI. (Tobias Strauss)
 
- #. Sometimes gradient norm based convergence would miss a step with a
 
-    substantial solution quality improvement. (Rodney Hoskinson)
 
- #. Ignore warnings from within Eigen/SparseQR (3.2.2).
 
- #. Fix empty Cache HELPSTRING parsing error on OS X 10.10 Yosemite.
 
- #. Fix a formatting error TrustRegionMinimizer logging.
 
- #. Add an explicit include for local_parameterization.h (cooordz)
 
- #. Fix a number of typos in the documentation (Martin Baeuml)
 
- #. Made the logging in TrustRegionMinimizer consistent with
 
-    LineSearchMinimizer.
 
- #. Fix some obsolete documentation in CostFunction::Evaluate.
 
- #. Fix CG solver options for ITERATIVE_SCHUR, which did not copy
 
-    min_num_iterations (Johannes Schönberger)
 
- #. Remove obsolete include of numeric_diff_functor.h. (Martin Baeuml)
 
- #. Fix max. linear solver iterations in ConjugateGradientsSolver
 
-    (Johannes Schönberger)
 
- #. Expand check for lack of a sparse linear algebra library. (Michael
 
-    Samples and Domink Reitzle)
 
- #. Fix Eigen Row/ColMajor bug in NumericDiffCostFunction. (Dominik
 
-    Reitzle)
 
- #. Fix crash in Covariance if # threads > 1 requested without OpenMP.
 
- #. Fixed Malformed regex. (Björn Piltz)
 
- #. Fixed MSVC error C2124: divide or mod by zero. (Björn Piltz)
 
- #. Add missing #include of <limits> for loss functions.
 
- #. Make canned loss functions more robust.
 
- #. Fix type of suppressed compiler warning for Eigen 3.2.0.
 
- #. Suppress unused variable warning from Eigen 3.2.0.
 
- #. Add "make install" to the install instructions.
 
- #. Correct formula in documentation of
 
-    Solver::Options::function_tolerance. (Alessandro Gentilini)
 
- #. Add release flags to iOS toolchain.
 
- #. Fix a broken hyperlink in the documentation. (Henrique Mendonca)
 
- #. Add fixes for multiple definitions of ERROR on Windows to docs.
 
- #. Compile miniglog into Ceres if enabled on all platforms.
 
- #. Add two missing files to Android.mk (Greg Coombe)
 
- #. Fix Cmake error when using miniglog. (Greg Coombe)
 
- #. Don't build miniglog unconditionally as a static library (Björn Piltz)
 
- #. Added a missing include. (Björn Piltz)
 
- #. Conditionally disable SparseNormalCholesky.
 
- #. Fix a memory leak in program_test.cc.
 
- 1.9.0
 
- =====
 
- New Features
 
- ------------
 
- #. Bounds constraints: Support for upper and/or lower bounds on
 
-    parameters when using the trust region minimizer.
 
- #. Dynamic Sparsity: Problems in which the sparsity structure of the
 
-    Jacobian changes over the course of the optimization can now be
 
-    solved much more efficiently. (Richard Stebbing)
 
- #. Improved support for Microsoft Visual C++ including the ability to
 
-    build and ship DLLs. (Björn Piltz, Alex Stewart and Sergey
 
-    Sharybin)
 
- #. Support for building on iOS 6.0 or higher (Jack Feng).
 
- #. Autogeneration of config.h that captures all the defines used to
 
-    build and use Ceres Solver.
 
- #. Simpler and more informative solver termination type
 
-    reporting. (See below for more details)
 
- #. New `website <http://www.ceres-solver.org>`_ based entirely on
 
-    Sphinx.
 
- #. ``AutoDiffLocalParameterization`` allows the use of automatic
 
-    differentiation for defining ``LocalParameterization`` objects
 
-    (Alex Stewart)
 
- #. LBFGS is faster due to fewer memory copies.
 
- #. Parameter blocks are not restricted to be less than 32k in size,
 
-    they can be up to 2G in size.
 
- #. Faster ``SPARSE_NORMAL_CHOLESKY`` solver when using ``CX_SPARSE``
 
-    as the sparse linear algebra library.
 
- #. Added ``Problem::IsParameterBlockPresent`` and
 
-    ``Problem::GetParameterization``.
 
- #. Added the (2,4,9) and (2,4,8) template specializations.
 
- #. An example demonstrating the use of
 
-    DynamicAutoDiffCostFunction. (Joydeep Biswas)
 
- #. Homography estimation example from Blender demonstrating the use of
 
-    a custom ``IterationCallback``. (Sergey Sharybin)
 
- #. Support user passing a custom CMAKE_MODULE_PATH (for BLAS /
 
-    LAPACK).
 
- Backward Incompatible API Changes
 
- ---------------------------------
 
- #. ``Solver::Options::linear_solver_ordering`` used to be a naked
 
-    pointer that Ceres took ownership of. This is error prone behaviour
 
-    which leads to problems when copying the ``Solver::Options`` struct
 
-    around. This has been replaced with a ``shared_ptr`` to handle
 
-    ownership correctly across copies.
 
- #. The enum used for reporting the termination/convergence status of
 
-    the solver has been renamed from ``SolverTerminationType`` to
 
-    ``TerminationType``.
 
-    The enum values have also changed. ``FUNCTION_TOLERANCE``,
 
-    ``GRADIENT_TOLERANCE`` and ``PARAMETER_TOLERANCE`` have all been
 
-    replaced by ``CONVERGENCE``.
 
-    ``NUMERICAL_FAILURE`` has been replaed by ``FAILURE``.
 
-    ``USER_ABORT`` has been renamed to ``USER_FAILURE``.
 
-    Further ``Solver::Summary::error`` has been renamed to
 
-    ``Solver::Summary::message``. It contains a more detailed
 
-    explanation for why the solver terminated.
 
- #. ``Solver::Options::gradient_tolerance`` used to be a relative
 
-    gradient tolerance. i.e., The solver converged when
 
-    .. math::
 
-       \|g(x)\|_\infty < \text{gradient_tolerance} * \|g(x_0)\|_\infty
 
-    where :math:`g(x)` is the gradient of the objective function at
 
-    :math:`x` and :math:`x_0` is the parmeter vector at the start of
 
-    the optimization.
 
-    This has changed to an absolute tolerance, i.e. the solver
 
-    converges when
 
-    .. math::
 
-       \|g(x)\|_\infty < \text{gradient_tolerance}
 
- #. Ceres cannot be built without the line search minimizer
 
-    anymore. Thus the preprocessor define
 
-    ``CERES_NO_LINE_SEARCH_MINIMIZER`` has been removed.
 
- Bug Fixes
 
- ---------
 
- #. Disabled warning C4251. (Björn Piltz)
 
- #. Do not propagate 3d party libs through
 
-    `IMPORTED_LINK_INTERFACE_LIBRARIES_[DEBUG/RELEASE]` mechanism when
 
-    building shared libraries. (Björn Piltz)
 
- #. Fixed errant verbose levels (Björn Piltz)
 
- #. Variety of code cleanups, optimizations and bug fixes to the line
 
-    search minimizer code (Alex Stewart)
 
- #. Fixed ``BlockSparseMatrix::Transpose`` when the matrix has row and
 
-    column blocks. (Richard Bowen)
 
- #. Better error checking when ``Problem::RemoveResidualBlock`` is
 
-    called. (Alex Stewart)
 
- #. Fixed a memory leak in ``SchurComplementSolver``.
 
- #. Added ``epsilon()`` method to ``NumTraits<ceres::Jet<T, N> >``. (Filippo
 
-    Basso)
 
- #. Fixed a bug in `CompressedRowSparseMatrix::AppendRows`` and
 
-    ``DeleteRows``.q
 
- #. Handle empty problems consistently.
 
- #. Restore the state of the ``Problem`` after a call to
 
-    ``Problem::Evaluate``. (Stefan Leutenegger)
 
- #. Better error checking and reporting for linear solvers.
 
- #. Use explicit formula to solve quadratic polynomials instead of the
 
-    eigenvalue solver.
 
- #. Fix constant parameter handling in inner iterations (Mikael
 
-    Persson).
 
- #. SuiteSparse errors do not cause a fatal crash anymore.
 
- #. Fix ``corrector_test.cc``.
 
- #. Relax the requirements on loss function derivatives.
 
- #. Minor bugfix to logging.h (Scott Ettinger)
 
- #. Updated ``gmock`` and ``gtest`` to the latest upstream version.
 
- #. Fix build breakage on old versions of SuiteSparse.
 
- #. Fixed build issues related to Clang / LLVM 3.4 (Johannes
 
-    Schönberger)
 
- #. METIS_FOUND is never set. Changed the commit to fit the setting of
 
-    the other #._FOUND definitions. (Andreas Franek)
 
- #. Variety of bug fixes and cleanups to the ``CMake`` build system
 
-    (Alex Stewart)
 
- #. Removed fictious shared library target from the NDK build.
 
- #. Solver::Options now uses ``shared_ptr`` to handle ownership of
 
-    ``Solver::Options::linear_solver_ordering`` and
 
-    ``Solver::Options::inner_iteration_ordering``. As a consequence the
 
-    ``NDK`` build now depends on ``libc++`` from the ``LLVM`` project.
 
- #. Variety of lint cleanups (William Rucklidge & Jim Roseborough)
 
- #. Various internal cleanups including dead code removal.
 
- 1.8.0
 
- =====
 
- New Features
 
- ------------
 
- #. Significant improved ``CMake`` files with better robustness,
 
-    dependency checking and GUI support. (Alex Stewart)
 
- #. Added ``DynamicNumericDiffCostFunction`` for numerically
 
-    differentiated cost functions whose sizing is determined at run
 
-    time.
 
- #. ``NumericDiffCostFunction`` now supports a dynamic number of
 
-    residuals just like ``AutoDiffCostFunction``.
 
- #. ``Problem`` exposes more of its structure in its API.
 
- #. Faster automatic differentiation (Tim Langlois)
 
- #. Added the commonly occuring ``2_d_d`` template specialization for
 
-    the Schur Eliminator.
 
- #. Faster ``ITERATIVE_SCHUR`` solver using template specializations.
 
- #. Faster ``SCHUR_JACOBI`` preconditioner construction.
 
- #. Faster ``AngleAxisRotatePoint``.
 
- #. Faster Jacobian evaluation when a loss function is used.
 
- #. Added support for multiple clustering algorithms in visibility
 
-    based preconditioning, including a new fast single linkage
 
-    clustering algorithm.
 
- Bug Fixes
 
- ---------
 
- #. Fix ordering of ParseCommandLineFlags() & InitGoogleTest() for
 
-    Windows. (Alex Stewart)
 
- #. Remove DCHECK_GE checks from fixed_array.h.
 
- #. Fix build on MSVC 2013 (Petter Strandmark)
 
- #. Fixed ``AngleAxisToRotationMatrix`` near zero.
 
- #. Move ``CERES_HASH_NAMESPACE`` macros to ``collections_port.h``.
 
- #. Fix handling of unordered_map/unordered_set on OSX 10.9.0.
 
- #. Explicitly link to libm for ``curve_fitting_c.c``. (Alex Stewart)
 
- #. Minor type conversion fix to autodiff.h
 
- #. Remove RuntimeNumericDiffCostFunction.
 
- #. Fix operator= ambiguity on some versions of Clang. (Alex Stewart)
 
- #. Various Lint cleanups (William Rucklidge & Jim Roseborough)
 
- #. Modified installation folders for Windows. (Pablo Speciale)
 
- #. Added librt to link libraries for SuiteSparse_config on Linux. (Alex Stewart)
 
- #. Check for presence of return-type-c-linkage option with
 
-    Clang. (Alex Stewart)
 
- #. Fix Problem::RemoveParameterBlock after calling solve. (Simon Lynen)
 
- #. Fix a free/delete bug in covariance_impl.cc
 
- #. Fix two build errors. (Dustin Lang)
 
- #. Add RequireInitialization = 1 to NumTraits::Jet.
 
- #. Update gmock/gtest to 1.7.0
 
- #. Added IterationSummary::gradient_norm.
 
- #. Reduced verbosity of the inner iteration minimizer.
 
- #. Fixed a bug in TrustRegionMinimizer. (Michael Vitus)
 
- #. Removed android/build_android.sh.
 
- 1.7.0
 
- =====
 
- Backward Incompatible API Changes
 
- ---------------------------------
 
- #. ``Solver::Options::sparse_linear_algebra_library`` has been renamed
 
-    to ``Solver::Options::sparse_linear_algebra_library_type``.
 
- New Features
 
- ------------
 
- #. Sparse and dense covariance estimation.
 
- #. A new Wolfe line search. (Alex Stewart)
 
- #. ``BFGS`` line search direction. (Alex Stewart)
 
- #. C API
 
- #. Speeded up the use of loss functions > 17x.
 
- #. Faster ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR``
 
-    solvers.
 
- #. Support for multiple dense linear algebra backends. In particular
 
-    optimized ``BLAS`` and ``LAPACK`` implementations (e.g., Intel MKL,
 
-    ACML, OpenBLAS etc) can now be used to do the dense linear
 
-    algebra for ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and
 
-    ``DENSE_SCHUR``
 
- #. Use of Inner iterations can now be adaptively stopped. Iteration
 
-    and runtime statistics for inner iterations are not reported in
 
-    ``Solver::Summary`` and ``Solver::Summary::FullReport``.
 
- #. Improved inner iteration step acceptance criterion.
 
- #. Add BlockRandomAccessCRSMatrix.
 
- #. Speeded up automatic differentiation by 7\%.
 
- #. Bundle adjustment example from libmv/Blender (Sergey Sharybin)
 
- #. Shared library building is now controlled by CMake, rather than a custom
 
-    solution. Previously, Ceres had a custom option, but this is now deprecated
 
-    in favor of CMake's built in support for switching between static and
 
-    shared. Turn on BUILD_SHARED_LIBS to get shared Ceres libraries.
 
- #. No more dependence on Protocol Buffers.
 
- #. Incomplete LQ factorization.
 
- #. Ability to write trust region problems to disk.
 
- #. Add sinh, cosh, tanh and tan functions to automatic differentiation
 
-    (Johannes Schönberger)
 
- #. Simplifications to the cmake build file.
 
- #. ``miniglog`` can now be used as a replacement for ``google-glog``
 
-    on non Android platforms. (This is NOT recommended).
 
- Bug Fixes
 
- ---------
 
- #. Fix ``ITERATIVE_SCHUR`` solver to work correctly when the schur
 
-    complement is of size zero. (Soohyun Bae)
 
- #. Fix the ``spec`` file for generating ``RPM`` packages (Brian Pitts
 
-    and Taylor Braun-Jones).
 
- #. Fix how ceres calls CAMD (Manas Jagadev)
 
- #. Fix breakage on old versions of SuiteSparse. (Fisher Yu)
 
- #. Fix warning C4373 in Visual Studio (Petter Strandmark)
 
- #. Fix compilation error caused by missing suitesparse headers and
 
-    reorganize them to be more robust. (Sergey Sharybin)
 
- #. Check GCC Version before adding -fast compiler option on
 
-    OSX. (Steven Lovegrove)
 
- #. Add documentation for minimizer progress output.
 
- #. Lint and other cleanups (William Rucklidge and James Roseborough)
 
- #. Collections port fix for MSC 2008 (Sergey Sharybin)
 
- #. Various corrections and cleanups in the documentation.
 
- #. Change the path where CeresConfig.cmake is installed (Pablo
 
-    Speciale)
 
- #. Minor errors in documentation (Pablo Speciale)
 
- #. Updated depend.cmake to follow CMake IF convention. (Joydeep
 
-    Biswas)
 
- #. Stablize the schur ordering algorithm.
 
- #. Update license header in split.h.
 
- #. Enabling -O4 (link-time optimization) only if compiler/linker
 
-    support it. (Alex Stewart)
 
- #. Consistent glog path across files.
 
- #. ceres-solver.spec: Use cleaner, more conventional Release string
 
-    (Taylor Braun-Jones)
 
- #. Fix compile bug on RHEL6 due to missing header (Taylor Braun-Jones)
 
- #. CMake file is less verbose.
 
- #. Use the latest upstream version of google-test and gmock.
 
- #. Rationalize some of the variable names in ``Solver::Options``.
 
- #. Improve Summary::FullReport when line search is used.
 
- #. Expose line search parameters in ``Solver::Options``.
 
- #. Fix update of L-BFGS history buffers after they become full. (Alex
 
-    Stewart)
 
- #. Fix configuration error on systems without SuiteSparse installed
 
-    (Sergey Sharybin)
 
- #. Enforce the read call returns correct value in ``curve_fitting_c.c``
 
-    (Arnaud Gelas)
 
- #. Fix DynamicAutoDiffCostFunction (Richard Stebbing)
 
- #. Fix Problem::RemoveParameterBlock documentation (Johannes
 
-    Schönberger)
 
- #. Fix a logging bug in parameter_block.h
 
- #. Refactor the preconditioner class structure.
 
- #. Fix an uninitialized variable warning when building with ``GCC``.
 
- #. Fix a reallocation bug in
 
-    ``CreateJacobianBlockSparsityTranspose``. (Yuliy Schwartzburg)
 
- #. Add a define for O_BINARY.
 
- #. Fix miniglog-based Android NDK build; now works with NDK r9. (Scott Ettinger)
 
- 1.6.0
 
- =====
 
- New Features
 
- ------------
 
- #. Major Performance improvements.
 
-    a. Schur type solvers (``SPARSE_SCHUR``, ``DENSE_SCHUR``,
 
-       ``ITERATIVE_SCHUR``) are significantly faster due to custom BLAS
 
-       routines and fewer heap allocations.
 
-    b. ``SPARSE_SCHUR`` when used with ``CX_SPARSE`` now uses a block
 
-       AMD for much improved factorization performance.
 
-    c. The jacobian matrix is pre-ordered so that
 
-       ``SPARSE_NORMAL_CHOLESKY`` and ``SPARSE_SCHUR`` do not have to
 
-       make copies inside ``CHOLMOD``.
 
-    d. Faster autodiff by replacing division by multplication by inverse.
 
-    e. When compiled without threads, the schur eliminator does not pay
 
-       the penalty for locking and unlocking mutexes.
 
- #. Users can now use ``linear_solver_ordering`` to affect the
 
-    fill-reducing ordering used by ``SUITE_SPARSE`` for
 
-    ``SPARSE_NORMAL_CHOLESKY``.
 
- #. ``Problem`` can now report the set of parameter blocks it knows about.
 
- #. ``TrustRegionMinimizer`` uses the evaluator to compute the gradient
 
-    instead of a matrix vector multiply.
 
- #. On ``Mac OS``, whole program optimization is enabled.
 
- #. Users can now use automatic differentiation to define new
 
-    ``LocalParameterization`` objects. (Sergey Sharybin)
 
- #. Enable larger tuple sizes for Visual Studio 2012. (Petter Strandmark)
 
- Bug Fixes
 
- ---------
 
- #. Update the documentation for ``CostFunction``.
 
- #. Fixed a typo in the documentation. (Pablo Speciale)
 
- #. Fix a typo in suitesparse.cc.
 
- #. Bugfix in ``NumericDiffCostFunction``. (Nicolas Brodu)
 
- #. Death to BlockSparseMatrixBase.
 
- #. Change Minimizer::Options::min_trust_region_radius to double.
 
- #. Update to compile with stricter gcc checks. (Joydeep Biswas)
 
- #. Do not modify cached CMAKE_CXX_FLAGS_RELEASE. (Sergey Sharybin)
 
- #. ``<iterator>`` needed for back_insert_iterator. (Petter Strandmark)
 
- #. Lint cleanup. (William Rucklidge)
 
- #. Documentation corrections. (Pablo Speciale)
 
- 1.5.0
 
- =====
 
- Backward Incompatible API Changes
 
- ---------------------------------
 
- #. Added ``Problem::Evaluate``. Now you can evaluate a problem or any
 
-    part of it without calling the solver.
 
-    In light of this the following settings have been deprecated and
 
-    removed from the API.
 
-    - ``Solver::Options::return_initial_residuals``
 
-    - ``Solver::Options::return_initial_gradient``
 
-    - ``Solver::Options::return_initial_jacobian``
 
-    - ``Solver::Options::return_final_residuals``
 
-    - ``Solver::Options::return_final_gradient``
 
-    - ``Solver::Options::return_final_jacobian``
 
-    Instead we recommend using something like this.
 
-    .. code-block:: c++
 
-      Problem problem;
 
-      // Build problem
 
-      vector<double> initial_residuals;
 
-      problem.Evaluate(Problem::EvaluateOptions(),
 
-                       NULL, /* No cost */
 
-                       &initial_residuals,
 
-                       NULL, /* No gradient */
 
-                       NULL  /* No jacobian */ );
 
-      Solver::Options options;
 
-      Solver::Summary summary;
 
-      Solver::Solve(options, &problem, &summary);
 
-      vector<double> final_residuals;
 
-      problem.Evaluate(Problem::EvaluateOptions(),
 
-                       NULL, /* No cost */
 
-                       &final_residuals,
 
-                       NULL, /* No gradient */
 
-                       NULL  /* No jacobian */ );
 
- New Features
 
- ------------
 
- #. Problem now supports removal of ParameterBlocks and
 
-    ResidualBlocks. There is a space/time tradeoff in doing this which
 
-    is controlled by
 
-    ``Problem::Options::enable_fast_parameter_block_removal``.
 
- #. Ceres now supports Line search based optimization algorithms in
 
-    addition to trust region algorithms. Currently there is support for
 
-    gradient descent, non-linear conjugate gradient and LBFGS search
 
-    directions.
 
- #. Added ``Problem::Evaluate``. Now you can evaluate a problem or any
 
-    part of it without calling the solver. In light of this the
 
-    following settings have been deprecated and removed from the API.
 
-    - ``Solver::Options::return_initial_residuals``
 
-    - ``Solver::Options::return_initial_gradient``
 
-    - ``Solver::Options::return_initial_jacobian``
 
-    - ``Solver::Options::return_final_residuals``
 
-    - ``Solver::Options::return_final_gradient``
 
-    - ``Solver::Options::return_final_jacobian``
 
- #. New, much improved HTML documentation using Sphinx.
 
- #. Changed ``NumericDiffCostFunction`` to take functors like
 
-    ``AutoDiffCostFunction``.
 
- #. Added support for mixing automatic, analytic and numeric
 
-    differentiation. This is done by adding ``CostFunctionToFunctor``
 
-    and ``NumericDiffFunctor`` objects to the API.
 
- #. Sped up the robust loss function correction logic when residual is
 
-    one dimensional.
 
- #. Sped up ``DenseQRSolver`` by changing the way dense jacobians are
 
-    stored. This is a 200-500% improvement in linear solver performance
 
-    depending on the size of the problem.
 
- #. ``DENSE_SCHUR`` now supports multi-threading.
 
- #. Greatly expanded ``Summary::FullReport``:
 
-    - Report the ordering used by the ``LinearSolver``.
 
-    - Report the ordering used by the inner iterations.
 
-    - Execution timing breakdown into evaluations and linear solves.
 
-    - Effective size of the problem solved by the solver, which now
 
-      accounts for the size of the tangent space when using a
 
-      ``LocalParameterization``.
 
- #. Ceres when run at the ``VLOG`` level 3 or higher will report
 
-    detailed timing information about its internals.
 
- #. Remove extraneous initial and final residual evaluations. This
 
-    speeds up the solver a bit.
 
- #. Automatic differenatiation with a dynamic number of parameter
 
-    blocks. (Based on an idea by Thad Hughes).
 
- #. Sped up problem construction and destruction.
 
- #. Added matrix adapters to ``rotation.h`` so that the rotation matrix
 
-    routines can work with row and column major matrices. (Markus Moll)
 
- #. ``SCHUR_JACOBI`` can now be used without ``SuiteSparse``.
 
- #. A ``.spec`` file for producing RPMs. (Taylor Braun-Jones)
 
- #. ``CMake`` can now build the sphinx documentation (Pablo Speciale)
 
- #. Add support for creating a CMake config file during build to make
 
-    embedding Ceres in other CMake-using projects easier. (Pablo
 
-    Speciale).
 
- #. Better error reporting in ``Problem`` for missing parameter blocks.
 
- #. A more flexible ``Android.mk`` and a more modular build. If binary
 
-    size and/or compile time is a concern, larger parts of the solver
 
-    can be disabled at compile time.
 
- Bug Fixes
 
- ---------
 
- #. Compilation fixes for MSVC2010 (Sergey Sharybin)
 
- #. Fixed "deprecated conversion from string constant to char*"
 
-    warnings. (Pablo Speciale)
 
- #. Correctly propagate ifdefs when building without Schur eliminator
 
-    template specializations.
 
- #. Correct handling of ``LIB_SUFFIX`` on Linux. (Yuliy Schwartzburg).
 
- #. Code and signature cleanup in ``rotation.h``.
 
- #. Make examples independent of internal code.
 
- #. Disable unused member in ``gtest`` which results in build error on
 
-    OS X with latest Xcode. (Taylor Braun-Jones)
 
- #. Pass the correct flags to the linker when using
 
-    ``pthreads``. (Taylor Braun-Jones)
 
- #. Only use ``cmake28`` macro when building on RHEL6. (Taylor
 
-    Braun-Jones)
 
- #. Remove ``-Wno-return-type-c-linkage`` when compiling with
 
-    GCC. (Taylor Braun-Jones)
 
- #. Fix ``No previous prototype`` warnings. (Sergey Sharybin)
 
- #. MinGW build fixes. (Sergey Sharybin)
 
- #. Lots of minor code and lint fixes. (William Rucklidge)
 
- #. Fixed a bug in ``solver_impl.cc`` residual evaluation. (Markus
 
-    Moll)
 
- #. Fixed varidic evaluation bug in ``AutoDiff``.
 
- #. Fixed ``SolverImpl`` tests.
 
- #. Fixed a bug in ``DenseSparseMatrix::ToDenseMatrix()``.
 
- #. Fixed an initialization bug in ``ProgramEvaluator``.
 
- #. Fixes to Android.mk paths (Carlos Hernandez)
 
- #. Modify ``nist.cc`` to compute accuracy based on ground truth
 
-    solution rather than the ground truth function value.
 
- #. Fixed a memory leak in ``cxsparse.cc``. (Alexander Mordvintsev).
 
- #. Fixed the install directory for libraries by correctly handling
 
-    ``LIB_SUFFIX``. (Taylor Braun-Jones)
 
- 1.4.0
 
- =====
 
- Backward Incompatible API Changes
 
- ---------------------------------
 
- The new ordering API breaks existing code. Here the common case fixes.
 
- **Before**
 
- .. code-block:: c++
 
-  options.linear_solver_type = ceres::DENSE_SCHUR
 
-  options.ordering_type = ceres::SCHUR
 
- **After**
 
- .. code-block:: c++
 
-   options.linear_solver_type = ceres::DENSE_SCHUR
 
- **Before**
 
- .. code-block:: c++
 
-  options.linear_solver_type = ceres::DENSE_SCHUR;
 
-  options.ordering_type = ceres::USER;
 
-  for (int i = 0; i < num_points; ++i) {
 
-    options.ordering.push_back(my_points[i])
 
-  }
 
-  for (int i = 0; i < num_cameras; ++i) {
 
-    options.ordering.push_back(my_cameras[i])
 
-  }
 
-  options.num_eliminate_blocks = num_points;
 
- **After**
 
- .. code-block:: c++
 
-  options.linear_solver_type = ceres::DENSE_SCHUR;
 
-  options.ordering = new ceres::ParameterBlockOrdering;
 
-  for (int i = 0; i < num_points; ++i) {
 
-    options.linear_solver_ordering->AddElementToGroup(my_points[i], 0);
 
-  }
 
-  for (int i = 0; i < num_cameras; ++i) {
 
-    options.linear_solver_ordering->AddElementToGroup(my_cameras[i], 1);
 
-  }
 
- New Features
 
- ------------
 
- #. A new richer, more expressive and consistent API for ordering
 
-    parameter blocks.
 
- #. A non-linear generalization of Ruhe & Wedin's Algorithm II. This
 
-    allows the user to use variable projection on separable and
 
-    non-separable non-linear least squares problems. With
 
-    multithreading, this results in significant improvements to the
 
-    convergence behavior of the solver at a small increase in run time.
 
- #. An image denoising example using fields of experts. (Petter
 
-    Strandmark)
 
- #. Defines for Ceres version and ABI version.
 
- #. Higher precision timer code where available. (Petter Strandmark)
 
- #. Example Makefile for users of Ceres.
 
- #. IterationSummary now informs the user when the step is a
 
-    non-monotonic step.
 
- #. Fewer memory allocations when using ``DenseQRSolver``.
 
- #. GradientChecker for testing CostFunctions (William Rucklidge)
 
- #. Add support for cost functions with 10 parameter blocks in
 
-    ``Problem``. (Fisher)
 
- #. Add support for 10 parameter blocks in ``AutoDiffCostFunction``.
 
- Bug Fixes
 
- ---------
 
- #. static cast to force Eigen::Index to long conversion
 
- #. Change LOG(ERROR) to LOG(WARNING) in ``schur_complement_solver.cc``.
 
- #. Remove verbose logging from ``DenseQRSolve``.
 
- #. Fix the Android NDK build.
 
- #. Better handling of empty and constant Problems.
 
- #. Remove an internal header that was leaking into the public API.
 
- #. Memory leak in ``trust_region_minimizer.cc``
 
- #. Schur ordering was operating on the wrong object (Ricardo Martin)
 
- #. MSVC fixes (Petter Strandmark)
 
- #. Various fixes to ``nist.cc`` (Markus Moll)
 
- #. Fixed a jacobian scaling bug.
 
- #. Numerically robust computation of ``model_cost_change``.
 
- #. Signed comparison compiler warning fixes (Ricardo Martin)
 
- #. Various compiler warning fixes all over.
 
- #. Inclusion guard fixes (Petter Strandmark)
 
- #. Segfault in test code (Sergey Popov)
 
- #. Replaced ``EXPECT/ASSERT_DEATH`` with the more portable
 
-    ``EXPECT_DEATH_IF_SUPPORTED`` macros.
 
- #. Fixed the camera projection model in Ceres' implementation of
 
-    Snavely's camera model. (Ricardo Martin)
 
- 1.3.0
 
- =====
 
- New Features
 
- ------------
 
- #. Android Port (Scott Ettinger also contributed to the port)
 
- #. Windows port. (Changchang Wu and Pierre Moulon also contributed to the port)
 
- #. New subspace Dogleg Solver. (Markus Moll)
 
- #. Trust region algorithm now supports the option of non-monotonic steps.
 
- #. New loss functions ``ArcTanLossFunction``, ``TolerantLossFunction``
 
-    and ``ComposedLossFunction``. (James Roseborough).
 
- #. New ``DENSE_NORMAL_CHOLESKY`` linear solver, which uses Eigen's
 
-    LDLT factorization on the normal equations.
 
- #. Cached symbolic factorization when using ``CXSparse``.
 
-    (Petter Strandark)
 
- #. New example ``nist.cc`` and data from the NIST non-linear
 
-    regression test suite. (Thanks to Douglas Bates for suggesting this.)
 
- #. The traditional Dogleg solver now uses an elliptical trust
 
-    region (Markus Moll)
 
- #. Support for returning initial and final gradients & Jacobians.
 
- #. Gradient computation support in the evaluators, with an eye
 
-    towards developing first order/gradient based solvers.
 
- #. A better way to compute ``Solver::Summary::fixed_cost``. (Markus Moll)
 
- #. ``CMake`` support for building documentation, separate examples,
 
-    installing and uninstalling the library and Gerrit hooks (Arnaud
 
-    Gelas)
 
- #. ``SuiteSparse4`` support (Markus Moll)
 
- #. Support for building Ceres without ``TR1`` (This leads to
 
-    slightly slower ``DENSE_SCHUR`` and ``SPARSE_SCHUR`` solvers).
 
- #. ``BALProblem`` can now write a problem back to disk.
 
- #. ``bundle_adjuster`` now allows the user to normalize and perturb the
 
-    problem before solving.
 
- #. Solver progress logging to file.
 
- #. Added ``Program::ToString`` and ``ParameterBlock::ToString`` to
 
-    help with debugging.
 
- #. Ability to build Ceres as a shared library (MacOS and Linux only),
 
-    associated versioning and build release script changes.
 
- #. Portable floating point classification API.
 
- Bug Fixes
 
- ---------
 
- #. Fix how invalid step evaluations are handled.
 
- #. Change the slop handling around zero for model cost changes to use
 
-    relative tolerances rather than absolute tolerances.
 
- #. Fix an inadvertant integer to bool conversion. (Petter Strandmark)
 
- #. Do not link to ``libgomp`` when building on
 
-    windows. (Petter Strandmark)
 
- #. Include ``gflags.h`` in ``test_utils.cc``. (Petter
 
-    Strandmark)
 
- #. Use standard random number generation routines. (Petter Strandmark)
 
- #. ``TrustRegionMinimizer`` does not implicitly negate the
 
-    steps that it takes. (Markus Moll)
 
- #. Diagonal scaling allows for equal upper and lower bounds. (Markus Moll)
 
- #. TrustRegionStrategy does not misuse LinearSolver:Summary anymore.
 
- #. Fix Eigen3 Row/Column Major storage issue. (Lena Gieseke)
 
- #. QuaternionToAngleAxis now guarantees an angle in $[-\pi, \pi]$. (Guoxuan Zhang)
 
- #. Added a workaround for a compiler bug in the Android NDK to the
 
-    Schur eliminator.
 
- #. The sparse linear algebra library is only logged in
 
-    Summary::FullReport if it is used.
 
- #. Rename the macro ``CERES_DONT_HAVE_PROTOCOL_BUFFERS``
 
-    to ``CERES_NO_PROTOCOL_BUFFERS`` for consistency.
 
- #. Fix how static structure detection for the Schur eliminator logs
 
-    its results.
 
- #. Correct example code in the documentation. (Petter Strandmark)
 
- #. Fix ``fpclassify.h`` to work with the Android NDK and STLport.
 
- #. Fix a memory leak in the ``levenber_marquardt_strategy_test.cc``
 
- #. Fix an early return bug in the Dogleg solver. (Markus Moll)
 
- #. Zero initialize Jets.
 
- #. Moved ``internal/ceres/mock_log.h`` to ``internal/ceres/gmock/mock-log.h``
 
- #. Unified file path handling in tests.
 
- #. ``data_fitting.cc`` includes ``gflags``
 
- #. Renamed Ceres' Mutex class and associated macros to avoid
 
-    namespace conflicts.
 
- #. Close the BAL problem file after reading it (Markus Moll)
 
- #. Fix IsInfinite on Jets.
 
- #. Drop alignment requirements for Jets.
 
- #. Fixed Jet to integer comparison. (Keith Leung)
 
- #. Fix use of uninitialized arrays. (Sebastian Koch & Markus Moll)
 
- #. Conditionally compile gflag dependencies.(Casey Goodlett)
 
- #. Add ``data_fitting.cc`` to the examples ``CMake`` file.
 
- 1.2.3
 
- =====
 
- Bug Fixes
 
- ---------
 
- #. ``suitesparse_test`` is enabled even when ``-DSUITESPARSE=OFF``.
 
- #. ``FixedArray`` internal struct did not respect ``Eigen``
 
-    alignment requirements (Koichi Akabe & Stephan Kassemeyer).
 
- #. Fixed ``quadratic.cc`` documentation and code mismatch
 
-    (Nick Lewycky).
 
- 1.2.2
 
- =====
 
- Bug Fixes
 
- ---------
 
- #. Fix constant parameter blocks, and other minor fixes (Markus Moll)
 
- #. Fix alignment issues when combining ``Jet`` and
 
-    ``FixedArray`` in automatic differeniation.
 
- #. Remove obsolete ``build_defs`` file.
 
- 1.2.1
 
- =====
 
- New Features
 
- ------------
 
- #. Powell's Dogleg solver
 
- #. Documentation now has a brief overview of Trust Region methods and
 
-    how the Levenberg-Marquardt and Dogleg methods work.
 
- Bug Fixes
 
- ---------
 
- #. Destructor for ``TrustRegionStrategy`` was not virtual (Markus Moll)
 
- #. Invalid ``DCHECK`` in ``suitesparse.cc`` (Markus Moll)
 
- #. Iteration callbacks were not properly invoked (Luis Alberto Zarrabeiti)
 
- #. Logging level changes in ConjugateGradientsSolver
 
- #. VisibilityBasedPreconditioner setup does not account for skipped camera pairs. This was debugging code.
 
- #. Enable SSE support on MacOS
 
- #. ``system_test`` was taking too long and too much memory (Koichi Akabe)
 
- 1.2.0
 
- =====
 
- New Features
 
- ------------
 
- #. ``CXSparse`` support.
 
- #. Block oriented fill reducing orderings. This reduces the
 
-    factorization time for sparse ``CHOLMOD`` significantly.
 
- #. New Trust region loop with support for multiple trust region step
 
-    strategies. Currently only Levenberg-Marquardt is supported, but
 
-    this refactoring opens the door for Dog-leg, Stiehaug and others.
 
- #. ``CMake`` file restructuring.  Builds in ``Release`` mode by   default, and now has platform specific tuning flags.
 
- #. Re-organized documentation. No new content, but better
 
-    organization.
 
- Bug Fixes
 
- ---------
 
- #. Fixed integer overflow bug in ``block_random_access_sparse_matrix.cc``.
 
- #. Renamed some macros to prevent name conflicts.
 
- #. Fixed incorrent input to ``StateUpdatingCallback``.
 
- #. Fixes to AutoDiff tests.
 
- #. Various internal cleanups.
 
- 1.1.1
 
- =====
 
- Bug Fixes
 
- ---------
 
- #. Fix a bug in the handling of constant blocks. (Louis Simard)
 
- #. Add an optional lower bound to the Levenberg-Marquardt regularizer
 
-    to prevent oscillating between well and ill posed linear problems.
 
- #. Some internal refactoring and test fixes.
 
- 1.1.0
 
- =====
 
- New Features
 
- ------------
 
- #. New iterative linear solver for general sparse problems - ``CGNR``
 
-    and a block Jacobi preconditioner for it.
 
- #. Changed the semantics of how ``SuiteSparse`` dependencies are
 
-    checked and used. Now ``SuiteSparse`` is built by default, only if
 
-    all of its dependencies are present.
 
- #. Automatic differentiation now supports dynamic number of residuals.
 
- #. Support for writing the linear least squares problems to disk in
 
-    text format so that they can loaded into ``MATLAB``.
 
- #. Linear solver results are now checked for nan and infinities.
 
- #. Added ``.gitignore`` file.
 
- #. A better more robust build system.
 
- Bug Fixes
 
- ---------
 
- #. Fixed a strict weak ordering bug in the schur ordering.
 
- #. Grammar and typos in the documents and code comments.
 
- #. Fixed tests which depended on exact equality between floating point values.
 
- 1.0.0
 
- =====
 
- Initial open source release. Nathan Wiegand contributed to the Mac OSX
 
- port.
 
- Origins
 
- =======
 
- Ceres Solver grew out of the need for general least squares solving at
 
- Google. In early 2010, Sameer Agarwal and Fredrik Schaffalitzky
 
- started the development of Ceres Solver. Fredrik left Google shortly
 
- thereafter and Keir Mierle stepped in to take his place. After two
 
- years of on-and-off development, Ceres Solver was released as open
 
- source in May of 2012.
 
 
  |