commit 0435246de5f45e69b2c97d244ed61bedd340215a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Oct 8 18:12:53 2014 -0700

    Add seene to users.rst
    
    Change-Id: If40726775a3d4b234b6e10517fe9943d122a3384

commit fdf32b315f39553639f0becf078ad4eec763a10e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Oct 8 16:04:32 2014 -0700

    Fix some errant tabs.
    
    Change-Id: Iaf1906eaade49467ba282656cf0a10879d258b1f

commit 6768b3586a027bb850c0a50e2a27380f5d80142a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Oct 8 12:48:16 2014 -0700

    Minor cleanups in preparation for a release.
    
    1. Fix the release script to ignore the version.h checking.
    2. Fix some ceres documentation formatting errors.
    
    Change-Id: I3fd6b85e771b242f463d6a36c3efd8d691f9242f

commit 7b6bd1cd31aa0b8cb7fb97600c1b9999846e3152
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Oct 2 16:16:26 2014 -0700

    Documentation update.
    
    1. Complete restructuring of the documentation to account for
       GradientProblemSolver.
    2. Update the version history to account for changes since 1.9.0.
    3. Add links and document the various examples that ship with ceres.
    4. Documentation for GradientProblem GradientProblemSolver.
    
    Change-Id: If3a18f2850cbc98be1bc34435e9ea468785b8b27

commit b7d321f505e936b6c09aeb43ae3f7b1252388a95
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Oct 3 15:47:59 2014 -0700

    Relax the warning/error handing in GCC.
    
    Thanks to Matthew Woehlke for suggesting this.
    
    Change-Id: Iae754465c086b0841a7816df1a36781371d0dc9a

commit 94c6e7d27b5d48d81ab54ed9cdcbc55c3c099311
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Oct 1 15:55:13 2014 -0700

    Improve multithreading when using inner iterations.
    
    Inner iterations by default would use problems where the evaluator
    was configured to use exactly one thread for doing the evaluation.
    This is fine when there are multiple inner iteration problems
    being executed concurrently, but every now and then there are
    problem decompositions where there is just one parameter block
    in the current independent set and it touches every single
    residual block. In such cases it is essential that the evaluator
    be configured to use multiple threads.
    
    We now pay attention to the size of the independent set and
    dynamically configure the number of threads being used by the
    outer loop and the evaluator loop.
    
    Thanks to William Rucklidge for reporting this issue and providing
    a test problem to debug.
    
    Change-Id: Iaff9a4ab6d2658cf7b61ea213575d23aab604e3b

commit 9e11cd16d09403b9270e621e839d5948b6a74b8d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Sep 29 14:27:58 2014 -0700

    Faster  BlockRandomAccessSparseMatrix::SymmetricRightMultiply.
    
    Trade a small amount of memory to improve the cache coherency of
    the SymmetricRightMultiply operation.
    
    The resulting code leads to a 10-20% speedup in the linear solver
    end to end.
    
    Change-Id: I8ab2fe152099e849b211b5b19e4ef9f03d8e7f1c

commit 46b8461fd010c1e7ffce6bb2bdf8a84b659d5e09
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Sep 29 15:10:58 2014 -0700

    Various minor fixes from William Rucklidge.
    
    Change-Id: Ibe731d5db374ad8ee148d62a9fdd8d726b607a3f

commit b44cfdef25f6bf0917a23b3fd65cce38aa6a3362
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Sep 29 07:53:54 2014 -0700

    Let ITERATIVE_SCHUR use an explicit Schur Complement matrix.
    
    Up till now ITERATIVE_SCHUR evaluates matrix-vector products
    between the Schur complement and a vector implicitly by exploiting
    the algebraic expression for the Schur complement.
    
    This cost of this evaluation scales with the number of non-zeros
    in the Jacobian.
    
    For small to medium sized problems there is a sweet spot where
    computing the Schur complement is cheap enough that it is much
    more efficient to explicitly compute it and use it for evaluating
    the matrix-vector products.
    
    This changes implements support for an explicit Schur complement
    in ITERATIVE_SCHUR in combination with the SCHUR_JACOBI preconditioner.
    
    API wise a new bool Solver::Options::use_explicit_schur_complement
    has been added.
    
    The implementation extends the SparseSchurComplementSolver to use
    Conjugate Gradients.
    
    Example speedup:
    
    use_explicit_schur_complement = false
    
    Time (in seconds):
    Preprocessor                            0.585
    
      Residual evaluation                   0.319
      Jacobian evaluation                   1.590
      Linear solver                        25.685
    Minimizer                              27.990
    
    Postprocessor                           0.010
    Total                                  28.585
    
    use_explicit_schur_complement = true
    
    Time (in seconds):
    Preprocessor                            0.638
    
      Residual evaluation                   0.318
      Jacobian evaluation                   1.507
      Linear solver                         5.930
    Minimizer                               8.144
    
    Postprocessor                           0.010
    Total                                   8.791
    
    Which indicates an end-to-end speedup of more than 3x, with the linear
    solver being sped up by > 4x.
    
    The idea to explore this optimization was inspired by the recent paper:
    
    Mining structure fragments for smart bundle adjustment
    L. Carlone, P. Alcantarilla, H. Chiu, K. Zsolt, F. Dellaert
    British Machine Vision Conference, 2014
    
    which uses a more complicated algorithm to compute parts of the
    Schur complement to speed up the matrix-vector product.
    
    Change-Id: I95324af0ab351faa1600f5204039a1d2a64ae61d

commit 4ad91490827f2ebebcc70d17e63ef653bf06fd0d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Sep 24 23:54:18 2014 -0700

    Simplify the Block Jacobi and Schur Jacobi preconditioners.
    
    1. Extend the implementation of BlockRandomAccessDiagonalMatrix
    by adding Invert and RightMultiply methods.
    
    2. Simplify the implementation of the Schur Jacobi preconditioner
    using these new methods.
    
    3. Replace the custom storage used inside Block Jacobi preconditioner
    with BlockRandomAccessDiagonalMatrix and simplify its implementation
    too.
    
    Change-Id: I9d4888b35f0f228c08244abbdda5298b3ce9c466

commit 8f7be1036b853addc33224d97b92412b5a1281b6
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Sep 29 08:13:35 2014 -0700

    Fix a formatting error TrustRegionMinimizer logging.
    
    Change-Id: Iad1873c51eece46c3fdee1356d154367cfd7925e

commit c99872d48e322662ea19efb9010a62b7432687ae
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Sep 24 21:30:02 2014 -0700

    Add BlockRandomAccessSparseMatrix::SymmetricRightMultiply.
    
    Change-Id: Ib06a22a209b4c985ba218162dfb6bf46bd93169e

commit d3ecd18625ba260e0d00912a305a448b566acc59
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Sep 23 10:12:42 2014 -0700

    Add an explicit include for local_parameterization.h
    
    Thanks to cooordz for reporting this.
    
    Change-Id: I7d345404e362a94ff1eb433ad6b9dcc4960ba76d

commit 5dd76869cf45122c79579423f09e0de08cf04092
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Fri Sep 19 16:08:25 2014 +0100

    Fix unused-function warning with Eigen < 3.2.2.
    
    - CreateBlockJacobian() is only ever used when Eigen >= 3.2.2 is
      detected, but was previously defined whenever CERES_USE_EIGEN_SPARSE
      was defined with no check on the Eigen version.
    - This resulted in an unused-function compile warning that became an
      error due to -Werror, preventing compilation when using Eigen < 3.2.2.
    
    Change-Id: I24628ff329f14b087ece66bf2626bdc0de4ba224

commit 820cb7b14831aa03eca1e8186000cebfdf0a42f3
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Sep 17 09:46:08 2014 -0700

    Add solver_utils.cc to Android.mk
    
    Change-Id: I358522971711280f4362a1fa39b1568160e21e63

commit 092b94970a073f8b47179d96160226fc19095898
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Sep 5 11:56:29 2014 -0700

    Add GradientProblem and GradientProblemSolver.
    
    The line search minimizer in Ceres does not require that the
    problems that is solving is a sum of squares. Over the past
    year there have been multiple requests to expose this algorithm
    on its own so that it can be used to solve unconstrained
    non-linear minimization problems on its own.
    
    With this change, a new optimization problem called
    GradientProblem is introduced which is basically a thin
    wrapper around a user defined functor that evaluates cost
    and gradients (FirstOrderFunction) and an optional LocalParameterization.
    
    Corresponding to it, a GradientProblemSolver and its associated
    options and summary structs are introduced too.
    
    An example that uses the new API to find the minimum of Rosenbrock's
    function is also added.
    
    Change-Id: I42bf687540da25de991e9bdb00e321239244e8b4

commit 6c45d6b891aac01489b478a021f99081c61792cb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Sep 11 07:48:30 2014 -0700

    Add more inspection methods to Problem.
    
    Problem::GetCostFunctionForResidualBlock
    Problem::GetLossFunctionForResidualBlock
    
    are added, so that users do not have to maintain this mapping
    outside the Problem.
    
    Change-Id: I38356dfa094b2c7eec90651dafeaf3a33c5f5f56

commit 6ad9b8e2ae66c9009441d0f9304486ec8dfa9a6a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Sep 9 14:29:28 2014 -0700

    Ignore row/column blocks structure when using dynamic sparsity
    
    The row/column blocks can be huge when using dynamic sparsity. This
    can result in very large memory usage when augmenting the jacobian
    with the LM diagonal.
    
    Thanks to Mingsong Dou for reporting this.
    
    Change-Id: I6aa140ceefa98389ae17958f89ca76e0c76f95b8

commit 7e43460d42e20be1ba13121655dbbfd0d1c751ae
Author: Martin Baeuml <baeuml@gmail.com>
Date:   Mon Sep 8 16:49:06 2014 +0200

    Fix a few typos in the documentation.
    
    Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3

commit 1aef66eeae7042902655a11b0d6a1a32900abb7b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Sep 7 21:18:44 2014 -0700

    Remove errant space.
    
    Change-Id: Iedc06960417a9b938d57f623b4beb87a98e3d081

commit 89080ab153a33008782759187fa8e9af7d2f83f1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sat Sep 6 21:13:48 2014 -0700

    Add LocalParameterization::MultiplyByJacobian.
    
    This is needed to efficiently support LocalParameterization objects
    in GradientProblemSolver.
    
    Change-Id: Ic7b715b8be694b099dc95d6707a67474297533e6

commit d76da16f49d419ae3664ca1bdc2286c1ea78ebed
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Sep 7 18:42:49 2014 -0700

    Move some routines to solver_utils.h/cc
    
    This moves a couple of routines from solver.cc into solver_utils.h/cc
    so that they can also be used by the upcoming GradientProblemSolver.
    
    Change-Id: I627b32ad3dc639422aacde78a8e391459d947e99

commit cbf03ac292a0c0e9e6b7fcc1b08b67e95965922f
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sat Sep 6 21:07:08 2014 -0700

    Make LineSearchMinimizer consistent with TrustRegionMinimizer.
    
    Change the logic for how IterationSummary objects are added to
    Summary::iterations to match the one in TrustRegionMinimizer.
    
    Change-Id: I57851ad8294e58f83b9115cca9c24695d86ee92a

commit f04c32319751e1efd610acd3699bca0a6dd6c6d1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sat Sep 6 21:05:41 2014 -0700

    Fix some obsolete documentation in CostFunction::Evaluate
    
    Change-Id: I1d7ee5c596fbf6a4d886dce5b989c8eb18af2dce

commit 9263547c02a1807532b159c217e7acd124d3db10
Author: Johannes Schönberger <hannesschoenberger@gmail.com>
Date:   Sat Sep 6 17:26:15 2014 -0400

    Fix CG solver options for ITERATIVE_SCHUR, which did not copy min_num_iterations
    
    Change-Id: If31bc53b49ec20426fd438b79b8fa1f69d11e861

commit b41f048256d1a8184cbe874b5a96dffa7fa4630d
Author: Martin Baeuml <baeuml@gmail.com>
Date:   Fri Sep 5 15:03:32 2014 +0200

    Remove obsolete include of numeric_diff_functor.h.
    
    numeric_diff_functor.h was removed and does not exist anymore.
    
    Change-Id: I07bf04bf81142551e867b95b83a0653e11cad54c

commit b7fb6056a717cc3c372cfb7115c527ee8bc05ddb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Sep 3 11:19:02 2014 -0700

    Remove NumericDiffFunctor.
    
    Its API was broken, and its implementation was an unnecessary
    layer of abstraction over CostFunctionToFunctor.
    
    Change-Id: I18fc261fc6a3620b51a9eeb4dde0af03d753af69

commit 175fa8ff09049110a8509409f60cee5fd52cdbe6
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Sep 2 06:49:08 2014 -0700

    CostFunctionToFunctor allows dynamic number of residuals.
    
    The code itself was perfectly capable of handling residuals, but there
    was an overly strict runtime check that had to be removed.
    
    Thanks to Domink Reitzle for reporting this.
    
    Change-Id: I6a6d000a7c5203dd5945a61b4caeda1b8aeb09c9

commit 70ace0d5a5601901288974fcf27919754260cf0e
Author: Johannes Schönberger <hannesschoenberger@gmail.com>
Date:   Sat Aug 30 15:52:34 2014 -0400

    Fix max. linear solver iterations in ConjugateGradientsSolver
    
    Change-Id: Ice0cef46441dbc1c121eeb42113667a46c96936f

commit c5d8d0680250f5eb554577d30d28fc805b03fab9
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Aug 29 20:31:19 2014 -0700

    Fix a unused function error with Eigen version 3.2.1 or less.
    
    Thanks to Johannes Schoenberger  for reporting this.
    
    Change-Id: Ie17d28f2a68734a978a8c95007724bc4055de43a

commit 0e1cc2a55488e4cf381833baaa3531c02ce9d69e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Aug 29 09:16:56 2014 -0700

    Fix the build on Eigen version 3.2.1 and older.
    
    Change-Id: I18f5cb5d42113737d7b8f78a67acee28bd5b3e08

commit 5f96c62b56222f27e606f2246a8a16b6942af8d1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Aug 28 23:06:17 2014 -0700

    Add Block AMD ordering for SPARSE_SCHUR + EIGEN_SPARSE.
    
    Ordering routines for the Schur complement when using EIGEN_SPARSE.
    Also integration into SchurComplementSolver.
    
    Part of this CL is also a refactoring of the block jacobian matrix
    construction.
    
    Change-Id: I11d665cc7d4867c64190e6fed1118f4d2e13d59b

commit 7344626c04d19ca1dc4871c377c4422c744b1bca
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Aug 28 22:03:09 2014 -0700

    Let EIGEN_SPARSE + SPARSE_NORMAL_CHOLESKY use block AMD.
    
    Modify SparseNormalCholeskySolver to use a pre-ordered Jacobian
    matrix.
    
    Change-Id: Ib4d725d7a2d7bb94ea76dbb3a9b172784dbc8ea0

commit 9f7032369ea4e432f0fb507cb6d2209741ee6946
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Aug 28 21:46:43 2014 -0700

    Block AMD for SparseNormalCholesky + EIGEN_SPARSE.
    
    This is just the reordering routine. The integration with
    SparseNormalCholesky shall happen in a subsequent CL.
    
    Change-Id: I39ddc32aa66b11c368faf75404850fa0ae0d2b3a

commit b9331cd4077100d645be22a912d5743eeda72878
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Aug 28 14:42:27 2014 -0700

    Cleanup reorder_program.cc
    
    Program::SetParameterOffsetsAndIndex() was being called willy nilly.
    Now the invariant is that any function that actually reorders the
    program, updates the offsets and indices.
    
    Also the logic around handling EIGEN_SPARSE has been simplified in
    anticipation of the block AMD code that is forthcoming.
    
    Last but not the least, num_eliminate_blocks, which is a rather
    cryptic name to begin with has been replaced by the more meaningful
    size_of_first_elimination_group.
    
    Change-Id: I77e684f699a93b53e76aa406d64f40f8704df813

commit 79491a3f4a3939a3cce4644da7a998b7782b963a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Aug 28 13:57:50 2014 -0700

    Solver::FullReport now reports build config.
    
    The header of Summary::FullReport now looks like
    
    Solver Summary (v 1.10.0-suitesparse-cxsparse-lapack-no_openmp)
    
                                         Original                  Reduced
    Parameter blocks                        22122                    22122
    Parameters                              66462                    66462
    Residual blocks                         83718                    83718
    Residual                               167436                   167436
    
    Change-Id: Id1b81bbf90ba412d19e2dd3687eeb9d372b72c1b

commit 48068c753e91d77f6c96ef2d529a27ef8ee3947c
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Aug 28 13:03:40 2014 -0700

    Lint cleanup from William Rucklidge.
    
    Change-Id: Ie0e0aa58440be7a4f67dcd633dbb6f1bb0c051a8

commit 6a51b135e6298e8ba44a58cc2b54a170ab61a82f
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Aug 28 10:48:29 2014 -0700

    Fix solver_test.cc
    
    When Eigen is not installed, Solver::IsValid was not detecting
    it correctly.
    
    Change-Id: Id285a84d829a9e20bc5de663adfca66ac31e08f3

commit 62a8d64453ee41dae56710a4eead3fadf2fe1a4e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Aug 27 22:54:00 2014 -0700

    Expand check for lack of a sparse linear algebra library.
    
    The LinearSolver factory was creating a NULL linear solver
    if only Eigen's sparse linear algebra backend was available.
    
    Thanks to Michael Samples and Domink Reitzle for reporting this.
    
    Change-Id: I35e3a6c0fd0da2a31934adb5dfe4cad29577cc73

commit 12eb389b4ec4113a2260c1a192a1d3f8d1b6a2d3
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Aug 27 22:18:33 2014 -0700

    Fix Eigen Row/ColMajor bug in NumericDiffCostFunction.
    
    If the parameter block size is 1, asking Eigen to create
    a row-major matrix triggers a compile time error. Previously
    we were handling the case where the number of rows in the
    jacobian block was known statically, but the problem is present
    when the nummber of rows is dynamic.
    
    This CL fixes this problem.
    
    Thanks to Dominik Reitzle for reporting this.
    
    Change-Id: I99c3eec3558e66ebf4efa51c4dee8ce292ffe0c1

commit 6c25185bb1643d8d0f3d8e1a7b82a058156aa869
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Thu Aug 28 16:07:51 2014 +0100

    Fix crash in Covariance if # threads > 1 requested without OpenMP.
    
    - Previously if options.num_threads > 1 was given to Covariance compiled
      without OpenMP, a CHECK() would be triggered in program_evalutor.
    
    Change-Id: Iaade4f5ed5326b0c59a7014c750c41ee026e1124

commit 6f89d850fb4ace0104abccf467c4fe37ad378b79
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Aug 27 11:51:50 2014 -0700

    Further build breakage fixes.
    
    1. Allow the minimum number of linear solver iterations to be zero.
    2. Fix conjugate gradients solver's iteration loop to be sane again.
    
    Change-Id: I8594815fec940c2b30e28eb58ec5d8baacf13dae

commit dd596d0f0d6d08951efc2c11a639b546db2080c6
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Aug 27 11:26:50 2014 -0700

    Fix the broken build.
    
    Change-Id: I083cf1cca1bf4cca956193022d450364e73f833a

commit d906afae22b05b9b9a9a2657924f4c0bf1a9b5ea
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Aug 25 22:32:38 2014 -0700

    A number of bug fixes.
    
    1. Fix a build breakage in graph_test.
    2. Respect Solver::Options::min_num_linear_solver_iterations in
       conjugate_gradients_solver.cc
    
    Thanks to Johannes Schönberger for reporting these.
    
    Change-Id: Ib32e3929bf5d92dd576ae5b53d4d88797095136e

commit dab955928c6d0942d6acc5b5f1c4c11260d0767d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Aug 17 13:14:50 2014 -0700

    Add an unweighted graph.
    
    Rename Graph -> WeightedGraph.
    Add a new Graph class, which is cheaper to construct and
    work with if the weights are not needed.
    
    This cuts down the cost of building the Hessian graph
    significantly.
    
    Change-Id: Id0cfc81dd2c0bb5ff8f63a1b55aa133c53c0c869

commit a0c282adbd268c2ad82551fab31fe1cf8d0c4282
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Aug 24 22:19:03 2014 -0700

    Add EIGEN_STRONG_INLINE annotation to jet.h
    
    This improves performance when using MSVC on Windows. On GCC
    there will be no effect.
    
    Change-Id: I555a81ff6823c2855d64773073f75af50c48d716

commit 20de0a7793c574e964350a623446136889f74632
Author: Björn Piltz <bjornpiltz@gmail.com>
Date:   Mon Aug 25 17:05:54 2014 +0200

    Fixed Malformed regex
    
    I got the following error with MSVC:
    Syntax error at index 9 in simple regular expression "NumGroups()": '(' is unsupported.
    
    Change-Id: Id1952831d81d3eb5d73bbed8c311914c4c8ab51f

commit ccf8aea988269841d84d746e52164d5056c67a10
Author: Björn Piltz <bjornpiltz@gmail.com>
Date:   Mon Aug 25 16:16:01 2014 +0200

    Fixed MSVC error C2124: divide or mod by zero
    
    Alternatively, if quiet_NaN is not available on all platforms a workaround would be:
        volatile double zero = 0.0;
        double x = 1.0/zero;
    The 'volatile' is needed to shut up "warning C4723: potential divide by 0".
    
    Change-Id: If2bbdab8540595aa2e0079e1eb6b6fed6d4a6ef7

commit 8de27be218d42b282d7f15867733ad07058b0887
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Aug 19 08:22:40 2014 -0700

    Fix a bug in TrustRegionPreprocessor
    
    TrustRegionPreprocessor was not setting Minimizer::Options::is_constrained.
    This meant that the line search for bounds constraints was not being
    invoked for bounds constrained problems.
    
    And some minor lint cleanup.
    
    Change-Id: I18852cfaf1b33fd90b7d8c196f2063c128126658

commit 1745dd615b3897a3ef9896acfdba67eee1739bf4
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Jun 5 21:30:13 2014 -0700

    Refactor SolverImpl.
    
    Replace SolverImpl with
    
     a. A minimizer specific preprocessor class.
     b. A generic Solve function inside solver.cc
     c. Presummarize and Postsummarize functions to handle
        updates to the summary object.
    
    The existing SolverImpl class was a mixture of the above three
    things and was increasingly complicated code to follow. This change,
    breaks it into its three separate constituents, with the aims of
    better separation of concerns and thus better testability and
    reliability.
    
    The call to Solver::Solve() now consists of
    
    1. Presummarize - summarize the given state of the problem and solver
       options.
    2. Preprocess - Setup everything that is needed to call the minimizer.
       This includes, removing redundant parameter and residual blocks,
       setting up the reordering for the linear solver, creating the
       linear solver, evaluator, inner iteration minimizer etc.
    3. Minimize.
    4. Post summarize - summarize the result of the preprocessing and the
       solve.
    
    Change-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a
