Documentation update.
Change-Id: Ic5f209da760562aa89a822f7e5853c5639a427eb
diff --git a/docs/changes.tex b/docs/changes.tex
index 343ffb8..90e8089 100644
--- a/docs/changes.tex
+++ b/docs/changes.tex
@@ -1,6 +1,74 @@
%!TEX root = ceres-solver.tex
\chapter{Version History}
+\section*{1.4.0}
+\subsection{API Changes}
+The new ordering API breaks existing code. Here the common case fixes.
+\subsubsection{Before}
+\begin{minted}[mathescape]{c++}
+options.linear_solver_type = ceres::DENSE_SCHUR
+options.ordering_type = ceres::SCHUR
+\end{minted}
+\subsubsection{After}
+\begin{minted}[mathescape]{c++}
+options.linear_solver_type = ceres::DENSE_SCHUR
+\end{minted}
+\subsubsection{Before}
+\begin{minted}[mathescape]{c++}
+options.linear_solver_type = ceres::DENSE_SCHUR;
+options.ordering_type = ceres::USER;
+for (int i = 0; i < num_points; ++i) {
+ options.ordering.push_back(my_points[i])
+}
+for (int i = 0; i < num_cameras; ++i) {
+ options.ordering.push_back(my_cameras[i])
+}
+options.num_eliminate_blocks = num_points;
+\end{minted}
+\subsubsection{After}
+\begin{minted}[mathescape]{c++}
+options.linear_solver_type = ceres::DENSE_SCHUR;
+options.ordering = new ceres::Ordering;
+for (int i = 0; i < num_points; ++i) {
+ options.ordering.AddParameterToGroup(my_points[i], 0);
+}
+for (int i = 0; i < num_cameras; ++i) {
+ options.ordering.AddParameterToGroup(my_cameras[i], 1);
+}
+\end{minted}
+\subsection{New Features}
+\begin{itemize}
+\item A new richer, more expressive and consistent API for ordering
+ parameter blocks.
+\item A non-linear generalization of Ruhe \& Wedin'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.
+\item An image denoising example using fields of experts. (Petter
+ Strandmark)
+\item Defines for Ceres version and ABI version.
+\item Higher precision timer code where available. (Petter Strandmark)
+\item Example Makefile for users of Ceres.
+\item IterationSummary now informs the user when the step is a
+ non-monotonic step.
+\end{itemize}
+\subsection{Bug Fixes}
+\begin{itemize}
+\item Various fixes to \texttt{nist.cc} (Markus Moll)
+\item Fixed a jacobian scaling bug.
+\item Numerically robust computation of \texttt{model\_cost\_change}.
+\item Signed comparison compiler warning fixes (Ricardo Martin)
+\item Various compiler warning fixes all over.
+\item Inclusion guard fixes (Petter Strandmark)
+\item Segfault in test code (Sergey Popov)
+\item Replaced EXPECT/ASSERT\_DEATH with the more portable
+ EXPECT\_DEATH\_IF]\_SUPPORTED macros.
+\item Fixed the camera projection model in Ceres' implementation of
+ Snavely's camera model. (Ricardo Martin)
+\end{itemize}
+
+
\section*{1.3.0}
\subsection{New Features}
\begin{itemize}