diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-06-03 13:54:20 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-06-03 13:54:39 +0200 |
commit | f9940ef1e81d3f1f397157787598e7b02691f698 (patch) | |
tree | c1e455e6fbbd55fae856817cd9cdd7113e85ade5 | |
parent | 4b4e1b4b26a8ba56d57568ebd832a0ab8c1bf2a1 (diff) | |
download | patches-f9940ef1e81d3f1f397157787598e7b02691f698.tar patches-f9940ef1e81d3f1f397157787598e7b02691f698.tar.gz |
gnu: Add ceres-solver.
* gnu/packages/maths.scm (ceres): New variable.
-rw-r--r-- | gnu/packages/maths.scm | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 7281e43adc..4498ea0308 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -613,6 +613,55 @@ large-scale nonlinear optimization. It provides C++, C, and Fortran interfaces.") (license license:epl1.0))) +(define-public ceres + (package + (name "ceres-solver") + (version "1.11.0") + (home-page "http://ceres-solver.org/") + (source (origin + (method url-fetch) + (uri (string-append home-page "ceres-solver-" + version ".tar.gz")) + (sha256 + (base32 + "0i7qkbf8g6pd8arxzldppga26ckv93y8zldsfz6wbd4n6b1nqrjd")))) + (build-system cmake-build-system) + (arguments + ;; TODO: Build HTML user documentation and install separately. + ;; XXX: Use the embedded "miniglog" as a replacement for + ;; <https://github.com/google/glog>. TODO: Use Glog when it's available. + '(#:configure-flags '("-DMINIGLOG=ON" + "-DBUILD_EXAMPLES=OFF" + "-DBUILD_SHARED_LIBS=ON") + + #:phases (modify-phases %standard-phases + (add-before 'configure 'set-library-directory + (lambda _ + ;; Install libraries to lib/, not lib64/. + (substitute* "internal/ceres/CMakeLists.txt" + (("set\\(LIB_SUFFIX \"64\"\\)") + "set(LIB_SUFFIX \"\")")) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("eigen" ,eigen) + ("blas" ,openblas) + ("lapack" ,lapack) + ("suitesparse" ,suitesparse) + ("gflags" ,gflags))) + (synopsis "C++ library for solving large optimization problems") + (description + "Ceres Solver is a C++ library for modeling and solving large, +complicated optimization problems. It is a feature rich, mature and +performant library which has been used in production since 2010. Ceres Solver +can solve two kinds of problems: +@enumerate +@item non-linear least squares problems with bounds constraints; +@item general unconstrained optimization problems. +@end enumerate\n") + (license license:bsd-3))) + ;; For a fully featured Octave, users are strongly recommended also to install ;; the following packages: texinfo, less, ghostscript, gnuplot. (define-public octave |