summaryrefslogtreecommitdiff
path: root/gnu/packages/maths.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/maths.scm')
-rw-r--r--gnu/packages/maths.scm269
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)