diff options
Diffstat (limited to 'gnu/packages/maths.scm')
-rw-r--r-- | gnu/packages/maths.scm | 269 |
1 files changed, 241 insertions, 28 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 3991b2f88b..97f57ddd24 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -22,7 +22,7 @@ ;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Dave Love <me@fx@gnu.org> -;;; Copyright © 2018, 2019 Jan Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2018, 2019, 2020 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; Copyright © 2018 Nadya Voronova <voronovank@gmail.com> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> @@ -135,7 +135,8 @@ #:use-module (gnu packages version-control) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xml) - #:use-module (srfi srfi-1)) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26)) (define-public aris (package @@ -640,7 +641,7 @@ computing convex hulls.") (define-public lrslib (package (name "lrslib") - (version "7.0a") + (version "7.1") (source (origin (method url-fetch) @@ -649,7 +650,7 @@ computing convex hulls.") (string-delete #\. version) ".tar.gz")) (sha256 (base32 - "034fa45r9hwx6ljmgpxk2872q34nklkalpdkc6s9hqw57rivi36k")))) + "05kq3hzam31dlmkccv3v358r478kpvx76mw37ka12c6ypwv5dsnk")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp))) @@ -809,6 +810,62 @@ problems in numerical linear algebra.") (license (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) +(define-public clapack + (package + (name "clapack") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.netlib.org/clapack/clapack-" + version "-CMAKE.tgz")) + (sha256 + (base32 + "0nnap9q1mv14g57dl3vkvxrdr10k5w7zzyxs6rgxhia8q8mphgqb")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; These tests use a lot of stack variables and segfault without + ;; lifting resource limits. + (add-after 'unpack 'disable-broken-tests + (lambda _ + (substitute* "TESTING/CMakeLists.txt" + (("add_lapack_test.* xeigtstz\\)") "")) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (libdir (string-append out "/lib")) + (f2cinc (string-append out "/include/libf2c"))) + (mkdir-p f2cinc) + (display (getcwd)) + (for-each (lambda (file) + (install-file file libdir)) + '("SRC/liblapack.a" + "F2CLIBS/libf2c/libf2c.a" + "TESTING/MATGEN/libtmglib.a" + "BLAS/SRC/libblas.a")) + (for-each (lambda (file) + (install-file file f2cinc)) + (cons "F2CLIBS/libf2c/arith.h" + (find-files (string-append "../clapack-" + ,version "-CMAKE/F2CLIBS/libf2c") + "\\.h$"))) + (copy-recursively (string-append "../clapack-" + ,version "-CMAKE/INCLUDE") + (string-append out "/include")) + #t)))))) + (home-page "https://www.netlib.org/clapack/") + (synopsis "Numerical linear algebra library for C") + (description + "The CLAPACK library was built using a Fortran to C conversion utility +called f2c. The entire Fortran 77 LAPACK library is run through f2c to obtain +C code, and then modified to improve readability. CLAPACK's goal is to +provide LAPACK for someone who does not have access to a Fortran compiler.") + (license (license:non-copyleft "file://LICENSE" + "See LICENSE in the distribution.")))) + (define-public scalapack (package (name "scalapack") @@ -997,7 +1054,7 @@ incompatible with HDF5.") (synopsis "HDF4 without netCDF API, can be combined with the regular netCDF library"))) -(define-public hdf5 +(define-public hdf5-1.8 (package (name "hdf5") (version "1.8.21") @@ -1125,23 +1182,27 @@ extremely large and complex data collections.") "https://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING")))) (define-public hdf5-1.10 - (package (inherit hdf5) + (package/inherit hdf5-1.8 (version "1.10.6") (source (origin - (method url-fetch) - (uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/" - "hdf5-" (version-major+minor version) - "/hdf5-" version "/src/hdf5-" - version ".tar.bz2") - (string-append "https://support.hdfgroup.org/ftp/HDF5/" - "current" - (apply string-append - (take (string-split version #\.) 2)) - "/src/hdf5-" version ".tar.bz2"))) - (sha256 - (base32 "1gf38x51128hn00744358w27xgzjk0ff4wra4yxh2lk804ck1mh9")) - (patches (search-patches "hdf5-config-date.patch")))))) + (method url-fetch) + (uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/" + "hdf5-" (version-major+minor version) + "/hdf5-" version "/src/hdf5-" + version ".tar.bz2") + (string-append "https://support.hdfgroup.org/ftp/HDF5/" + "current" + (apply string-append + (take (string-split version #\.) 2)) + "/src/hdf5-" version ".tar.bz2"))) + (sha256 + (base32 "1gf38x51128hn00744358w27xgzjk0ff4wra4yxh2lk804ck1mh9")) + (patches (search-patches "hdf5-config-date.patch")))))) + +(define-public hdf5 + ;; Default version of HDF5. + hdf5-1.8) (define-public hdf-java (package @@ -1351,7 +1412,7 @@ Swath).") (license (license:non-copyleft home-page)))) (define-public hdf5-parallel-openmpi - (package (inherit hdf5) + (package/inherit hdf5-1.10 ;use the latest (name "hdf5-parallel-openmpi") (inputs `(("mpi" ,openmpi) @@ -1377,7 +1438,7 @@ Swath).") (substitute* "testpar/Makefile" (("(^TEST_PROG_PARA.*)t_pflush1(.*)" front back) (string-append front back "\n"))) - (substitute* "tools/h5diff/testph5diff.sh" + (substitute* "tools/test/h5diff/testph5diff.sh" (("/bin/sh") (which "sh"))) #t)))))) (synopsis "Management suite for data with parallel IO support"))) @@ -1547,7 +1608,11 @@ sharing of scientific data.") "--enable-parallel-tests" ;; Shared libraries not supported with parallel IO. "--disable-shared" "--with-pic" - ,flags)))))) + ,flags)) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'build 'mpi-setup + ,%openmpi-setup))))))) (define-public netcdf-fortran (package @@ -1692,6 +1757,84 @@ linear and quadratic objectives. There are limited facilities for nonlinear and quadratic objectives using the Simplex algorithm.") (license license:epl1.0))) +(define-public libflame + (package + (name "libflame") + (version "5.2.0") + (outputs '("out" "static")) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flame/libflame") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n6lf0wvpp77lxqlr721h2jbfbzigphdp19wq8ajiccilcksh7ay")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + ;; Sensible defaults: https://github.com/flame/libflame/issues/28 + (list "--enable-dynamic-build" + "--enable-max-arg-list-hack" + "--enable-lapack2flame" + "--enable-verbose-make-output" + "--enable-multithreading=pthreads" ; Openblas isn't built with openmp. + ,@(if (any (cute string-prefix? <> (or (%current-target-system) + (%current-system))) + '("x86_64" "i686")) + '("--enable-vector-intrinsics=sse") + '()) + "--enable-supermatrix" + "--enable-memory-alignment=16" + "--enable-ldim-alignment") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-/usr/bin/env-bash + (lambda _ + (substitute* "build/config.mk.in" + (("/usr/bin/env bash") (which "bash"))) + #t)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (substitute* "test/Makefile" + (("LIBBLAS .*") "LIBBLAS = -lblas\n") + (("LIBLAPACK .*") "LIBLAPACK = -llapack\n")) + (if tests? + (with-directory-excursion "test" + (mkdir "obj") + (invoke "make") + (invoke "./test_libflame.x")) + #t))) + (add-after 'install 'install-static + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static"))) + (mkdir-p (string-append static "/lib")) + (rename-file (string-append out "/lib/libflame.a") + (string-append static "/lib/libflame.a")) + (install-file (string-append out "/include/FLAME.h") + (string-append static "/include")) + #t)))))) + (inputs + `(("gfortran" ,gfortran))) + (native-inputs + `(("lapack" ,lapack) + ("openblas" ,openblas) + ("perl" ,perl) + ("python" ,python-wrapper))) + (home-page "https://github.com/flame/libflame") + (synopsis "High-performance object-based library for DLA computations") + (description "@code{libflame} is a portable library for dense matrix +computations, providing much of the functionality present in LAPACK, developed +by current and former members of the @acronym{SHPC, Science of High-Performance +Computing} group in the @url{https://www.ices.utexas.edu/, Institute for +Computational Engineering and Sciences} at The University of Texas at Austin. +@code{libflame} includes a compatibility layer, @code{lapack2flame}, which +includes a complete LAPACK implementation.") + (license license:bsd-3))) + (define-public ceres (package (name "ceres-solver") @@ -1840,8 +1983,6 @@ script files.") (define-public octave (package (inherit octave-cli) (name "octave") - (source (origin - (inherit (package-source octave-cli)))) (inputs `(("qscintilla" ,qscintilla) ("qt" ,qtbase) @@ -2064,6 +2205,70 @@ modules is done either interactively using the graphical user interface or in ASCII text files using Gmsh's own scripting language.") (license license:gpl2+))) +(define-public veusz + (package + (name "veusz") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "veusz" version)) + (sha256 + (base32 "00vmfpvyd6f33l5awlf02qdik3gmbhzyfizfwwbx7qnam2i9bbwy")))) + (build-system python-build-system) + (arguments + `(;; Tests will fail because they depend on optional packages like + ;; python-astropy, which is not packaged. + #:tests? #f + #:phases + (modify-phases %standard-phases + ;; Veusz will append 'PyQt5' to sip_dir by default. That is not how + ;; the path is defined in Guix, therefore we have to change it. + (add-after 'unpack 'fix-sip-dir + (lambda _ + (substitute* "pyqtdistutils.py" + (("os.path.join\\(sip_dir, 'PyQt5'\\)") "sip_dir")) + #t)) + ;; Now we have to pass the correct sip_dir to setup.py. + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + ;; We need to tell setup.py where to locate QtCoremod.sip + ((@@ (guix build python-build-system) call-setuppy) + "build_ext" + (list (string-append "--sip-dir=" + (assoc-ref inputs "python-pyqt") + "/share/sip")) + #t))) + ;; Ensure that icons are found at runtime. + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/veusz") + `("QT_PLUGIN_PATH" prefix + ,(list (string-append (assoc-ref inputs "qtsvg") + "/lib/qt5/plugins/")))))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ;;("python-astropy" ,python-astropy) ;; FIXME: Package this. + ("qttools" ,qttools))) + (inputs + `(("ghostscript" ,ghostscript) ;optional, for EPS/PS output + ("python-dbus" ,python-dbus) + ("python-h5py" ,python-h5py) ;optional, for HDF5 data + ("python-pyqt" ,python-pyqt) + ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg))) + (propagated-inputs + `(("python-numpy" ,python-numpy))) + (home-page "https://veusz.github.io/") + (synopsis "Scientific plotting package") + (description + "Veusz is a scientific plotting and graphing program with a graphical +user interface, designed to produce publication-ready 2D and 3D plots. In +addition it can be used as a module in Python for plotting. It supports +vector and bitmap output, including PDF, Postscript, SVG and EMF.") + (license license:gpl2+))) + (define-public maxflow (package (name "maxflow") @@ -3263,7 +3468,7 @@ point numbers.") (define-public wxmaxima (package (name "wxmaxima") - (version "20.04.0") + (version "20.06.6") (source (origin (method git-fetch) @@ -3272,7 +3477,7 @@ point numbers.") (commit (string-append "Version-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0vrjxzfgmjdzm1rgl0crz4b4badl14jwh032y3xkcdvjl5j67lp3")))) + (base32 "054f7n5kx75ng5j20rd5q27n9xxk03mrd7sbxyym1lsswzimqh4w")))) (build-system cmake-build-system) (native-inputs `(("gettext" ,gettext-minimal) @@ -3290,6 +3495,14 @@ point numbers.") `(#:test-target "test" #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-doc-path + (lambda _ + ;; Don't look in share/doc/wxmaxima-xx.xx.x for the + ;; documentation. Only licensing information is placed there by + ;; Guix. + (substitute* "src/Dirstructure.cpp" + (("/doc/wxmaxima-\\%s") "/doc/wxmaxima")) + #t)) (add-before 'check 'pre-check (lambda _ ;; Tests require a running X server. @@ -4698,7 +4911,7 @@ reduction.") (define-public mcrl2 (package (name "mcrl2") - (version "201908.0") + (version "202006.0") (source (origin (method url-fetch) (uri (string-append @@ -4706,7 +4919,7 @@ reduction.") version ".tar.gz")) (sha256 (base32 - "1i4xgl2d5fgiz1mwi50cyfkrrcpm8nxfayfjgmhq7chs58wlhfsz")))) + "167ryrzk1a2j53c2j198jlxa98amcaym070gkcj730619gymv5zl")))) (inputs `(("boost" ,boost) ("glu" ,glu) |