Minor fix to reject a line search config with negative L-BFGS rank.

Change-Id: Iad4c678efe574ef6696c34bd2a0ce61a504c7344
Minor fixes

1. Typo in c_api.h
2. The stream operator for FunctionSample is now in the ceres::internal namespace.

Change-Id: Id927a7a49c47d8903505535749ecca78cd2e83b3
Covariance estimation using SuiteSparseQR.

Change-Id: I70d1686e3288fdde5f9723e832e15ffb857d6d85
Update documentation for Covariance

Change-Id: Ia4a7347ef8267b7107698d85fcbfc986111958dc
Fix build breakage on old versions of SuiteSparse.

SuiteSparse_long is only defined in recent versions of SuiteSparse
as the index variable type for large matrices. In older versions
UF_long was used. Ubuntu still ships with an older version of
SuiteSparse, so an ifdef is needed to fix the build.

This patch has been tested on mac and on linux with older and
newer versions of SuiteSparse.

Change-Id: I4ada86d7973784a79bde4afec13ce3ca4e8dc225
Add the ability to turn shared library compilation on and off

Change-Id: Ib9eacfbc894bb2b66aafff3b930c63e2ad8a555e
Update version from 1.6.0 -> 1.7.0rc1.

Change-Id: I420a8907142bffad0e3aa6c7196541ca2309c099
Lint fixes from Jim Roseborough.

Change-Id: If93e1972041b36410225a509e3c8c7c818f92124
Check GCC Version before adding -fast compiler option on OSX.

-fast compiler option is only supported using Apple's GCC packaged with XCode.
Other GCC versions will fail when this flag is enabled. This commit checks the
GCC version on OSX and only enables this flag when < 4.3. Apple's GCC is
currently 4.2.1 and a user is unlikely to install a non-apple version this old
on OSX.

Change-Id: Ifca9149625c065cd16559d7e30c218a322cf79aa
Fix compilation error caused by missing suitesparse headers

Covariance implementation file used to unconditionally include
SuiteSparseQR.hpp which caused compilation error in cases you
don't have SuiteSuite installed to the system

Moved the include to #ifdef block.

Change-Id: I3a52c0f81711b2b70ae625fe80b758ecb0817cc6
Use more performant, less conservative Eigen solvers.

colPivHouseholderQR -> householderQR
ldlt -> llt.

The resulting performance differences are significant enough
to justify switching.

LAPACK's dgels routine used for solving linear least squares
problems does not use pivoting either.

Similarly, we are not actually using the fact that the matrix
being factorized can be indefinite when using LDLT factorization, so
its not clear that the performance hit is worth it.

These two changes result in Eigen being able to use blocking
algorithms, which for Cholesky factorization, brings the performance
closer to hardware optimized LAPACK. Similarly for dense QR
factorization, on intel there is a 2x speedup.

Change-Id: I4459ee0fc8eb87d58e2b299dfaa9e656d539dc5e
Multiple dense linear algebra backends.

1. When a LAPACK implementation is present, then
DENSE_QR, DENSE_NORMAL_CHOLESKY and DENSE_SCHUR
can use it for doing dense linear algebra operations.

2. The user can switch dense linear algebra libraries
by setting Solver::Options::dense_linear_algebra_library_type.

3. Solver::Options::sparse_linear_algebra_library is now
Solver::Options::sparse_linear_algebra_library_type to be consistent
with all the other enums in Solver::Options.

4. Updated documentation as well as Solver::Summary::FullReport
to reflect these changes.

Change-Id: I5ab930bc15e90906b648bc399b551e6bd5d6498f
Fix broken android build.

Change-Id: I6f27e3ef9bd678f7393c9f573491064978e9c368
Move most of suitesparse/cxsparse ifdef code to their headers

Main purpose of this is to make implementation files free from
endless ifdef blocks every time this libraries are needed to be
included. This would hopefully prevent compilation errors in
the future caused by missing ifdef around header include.

This also includes some stubs added to suitesparse/cxsparse
headers to make code even more free from ifdefs.

Change-Id: Ic8554e7df31d8c4751583fe004b99e71b3c9087b
Reduce memory usage in covariance estimation.

When using the SPARSE_QR algorithm, now a Q-less
factorization is used. This results in significantly
less memory usage.

The inversion of the semi-normal equations is now
threaded using openmp. Indeed if one has SuiteSparse
compiled with TBB, then both the factorization
and the inversion are completely threaded.

Change-Id: Ia07591e48e7958d427ef91ff9e67662f6e982c21
Lint cleanups from William Rucklidge

Change-Id: Ia4756ef97e65837d55838ee0b30806a234565bfd
Fix warning C4373 in Visual Studio

The warning occurs because an overridden function added a const
to one argument.

Change-Id: Idd24f7c6ab60064747104bfc75ae9bf112f61b3e
Fix breakage on old versions of SuiteSparse.

Thanks to Fisher Yu for reporting this.

Change-Id: Iefa89816cbb60e3512338a7c2a65655c017877ac
Documentation update for 1.7.0rc2

Change-Id: I6b0c19bed57b51a0f6591c60a4ae0d849c62451b
Fix build breakage on old SuiteSparse.

Errant semi colon is to blame.

Thanks to Timothy Langlois for reporting this.

Change-Id: I57bb1cd69d78ab1897ead3627539a0da11b97455