%!TEX root = ceres-solver.tex

\chapter{Version History}
\section*{1.2.3}
\subsection{Bug Fixes}
\begin{itemize}
\item \texttt{suitesparse\_test} is enabled even when \texttt{-DSUITESPARSE=OFF}.
\item \texttt{FixedArray} internal struct did not respect \texttt{Eigen}
  alignment requirements (Thanks Koichi Akabe \& Stephan Kassemeyer).
\item Fixed \texttt{quadratic.cc} documentation and code mismatch
  (Thanks Nick Lewycky).
\end{itemize}
\section*{1.2.2}
\subsection{Bug Fixes}
\begin{itemize}
\item Fix constant parameter blocks, and other minor fixes (Thanks Markus Moll)
\item Fix alignment issues when combining \texttt{Jet} and
  \texttt{FixedArray} in automatic differeniation.
\item Remove obsolete \texttt{build\_defs} file.
\end{itemize}
\section*{1.2.1}
\subsection{New Features}
\begin{itemize}
\item Powell's Dogleg solver
\item Documentation now has a brief overview of Trust Region methods and how the Levenberg-Marquardt and Dogleg methods work.
\end{itemize}
\subsection{Bug Fixes}
\begin{itemize}
\item Destructor for \texttt{TrustRegionStrategy} was not virtual (Thanks Markus Moll)
\item Invalid \texttt{DCHECK} in \texttt{suitesparse.cc} (Thanks Markus Moll)
\item Iteration callbacks were not properly invoked (Thanks to Luis Alberto Zarrabeiti for the report)
\item Logging level changes in ConjugateGradientsSolver
\item VisibilityBasedPreconditioner setup does not account for skipped camera pairs. This was debugging code.
\item Enable SSE support on MacOS
\item \texttt{system\_test} was taking too long and too much memory (Thanks Koichi Akabe)
\end{itemize}
\section*{1.2.0}
\subsection{New Features}
\begin{itemize}
\item \texttt{CXSparse} support.
\item Block oriented fill reducing orderings. This
reduces the factorization time for sparse
\texttt{CHOLMOD} significantly.
\item New Trust region loop with support for multiple
trust region step strategies. Currently only Levenberg-Marquardt is supported, but this refactoring opens the door for Dog-leg, Stiehaug and others.
\item \texttt{Cmake} file restructuring.  Builds in \texttt{Release} mode by default, and now has platform specific tuning flags.
\item Re-organized documentation. No new content, but better organization.
\end{itemize}

\subsection{Bug Fixes}
\begin{itemize}
\item Fixed integer overflow bug in \texttt{block\_random\_access\_sparse\_matrix.cc}.
\item Renamed some macros to prevent name conflicts.
\item Fixed incorrent input to \texttt{StateUpdatingCallback}.
\item Fixes to AutoDiff tests.
\item Various internal cleanups.
\end{itemize}

\section*{1.1.1}
\subsection{Bug Fixes}
\begin{itemize}
\item Fix a bug in the handling of constant blocks. Thanks to Louis Simard for reporting this.
\item Add an optional lower bound to the Levenberg-Marquardt regularizer to prevent oscillating between well and ill posed linear problems.
\item Some internal refactoring and test fixes.
\end{itemize}
\section{1.1.0}
\subsection{New Features}
\begin{itemize}
\item New iterative linear solver for general sparse problems - \texttt{CGNR} and a block Jacobi preconditioner for it.
\item Changed the semantics of how \texttt{SuiteSparse} dependencies are checked and used. Now \texttt{SuiteSparse} is built by default, only if all of its dependencies are present.
\item Automatic differentiation now supports dynamic number of residuals.
\item Support for writing the linear least squares problems to disk in text format so that they can loaded into \texttt{MATLAB}.
\item Linear solver results are now checked for nan and infinities.
\item Added \texttt{.gitignore} file.
\item A better more robust build system.
\end{itemize}

\subsection{Bug Fixes}
\begin{itemize}
\item Fixed a strict weak ordering bug in the schur ordering.
\item Grammar and typos in the documents and code comments.
\item Fixed tests which depended on exact equality between floating point values.
\end{itemize}
\section*{1.0.0}
Initial Release.
