- 26 May, 2015 1 commit
-
-
pmoulon authored
Change-Id: I53f1a245509a216f31e1824486a13c4bac548a7f
-
- 19 May, 2015 1 commit
-
-
Simon Rutishauser authored
This is consistent with how NULL LossFunctions are treated everywhere else. Change-Id: Ic91e39ccb13137fcad7f85e78613a29ecde30d67
-
- 14 May, 2015 1 commit
-
-
Sameer Agarwal authored
Before this change, the default step size for a function F(x) at x was step_size = |x| * relative_step_size if step_size was exactly zero, then to prevent division by zero we would fall back to relative_step_size. This however is not good enough, as values of x say 1e-64 would lead to step sizes ~ 1e-70 and dividing by such numbers leads to inaccurate results. For even smaller numbers, like 1e-300, which I have observed can occur as the optimization algorithm makes progress, this leads to NaNs. The key change in this CL is to change the fallback mechanism to be step_size = max(|x| * relative_step_size, min_step_size) where min_step_size = sqrt(DBL_EPSILON) This is the recommended minimum value for the step size for double precision arithmetic on the interwebs. This results in a small loss of precision in the transcendental functions test, but that is unavoidable as we are not taking sufficiently small steps anymore. On the whole though this will improve the numerical performance of the algorithm. To validate this approach, one of the parameter values for the EasyFunctorTest has been set to 1e-64, which causes the test to start failing without the corrected fallback logic. This change should also address some if not all of https://github.com/ceres-solver/ceres-solver/issues/121 Change-Id: I4a9013ef358626c1ba7b8abad60b3904163d63f6
-
- 13 May, 2015 1 commit
-
-
Chris Sweeney authored
Change-Id: Ic112d31e2b8d7ecd28816fdc76e27adb1da27ac5
-
- 06 May, 2015 2 commits
-
-
Tal Ben-Nun authored
Change-Id: I2fc4b203e984beaa7af96fb3cbe8ce14e5bca614
-
Alex Stewart authored
Change-Id: I1fb5f2504424506e1bba244bcb8efb25329564d1
-
- 05 May, 2015 2 commits
-
-
Sameer Agarwal authored
Change-Id: I3594ed46e78243034389cad158243e11dd1dc2b0
-
Sameer Agarwal authored
Change-Id: I6592b61451ead8f0407bec134fcf4b56ba22ffb9
-
- 04 May, 2015 2 commits
-
-
Petter Strandmark authored
The test makes sure the Rosenbrock function is correctly minimized from the canonical starting point using the default settings. Change-Id: Iea820f976707bde37162981c5db87fac5167ba9e
-
Petter Strandmark authored
Change-Id: Id3b25a177aa92032f7f99b0a381c4f97d07d73b2
-
- 29 Apr, 2015 1 commit
-
-
Russell Smith authored
I think this is all of the cases. These cases arise because pow(a,b) is limited to real valued results, if the argument and result were complex valued then these cases would disappear. NOTE: Since there is so much special casing here, it is worth checking to see if cpow() is implemented in terms of pow(), and what might be the consequences of using cpow() on the type std::complex<Jet<double, N> >. It is *possible* that a separate implementation of cpow might be required also. Also some comment fixes. Change-Id: Ia1e38df4cdcb548f778304c2854cacba6e1556ff
-
- 27 Apr, 2015 1 commit
-
-
Sameer Agarwal authored
Change-Id: Iffcde8f168b7cd68e56f351c43088d7aef1e5e2f
-
- 16 Apr, 2015 4 commits
-
-
Johannes Schönberger authored
Change-Id: Iec7c12e971b331d1847f9aa91349317eb6524856
-
Sameer Agarwal authored
Change-Id: I5a9683333fbab189058076cb2053f8f7afc7096a
-
Johannes Schönberger authored
Change-Id: Id3bd3c7490d679b87259bb0fbf0b2dbc7e831a07
-
Russell Smith authored
Change-Id: Ife7f6f3aca06322fa414ef747008d2b4dc468a57
-
- 15 Apr, 2015 2 commits
-
-
Johannes Schönberger authored
Change-Id: I58685b81e119360a5b9085bb44efc55131ec9117
-
Keir Mierle authored
Change-Id: I78fae5be517e3ee4756ea3ce448c1173c39857d6
-
- 14 Apr, 2015 2 commits
- 11 Apr, 2015 2 commits
-
-
Alex Stewart authored
- Include example use of new find_dependency() macro in CMake 3.x to find dependencies in <Project>Config.cmake files. - Also fix typo in NNLS modeling docs. Change-Id: Ie9862b69c0451ee8775826f2957f5e182d937439
-
Mark Moll authored
Change-Id: I5ba9d264cce7b9a986b28fb24f27200d5c5f328d
-
- 10 Apr, 2015 1 commit
-
-
Sameer Agarwal authored
The code seemed to imply that its possible to call the Write method with a null pointer which is never the case. There would be no point to calling Write. Thanks to Michael Vitus for pointing this out. Change-Id: Ic9a276856d0a7e65d53a1cc8742d4831c1a52615
-
- 07 Apr, 2015 1 commit
-
-
Sameer Agarwal authored
Eigen upstream was broken a little while ago, and it seemed to be the case that we needed a fix for using the LLT factorization on ARM. This has been fixed and AFAIK there are no stable eigen releases with this bug in it. For full gore, see http://eigen.tuxfamily.org/bz/show_bug.cgi?id=992 In light of the fix, the extra layer of indirection introduced earlier is not needed and we are reverting to normal programming. Change-Id: I16929d2145253b38339b573b27b6b8fabd523704
-
- 06 Apr, 2015 6 commits
-
-
Sameer Agarwal authored
Change-Id: I4b1e9ac6c1c74e96f51e57e0cbeaa3d3d649f770
-
Alex Stewart authored
- A lot of users find the CMake package installation process confusing, particularly the use of imported targets when exporting their own projects which use Ceres. - This patch adds a brief description of the overall process and the main bear-trap users are ensnared by. Change-Id: I44c022bbd18a393868bf88ea9ddd807c5e08abc9
-
Sameer Agarwal authored
The call to llt in backsubstitute seems to be using one of the fixed size specializations which is best done with an inline call to llt/ldlt rather than introducing yet another variant of the SolverUpperTriangularUsingCholesky and calling it. Also change the way SolverUpperTriangularUsingCholesky handles error. It always computes the solution even if it is garbage and then returns the error code. This ensures that the previous code that depends on unconditional computation still works. Change-Id: Idb1e6efdae9a3775a072e3b87cde02e0bbddb319
-
Sameer Agarwal authored
When solving a linear system using Eigen's dense Cholesky factorization if the right hand side of the linear system is the same vector that will store the solution, call solveInPlace instead of solve. Change-Id: I3e6d2f21ff420c25217cd87ee5d269fdfabbf19a
-
Sameer Agarwal authored
CERES_EIGEN_VERSION was being defined by the CMakeList.txt file but it is needed by the android build too. So this change directly constructs the CERES_EIGEN_VERSION string out of the raw Eigen version numbers. Change-Id: I65309805a59076c3082141d9042ab7e0e1b972bc
-
Sameer Agarwal authored
It seems that Eigen's LLT factorization is broken on ARM. This patch enables the use of LDLT factorization instead of LLT factorization. The switch is controlled at compile time using a preprocessor define - CERES_USE_EIGEN_LDLT. By default we continue to use LLT factorization though. To make the switching easier without introducing the Cholesky factorization based inversion and linear system solve routines have been abstracted into two new functions. Android.mk has been updated to enable the LDLT factorization, but the cmake file has not been updated as I will leave it to Alex's capable hands to do proper detection of ARM as a target platform. Change-Id: Iffe3abd2ce894de2a388b454df3da909b482d5e5
-
- 05 Apr, 2015 1 commit
-
-
Alex Stewart authored
Change-Id: I0a41e88e0669364d21ef86146f0b572f0f08ece5
-
- 04 Apr, 2015 1 commit
-
-
Alex Stewart authored
- Previously, if Ceres was already installed to the same location as one of the depenedencies (e.g. /usr/local) then as the BUILD_DIR/config path was necessarily added to the include_directories() list *after* the INCLUDE_DIRS for the dependencies, the config.h for the *installed* version of Ceres would be used instead of the locally configured version, as it would appear first on the path. - Forcing the location of the locally configured config.h to the front of the include_directories() list ensures that it is found first (and is thus used) even if an installed version of Ceres also exists on the path. Change-Id: I7b4f97a3ad0120bd11551f9b8eb6bffc66966eb4
-
- 31 Mar, 2015 2 commits
-
-
Keir Mierle authored
Change-Id: I9d6707bc686b6c74d878d8c36bbe5e95a805c6f7
-
Alex Stewart authored
- On MSVC, a Ceres dependency such as glog, may be named glog.lib, or libglog.lib. By default, CMake assumes no prefix for libraries on MSVC when using find_library(), thus find_library(glog) would fail if glog was named libglog.lib. - This patch caches & updates CMAKE_FIND_LIBRARY_PREFIXES in all of Ceres' find_package scripts to include lib & "" (no prefix) on MSVC and then returns CMAKE_FIND_LIBRARY_PREFIXES to its original state before returning. Change-Id: Ic82799e3b786cfb7228a51183bc189578b072bbe
-
- 30 Mar, 2015 2 commits
-
-
Alex Stewart authored
- MinGW produces code that segfaults when performing matrix multiplications in Eigen when compiled with -O3 (see below), as such force the use of -O2 which works. - http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556 Change-Id: I420e965d5033944374a5cc93490546c25e46bce5
-
Alex Stewart authored
- Previous tolerance of 2.0 * std::numeric_limits<double>::epsilon() was too tight for Cygwin, worked on all other known platforms. Change-Id: Ia79ad8961272dbb608d8e8ddd3f6d52e5f0735f4
-
- 25 Mar, 2015 1 commit
-
-
Jack Feng authored
In cmake 3.0, it is required to use full path for compilers. And it seems like there's no need to force the compiler. Instead we can just use set(CMAKE_C_COMPIER clang) so that we don't need to specify full path of clang and clang++. Change-Id: I9f6a625068e9d37a4bf5a595bafd82cbc13fdde4
-
- 24 Mar, 2015 1 commit
-
-
Alex Stewart authored
- Reported by Simeon (s1m3mu3@gmail.com) on Ceres mailing list. Change-Id: If23491128fb6320d9b643eb3d5db7d9e67ffcf0b
-
- 23 Mar, 2015 1 commit
-
-
Filippo Basso authored
Change-Id: I841aeddb0f0c2b0d905fc0520553f263db7e7959
-
- 21 Mar, 2015 1 commit
-
-
Alex Stewart authored
- Add missing gflags threading dependency. - Also add optional gflags Shlwapi dependency on Windows. - Add check_cxx_source_compiles() with CMAKE_BUILD_TYPE to fix namespace test builds on Windows with NMake generators. - Add namespace regex on gflags.h when check_cxx_source_compiles() fails on Windows using Visual Studio generator. Change-Id: I6570c566e5a29c665d621a54935c16d16bac7117
-