Miscellanous fixes in preparation for 1.6.0

1. Bug fix in NumericDiffCostFunction (Thanks to Nicolas Brodu).
2. Minor documentation update in solver.h
3. Version history update.
4. Bump the version and ABI version.

Change-Id: I951574ddd0b2c4c03b9c79ff33eb9bea549071e7
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 537a103..e3fcd19 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,11 +74,11 @@
 # For versions without ABI changes, bump the smallest number in CERES_VERSION,
 # but leave the CERES_ABI_VERSION unchanged.
 SET(CERES_VERSION_MAJOR 1)
-SET(CERES_VERSION_MINOR 5)
+SET(CERES_VERSION_MINOR 6)
 SET(CERES_VERSION_PATCH 0)
 SET(CERES_VERSION
     ${CERES_VERSION_MAJOR}.${CERES_VERSION_MINOR}.${CERES_VERSION_PATCH})
-SET(CERES_ABI_VERSION 1.5.0)
+SET(CERES_ABI_VERSION 1.6.0)
 
 ENABLE_TESTING()
 
diff --git a/docs/source/version_history.rst b/docs/source/version_history.rst
index 33f89bf..5ec3888 100644
--- a/docs/source/version_history.rst
+++ b/docs/source/version_history.rst
@@ -4,6 +4,60 @@
 Version History
 ===============
 
+1.6.0
+=====
+
+New Features
+------------
+
+#. Major Performance improvements.
+
+   a. Schur type solvers (``SPARSE_SCHUR``, ``DENSE_SCHUR``,
+      ``ITERATIVE_SCHUR``) are significantly faster due to custom BLAS
+      routines and fewer heap allocations.
+
+   b. ``SPARSE_SCHUR`` when used with ``CX_SPARSE`` now uses a block
+      AMD for much improved factorization performance.
+
+   c. The jacobian matrix is pre-ordered so that
+      ``SPARSE_NORMAL_CHOLESKY`` and ``SPARSE_SCHUR`` do not have to
+      make copies inside ``CHOLMOD``.
+
+   d. Faster autodiff by replacing division by multplication by inverse.
+
+   e. When compiled without threads, the schur eliminator does not pay
+      the penalty for locking and unlocking mutexes.
+
+#. Users can now use ``linear_solver_ordering`` to affect the
+   fill-reducing ordering used by ``SUITE_SPARSE`` for
+   ``SPARSE_NORMAL_CHOLESKY``.
+
+#. ``Problem`` can now report the set of parameter blocks it knows about.
+
+#. ``TrustRegionMinimizer`` uses the evaluator to compute the gradient
+   instead of a matrix vector multiply.
+
+#. On ``Mac OS``, whole program optimization is enabled.
+
+#. Users can now use automatic differentiation to define new
+   ``LocalParameterization`` objects. (Sergey Sharybin)
+
+#. Enable larger tuple sizes for Visual Studio 2012. (Petter Strandmark)
+
+
+Bug Fixes
+---------
+
+#. Bugfix in ``NumericDiffCostFunction``. (Nicolas Brodu)
+#. Death to BlockSparseMatrixBase.
+#. Change Minimizer::Options::min_trust_region_radius to double.
+#. Update to compile with stricter gcc checks. (Joydeep Biswas)
+#. Do not modify cached CMAKE_CXX_FLAGS_RELEASE. (Sergey Sharybin)
+#. ``<iterator>`` needed for back_insert_iterator. (Petter Strandmark)
+#. Lint cleanup. (William Rucklidge)
+#. Documentation corrections. (Pablo Speciale)
+
+
 1.5.0
 =====
 
diff --git a/include/ceres/ceres.h b/include/ceres/ceres.h
index ac76e97..b7aeeef 100644
--- a/include/ceres/ceres.h
+++ b/include/ceres/ceres.h
@@ -34,8 +34,8 @@
 #ifndef CERES_PUBLIC_CERES_H_
 #define CERES_PUBLIC_CERES_H_
 
-#define CERES_VERSION 1.5.0
-#define CERES_ABI_VERSION 1.5.0
+#define CERES_VERSION 1.6.0
+#define CERES_ABI_VERSION 1.6.0
 
 #include "ceres/autodiff_cost_function.h"
 #include "ceres/autodiff_local_parameterization.h"
diff --git a/include/ceres/numeric_diff_cost_function.h b/include/ceres/numeric_diff_cost_function.h
index 555bc3d..4c84d4c 100644
--- a/include/ceres/numeric_diff_cost_function.h
+++ b/include/ceres/numeric_diff_cost_function.h
@@ -230,8 +230,8 @@
     if (N5) parameters_reference_copy[5] = parameters_reference_copy[4] + N4;
     if (N6) parameters_reference_copy[6] = parameters_reference_copy[5] + N5;
     if (N7) parameters_reference_copy[7] = parameters_reference_copy[6] + N6;
-    if (N7) parameters_reference_copy[8] = parameters_reference_copy[7] + N7;
-    if (N8) parameters_reference_copy[9] = parameters_reference_copy[8] + N8;
+    if (N8) parameters_reference_copy[8] = parameters_reference_copy[7] + N7;
+    if (N9) parameters_reference_copy[9] = parameters_reference_copy[8] + N8;
 
 #define COPY_PARAMETER_BLOCK(block)                                     \
   if (N ## block) memcpy(parameters_reference_copy[block],              \
diff --git a/include/ceres/solver.h b/include/ceres/solver.h
index 8e3fa58..0603a30 100644
--- a/include/ceres/solver.h
+++ b/include/ceres/solver.h
@@ -351,9 +351,6 @@
     // deallocate the memory when destroyed.
     ParameterBlockOrdering* linear_solver_ordering;
 
-    // Note: This option only applies to the SPARSE_NORMAL_CHOLESKY
-    // solver when used with SUITE_SPARSE.
-
     // Sparse Cholesky factorization algorithms use a fill-reducing
     // ordering to permute the columns of the Jacobian matrix. There
     // are two ways of doing this.