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 =====