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