Documentation update
Change-Id: I10c6c8375f27c7fa4cd1c381b4f39d784fa946e1
diff --git a/docs/source/building.rst b/docs/source/building.rst
index d4c447e..38a539b 100644
--- a/docs/source/building.rst
+++ b/docs/source/building.rst
@@ -70,12 +70,13 @@
platform. Start by installing all the dependencies.
.. NOTE::
-Up to at least Ubuntu 13.10, the SuiteSparse package in the official
-package repository (built from SuiteSparse v3.4.0) **cannot** be used to
-build Ceres as a *shared* library. Thus if you want to build Ceres as a
-shared library using SuiteSparse, you must perform a source install of
-SuiteSparse. It is recommended that you use the current version of
-SuiteSparse (4.2.1 at the time of writing).
+
+ Up to at least Ubuntu 13.10, the SuiteSparse package in the official
+ package repository (built from SuiteSparse v3.4.0) **cannot** be used
+ to build Ceres as a *shared* library. Thus if you want to build
+ Ceres as a shared library using SuiteSparse, you must perform a
+ source install of SuiteSparse. It is recommended that you use the
+ current version of SuiteSparse (4.2.1 at the time of writing).
.. code-block:: bash
diff --git a/docs/source/modeling.rst b/docs/source/modeling.rst
index 99c1e7c..bf039d0 100644
--- a/docs/source/modeling.rst
+++ b/docs/source/modeling.rst
@@ -295,10 +295,10 @@
.. class:: DynamicAutoDiffCostFunction
:class:`AutoDiffCostFunction` requires that the number of parameter
- blocks and their sizes be known at compile time, e.g., Bezier curve
- fitting, Neural Network training etc. It also has an upper limit of
- 10 parameter blocks. In a number of applications, this is not
- enough.
+ blocks and their sizes be known at compile time. It also has an
+ upper limit of 10 parameter blocks. In a number of applications,
+ this is not enough e.g., Bezier curve fitting, Neural Network
+ training etc.
.. code-block:: c++
@@ -518,6 +518,52 @@
sizes 4 and 8 respectively. Look at the tests for a more detailed
example.
+:class:`DynamicNumericDiffCostFunction`
+---------------------------------------
+
+.. class:: DynamicNumericDiffCostFunction
+
+ Like :class:`AutoDiffCostFunction` :class:`NumericDiffCostFunction`
+ requires that the number of parameter blocks and their sizes be
+ known at compile time. It also has an upper limit of 10 parameter
+ blocks. In a number of applications, this is not enough.
+
+ .. code-block:: c++
+
+ template <typename CostFunctor, NumericDiffMethod method = CENTRAL>
+ class DynamicNumericDiffCostFunction : public CostFunction {
+ };
+
+ In such cases when numeric differentiation is desired,
+ :class:`DynamicNumericDiffCostFunction` can be used.
+
+ Like :class:`NumericDiffCostFunction` the user must define a
+ functor, but the signature of the functor differs slightly. The
+ expected interface for the cost functors is:
+
+ .. code-block:: c++
+
+ struct MyCostFunctor {
+ bool operator()(double const* const* parameters, double* residuals) const {
+ }
+ }
+
+ Since the sizing of the parameters is done at runtime, you must
+ also specify the sizes after creating the dynamic numeric diff cost
+ function. For example:
+
+ .. code-block:: c++
+
+ DynamicNumericDiffCostFunction<MyCostFunctor> cost_function(
+ new MyCostFunctor());
+ cost_function.AddParameterBlock(5);
+ cost_function.AddParameterBlock(10);
+ cost_function.SetNumResiduals(21);
+
+ As a rule of thumb, try using :class:`NumericDiffCostFunction` before
+ you use :class:`DynamicNumericDiffCostFunction`.
+
+
:class:`NumericDiffFunctor`
---------------------------
diff --git a/docs/source/version_history.rst b/docs/source/version_history.rst
index 582c4b9..93207a4 100644
--- a/docs/source/version_history.rst
+++ b/docs/source/version_history.rst
@@ -4,6 +4,40 @@
Version History
===============
+HEAD
+====
+
+New Features
+------------
+#. ``DynamicNumericDiffCostFunction`` for numerically differentiated cost
+ functions whose sizing is determined at run time.
+#. ``NumericDiffCostFunction`` now supports a dynamic number of
+ residuals just like ``AutoDiffCostFunction``.
+#. Significant refactoring of the ``CMake`` for increased robustness,
+ better dependency checking, better GUI support. (Alex Stewart)
+#. Faster Automatic differentiation (Tim Langlois)
+
+Bug Fixes
+---------
+
+#. Remove RuntimeNumericDiffCostFunction.
+#. Fix operator= ambiguity on some versions of Clang. (Alex Stewart)
+#. Various Lint cleanups (William Rucklidge & Jim Roseborough)
+#. Modified installation folders for Windows. (Pablo Speciale)
+#. Added librt to link libraries for SuiteSparse_config on Linux. (Alex Stewart)
+#. Check for presence of return-type-c-linkage option with
+ Clang. (Alex Stewart)
+#. Fix Problem::RemoveParameterBlock after calling solve. (Simon Lynen)
+#. Fix a free/delete bug in covariance_impl.cc
+#. Fix two build errors. (Dustin Lang)
+#. Add RequireInitialization = 1 to NumTraits::Jet.
+#. Update gmock/gtest to 1.7.0
+#. Added IterationSummary::gradient_norm.
+#. Reduced verbosity of the inner iteration minimizer.
+#. Fixed a bug in TrustRegionMinimizer. (Michael Vitus)
+#. Removed android/build_android.sh.
+
+
1.7.0
=====