Blob Blame History Raw


<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Version History &mdash; Ceres Solver</title>
  

  
  

  

  
  
    

  

  
  
    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  

  

  
    <link rel="top" title="Ceres Solver" href="index.html"/>
        <link rel="next" title="Bibliography" href="bibliography.html"/>
        <link rel="prev" title="Contributing" href="contributing.html"/> 

  
  <script src="_static/js/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search">
          

          
            <a href="index.html" class="icon icon-home"> Ceres Solver
          

          
          </a>

          
            
            
              <div class="version">
                1.13
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
                <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="features.html">Why?</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="derivatives.html">On Derivatives</a></li>
<li class="toctree-l1"><a class="reference internal" href="nnls_modeling.html">Modeling Non-linear Least Squares</a></li>
<li class="toctree-l1"><a class="reference internal" href="nnls_solving.html">Solving Non-linear Least Squares</a></li>
<li class="toctree-l1"><a class="reference internal" href="nnls_covariance.html">Covariance Estimation</a></li>
<li class="toctree-l1"><a class="reference internal" href="gradient_solver.html">General Unconstrained Minimization</a></li>
<li class="toctree-l1"><a class="reference internal" href="faqs.html">FAQS, Tips &amp; Tricks</a></li>
<li class="toctree-l1"><a class="reference internal" href="users.html">Users</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Version History</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id1">1.13.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#new-features">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#backward-incompatible-api-changes">Backward Incompatible API Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#bug-fixes-minor-changes">Bug Fixes &amp; Minor Changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id2">1.12.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id3">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">Backward Incompatible API Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">Bug Fixes &amp; Minor Changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id6">1.11.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id7">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id8">Bug Fixes &amp; Minor Changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id9">1.10.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id10">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id11">Backward Incompatible API Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#bug-fixes">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id12">1.9.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id13">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id14">Backward Incompatible API Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id15">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id16">1.8.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id17">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id18">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id19">1.7.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id20">Backward Incompatible API Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id21">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id22">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id23">1.6.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id24">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id25">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id26">1.5.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id27">Backward Incompatible API Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id28">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id29">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id30">1.4.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id31">Backward Incompatible API Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id32">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id33">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id34">1.3.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id35">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id36">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id37">1.2.3</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id38">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id39">1.2.2</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id40">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id41">1.2.1</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id42">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id43">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id44">1.2.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id45">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id46">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id47">1.1.1</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id48">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id49">1.1.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id50">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id51">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id52">1.0.0</a></li>
<li class="toctree-l2"><a class="reference internal" href="#origins">Origins</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bibliography.html">Bibliography</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="index.html">Ceres Solver</a>
      </nav>


      
      <div class="wy-nav-content">
        <div class="rst-content">
          

 



<div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="index.html">Docs</a> &raquo;</li>
      
    <li>Version History</li>
      <li class="wy-breadcrumbs-aside">
        
          
        
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="version-history">
<span id="chapter-version-history"></span><h1>Version History<a class="headerlink" href="#version-history" title="Permalink to this headline">¶</a></h1>
<div class="section" id="id1">
<h2>1.13.0<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<div class="section" id="new-features">
<h3>New Features<a class="headerlink" href="#new-features" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li><code class="docutils literal"><span class="pre">LineSearchMinimizer</span></code> and <code class="docutils literal"><span class="pre">GradientProblemSolver</span></code> are up to 2x
faster due to fewer function evaluations. (Sameer Agarwal)</li>
<li><code class="docutils literal"><span class="pre">SPARSE_NORMAL_CHOLESKY</span></code> is significantly faster because Ceres
now computes the normal equations exploiting the static block
sparsity structure. (Cheng Wang &amp; Sameer Agarwal)</li>
<li>Add compound with scalar operators for Jets. (Alex Stewart)</li>
<li>Enable support for AVX instructions for Jets. (Alex Stewart)</li>
</ol>
</div>
<div class="section" id="backward-incompatible-api-changes">
<h3>Backward Incompatible API Changes<a class="headerlink" href="#backward-incompatible-api-changes" title="Permalink to this headline">¶</a></h3>
<p>The enum <code class="docutils literal"><span class="pre">CovarianceAlgorithmType</span></code> which controls the linear algebra
algorithm used to compute the covariance used to combine the choice of
the algorithm and the choice of the sparse linear algebra library into
the enum name. So we had <code class="docutils literal"><span class="pre">SUITE_SPARSE_QR</span></code> and
<code class="docutils literal"><span class="pre">EIGEN_SPARSE_QR</span></code>. <code class="docutils literal"><span class="pre">Covariance::Options</span></code> now has a separate member
allowing the user to choose the sparse linear algebra library, just
like the solver and <code class="docutils literal"><span class="pre">CovarianceAlgorithmType</span></code> now takes values
<code class="docutils literal"><span class="pre">DENSE_SVD</span></code> and <code class="docutils literal"><span class="pre">SPARSE_QR</span></code>. This is a forward looking change that
will allow us to develop more flexible covariance estimation
algorithms with multiple linear algebra backends.</p>
</div>
<div class="section" id="bug-fixes-minor-changes">
<h3>Bug Fixes &amp; Minor Changes<a class="headerlink" href="#bug-fixes-minor-changes" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fix <code class="docutils literal"><span class="pre">InvertPSDMatrix</span></code> as it was triggering an Eigen assert in
Debug mode. (Philipp Hubner)</li>
<li>Fix cmake error from CeresConfig.cmake when Ceres not found (Taylor
Braun-Jones)</li>
<li>Completely refactored <code class="docutils literal"><span class="pre">SparseNormalCholeskySolver</span></code>. (Sameer
Agarwal)</li>
<li>Fixed time reporting in <code class="docutils literal"><span class="pre">Summary::FullReport</span></code> when
<code class="docutils literal"><span class="pre">LineSearchMinimizer</span></code> is used. (Sameer Agarwal)</li>
<li>Remove unused file: collections_port.cc. (Sameer Agarwal)</li>
<li><code class="docutils literal"><span class="pre">SPARSE_SCHUR</span></code> + <code class="docutils literal"><span class="pre">CX_SPARSE</span></code> = Faster (Sameer Agarwal)</li>
<li>Refactored a number of linear solver tests to be more thorough and
informative. (Sameer Agarwal)</li>
<li>Pass user-specified search hints as HINTS not PATHS. (Alex Stewart)</li>
<li>Prefer Eigen installs over exported build directories. (Alex
Stewart)</li>
<li>Add OpenMP flags when compiling for C if enabled. (Alex Stewart)</li>
<li>Add a missing <code class="docutils literal"><span class="pre">CERES_EXPORT</span></code> to GradientChecker (Sameer Agarwal)</li>
<li>Use target_compile_features() to specify C++11 requirement if
available. (Alex Stewart)</li>
<li>Update docs: .netrc &#8211;&gt; .gitcookies (Keir Mierle)</li>
<li>Fix implicit precission loss warning on 64-bit archs (Ricardo
Sanchez-Saez)</li>
<li>Optionally use exported Eigen CMake configuration if
available. (Alex Stewart)</li>
<li>Use <code class="docutils literal"><span class="pre">Ceres_[SOURCE/BINARY]_DIR</span></code> not <code class="docutils literal"><span class="pre">CMAKE_XXX_DIR</span></code> to support
nesting. (Alex Stewart)</li>
<li>Update <code class="docutils literal"><span class="pre">Problem::EvaluateOptions</span></code> documentation. (Sameer Agarwal)</li>
<li>Add public headers to CMake target for IDEs. (Devin Lane)</li>
<li>Add an article on interfacing with automatic
differentiation. (Sameer Agarwal)</li>
<li>Add default Fedora/Debian locations for CXSparse to search
paths. (Alex Stewart)</li>
<li>Add a test for <code class="docutils literal"><span class="pre">LineSearchMinimizer</span></code> (Sameer Agarwal)</li>
<li>Flatten the table of contents. (Sameer Agarwal)</li>
<li>Fix when <code class="docutils literal"><span class="pre">LineSearchMinimizer</span></code> adds the <code class="docutils literal"><span class="pre">IterationSummary`</span></code> to
<code class="docutils literal"><span class="pre">Solver::Summary</span></code> (Sameer Agarwal)</li>
<li>Fix search path for miniglog headers when Ceres is exported. (Alex
Stewart)</li>
<li>Fix ambiguous reference to <code class="docutils literal"><span class="pre">WARNING</span></code> when using miniglog. (Alex
Stewart)</li>
<li>Fix Jet/Eigen compatibility for Eigen &gt; 3.3 (Julien Pilet)</li>
<li>Add max severity option when <code class="docutils literal"><span class="pre">MINIGLOG</span></code> is enabled (Taylor
Braun-Jones)</li>
<li>Improvements to Schur template specializations (Sameer Agarwal)</li>
<li>Added an article on derivatives (Sameer Agarwal)</li>
<li>Require Eigen &gt;= 3.3 to define ScalarBinaryOpTraits in Jet. (Alex
Stewart)</li>
<li>A hacky fix for the Eigen::FullPivLU changes. (Sameer Agarwal)</li>
<li>Specify <code class="docutils literal"><span class="pre">ScalarBinaryOpTraits</span></code> for Jet types. (Chris Sweeney)</li>
<li>Remove spurious conversion from doubles to Jets. (Sameer Agarwal)</li>
<li>Fix an error in the tutorial code for <code class="docutils literal"><span class="pre">NumericDiffCostFunction</span></code>
(Sameer Agarwal)</li>
<li><code class="docutils literal"><span class="pre">CERES_EXPORT</span></code> fix to compile Ceres as DLL (Je Hyeong Hong)</li>
<li>Fix detection of deprecated Bessel function names on MSVC. (Alex
Stewart)</li>
<li>Ensure that partial evaluation of residuals triggers an error
(Sameer Agarwal)</li>
<li>Fix detection of CMake-built glog on Windows. (Alex Stewart)</li>
<li>Add additional search paths for glog &amp; Eigen on Windows. (Alex
Stewart)</li>
<li>Various minor grammar and bug fixes to the documentation (Sameer
Agarwal, Alex Stewart, William Rucklidge)</li>
</ol>
</div>
</div>
<div class="section" id="id2">
<h2>1.12.0<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id3">
<h3>New Features<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Aligned <code class="docutils literal"><span class="pre">Jet</span></code> matrices for improved automatic differentiation
performance. (Andrew Hunter)</li>
<li>Auto-differentiable implementations of Bessel functions, <code class="docutils literal"><span class="pre">floor</span></code>,
and <code class="docutils literal"><span class="pre">ceil</span></code> (Alessandro Gentilini &amp; Michael Vitus)</li>
<li>New 2D and 3D SLAM examples. (Michael Vitus)</li>
<li>Added <code class="docutils literal"><span class="pre">EigenQuaternionParameterization</span></code>. (Michael Vitus)</li>
<li>Added <code class="docutils literal"><span class="pre">Problem::IsParameterBlockConstant</span></code> (Thomas Schneider)</li>
<li>A complete refactoring of <code class="docutils literal"><span class="pre">TrustRegionMinimizer</span></code>. (Sameer Agarwal)</li>
<li>Gradient checking cleanup and local parameterization bugfix (David
Gossow)</li>
</ol>
</div>
<div class="section" id="id4">
<h3>Backward Incompatible API Changes<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li><code class="docutils literal"><span class="pre">Solver::Options::numeric_derivative_relative_step_size</span></code> has been
renamed to
<code class="docutils literal"><span class="pre">Solver::Options::gradient_check_numeric_derivative_relative_step_size</span></code>. (Sameer
Agarwal)</li>
</ol>
</div>
<div class="section" id="id5">
<h3>Bug Fixes &amp; Minor Changes<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Clear XXX_FOUND in Find&lt;XXX&gt;.cmake prior to searching. (Alex
Stewart)</li>
<li>Fix versioning in the documentation (Sameer Agarwal)</li>
<li>Fix missing gflags imported target definition in
CeresConfig.cmake. (Alex Stewart)</li>
<li>Make gflags a public dependency of Ceres if it and glog are
found. (Alex Stewart)</li>
<li>Add support for glog exported CMake target. (Alex Stewart)</li>
<li>Use <code class="docutils literal"><span class="pre">google::GLOG_WARNING</span></code> instead of <code class="docutils literal"><span class="pre">WARNING</span></code> in tests to
support MSVC. (Alex Stewart)</li>
<li>Update gtest and gmock to
<code class="docutils literal"><span class="pre">a2b8a8e07628e5fd60644b6dd99c1b5e7d7f1f47</span></code> (Sameer Agarwal)</li>
<li>Add MSVC-specific <code class="docutils literal"><span class="pre">#define</span></code> to expose math constants in
<code class="docutils literal"><span class="pre">&lt;cmath&gt;</span></code>. (Alex Stewart)</li>
<li>Fix typo. indepdendent -&gt; independent (Hung Lun)</li>
<li>Fix potential invalid reset of CMAKE_FIND_LIBRARY_PREFIXES on MSVC
(Alex Stewart)</li>
<li>Fix use of alignas(0) which is not ignored on GCC (Alex Stewart)</li>
<li>Use default alignment if alignof(std::max_align_t) &lt; 16 with C++11
(Alex Stewart)</li>
<li>Introduce a common base class for DynamicAutoDiffCostFunction and
DynamicNumericDiffCostFunction. (Sameer Agarwal)</li>
<li>Fix an exact equality test causing breakage in
gradient_checker_test. (Sameer Agarwal)</li>
<li>Add GradientProblemSolver::Options::parameter_tolerance. (Sameer
Agarwal)</li>
<li>Add missing T() wrappers for constants. (Rob Carroll)</li>
<li>Remove two checks from rotation.h (Sameer Agarwal)</li>
<li>Relax the tolerance in QuaternionParameterizationTestHelper. (Je
Hyeong Hong)</li>
<li>Occured -&gt; Occurred. (Sameer Agarwal)</li>
<li>Fix a test error in autodiff_test.cc. (Je Hyeong Hong)</li>
<li>Fix documentation source for templated function in <code class="docutils literal"><span class="pre">rotation.h</span></code>.</li>
<li>Add <code class="docutils literal"><span class="pre">package.xml</span></code> to enable Catkin builds. (Damon Kohler)</li>
<li>Relaxing Jacobian matching in Gradient Checker test. (David Gossow)</li>
<li>Allow SubsetParameterization to hold all parameters constant
(Sameer Agarwal)</li>
<li>Fix an Intel compiler error in covariance_impl.cc (Je Hyeong Hong)</li>
<li>Removing duplicate include directive. (David Gossow)</li>
<li>Remove two DCHECKs from CubicHermiteSpline. (Sameer Agarwal)</li>
<li>Fix some compiler warnings. (Richard Trieu)</li>
<li>Update ExpectArraysClose to use ExpectClose instead of
EXPECT_NEAR. (Phillip Hubner)</li>
<li>FindWithDefault returns by value rather than reference. (&#64;aradval)</li>
<li>Fix compiler errors on some systems. (David Gossow)</li>
<li>Note that Problem::Evaluate cannot be called from an
IterationCallback. (Sameer Agarwal)</li>
<li>Use ProductParameterization in bundle_adjuster.cc (Sameer Agarwal)</li>
<li>Enable support for OpenMP in Clang if detected. (Alex Stewart)</li>
<li>Remove duplicate entry for the NIST example in the docs. (Michael
Vitus)</li>
<li>Add additional logging for analyzing orderings (Sameer Agarwal)</li>
<li>Add readme for the sampled_function example. (Michael Vitus)</li>
<li>Use _j[0,1,n]() Bessel functions on MSVC to avoid deprecation
errors. (Alex Stewart &amp; Kichang Kim)</li>
<li>Fix: Copy minimizer option <code class="docutils literal"><span class="pre">is_silent</span></code> to
<code class="docutils literal"><span class="pre">LineSearchDirection::Options</span></code> (Nicolai Wojke)</li>
<li>Fix typos in <code class="docutils literal"><span class="pre">users.rst</span></code> (Sameer Agarwal)</li>
<li>Make some Jet comparisons exact. (Sameer Agarwal)</li>
<li>Add colmap to users.rst (Sameer Agarwal)</li>
<li>Fix step norm evaluation in LineSearchMinimizer (Sameer Agarwal)</li>
<li>Remove use of -Werror when compiling Ceres. (Alex Stewart)</li>
<li>Report Ceres compile options as components in find_package(). (Alex
Stewart)</li>
<li>Fix a spelling error in nnls_modeling.rst (Timer)</li>
<li>Only use collapse() directive with OpenMP 3.0 or higher. (Keir
Mierle)</li>
<li>Fix install path for CeresConfig.cmake to be architecture-aware.</li>
<li>Fix double conversion to degrees in rotation_test (Keir Mierle)</li>
<li>Make Jet string output more readable (Keir Mierle)</li>
<li>Fix rotation_test IsClose() and related tests (Keir Mierle)</li>
<li>Loosen an exact equality in local_parameterization_test (Sameer
Agarwal)</li>
<li>make_docs: Pass the file encoding to open() (Niels Ole Salscheider)</li>
<li>Fix error message returned when using SUITE_SPARSE_QR in covariance
estimation on a ceres built without SuiteSparse support. (Simon
Rutishauser)</li>
<li>Fix CXX11 option to be available on MinGW &amp; CygWin, but not
MSVC. (Alex Stewart)</li>
<li>Fix missing early return() in xxx_not_found() dependency
macros. (Alex Stewart)</li>
<li>Initialize <code class="docutils literal"><span class="pre">inner_iterations_were_useful_</span></code> correctly. (Sameer
Agarwal)</li>
<li>Add an implementation for GradientProblemSolver::Options::IsValid
(Sameer Agarwal)</li>
<li>Fix use of va_copy() if compiling with explicit C++ version &lt;
C++11. (Alex Stewart)</li>
<li>Install CMake files to lib/cmake/Ceres (Niels Ole Salscheider)</li>
<li>Allow users to override the documentation install directory. (Niels
Ole Salscheider)</li>
<li>Add covariance matrix for a vector of parameters (Wannes Van Loock)</li>
<li>Saner tolerances &amp; stricter LRE test. (Sameer Agarwal)</li>
<li>Fix a malformed sentence in the tutorial. (Sameer Agarwal)</li>
<li>Add logging for sparse Cholesky factorization using Eigen. (Sameer
Agarwal)</li>
<li>Use std::adjacent_find instead of std::unique. (Sameer Agarwal)</li>
<li>Improve logging in CompressedRowJacobianWriter on crash. (Sameer
Agarwal)</li>
<li>Fix free parameter block handling in covariance computation (Wannes
Van Loock)</li>
<li>Report the number of line search steps in FullReport. (Sameer
Agarwal)</li>
<li>Make CMake read Ceres version directly from
include/ceres/version.h. (Alex Stewart)</li>
<li>Lots of code style/lint changes. (William Rucklidge)</li>
<li>Fix covariance computation for constant blocks (Wannes Van Loock)</li>
<li>Add IOS_DEPLOYMENT_TARGET variable to iOS.cmake (Eduard Feicho)</li>
<li>Make miniglog threadsafe on non-windows system by using
localtime_r() instead of localtime() for time formatting (Simon
Rutishauser)</li>
</ol>
</div>
</div>
<div class="section" id="id6">
<h2>1.11.0<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id7">
<h3>New Features<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Adaptive numeric differentiation using Ridders&#8217; method. (Tal
Ben-Nun)</li>
<li>Add <code class="docutils literal"><span class="pre">CubicInterpolator</span></code> and <code class="docutils literal"><span class="pre">BiCubicInterpolator</span></code> to allow
smooth interpolation of sampled functions and integration with
automatic differentiation.</li>
<li>Add method to return covariance in tangent space. (Michael Vitus &amp;
Steve Hsu)</li>
<li>Add Homogeneous vector parameterization. (Michael Vitus)</li>
<li>Add a <code class="docutils literal"><span class="pre">ProductParameterization</span></code>, a local parameterization that
can be constructed as a cartesian product of other local
parameterization.</li>
<li>Add DynamicCostFunctionToFunctor. (David Gossow)</li>
<li>Optionally export Ceres build directory into local CMake package
registry.</li>
<li>Faster <code class="docutils literal"><span class="pre">SPARSE_NORMAL_CHOLESKY</span></code> in the presence of dynamic
sparsity.</li>
</ol>
</div>
<div class="section" id="id8">
<h3>Bug Fixes &amp; Minor Changes<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Remove use of link-time optimisation (LTO) for all compilers due to
portability issues with gtest / type_info::operator== &amp; Eigen with
Clang on OS X vs GCC 4.9+ on Linux requiring contradictory &#8216;fixes&#8217;.</li>
<li>Use link-time optimisation (LTO) only when compiling Ceres itself,
not tests or examples, to bypass gtest / type_info::operator==
issue.</li>
<li>Use old minimum iOS version flags on Xcode &lt; 7.0.</li>
<li>Add gtest-specific flags when building/using as a shared library.</li>
<li>Clean up iOS.cmake to use xcrun/xcodebuild &amp; libtool.</li>
<li>Import the latest version of <code class="docutils literal"><span class="pre">googletest</span></code>.</li>
<li>Refactored <code class="docutils literal"><span class="pre">system_test</span></code> into <code class="docutils literal"><span class="pre">bundle_adjustment_test</span></code> and
<code class="docutils literal"><span class="pre">system_test</span></code>, where each test case is its own test.</li>
<li>Fix invalid memory access bug in
<code class="docutils literal"><span class="pre">CompressedRowSparseMatrix::AppendRows</span></code> when it was called with a
matrix of size zero.</li>
<li>Build position independent code when compiling Ceres statically
(Alexander Alekhin).</li>
<li>Fix a bug in DetectStructure (Johannes Schonberger).</li>
<li>Reduce memory footprint of SubsetParameterization (Johannes
Schonberger).</li>
<li>Fix for reorder program unit test when built without suitesparse
(Sergey Sharybin).</li>
<li>Fix a bug in the Schur eliminator (Werner Trobin).</li>
<li>Fix a bug in the reordering code (Bernhard Zeisl).</li>
<li>Add missing CERES_EXPORT to ComposedLoss (Simon Rutishauser).</li>
<li>Add the option to use numeric differentiation to <code class="docutils literal"><span class="pre">nist</span></code> and
<code class="docutils literal"><span class="pre">more_garbow_hillstrom</span></code>.</li>
<li>Fix EIGENSPARSE option help s/t it displays in CMake ncurses GUI.</li>
<li>Fix SparseNormalCholeskySolver with dynamic sparsity (Richie
Stebbing).</li>
<li>Remove legacy dependency detection macros.</li>
<li>Fix failed if() condition expansion if gflags is not found.</li>
<li>Update all CMake to lowercase function name style.</li>
<li>Update minimum iOS version to 7.0 for shared_ptr/unordered_map.</li>
<li>Fix bug in gflags&#8217; &lt;= 2.1.2 exported CMake configuration.</li>
<li>Remove the spec file needed for generating RPMs.</li>
<li>Fix a typo in small_blas.h (Werber Trobin).</li>
<li>Cleanup FindGflags &amp; use installed gflags CMake config if present.</li>
<li>Add default glog install location on Windows to search paths
(bvanevery).</li>
<li>Add default Eigen install location on Windows to search paths
(bvanevery).</li>
<li>Fix explanation of config.h generation in bare config.h.</li>
<li>Fix unused parameter compiler warnings in numeric_diff.h.</li>
<li>Increase tolerance for a test in polynomial_test (Taylor Braun
Jones).</li>
<li>Fix addition of Gerrit commit hook when Ceres is a git submodule
(Chris Cooper).</li>
<li>Fix missing EIGEN_VERSION expansion typo.</li>
<li>Fix links to SuiteSparse &amp; CXSparse (Henrique Mendonça).</li>
<li>Ensure Eigen is at least 3.1.0 for Eigen/SparseCore.</li>
<li>Add option to use C++11 (not TR1) shared_ptr &amp; unordered_map
(Norman Goldstein).</li>
<li>Fix an incorrect usage message in bundle_adjuster.cc</li>
<li>Gracefully disable docs if Sphinx is not found.</li>
<li>Explicitly use (new) default OS X rpath policy if present.</li>
<li>Add support of EIGEN_SPARSE type in
IsSparseLinearAlgebraLibraryTypeAvailable function (Pierre Moulon).</li>
<li>Allow the LossFunction contained in a LossFunctionWrapper to be
NULL. This is consistent with how NULL LossFunctions are treated
everywhere else. (Simon Rutishauser).</li>
<li>Improve numeric differentation near zero.</li>
<li>Refactored DynamicNumericDiffCostFunction to use NumericDiff (Tal
Ben-Nun).</li>
<li>Remove use of :caption tag in Sphinx.</li>
<li>Add a small test to make sure GradientProblemSolver works correctly
(Petter Strandmark).</li>
<li>Add simple unit tests for GradientProblem (Petter Strandmark).</li>
<li>Make the robust curve fitting example robust.</li>
<li>Homogenize convergence operators in docs and code (Johannes
Schonberger).</li>
<li>Add parameter_tolerance convergence to line search minimizer
(Johannes Schonberger).</li>
<li>Fix bug where pow(JetA,JetB) returned wrong result for JetA==0
(Russell Smith).</li>
<li>Remove duplicate step norm computation (Johannes Schonberger).</li>
<li>Enhance usability when encountering Eigen version mismatches
(Andrew Hundt).</li>
<li>Add PLY file logger before and after BA in order to ease visual
comparison (Pierre Moulon).</li>
<li>Fix CMake config file docs to include 2.8.x &amp; 3.x styles.</li>
<li>Python3 fixes (Markus Moll).</li>
<li>Remove confusing code from DenseJacobianWriter (Michael Vitus).</li>
<li>Add documentation on CMake package installation process.</li>
<li>Revert a call to SolveUpperTriangularUsingCholesky.</li>
<li>Make CERES_EIGEN_VERSION macro independent of CMake.</li>
<li>Add versions of dependencies used to FullReport().</li>
<li>Ensure local config.h is used if Ceres is already installed.</li>
<li>Small messaging and comment updates in CMake</li>
<li>Handle possible presence of library prefixes in MSVC (Sylvain
Duchêne).</li>
<li>Use -O2 not -O3 on MinGW to workaround issue with Eigen
(<a class="reference external" href="mailto:s1m3mu3&#37;&#52;&#48;gmail&#46;com">s1m3mu3<span>&#64;</span>gmail<span>&#46;</span>com</a>).</li>
<li>Increase tolerance in small_blas test for Cygwin
(<a class="reference external" href="mailto:s1m3mu3&#37;&#52;&#48;gmail&#46;com">s1m3mu3<span>&#64;</span>gmail<span>&#46;</span>com</a>).</li>
<li>Fix iOS cmake file for cmake 3.0 (Jack Feng)</li>
<li>Fix missing gflags shlwapi dependency on MinGW (<a class="reference external" href="mailto:s1m3mu3&#37;&#52;&#48;gmail&#46;com">s1m3mu3<span>&#64;</span>gmail<span>&#46;</span>com</a>).</li>
<li>Add thread dependency &amp; fix namespace detection on Windows for
gflags (<a class="reference external" href="mailto:arrigo&#46;benedetti&#37;&#52;&#48;gmail&#46;com">arrigo<span>&#46;</span>benedetti<span>&#64;</span>gmail<span>&#46;</span>com</a>).</li>
<li>Rename macros in the public API to have a <code class="docutils literal"><span class="pre">CERES_</span></code> prefix.</li>
<li>Fix <code class="docutils literal"><span class="pre">OrderedGroup::Reverse()</span></code> when it is empty (Chris Sweeney).</li>
<li>Update the code to point to ceres-solver.org.</li>
<li>Update documentation to point to the GitHub issue tracker.</li>
<li>Disable <code class="docutils literal"><span class="pre">LAPACK</span></code> for iOS builds. (Greg Coombe)</li>
<li>Force use of single-thread in <code class="docutils literal"><span class="pre">Problem::Evaluate()</span></code> without
OpenMP.</li>
<li>Less strict check for multithreading. (Chris Sweeney)</li>
<li>Update tolerances in small_blas_test.cc (Philipp Hubner)</li>
<li>Documentation corrections (Steve Hsu)</li>
<li>Fixed <code class="docutils literal"><span class="pre">sampled_function.cc</span></code> (Pablo Speciale)</li>
<li>Fix example code in the documentation. (Rodney Hoskinson)</li>
<li>Improve the error handling in Conjugate Gradients.</li>
<li>Improve preconditioner documentation.</li>
<li>Remove dead code from fpclassify.h.</li>
<li>Make Android.mk threads sensitive.</li>
<li>Changed the <code class="docutils literal"><span class="pre">CURRENT_CONFIG_INSTALL_DIR</span></code> to be a variable local
to Ceres. (Chris Sweeney)</li>
<li>Fix typo in the comments in <code class="docutils literal"><span class="pre">Jet.h</span></code>. (Julius Ziegler)</li>
<li>Add the ASL at ETH Zurich, Theia &amp; OpenPTrack to the list of users.</li>
<li>Fixed a typo in the documentation. (Richard Stebbing)</li>
<li>Fixed a boundary handling bug in the BiCubic interpolation
code. (Bernhard Zeisl)</li>
<li>Fixed a <code class="docutils literal"><span class="pre">MSVC</span></code> compilation bug in the cubic interpolation code
(Johannes Schönberger)</li>
<li>Add covariance related files to the Android build.</li>
<li>Update Ubuntu 14.04 installation instructions. (Filippo Basso)</li>
<li>Improved logging for linear solver failures.</li>
<li>Improved crash messages in <code class="docutils literal"><span class="pre">Problem</span></code>.</li>
<li>Hide Homebrew related variables in CMake GUI.</li>
<li>Add SuiteSparse link dependency for
compressed_col_sparse_matrix_utils_test.</li>
<li>Autodetect Homebrew install prefix on OSX.</li>
<li>Lint changes from William Rucklidge and Jim Roseborough.</li>
<li>Remove <code class="docutils literal"><span class="pre">using</span> <span class="pre">namespace</span> <span class="pre">std:</span></code> from <code class="docutils literal"><span class="pre">port.h</span></code></li>
<li>Add note about glog not currently compiling against gflags 2.1.</li>
<li>Add explicit no sparse linear algebra library available option.</li>
<li>Improve some wording in the FAQ. (Vasily Vylkov)</li>
<li>Delete Incomplete LQ Factorization.</li>
<li>Add a pointer to MacPorts. (Markus Moll)</li>
</ol>
</div>
</div>
<div class="section" id="id9">
<h2>1.10.0<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id10">
<h3>New Features<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h3>
<ol class="arabic">
<li><p class="first">Ceres Solver can now be used to solve general unconstrained
optimization problems. See the documentation for
<code class="docutils literal"><span class="pre">GradientProblem</span></code> and <code class="docutils literal"><span class="pre">GradientProblemSolver</span></code>.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">Eigen</span></code> can now be as a sparse linear algebra backend. This can
be done by setting
<code class="docutils literal"><span class="pre">Solver::Options::sparse_linear_algebra_library_type</span></code> to
<code class="docutils literal"><span class="pre">EIGEN_SPARSE</span></code>. Performance should be comparable to
<code class="docutils literal"><span class="pre">CX_SPARSE</span></code>.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Because <code class="docutils literal"><span class="pre">Eigen</span></code> is a header only library, and some of the code
related to sparse Cholesky factorization is LGPL, building Ceres
with support for Eigen&#8217;s sparse linear algebra is disabled by
default and should be enabled explicitly.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">For good performance, use Eigen version 3.2.2 or later.</p>
</div>
</li>
<li><p class="first">Added <code class="docutils literal"><span class="pre">EIGEN_SPARSE_QR</span></code> algorithm for covariance estimation using
<code class="docutils literal"><span class="pre">Eigen</span></code>&#8216;s sparse QR factorization. (Michael Vitus)</p>
</li>
<li><p class="first">Faster inner iterations when using multiple threads.</p>
</li>
<li><p class="first">Faster <code class="docutils literal"><span class="pre">ITERATIVE_SCHUR</span></code> + <code class="docutils literal"><span class="pre">SCHUR_JACOBI</span></code> for small to medium
sized problems (see documentation for
<code class="docutils literal"><span class="pre">Solver::Options::use_explicit_schur_complement</span></code>).</p>
</li>
<li><p class="first">Faster automatic Schur ordering.</p>
</li>
<li><p class="first">Reduced memory usage when solving problems with dynamic sparsity.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">CostFunctionToFunctor</span></code> now supports dynamic number of residuals.</p>
</li>
<li><p class="first">A complete re-write of the problem preprocessing phase.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">Solver::Summary::FullReport</span></code> now reports the build configuration
for Ceres.</p>
</li>
<li><p class="first">When building on Android, the <code class="docutils literal"><span class="pre">NDK</span></code> version detection logic has
been improved.</p>
</li>
<li><p class="first">The <code class="docutils literal"><span class="pre">CERES_VERSION</span></code> macro has been improved and replaced with the
<code class="docutils literal"><span class="pre">CERES_VERSION_STRING</span></code> macro.</p>
</li>
<li><p class="first">Added <code class="docutils literal"><span class="pre">Solver::Options::IsValid</span></code> which allows users to validate
their solver configuration before calling <code class="docutils literal"><span class="pre">Solve</span></code>.</p>
</li>
<li><p class="first">Added <code class="docutils literal"><span class="pre">Problem::GetCostFunctionForResidualBlock</span></code> and
<code class="docutils literal"><span class="pre">Problem::GetLossFunctionForResidualBlock</span></code>.</p>
</li>
<li><p class="first">Added Tukey&#8217;s loss function. (Michael Vitus)</p>
</li>
<li><p class="first">Added RotationMatrixToQuaternion</p>
</li>
<li><p class="first">Compute &amp; report timing information for line searches.</p>
</li>
<li><p class="first">Autodetect gflags namespace.</p>
</li>
<li><p class="first">Expanded <code class="docutils literal"><span class="pre">more_garbow_hillstrom.cc</span></code>.</p>
</li>
<li><p class="first">Added a pointer to Tal Ben-Nun&#8217;s MSVC wrapper to the docs.</p>
</li>
<li><p class="first">Added the <code class="docutils literal"><span class="pre">&lt;2,3,6&gt;</span></code> Schur template specialization. (Alessandro
Dal Grande)</p>
</li>
</ol>
</div>
<div class="section" id="id11">
<h3>Backward Incompatible API Changes<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li><code class="docutils literal"><span class="pre">NumericDiffFunctor</span></code> has been removed. It&#8217;s API was broken, and
the implementation was an unnecessary layer of abstraction over
<code class="docutils literal"><span class="pre">CostFunctionToFunctor</span></code>.</li>
<li><code class="docutils literal"><span class="pre">POLAK_RIBIRERE</span></code> conjugate gradients direction type has been
renamed to <code class="docutils literal"><span class="pre">POLAK_RIBIERE</span></code>.</li>
<li><code class="docutils literal"><span class="pre">Solver::Options::solver_log</span></code> has been removed. If needed this
iteration callback can easily be implemented in user code.</li>
<li>The <code class="docutils literal"><span class="pre">SPARSE_CHOLESKY</span></code> 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.</li>
<li>The <code class="docutils literal"><span class="pre">SPARSE_QR</span></code> algorithm for covariance estimation has been
renamed to <code class="docutils literal"><span class="pre">SUITE_SPARSE_QR</span></code> to be consistent with
<code class="docutils literal"><span class="pre">EIGEN_SPARSE_QR</span></code>.</li>
<li><code class="docutils literal"><span class="pre">Solver::Summary::preconditioner_type</span></code> has been replaced with
<code class="docutils literal"><span class="pre">Solver::Summary::preconditioner_type_given</span></code> and
<code class="docutils literal"><span class="pre">Solver::Summary::preconditioner_type_used</span></code> to be more consistent
with how information about the linear solver is communicated.</li>
<li><code class="docutils literal"><span class="pre">CERES_VERSION</span></code> and <code class="docutils literal"><span class="pre">CERES_ABI_VERSION</span></code> macros were not
terribly useful. They have been replaced with
<code class="docutils literal"><span class="pre">CERES_VERSION_MAJOR</span></code>, <code class="docutils literal"><span class="pre">CERES_VERSION_MINOR</span></code> ,
<code class="docutils literal"><span class="pre">CERES_VERSION_REVISION</span></code> and <code class="docutils literal"><span class="pre">CERES_VERSION_ABI</span></code> macros. In
particular the functionality of <code class="docutils literal"><span class="pre">CERES_VERSION</span></code> is provided by
<code class="docutils literal"><span class="pre">CERES_VERSION_STRING</span></code> macro.</li>
</ol>
</div>
<div class="section" id="bug-fixes">
<h3>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Do not try the gradient step if TR step line search fails.</li>
<li>Fix missing include in libmv_bundle_adjuster on OSX.</li>
<li>Conditionally log evaluation failure warnings.</li>
<li>Runtime uses four digits after the decimal in Summary:FullReport.</li>
<li>Better options checking for TrustRegionMinimizer.</li>
<li>Fix RotationMatrixToAngleAxis when the angle of rotation is near
PI. (Tobias Strauss)</li>
<li>Sometimes gradient norm based convergence would miss a step with a
substantial solution quality improvement. (Rodney Hoskinson)</li>
<li>Ignore warnings from within Eigen/SparseQR (3.2.2).</li>
<li>Fix empty Cache HELPSTRING parsing error on OS X 10.10 Yosemite.</li>
<li>Fix a formatting error TrustRegionMinimizer logging.</li>
<li>Add an explicit include for local_parameterization.h (cooordz)</li>
<li>Fix a number of typos in the documentation (Martin Baeuml)</li>
<li>Made the logging in TrustRegionMinimizer consistent with
LineSearchMinimizer.</li>
<li>Fix some obsolete documentation in CostFunction::Evaluate.</li>
<li>Fix CG solver options for ITERATIVE_SCHUR, which did not copy
min_num_iterations (Johannes Schönberger)</li>
<li>Remove obsolete include of numeric_diff_functor.h. (Martin Baeuml)</li>
<li>Fix max. linear solver iterations in ConjugateGradientsSolver
(Johannes Schönberger)</li>
<li>Expand check for lack of a sparse linear algebra library. (Michael
Samples and Domink Reitzle)</li>
<li>Fix Eigen Row/ColMajor bug in NumericDiffCostFunction. (Dominik
Reitzle)</li>
<li>Fix crash in Covariance if # threads &gt; 1 requested without OpenMP.</li>
<li>Fixed Malformed regex. (Björn Piltz)</li>
<li>Fixed MSVC error C2124: divide or mod by zero. (Björn Piltz)</li>
<li>Add missing #include of &lt;limits&gt; for loss functions.</li>
<li>Make canned loss functions more robust.</li>
<li>Fix type of suppressed compiler warning for Eigen 3.2.0.</li>
<li>Suppress unused variable warning from Eigen 3.2.0.</li>
<li>Add &#8220;make install&#8221; to the install instructions.</li>
<li>Correct formula in documentation of
Solver::Options::function_tolerance. (Alessandro Gentilini)</li>
<li>Add release flags to iOS toolchain.</li>
<li>Fix a broken hyperlink in the documentation. (Henrique Mendonca)</li>
<li>Add fixes for multiple definitions of ERROR on Windows to docs.</li>
<li>Compile miniglog into Ceres if enabled on all platforms.</li>
<li>Add two missing files to Android.mk (Greg Coombe)</li>
<li>Fix Cmake error when using miniglog. (Greg Coombe)</li>
<li>Don&#8217;t build miniglog unconditionally as a static library (Björn
Piltz)</li>
<li>Added a missing include. (Björn Piltz)</li>
<li>Conditionally disable SparseNormalCholesky.</li>
<li>Fix a memory leak in program_test.cc.</li>
</ol>
</div>
</div>
<div class="section" id="id12">
<h2>1.9.0<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id13">
<h3>New Features<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Bounds constraints: Support for upper and/or lower bounds on
parameters when using the trust region minimizer.</li>
<li>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)</li>
<li>Improved support for Microsoft Visual C++ including the ability to
build and ship DLLs. (Björn Piltz, Alex Stewart and Sergey
Sharybin)</li>
<li>Support for building on iOS 6.0 or higher (Jack Feng).</li>
<li>Autogeneration of config.h that captures all the defines used to
build and use Ceres Solver.</li>
<li>Simpler and more informative solver termination type
reporting. (See below for more details)</li>
<li>New <a class="reference external" href="http://www.ceres-solver.org">website</a> based entirely on
Sphinx.</li>
<li><code class="docutils literal"><span class="pre">AutoDiffLocalParameterization</span></code> allows the use of automatic
differentiation for defining <code class="docutils literal"><span class="pre">LocalParameterization</span></code> objects
(Alex Stewart)</li>
<li>LBFGS is faster due to fewer memory copies.</li>
<li>Parameter blocks are not restricted to be less than 32k in size,
they can be up to 2G in size.</li>
<li>Faster <code class="docutils literal"><span class="pre">SPARSE_NORMAL_CHOLESKY</span></code> solver when using <code class="docutils literal"><span class="pre">CX_SPARSE</span></code>
as the sparse linear algebra library.</li>
<li>Added <code class="docutils literal"><span class="pre">Problem::IsParameterBlockPresent</span></code> and
<code class="docutils literal"><span class="pre">Problem::GetParameterization</span></code>.</li>
<li>Added the (2,4,9) and (2,4,8) template specializations.</li>
<li>An example demonstrating the use of
DynamicAutoDiffCostFunction. (Joydeep Biswas)</li>
<li>Homography estimation example from Blender demonstrating the use of
a custom <code class="docutils literal"><span class="pre">IterationCallback</span></code>. (Sergey Sharybin)</li>
<li>Support user passing a custom CMAKE_MODULE_PATH (for BLAS /
LAPACK).</li>
</ol>
</div>
<div class="section" id="id14">
<h3>Backward Incompatible API Changes<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h3>
<ol class="arabic">
<li><p class="first"><code class="docutils literal"><span class="pre">Solver::Options::linear_solver_ordering</span></code> used to be a naked
pointer that Ceres took ownership of. This is error prone behaviour
which leads to problems when copying the <code class="docutils literal"><span class="pre">Solver::Options</span></code> struct
around. This has been replaced with a <code class="docutils literal"><span class="pre">shared_ptr</span></code> to handle
ownership correctly across copies.</p>
</li>
<li><p class="first">The enum used for reporting the termination/convergence status of
the solver has been renamed from <code class="docutils literal"><span class="pre">SolverTerminationType</span></code> to
<code class="docutils literal"><span class="pre">TerminationType</span></code>.</p>
<p>The enum values have also changed. <code class="docutils literal"><span class="pre">FUNCTION_TOLERANCE</span></code>,
<code class="docutils literal"><span class="pre">GRADIENT_TOLERANCE</span></code> and <code class="docutils literal"><span class="pre">PARAMETER_TOLERANCE</span></code> have all been
replaced by <code class="docutils literal"><span class="pre">CONVERGENCE</span></code>.</p>
<p><code class="docutils literal"><span class="pre">NUMERICAL_FAILURE</span></code> has been replaed by <code class="docutils literal"><span class="pre">FAILURE</span></code>.</p>
<p><code class="docutils literal"><span class="pre">USER_ABORT</span></code> has been renamed to <code class="docutils literal"><span class="pre">USER_FAILURE</span></code>.</p>
<p>Further <code class="docutils literal"><span class="pre">Solver::Summary::error</span></code> has been renamed to
<code class="docutils literal"><span class="pre">Solver::Summary::message</span></code>. It contains a more detailed
explanation for why the solver terminated.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">Solver::Options::gradient_tolerance</span></code> used to be a relative
gradient tolerance. i.e., The solver converged when</p>
<div class="math">
\[\|g(x)\|_\infty &lt; \text{gradient_tolerance} *
\|g(x_0)\|_\infty\]</div>
<p>where <span class="math">\(g(x)\)</span> is the gradient of the objective function at
<span class="math">\(x\)</span> and <span class="math">\(x_0\)</span> is the parmeter vector at the start of
the optimization.</p>
<p>This has changed to an absolute tolerance, i.e. the solver
converges when</p>
<div class="math">
\[\|g(x)\|_\infty &lt; \text{gradient_tolerance}\]</div>
</li>
<li><p class="first">Ceres cannot be built without the line search minimizer
anymore. Thus the preprocessor define
<code class="docutils literal"><span class="pre">CERES_NO_LINE_SEARCH_MINIMIZER</span></code> has been removed.</p>
</li>
</ol>
</div>
<div class="section" id="id15">
<h3>Bug Fixes<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Disabled warning C4251. (Björn Piltz)</li>
<li>Do not propagate 3d party libs through
<cite>IMPORTED_LINK_INTERFACE_LIBRARIES_[DEBUG/RELEASE]</cite> mechanism when
building shared libraries. (Björn Piltz)</li>
<li>Fixed errant verbose levels (Björn Piltz)</li>
<li>Variety of code cleanups, optimizations and bug fixes to the line
search minimizer code (Alex Stewart)</li>
<li>Fixed <code class="docutils literal"><span class="pre">BlockSparseMatrix::Transpose</span></code> when the matrix has row and
column blocks. (Richard Bowen)</li>
<li>Better error checking when <code class="docutils literal"><span class="pre">Problem::RemoveResidualBlock</span></code> is
called. (Alex Stewart)</li>
<li>Fixed a memory leak in <code class="docutils literal"><span class="pre">SchurComplementSolver</span></code>.</li>
<li>Added <code class="docutils literal"><span class="pre">epsilon()</span></code> method to <code class="docutils literal"><span class="pre">NumTraits&lt;ceres::Jet&lt;T,</span> <span class="pre">N&gt;</span>
<span class="pre">&gt;</span></code>. (Filippo Basso)</li>
<li>Fixed a bug in <cite>CompressedRowSparseMatrix::AppendRows`</cite> and
<code class="docutils literal"><span class="pre">DeleteRows</span></code>.q</li>
<li>Handle empty problems consistently.</li>
<li>Restore the state of the <code class="docutils literal"><span class="pre">Problem</span></code> after a call to
<code class="docutils literal"><span class="pre">Problem::Evaluate</span></code>. (Stefan Leutenegger)</li>
<li>Better error checking and reporting for linear solvers.</li>
<li>Use explicit formula to solve quadratic polynomials instead of the
eigenvalue solver.</li>
<li>Fix constant parameter handling in inner iterations (Mikael
Persson).</li>
<li>SuiteSparse errors do not cause a fatal crash anymore.</li>
<li>Fix <code class="docutils literal"><span class="pre">corrector_test.cc</span></code>.</li>
<li>Relax the requirements on loss function derivatives.</li>
<li>Minor bugfix to logging.h (Scott Ettinger)</li>
<li>Updated <code class="docutils literal"><span class="pre">gmock</span></code> and <code class="docutils literal"><span class="pre">gtest</span></code> to the latest upstream version.</li>
<li>Fix build breakage on old versions of SuiteSparse.</li>
<li>Fixed build issues related to Clang / LLVM 3.4 (Johannes
Schönberger)</li>
<li>METIS_FOUND is never set. Changed the commit to fit the setting of
the other #._FOUND definitions. (Andreas Franek)</li>
<li>Variety of bug fixes and cleanups to the <code class="docutils literal"><span class="pre">CMake</span></code> build system
(Alex Stewart)</li>
<li>Removed fictious shared library target from the NDK build.</li>
<li>Solver::Options now uses <code class="docutils literal"><span class="pre">shared_ptr</span></code> to handle ownership of
<code class="docutils literal"><span class="pre">Solver::Options::linear_solver_ordering</span></code> and
<code class="docutils literal"><span class="pre">Solver::Options::inner_iteration_ordering</span></code>. As a consequence the
<code class="docutils literal"><span class="pre">NDK</span></code> build now depends on <code class="docutils literal"><span class="pre">libc++</span></code> from the <code class="docutils literal"><span class="pre">LLVM</span></code> project.</li>
<li>Variety of lint cleanups (William Rucklidge &amp; Jim Roseborough)</li>
<li>Various internal cleanups including dead code removal.</li>
</ol>
</div>
</div>
<div class="section" id="id16">
<h2>1.8.0<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id17">
<h3>New Features<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Significant improved <code class="docutils literal"><span class="pre">CMake</span></code> files with better robustness,
dependency checking and GUI support. (Alex Stewart)</li>
<li>Added <code class="docutils literal"><span class="pre">DynamicNumericDiffCostFunction</span></code> for numerically
differentiated cost functions whose sizing is determined at run
time.</li>
<li><code class="docutils literal"><span class="pre">NumericDiffCostFunction</span></code> now supports a dynamic number of
residuals just like <code class="docutils literal"><span class="pre">AutoDiffCostFunction</span></code>.</li>
<li><code class="docutils literal"><span class="pre">Problem</span></code> exposes more of its structure in its API.</li>
<li>Faster automatic differentiation (Tim Langlois)</li>
<li>Added the commonly occuring <code class="docutils literal"><span class="pre">2_d_d</span></code> template specialization for
the Schur Eliminator.</li>
<li>Faster <code class="docutils literal"><span class="pre">ITERATIVE_SCHUR</span></code> solver using template specializations.</li>
<li>Faster <code class="docutils literal"><span class="pre">SCHUR_JACOBI</span></code> preconditioner construction.</li>
<li>Faster <code class="docutils literal"><span class="pre">AngleAxisRotatePoint</span></code>.</li>
<li>Faster Jacobian evaluation when a loss function is used.</li>
<li>Added support for multiple clustering algorithms in visibility
based preconditioning, including a new fast single linkage
clustering algorithm.</li>
</ol>
</div>
<div class="section" id="id18">
<h3>Bug Fixes<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fix ordering of ParseCommandLineFlags() &amp; InitGoogleTest() for
Windows. (Alex Stewart)</li>
<li>Remove DCHECK_GE checks from fixed_array.h.</li>
<li>Fix build on MSVC 2013 (Petter Strandmark)</li>
<li>Fixed <code class="docutils literal"><span class="pre">AngleAxisToRotationMatrix</span></code> near zero.</li>
<li>Move <code class="docutils literal"><span class="pre">CERES_HASH_NAMESPACE</span></code> macros to <code class="docutils literal"><span class="pre">collections_port.h</span></code>.</li>
<li>Fix handling of unordered_map/unordered_set on OSX 10.9.0.</li>
<li>Explicitly link to libm for <code class="docutils literal"><span class="pre">curve_fitting_c.c</span></code>. (Alex Stewart)</li>
<li>Minor type conversion fix to autodiff.h</li>
<li>Remove RuntimeNumericDiffCostFunction.</li>
<li>Fix operator= ambiguity on some versions of Clang. (Alex Stewart)</li>
<li>Various Lint cleanups (William Rucklidge &amp; Jim Roseborough)</li>
<li>Modified installation folders for Windows. (Pablo Speciale)</li>
<li>Added librt to link libraries for SuiteSparse_config on
Linux. (Alex Stewart)</li>
<li>Check for presence of return-type-c-linkage option with
Clang. (Alex Stewart)</li>
<li>Fix Problem::RemoveParameterBlock after calling solve. (Simon
Lynen)</li>
<li>Fix a free/delete bug in covariance_impl.cc</li>
<li>Fix two build errors. (Dustin Lang)</li>
<li>Add RequireInitialization = 1 to NumTraits::Jet.</li>
<li>Update gmock/gtest to 1.7.0</li>
<li>Added IterationSummary::gradient_norm.</li>
<li>Reduced verbosity of the inner iteration minimizer.</li>
<li>Fixed a bug in TrustRegionMinimizer. (Michael Vitus)</li>
<li>Removed android/build_android.sh.</li>
</ol>
</div>
</div>
<div class="section" id="id19">
<h2>1.7.0<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id20">
<h3>Backward Incompatible API Changes<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li><code class="docutils literal"><span class="pre">Solver::Options::sparse_linear_algebra_library</span></code> has been renamed
to <code class="docutils literal"><span class="pre">Solver::Options::sparse_linear_algebra_library_type</span></code>.</li>
</ol>
</div>
<div class="section" id="id21">
<h3>New Features<a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Sparse and dense covariance estimation.</li>
<li>A new Wolfe line search. (Alex Stewart)</li>
<li><code class="docutils literal"><span class="pre">BFGS</span></code> line search direction. (Alex Stewart)</li>
<li>C API</li>
<li>Speeded up the use of loss functions &gt; 17x.</li>
<li>Faster <code class="docutils literal"><span class="pre">DENSE_QR</span></code>, <code class="docutils literal"><span class="pre">DENSE_NORMAL_CHOLESKY</span></code> and <code class="docutils literal"><span class="pre">DENSE_SCHUR</span></code>
solvers.</li>
<li>Support for multiple dense linear algebra backends. In particular
optimized <code class="docutils literal"><span class="pre">BLAS</span></code> and <code class="docutils literal"><span class="pre">LAPACK</span></code> implementations (e.g., Intel MKL,
ACML, OpenBLAS etc) can now be used to do the dense linear algebra
for <code class="docutils literal"><span class="pre">DENSE_QR</span></code>, <code class="docutils literal"><span class="pre">DENSE_NORMAL_CHOLESKY</span></code> and <code class="docutils literal"><span class="pre">DENSE_SCHUR</span></code></li>
<li>Use of Inner iterations can now be adaptively stopped. Iteration
and runtime statistics for inner iterations are not reported in
<code class="docutils literal"><span class="pre">Solver::Summary</span></code> and <code class="docutils literal"><span class="pre">Solver::Summary::FullReport</span></code>.</li>
<li>Improved inner iteration step acceptance criterion.</li>
<li>Add BlockRandomAccessCRSMatrix.</li>
<li>Speeded up automatic differentiation by 7%.</li>
<li>Bundle adjustment example from libmv/Blender (Sergey Sharybin)</li>
<li>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&#8217;s built in support for switching
between static and shared. Turn on BUILD_SHARED_LIBS to get shared
Ceres libraries.</li>
<li>No more dependence on Protocol Buffers.</li>
<li>Incomplete LQ factorization.</li>
<li>Ability to write trust region problems to disk.</li>
<li>Add sinh, cosh, tanh and tan functions to automatic differentiation
(Johannes Schönberger)</li>
<li>Simplifications to the cmake build file.</li>
<li><code class="docutils literal"><span class="pre">miniglog</span></code> can now be used as a replacement for <code class="docutils literal"><span class="pre">google-glog</span></code>
on non Android platforms. (This is NOT recommended).</li>
</ol>
</div>
<div class="section" id="id22">
<h3>Bug Fixes<a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fix <code class="docutils literal"><span class="pre">ITERATIVE_SCHUR</span></code> solver to work correctly when the schur
complement is of size zero. (Soohyun Bae)</li>
<li>Fix the <code class="docutils literal"><span class="pre">spec</span></code> file for generating <code class="docutils literal"><span class="pre">RPM</span></code> packages (Brian Pitts
and Taylor Braun-Jones).</li>
<li>Fix how ceres calls CAMD (Manas Jagadev)</li>
<li>Fix breakage on old versions of SuiteSparse. (Fisher Yu)</li>
<li>Fix warning C4373 in Visual Studio (Petter Strandmark)</li>
<li>Fix compilation error caused by missing suitesparse headers and
reorganize them to be more robust. (Sergey Sharybin)</li>
<li>Check GCC Version before adding -fast compiler option on
OSX. (Steven Lovegrove)</li>
<li>Add documentation for minimizer progress output.</li>
<li>Lint and other cleanups (William Rucklidge and James Roseborough)</li>
<li>Collections port fix for MSC 2008 (Sergey Sharybin)</li>
<li>Various corrections and cleanups in the documentation.</li>
<li>Change the path where CeresConfig.cmake is installed (Pablo
Speciale)</li>
<li>Minor errors in documentation (Pablo Speciale)</li>
<li>Updated depend.cmake to follow CMake IF convention. (Joydeep
Biswas)</li>
<li>Stablize the schur ordering algorithm.</li>
<li>Update license header in split.h.</li>
<li>Enabling -O4 (link-time optimization) only if compiler/linker
support it. (Alex Stewart)</li>
<li>Consistent glog path across files.</li>
<li>ceres-solver.spec: Use cleaner, more conventional Release string
(Taylor Braun-Jones)</li>
<li>Fix compile bug on RHEL6 due to missing header (Taylor Braun-Jones)</li>
<li>CMake file is less verbose.</li>
<li>Use the latest upstream version of google-test and gmock.</li>
<li>Rationalize some of the variable names in <code class="docutils literal"><span class="pre">Solver::Options</span></code>.</li>
<li>Improve Summary::FullReport when line search is used.</li>
<li>Expose line search parameters in <code class="docutils literal"><span class="pre">Solver::Options</span></code>.</li>
<li>Fix update of L-BFGS history buffers after they become full. (Alex
Stewart)</li>
<li>Fix configuration error on systems without SuiteSparse installed
(Sergey Sharybin)</li>
<li>Enforce the read call returns correct value in
<code class="docutils literal"><span class="pre">curve_fitting_c.c</span></code> (Arnaud Gelas)</li>
<li>Fix DynamicAutoDiffCostFunction (Richard Stebbing)</li>
<li>Fix Problem::RemoveParameterBlock documentation (Johannes
Schönberger)</li>
<li>Fix a logging bug in parameter_block.h</li>
<li>Refactor the preconditioner class structure.</li>
<li>Fix an uninitialized variable warning when building with <code class="docutils literal"><span class="pre">GCC</span></code>.</li>
<li>Fix a reallocation bug in
<code class="docutils literal"><span class="pre">CreateJacobianBlockSparsityTranspose</span></code>. (Yuliy Schwartzburg)</li>
<li>Add a define for O_BINARY.</li>
<li>Fix miniglog-based Android NDK build; now works with NDK r9. (Scott
Ettinger)</li>
</ol>
</div>
</div>
<div class="section" id="id23">
<h2>1.6.0<a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id24">
<h3>New Features<a class="headerlink" href="#id24" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Major Performance improvements.<ol class="loweralpha">
<li>Schur type solvers (<code class="docutils literal"><span class="pre">SPARSE_SCHUR</span></code>, <code class="docutils literal"><span class="pre">DENSE_SCHUR</span></code>,
<code class="docutils literal"><span class="pre">ITERATIVE_SCHUR</span></code>) are significantly faster due to custom BLAS
routines and fewer heap allocations.</li>
<li><code class="docutils literal"><span class="pre">SPARSE_SCHUR</span></code> when used with <code class="docutils literal"><span class="pre">CX_SPARSE</span></code> now uses a block
AMD for much improved factorization performance.</li>
<li>The jacobian matrix is pre-ordered so that
<code class="docutils literal"><span class="pre">SPARSE_NORMAL_CHOLESKY</span></code> and <code class="docutils literal"><span class="pre">SPARSE_SCHUR</span></code> do not have to
make copies inside <code class="docutils literal"><span class="pre">CHOLMOD</span></code>.</li>
<li>Faster autodiff by replacing division by multplication by inverse.</li>
<li>When compiled without threads, the schur eliminator does not pay
the penalty for locking and unlocking mutexes.</li>
</ol>
</li>
<li>Users can now use <code class="docutils literal"><span class="pre">linear_solver_ordering</span></code> to affect the
fill-reducing ordering used by <code class="docutils literal"><span class="pre">SUITE_SPARSE</span></code> for
<code class="docutils literal"><span class="pre">SPARSE_NORMAL_CHOLESKY</span></code>.</li>
<li><code class="docutils literal"><span class="pre">Problem</span></code> can now report the set of parameter blocks it knows about.</li>
<li><code class="docutils literal"><span class="pre">TrustRegionMinimizer</span></code> uses the evaluator to compute the gradient
instead of a matrix vector multiply.</li>
<li>On <code class="docutils literal"><span class="pre">Mac</span> <span class="pre">OS</span></code>, whole program optimization is enabled.</li>
<li>Users can now use automatic differentiation to define new
<code class="docutils literal"><span class="pre">LocalParameterization</span></code> objects. (Sergey Sharybin)</li>
<li>Enable larger tuple sizes for Visual Studio 2012. (Petter Strandmark)</li>
</ol>
</div>
<div class="section" id="id25">
<h3>Bug Fixes<a class="headerlink" href="#id25" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Update the documentation for <code class="docutils literal"><span class="pre">CostFunction</span></code>.</li>
<li>Fixed a typo in the documentation. (Pablo Speciale)</li>
<li>Fix a typo in suitesparse.cc.</li>
<li>Bugfix in <code class="docutils literal"><span class="pre">NumericDiffCostFunction</span></code>. (Nicolas Brodu)</li>
<li>Death to BlockSparseMatrixBase.</li>
<li>Change Minimizer::Options::min_trust_region_radius to double.</li>
<li>Update to compile with stricter gcc checks. (Joydeep Biswas)</li>
<li>Do not modify cached CMAKE_CXX_FLAGS_RELEASE. (Sergey Sharybin)</li>
<li><code class="docutils literal"><span class="pre">&lt;iterator&gt;</span></code> needed for back_insert_iterator. (Petter Strandmark)</li>
<li>Lint cleanup. (William Rucklidge)</li>
<li>Documentation corrections. (Pablo Speciale)</li>
</ol>
</div>
</div>
<div class="section" id="id26">
<h2>1.5.0<a class="headerlink" href="#id26" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id27">
<h3>Backward Incompatible API Changes<a class="headerlink" href="#id27" title="Permalink to this headline">¶</a></h3>
<ol class="arabic">
<li><p class="first">Added <code class="docutils literal"><span class="pre">Problem::Evaluate</span></code>. Now you can evaluate a problem or any
part of it without calling the solver.</p>
<p>In light of this the following settings have been deprecated and
removed from the API.</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">Solver::Options::return_initial_residuals</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_initial_gradient</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_initial_jacobian</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_final_residuals</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_final_gradient</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_final_jacobian</span></code></li>
</ul>
<p>Instead we recommend using something like this.</p>
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">Problem</span> <span class="n">problem</span><span class="p">;</span>
<span class="c1">// Build problem</span>

<span class="n">vector</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">initial_residuals</span><span class="p">;</span>
<span class="n">problem</span><span class="p">.</span><span class="n">Evaluate</span><span class="p">(</span><span class="n">Problem</span><span class="o">::</span><span class="n">EvaluateOptions</span><span class="p">(),</span>
                 <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* No cost */</span>
                 <span class="o">&amp;</span><span class="n">initial_residuals</span><span class="p">,</span>
                 <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* No gradient */</span>
                 <span class="nb">NULL</span>  <span class="cm">/* No jacobian */</span> <span class="p">);</span>

<span class="n">Solver</span><span class="o">::</span><span class="n">Options</span> <span class="n">options</span><span class="p">;</span>
<span class="n">Solver</span><span class="o">::</span><span class="n">Summary</span> <span class="n">summary</span><span class="p">;</span>
<span class="n">Solver</span><span class="o">::</span><span class="n">Solve</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">problem</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">summary</span><span class="p">);</span>

<span class="n">vector</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">final_residuals</span><span class="p">;</span>
<span class="n">problem</span><span class="p">.</span><span class="n">Evaluate</span><span class="p">(</span><span class="n">Problem</span><span class="o">::</span><span class="n">EvaluateOptions</span><span class="p">(),</span>
                 <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* No cost */</span>
                 <span class="o">&amp;</span><span class="n">final_residuals</span><span class="p">,</span>
                 <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* No gradient */</span>
                 <span class="nb">NULL</span>  <span class="cm">/* No jacobian */</span> <span class="p">);</span>
</pre></div>
</div>
</li>
</ol>
</div>
<div class="section" id="id28">
<h3>New Features<a class="headerlink" href="#id28" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Problem now supports removal of ParameterBlocks and
ResidualBlocks. There is a space/time tradeoff in doing this which
is controlled by
<code class="docutils literal"><span class="pre">Problem::Options::enable_fast_parameter_block_removal</span></code>.</li>
<li>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.</li>
<li>Added <code class="docutils literal"><span class="pre">Problem::Evaluate</span></code>. 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.<ul>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_initial_residuals</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_initial_gradient</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_initial_jacobian</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_final_residuals</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_final_gradient</span></code></li>
<li><code class="docutils literal"><span class="pre">Solver::Options::return_final_jacobian</span></code></li>
</ul>
</li>
<li>New, much improved HTML documentation using Sphinx.</li>
<li>Changed <code class="docutils literal"><span class="pre">NumericDiffCostFunction</span></code> to take functors like
<code class="docutils literal"><span class="pre">AutoDiffCostFunction</span></code>.</li>
<li>Added support for mixing automatic, analytic and numeric
differentiation. This is done by adding <code class="docutils literal"><span class="pre">CostFunctionToFunctor</span></code>
and <code class="docutils literal"><span class="pre">NumericDiffFunctor</span></code> objects to the API.</li>
<li>Sped up the robust loss function correction logic when residual is
one dimensional.</li>
<li>Sped up <code class="docutils literal"><span class="pre">DenseQRSolver</span></code> 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.</li>
<li><code class="docutils literal"><span class="pre">DENSE_SCHUR</span></code> now supports multi-threading.</li>
<li>Greatly expanded <code class="docutils literal"><span class="pre">Summary::FullReport</span></code>:<ul>
<li>Report the ordering used by the <code class="docutils literal"><span class="pre">LinearSolver</span></code>.</li>
<li>Report the ordering used by the inner iterations.</li>
<li>Execution timing breakdown into evaluations and linear solves.</li>
<li>Effective size of the problem solved by the solver, which now
accounts for the size of the tangent space when using a
<code class="docutils literal"><span class="pre">LocalParameterization</span></code>.</li>
</ul>
</li>
<li>Ceres when run at the <code class="docutils literal"><span class="pre">VLOG</span></code> level 3 or higher will report
detailed timing information about its internals.</li>
<li>Remove extraneous initial and final residual evaluations. This
speeds up the solver a bit.</li>
<li>Automatic differenatiation with a dynamic number of parameter
blocks. (Based on an idea by Thad Hughes).</li>
<li>Sped up problem construction and destruction.</li>
<li>Added matrix adapters to <code class="docutils literal"><span class="pre">rotation.h</span></code> so that the rotation matrix
routines can work with row and column major matrices. (Markus Moll)</li>
<li><code class="docutils literal"><span class="pre">SCHUR_JACOBI</span></code> can now be used without <code class="docutils literal"><span class="pre">SuiteSparse</span></code>.</li>
<li>A <code class="docutils literal"><span class="pre">.spec</span></code> file for producing RPMs. (Taylor Braun-Jones)</li>
<li><code class="docutils literal"><span class="pre">CMake</span></code> can now build the sphinx documentation (Pablo Speciale)</li>
<li>Add support for creating a CMake config file during build to make
embedding Ceres in other CMake-using projects easier. (Pablo
Speciale).</li>
<li>Better error reporting in <code class="docutils literal"><span class="pre">Problem</span></code> for missing parameter blocks.</li>
<li>A more flexible <code class="docutils literal"><span class="pre">Android.mk</span></code> 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.</li>
</ol>
</div>
<div class="section" id="id29">
<h3>Bug Fixes<a class="headerlink" href="#id29" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Compilation fixes for MSVC2010 (Sergey Sharybin)</li>
<li>Fixed &#8220;deprecated conversion from string constant to char*&#8221;
warnings. (Pablo Speciale)</li>
<li>Correctly propagate ifdefs when building without Schur eliminator
template specializations.</li>
<li>Correct handling of <code class="docutils literal"><span class="pre">LIB_SUFFIX</span></code> on Linux. (Yuliy Schwartzburg).</li>
<li>Code and signature cleanup in <code class="docutils literal"><span class="pre">rotation.h</span></code>.</li>
<li>Make examples independent of internal code.</li>
<li>Disable unused member in <code class="docutils literal"><span class="pre">gtest</span></code> which results in build error on
OS X with latest Xcode. (Taylor Braun-Jones)</li>
<li>Pass the correct flags to the linker when using
<code class="docutils literal"><span class="pre">pthreads</span></code>. (Taylor Braun-Jones)</li>
<li>Only use <code class="docutils literal"><span class="pre">cmake28</span></code> macro when building on RHEL6. (Taylor
Braun-Jones)</li>
<li>Remove <code class="docutils literal"><span class="pre">-Wno-return-type-c-linkage</span></code> when compiling with
GCC. (Taylor Braun-Jones)</li>
<li>Fix <code class="docutils literal"><span class="pre">No</span> <span class="pre">previous</span> <span class="pre">prototype</span></code> warnings. (Sergey Sharybin)</li>
<li>MinGW build fixes. (Sergey Sharybin)</li>
<li>Lots of minor code and lint fixes. (William Rucklidge)</li>
<li>Fixed a bug in <code class="docutils literal"><span class="pre">solver_impl.cc</span></code> residual evaluation. (Markus
Moll)</li>
<li>Fixed varidic evaluation bug in <code class="docutils literal"><span class="pre">AutoDiff</span></code>.</li>
<li>Fixed <code class="docutils literal"><span class="pre">SolverImpl</span></code> tests.</li>
<li>Fixed a bug in <code class="docutils literal"><span class="pre">DenseSparseMatrix::ToDenseMatrix()</span></code>.</li>
<li>Fixed an initialization bug in <code class="docutils literal"><span class="pre">ProgramEvaluator</span></code>.</li>
<li>Fixes to Android.mk paths (Carlos Hernandez)</li>
<li>Modify <code class="docutils literal"><span class="pre">nist.cc</span></code> to compute accuracy based on ground truth
solution rather than the ground truth function value.</li>
<li>Fixed a memory leak in <code class="docutils literal"><span class="pre">cxsparse.cc</span></code>. (Alexander Mordvintsev).</li>
<li>Fixed the install directory for libraries by correctly handling
<code class="docutils literal"><span class="pre">LIB_SUFFIX</span></code>. (Taylor Braun-Jones)</li>
</ol>
</div>
</div>
<div class="section" id="id30">
<h2>1.4.0<a class="headerlink" href="#id30" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id31">
<h3>Backward Incompatible API Changes<a class="headerlink" href="#id31" title="Permalink to this headline">¶</a></h3>
<p>The new ordering API breaks existing code. Here the common case fixes.</p>
<p><strong>Before</strong></p>
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">options</span><span class="p">.</span><span class="n">linear_solver_type</span> <span class="o">=</span> <span class="n">ceres</span><span class="o">::</span><span class="n">DENSE_SCHUR</span>
<span class="n">options</span><span class="p">.</span><span class="n">ordering_type</span> <span class="o">=</span> <span class="n">ceres</span><span class="o">::</span><span class="n">SCHUR</span>
</pre></div>
</div>
<p><strong>After</strong></p>
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">options</span><span class="p">.</span><span class="n">linear_solver_type</span> <span class="o">=</span> <span class="n">ceres</span><span class="o">::</span><span class="n">DENSE_SCHUR</span>
</pre></div>
</div>
<p><strong>Before</strong></p>
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">options</span><span class="p">.</span><span class="n">linear_solver_type</span> <span class="o">=</span> <span class="n">ceres</span><span class="o">::</span><span class="n">DENSE_SCHUR</span><span class="p">;</span>
<span class="n">options</span><span class="p">.</span><span class="n">ordering_type</span> <span class="o">=</span> <span class="n">ceres</span><span class="o">::</span><span class="n">USER</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">num_points</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
  <span class="n">options</span><span class="p">.</span><span class="n">ordering</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">my_points</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">num_cameras</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
  <span class="n">options</span><span class="p">.</span><span class="n">ordering</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">my_cameras</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="p">}</span>
<span class="n">options</span><span class="p">.</span><span class="n">num_eliminate_blocks</span> <span class="o">=</span> <span class="n">num_points</span><span class="p">;</span>
</pre></div>
</div>
<p><strong>After</strong></p>
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">options</span><span class="p">.</span><span class="n">linear_solver_type</span> <span class="o">=</span> <span class="n">ceres</span><span class="o">::</span><span class="n">DENSE_SCHUR</span><span class="p">;</span>
<span class="n">options</span><span class="p">.</span><span class="n">ordering</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ceres</span><span class="o">::</span><span class="n">ParameterBlockOrdering</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">num_points</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
  <span class="n">options</span><span class="p">.</span><span class="n">linear_solver_ordering</span><span class="o">-&gt;</span><span class="n">AddElementToGroup</span><span class="p">(</span><span class="n">my_points</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mi">0</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">num_cameras</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
  <span class="n">options</span><span class="p">.</span><span class="n">linear_solver_ordering</span><span class="o">-&gt;</span><span class="n">AddElementToGroup</span><span class="p">(</span><span class="n">my_cameras</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mi">1</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="id32">
<h3>New Features<a class="headerlink" href="#id32" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>A new richer, more expressive and consistent API for ordering
parameter blocks.</li>
<li>A non-linear generalization of Ruhe &amp; Wedin&#8217;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.</li>
<li>An image denoising example using fields of experts. (Petter
Strandmark)</li>
<li>Defines for Ceres version and ABI version.</li>
<li>Higher precision timer code where available. (Petter Strandmark)</li>
<li>Example Makefile for users of Ceres.</li>
<li>IterationSummary now informs the user when the step is a
non-monotonic step.</li>
<li>Fewer memory allocations when using <code class="docutils literal"><span class="pre">DenseQRSolver</span></code>.</li>
<li>GradientChecker for testing CostFunctions (William Rucklidge)</li>
<li>Add support for cost functions with 10 parameter blocks in
<code class="docutils literal"><span class="pre">Problem</span></code>. (Fisher)</li>
<li>Add support for 10 parameter blocks in <code class="docutils literal"><span class="pre">AutoDiffCostFunction</span></code>.</li>
</ol>
</div>
<div class="section" id="id33">
<h3>Bug Fixes<a class="headerlink" href="#id33" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>static cast to force Eigen::Index to long conversion</li>
<li>Change LOG(ERROR) to LOG(WARNING) in <code class="docutils literal"><span class="pre">schur_complement_solver.cc</span></code>.</li>
<li>Remove verbose logging from <code class="docutils literal"><span class="pre">DenseQRSolve</span></code>.</li>
<li>Fix the Android NDK build.</li>
<li>Better handling of empty and constant Problems.</li>
<li>Remove an internal header that was leaking into the public API.</li>
<li>Memory leak in <code class="docutils literal"><span class="pre">trust_region_minimizer.cc</span></code></li>
<li>Schur ordering was operating on the wrong object (Ricardo Martin)</li>
<li>MSVC fixes (Petter Strandmark)</li>
<li>Various fixes to <code class="docutils literal"><span class="pre">nist.cc</span></code> (Markus Moll)</li>
<li>Fixed a jacobian scaling bug.</li>
<li>Numerically robust computation of <code class="docutils literal"><span class="pre">model_cost_change</span></code>.</li>
<li>Signed comparison compiler warning fixes (Ricardo Martin)</li>
<li>Various compiler warning fixes all over.</li>
<li>Inclusion guard fixes (Petter Strandmark)</li>
<li>Segfault in test code (Sergey Popov)</li>
<li>Replaced <code class="docutils literal"><span class="pre">EXPECT/ASSERT_DEATH</span></code> with the more portable
<code class="docutils literal"><span class="pre">EXPECT_DEATH_IF_SUPPORTED</span></code> macros.</li>
<li>Fixed the camera projection model in Ceres&#8217; implementation of
Snavely&#8217;s camera model. (Ricardo Martin)</li>
</ol>
</div>
</div>
<div class="section" id="id34">
<h2>1.3.0<a class="headerlink" href="#id34" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id35">
<h3>New Features<a class="headerlink" href="#id35" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Android Port (Scott Ettinger also contributed to the port)</li>
<li>Windows port. (Changchang Wu and Pierre Moulon also contributed to the port)</li>
<li>New subspace Dogleg Solver. (Markus Moll)</li>
<li>Trust region algorithm now supports the option of non-monotonic steps.</li>
<li>New loss functions <code class="docutils literal"><span class="pre">ArcTanLossFunction</span></code>, <code class="docutils literal"><span class="pre">TolerantLossFunction</span></code>
and <code class="docutils literal"><span class="pre">ComposedLossFunction</span></code>. (James Roseborough).</li>
<li>New <code class="docutils literal"><span class="pre">DENSE_NORMAL_CHOLESKY</span></code> linear solver, which uses Eigen&#8217;s
LDLT factorization on the normal equations.</li>
<li>Cached symbolic factorization when using <code class="docutils literal"><span class="pre">CXSparse</span></code>.
(Petter Strandark)</li>
<li>New example <code class="docutils literal"><span class="pre">nist.cc</span></code> and data from the NIST non-linear
regression test suite. (Thanks to Douglas Bates for suggesting this.)</li>
<li>The traditional Dogleg solver now uses an elliptical trust
region (Markus Moll)</li>
<li>Support for returning initial and final gradients &amp; Jacobians.</li>
<li>Gradient computation support in the evaluators, with an eye
towards developing first order/gradient based solvers.</li>
<li>A better way to compute <code class="docutils literal"><span class="pre">Solver::Summary::fixed_cost</span></code>. (Markus Moll)</li>
<li><code class="docutils literal"><span class="pre">CMake</span></code> support for building documentation, separate examples,
installing and uninstalling the library and Gerrit hooks (Arnaud
Gelas)</li>
<li><code class="docutils literal"><span class="pre">SuiteSparse4</span></code> support (Markus Moll)</li>
<li>Support for building Ceres without <code class="docutils literal"><span class="pre">TR1</span></code> (This leads to
slightly slower <code class="docutils literal"><span class="pre">DENSE_SCHUR</span></code> and <code class="docutils literal"><span class="pre">SPARSE_SCHUR</span></code> solvers).</li>
<li><code class="docutils literal"><span class="pre">BALProblem</span></code> can now write a problem back to disk.</li>
<li><code class="docutils literal"><span class="pre">bundle_adjuster</span></code> now allows the user to normalize and perturb the
problem before solving.</li>
<li>Solver progress logging to file.</li>
<li>Added <code class="docutils literal"><span class="pre">Program::ToString</span></code> and <code class="docutils literal"><span class="pre">ParameterBlock::ToString</span></code> to
help with debugging.</li>
<li>Ability to build Ceres as a shared library (MacOS and Linux only),
associated versioning and build release script changes.</li>
<li>Portable floating point classification API.</li>
</ol>
</div>
<div class="section" id="id36">
<h3>Bug Fixes<a class="headerlink" href="#id36" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fix how invalid step evaluations are handled.</li>
<li>Change the slop handling around zero for model cost changes to use
relative tolerances rather than absolute tolerances.</li>
<li>Fix an inadvertant integer to bool conversion. (Petter Strandmark)</li>
<li>Do not link to <code class="docutils literal"><span class="pre">libgomp</span></code> when building on
windows. (Petter Strandmark)</li>
<li>Include <code class="docutils literal"><span class="pre">gflags.h</span></code> in <code class="docutils literal"><span class="pre">test_utils.cc</span></code>. (Petter
Strandmark)</li>
<li>Use standard random number generation routines. (Petter Strandmark)</li>
<li><code class="docutils literal"><span class="pre">TrustRegionMinimizer</span></code> does not implicitly negate the
steps that it takes. (Markus Moll)</li>
<li>Diagonal scaling allows for equal upper and lower bounds. (Markus Moll)</li>
<li>TrustRegionStrategy does not misuse LinearSolver:Summary anymore.</li>
<li>Fix Eigen3 Row/Column Major storage issue. (Lena Gieseke)</li>
<li>QuaternionToAngleAxis now guarantees an angle in $[-pi, pi]$. (Guoxuan Zhang)</li>
<li>Added a workaround for a compiler bug in the Android NDK to the
Schur eliminator.</li>
<li>The sparse linear algebra library is only logged in
Summary::FullReport if it is used.</li>
<li>Rename the macro <code class="docutils literal"><span class="pre">CERES_DONT_HAVE_PROTOCOL_BUFFERS</span></code>
to <code class="docutils literal"><span class="pre">CERES_NO_PROTOCOL_BUFFERS</span></code> for consistency.</li>
<li>Fix how static structure detection for the Schur eliminator logs
its results.</li>
<li>Correct example code in the documentation. (Petter Strandmark)</li>
<li>Fix <code class="docutils literal"><span class="pre">fpclassify.h</span></code> to work with the Android NDK and STLport.</li>
<li>Fix a memory leak in the <code class="docutils literal"><span class="pre">levenber_marquardt_strategy_test.cc</span></code></li>
<li>Fix an early return bug in the Dogleg solver. (Markus Moll)</li>
<li>Zero initialize Jets.</li>
<li>Moved <code class="docutils literal"><span class="pre">internal/ceres/mock_log.h</span></code> to <code class="docutils literal"><span class="pre">internal/ceres/gmock/mock-log.h</span></code></li>
<li>Unified file path handling in tests.</li>
<li><code class="docutils literal"><span class="pre">data_fitting.cc</span></code> includes <code class="docutils literal"><span class="pre">gflags</span></code></li>
<li>Renamed Ceres&#8217; Mutex class and associated macros to avoid
namespace conflicts.</li>
<li>Close the BAL problem file after reading it (Markus Moll)</li>
<li>Fix IsInfinite on Jets.</li>
<li>Drop alignment requirements for Jets.</li>
<li>Fixed Jet to integer comparison. (Keith Leung)</li>
<li>Fix use of uninitialized arrays. (Sebastian Koch &amp; Markus Moll)</li>
<li>Conditionally compile gflag dependencies.(Casey Goodlett)</li>
<li>Add <code class="docutils literal"><span class="pre">data_fitting.cc</span></code> to the examples <code class="docutils literal"><span class="pre">CMake</span></code> file.</li>
</ol>
</div>
</div>
<div class="section" id="id37">
<h2>1.2.3<a class="headerlink" href="#id37" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id38">
<h3>Bug Fixes<a class="headerlink" href="#id38" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li><code class="docutils literal"><span class="pre">suitesparse_test</span></code> is enabled even when <code class="docutils literal"><span class="pre">-DSUITESPARSE=OFF</span></code>.</li>
<li><code class="docutils literal"><span class="pre">FixedArray</span></code> internal struct did not respect <code class="docutils literal"><span class="pre">Eigen</span></code>
alignment requirements (Koichi Akabe &amp; Stephan Kassemeyer).</li>
<li>Fixed <code class="docutils literal"><span class="pre">quadratic.cc</span></code> documentation and code mismatch
(Nick Lewycky).</li>
</ol>
</div>
</div>
<div class="section" id="id39">
<h2>1.2.2<a class="headerlink" href="#id39" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id40">
<h3>Bug Fixes<a class="headerlink" href="#id40" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fix constant parameter blocks, and other minor fixes (Markus Moll)</li>
<li>Fix alignment issues when combining <code class="docutils literal"><span class="pre">Jet</span></code> and
<code class="docutils literal"><span class="pre">FixedArray</span></code> in automatic differeniation.</li>
<li>Remove obsolete <code class="docutils literal"><span class="pre">build_defs</span></code> file.</li>
</ol>
</div>
</div>
<div class="section" id="id41">
<h2>1.2.1<a class="headerlink" href="#id41" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id42">
<h3>New Features<a class="headerlink" href="#id42" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Powell&#8217;s Dogleg solver</li>
<li>Documentation now has a brief overview of Trust Region methods and
how the Levenberg-Marquardt and Dogleg methods work.</li>
</ol>
</div>
<div class="section" id="id43">
<h3>Bug Fixes<a class="headerlink" href="#id43" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Destructor for <code class="docutils literal"><span class="pre">TrustRegionStrategy</span></code> was not virtual (Markus
Moll)</li>
<li>Invalid <code class="docutils literal"><span class="pre">DCHECK</span></code> in <code class="docutils literal"><span class="pre">suitesparse.cc</span></code> (Markus Moll)</li>
<li>Iteration callbacks were not properly invoked (Luis Alberto
Zarrabeiti)</li>
<li>Logging level changes in ConjugateGradientsSolver</li>
<li>VisibilityBasedPreconditioner setup does not account for skipped
camera pairs. This was debugging code.</li>
<li>Enable SSE support on MacOS</li>
<li><code class="docutils literal"><span class="pre">system_test</span></code> was taking too long and too much memory (Koichi
Akabe)</li>
</ol>
</div>
</div>
<div class="section" id="id44">
<h2>1.2.0<a class="headerlink" href="#id44" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id45">
<h3>New Features<a class="headerlink" href="#id45" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li><code class="docutils literal"><span class="pre">CXSparse</span></code> support.</li>
<li>Block oriented fill reducing orderings. This reduces the
factorization time for sparse <code class="docutils literal"><span class="pre">CHOLMOD</span></code> significantly.</li>
<li>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.</li>
<li><code class="docutils literal"><span class="pre">CMake</span></code> file restructuring.  Builds in <code class="docutils literal"><span class="pre">Release</span></code> mode by   default, and now has platform specific tuning flags.</li>
<li>Re-organized documentation. No new content, but better
organization.</li>
</ol>
</div>
<div class="section" id="id46">
<h3>Bug Fixes<a class="headerlink" href="#id46" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fixed integer overflow bug in <code class="docutils literal"><span class="pre">block_random_access_sparse_matrix.cc</span></code>.</li>
<li>Renamed some macros to prevent name conflicts.</li>
<li>Fixed incorrent input to <code class="docutils literal"><span class="pre">StateUpdatingCallback</span></code>.</li>
<li>Fixes to AutoDiff tests.</li>
<li>Various internal cleanups.</li>
</ol>
</div>
</div>
<div class="section" id="id47">
<h2>1.1.1<a class="headerlink" href="#id47" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id48">
<h3>Bug Fixes<a class="headerlink" href="#id48" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fix a bug in the handling of constant blocks. (Louis Simard)</li>
<li>Add an optional lower bound to the Levenberg-Marquardt regularizer
to prevent oscillating between well and ill posed linear problems.</li>
<li>Some internal refactoring and test fixes.</li>
</ol>
</div>
</div>
<div class="section" id="id49">
<h2>1.1.0<a class="headerlink" href="#id49" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id50">
<h3>New Features<a class="headerlink" href="#id50" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>New iterative linear solver for general sparse problems - <code class="docutils literal"><span class="pre">CGNR</span></code>
and a block Jacobi preconditioner for it.</li>
<li>Changed the semantics of how <code class="docutils literal"><span class="pre">SuiteSparse</span></code> dependencies are
checked and used. Now <code class="docutils literal"><span class="pre">SuiteSparse</span></code> is built by default, only if
all of its dependencies are present.</li>
<li>Automatic differentiation now supports dynamic number of residuals.</li>
<li>Support for writing the linear least squares problems to disk in
text format so that they can loaded into <code class="docutils literal"><span class="pre">MATLAB</span></code>.</li>
<li>Linear solver results are now checked for nan and infinities.</li>
<li>Added <code class="docutils literal"><span class="pre">.gitignore</span></code> file.</li>
<li>A better more robust build system.</li>
</ol>
</div>
<div class="section" id="id51">
<h3>Bug Fixes<a class="headerlink" href="#id51" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Fixed a strict weak ordering bug in the schur ordering.</li>
<li>Grammar and typos in the documents and code comments.</li>
<li>Fixed tests which depended on exact equality between floating point
values.</li>
</ol>
</div>
</div>
<div class="section" id="id52">
<h2>1.0.0<a class="headerlink" href="#id52" title="Permalink to this headline">¶</a></h2>
<p>Initial open source release. Nathan Wiegand contributed to the Mac OSX
port.</p>
</div>
<div class="section" id="origins">
<h2>Origins<a class="headerlink" href="#origins" title="Permalink to this headline">¶</a></h2>
<p>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.</p>
</div>
</div>


           </div>
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="bibliography.html" class="btn btn-neutral float-right" title="Bibliography" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="contributing.html" class="btn btn-neutral" title="Contributing" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 2016 Google Inc.

    </p>
  </div> 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'./',
            VERSION:'1.13.0',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true
        };
    </script>
      <script type="text/javascript" src="_static/jquery.js"></script>
      <script type="text/javascript" src="_static/underscore.js"></script>
      <script type="text/javascript" src="_static/doctools.js"></script>
      <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
      MathJax.Hub.Config({
          "HTML-CSS": {
            availableFonts: ["TeX"]
          }
        });
      </script>

  

  
  
    <script type="text/javascript" src="_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
  
 
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-49769510-1', 'ceres-solver.org');
  ga('send', 'pageview');
</script>


</body>
</html>