X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/150062f19060687dbf8e2cbe6a22c2f8600e7c4e..f03c4ec64987a339084cd1d43a0c1e402174355b:/gnu/packages/maths.scm diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 13b9fe5786..e51afb3bb9 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -8,21 +8,26 @@ ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Mark H Weaver -;;; Copyright © 2015, 2016, 2017 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2015 Fabian Harfert ;;; Copyright © 2016 Roel Janssen -;;; Copyright © 2016 Kei Kebreau -;;; Copyright © 2016, 2017 Ludovic Courtès +;;; Copyright © 2016, 2018 Kei Kebreau +;;; Copyright © 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016, 2017 Thomas Danckaert -;;; Copyright © 2017 Paul Garlick -;;; Copyright © 2017 ng0 +;;; Copyright © 2017, 2018 Paul Garlick +;;; Copyright © 2017 Nils Gillmann ;;; Copyright © 2017 Ben Woodcroft ;;; Copyright © 2017 Theodoros Foradis ;;; Copyright © 2017 Arun Isaac ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Dave Love ;;; Copyright © 2018 Jan Nieuwenhuizen +;;; Copyright © 2018 Joshua Sierles, Nextjournal +;;; Copyright © 2018 Nadya Voronova +;;; Copyright © 2018 Adam Massmann +;;; Copyright © 2018 Marius Bakke +;;; Copyright © 2018 Eric Brown ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,8 +56,11 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system ocaml) + #:use-module (guix build-system python) #:use-module (guix build-system r) + #:use-module (guix build-system ruby) #:use-module (gnu packages algebra) + #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages bison) #:use-module (gnu packages boost) @@ -76,6 +84,7 @@ #:use-module (gnu packages java) #:use-module (gnu packages less) #:use-module (gnu packages lisp) + #:use-module (gnu packages linux) #:use-module (gnu packages logging) #:use-module (gnu packages lua) #:use-module (gnu packages gnome) @@ -92,10 +101,12 @@ #:use-module (gnu packages popt) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-web) #:use-module (gnu packages qt) #:use-module (gnu packages readline) + #:use-module (gnu packages ruby) #:use-module (gnu packages tbb) #:use-module (gnu packages scheme) #:use-module (gnu packages shells) @@ -157,21 +168,23 @@ interactive dialogs to guide them.") (define-public coda (package (name "coda") - (version "2.18.3") + (version "2.19") (source (origin (method url-fetch) (uri (string-append "https://github.com/stcorp/coda/releases/download/" version "/coda-" version ".tar.gz")) (sha256 - (base32 "1zlzgcvwmmjm8mw8w4rg2rqy0pjilz7kyyxm0y4p8cbljbbjxxz0")) + (base32 "1fbxd2afm7dshd92p10yy8dwbr9gc1h1fmnnnmr7d0c5lnw80245")) (patches (search-patches "coda-use-system-libs.patch")) (modules '((guix build utils))) (snippet ;; Make sure we don't use the bundled software. - '(for-each (lambda (d) - (delete-file-recursively (string-append "libcoda/" d))) - '("zlib" "pcre" "expat"))))) + '(begin + (for-each (lambda (d) + (delete-file-recursively (string-append "libcoda/" d))) + '("zlib" "pcre" "expat")) + #t)))) (native-inputs `(("fortran" ,gfortran) ("python" ,python) @@ -195,16 +208,47 @@ programming languages.") (home-page "https://stcorp.nl/coda") (license license:gpl2+))) +(define-public qhull + (package + (name "qhull") + (version "2015.2") + (source (origin + (method url-fetch) + (uri (string-append "http://www.qhull.org/download/qhull-" + (car (string-split version #\.)) + "-src-7.2.0.tgz")) + (sha256 + (base32 + "0dm4b2xr3asy6w74khq2zg4gf26zsy3qf9sq7pf7lmrvbj911c3q")))) + (build-system cmake-build-system) + (synopsis "Calculate convex hulls and related structures") + (description + "@code{Qhull} computes the convex hull, Delaunay triangulation, Voronoi +diagram, halfspace intersection about a point, furthest-site Delaunay +triangulation, and furthest-site Voronoi diagram. The source code runs in 2-d, +3-d, 4-d, and higher dimensions. @code{Qhull} implements the Quickhull +algorithm for computing the convex hull. It handles roundoff errors from +floating point arithmetic. It computes volumes, surface areas, and +approximations to the convex hull. + +@code{Qhull} does not support triangulation of non-convex surfaces, mesh +generation of non-convex objects, medium-sized inputs in 9-D and higher, alpha +shapes, weighted Voronoi diagrams, Voronoi volumes, or constrained Delaunay +triangulations.") + (home-page "http://qhull.org") + (license (license:non-copyleft "file://COPYING.txt" + "See COPYING in the distribution.")))) + (define-public units (package (name "units") - (version "2.16") + (version "2.17") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/units/units-" version ".tar.gz")) (sha256 (base32 - "11hnp3gcmcc5kci2caxw4hs6m08h2mhqs3xzqq7iafx1ha2ggwyw")))) + "1n2xzpnxfn475zkd8rzs5gg58xszjbr4bdbgvk6hryzimvwwj0qz")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) @@ -233,22 +277,20 @@ enough to be used effectively as a scientific calculator.") (define-public double-conversion (package (name "double-conversion") - (version "1.1.5") + (version "3.0.0") + (home-page "https://github.com/google/double-conversion") (source (origin (method url-fetch) - (uri (string-append - "https://github.com/floitsch/double-conversion/archive/v" - version ".tar.gz")) + (uri (string-append home-page "/archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0cnr8xhyjfxijay8ymkqcph3672wp2lj23qhdmr3m4kia5kpdf83")))) + "059r1czs28ljjd388pn6l3njg1ghbf1cv3q9nkxv3dj2a8siabqm")))) (build-system cmake-build-system) (arguments '(#:test-target "test" #:configure-flags '("-DBUILD_SHARED_LIBS=ON" "-DBUILD_TESTING=ON"))) - (home-page "https://github.com/floitsch/double-conversion") (synopsis "Conversion routines for IEEE doubles") (description "The double-conversion library provides binary-decimal and decimal-binary @@ -259,14 +301,14 @@ routines that have been extracted from the V8 JavaScript engine.") (define-public dionysus (package (name "dionysus") - (version "1.3.0") + (version "1.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/dionysus/dionysus-" version - ".tar.gz")) + ".tar.xz")) (sha256 (base32 - "1aqnvw6z33bzqgd1ga571pnx6vq2zrkckm1cz91grv45h4jr9vgs")))) + "194pzs1mlsj4ww6v37qq3961h5hckm5h805cv0r14xj3g9wfx2sk")))) (build-system gnu-build-system) (inputs `(("tcl" ,tcl))) ;for 'tclsh' (synopsis "Local search for universal constants and scientific values") @@ -282,14 +324,14 @@ semiconductors.") (define-public gsl (package (name "gsl") - (version "2.4") + (version "2.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gsl/gsl-" version ".tar.gz")) (sha256 (base32 - "16yfs5n444s03np1naj6yp1fsysd42kdscxzkg0k2yvfjixx0ijd")) + "1395y9hlhqadn5g9j8q22224fds5sd92jxi9czfavjj24myasq04")) (patches (search-patches "gsl-test-i686.patch")))) (build-system gnu-build-system) (arguments @@ -312,17 +354,17 @@ numbers.") (define-public ocaml-gsl (package (name "ocaml-gsl") - (version "1.19.3") + (version "1.22.0") (source (origin (method url-fetch) (uri (string-append - "https://github.com/mmottl/gsl-ocaml/releases/download/v" - version"/gsl-ocaml-" version ".tar.gz")) + "https://github.com/mmottl/gsl-ocaml/releases/download/" + version "/gsl-" version ".tbz")) (sha256 (base32 - "0nzp43hp8pbjqkrxnwp5lgjrabxayf61h18fjaydi0s5faq6f3xh")))) + "17vcswipliq1b2idbzx1z95kskn1a4q4s5v04igilg0f7lnkaarb")))) (build-system ocaml-build-system) (inputs `(("gsl" ,gsl))) @@ -339,7 +381,7 @@ the OCaml language.") (define-public glpk (package (name "glpk") - (version "4.64") + (version "4.65") (source (origin (method url-fetch) @@ -347,7 +389,7 @@ the OCaml language.") version ".tar.gz")) (sha256 (base32 - "096cqgjc7vkq6wd8znhcxjbs1s2rym3qf753fqxrrq531vs6g4jk")))) + "040sfaa9jclg2nqdh83w71sv9rc1sznpnfiripjdyr48cady50a2")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp))) @@ -393,7 +435,7 @@ integer programming problems and computes Markov bases for statistics.") (define-public cddlib (package (name "cddlib") - (version "0.94h") + (version "0.94i") (source (origin (method url-fetch) @@ -401,7 +443,7 @@ integer programming problems and computes Markov bases for statistics.") (string-delete #\. version) ".tar.gz")) (sha256 (base32 - "1dasasscwfg793q8fwzgwf64xwj7w62yfvszpr8x8g38jka08vgy")))) + "00zdgiqb91vx6gd2103h3ijij0llspsxc6zz3iw2bll39fvkl4xq")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp))) @@ -418,18 +460,20 @@ computing convex hulls.") (define-public arpack-ng (package (name "arpack-ng") - (version "3.2.0") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/opencollab/arpack-ng/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1fwch6vipms1ispzg2djvbzv5wag36f1dmmr3xs3mbp6imfyhvff")))) - (build-system gnu-build-system) + (version "3.6.3") (home-page "https://github.com/opencollab/arpack-ng") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wljl96yqxc9v8r49c37lscwkdp58kaacfb9p6s6nvpm31haax4y")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) (inputs `(("lapack" ,lapack) ("fortran" ,gfortran))) @@ -440,13 +484,35 @@ large scale eigenvalue problems.") (license (license:non-copyleft "file://COPYING" "See COPYING in the distribution.")))) +(define-public arpack-ng-3.3.0 + (package + (inherit arpack-ng) + (version "3.3.0") + (name (package-name arpack-ng)) + (home-page (package-home-page arpack-ng)) + (source + (origin + (method url-fetch) + (uri (string-append home-page "/archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1cz53wqzcf6czmcpfb3vb61xi0rn5bwhinczl65hpmbrglg82ndd")))))) + (define-public arpack-ng-openmpi (package (inherit arpack-ng) (name "arpack-ng-openmpi") (inputs `(("mpi" ,openmpi) ,@(package-inputs arpack-ng))) - (arguments `(#:configure-flags '("--enable-mpi"))) + (arguments + (substitute-keyword-arguments (package-arguments arpack-ng) + ((#:configure-flags _ '()) + ''("--enable-mpi")) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'mpi-setup + ,%openmpi-setup))))) (synopsis "Fortran subroutines for solving eigenvalue problems with MPI"))) (define-public lapack @@ -487,19 +553,6 @@ problems in numerical linear algebra.") (license (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) -(define-public lapack-3.5 - (package - (inherit lapack) - (version "3.5.0") - (source - (origin - (method url-fetch) - (uri (string-append "http://www.netlib.org/lapack/lapack-" - version ".tgz")) - (sha256 - (base32 - "0lk3f97i9imqascnlf6wr5mjpyxqcdj73pgj97dj2mgvyg9z1n4s")))))) - (define-public scalapack (package (name "scalapack") @@ -518,7 +571,10 @@ problems in numerical linear algebra.") ("fortran" ,gfortran) ("lapack" ,lapack))) ;for testing only (arguments - `(#:configure-flags `("-DBUILD_SHARED_LIBS:BOOL=YES"))) + `(#:configure-flags `("-DBUILD_SHARED_LIBS:BOOL=YES") + #:phases (modify-phases %standard-phases + (add-before 'check 'mpi-setup + ,%openmpi-setup)))) (home-page "http://www.netlib.org/scalapack/") (synopsis "Library for scalable numerical linear algebra") (description @@ -532,7 +588,7 @@ singular value problems.") (define-public gnuplot (package (name "gnuplot") - (version "5.0.6") + (version "5.2.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/" @@ -540,7 +596,7 @@ singular value problems.") version ".tar.gz")) (sha256 (base32 - "0q5lr6nala3ln6f3yp6g17ziymb9r9gx9zylnw1y3hjmwl9lggjv")))) + "1jvh8xmd2cvrhlsg88kxwh55wkwx31sg50v1n59slfippl0g058m")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) ("cairo" ,cairo) @@ -550,6 +606,9 @@ singular value problems.") (native-inputs `(("pkg-config" ,pkg-config) ("texlive" ,texlive-tiny))) + (arguments `(#:configure-flags (list (string-append + "--with-texdir=" %output + "/texmf-local/tex/latex/gnuplot")))) (home-page "http://www.gnuplot.info") (synopsis "Command-line driven graphing utility") (description "Gnuplot is a portable command-line driven graphing @@ -724,7 +783,11 @@ incompatible with HDF5.") ;; unnecessary store references to those compilers: (substitute* "src/libhdf5.settings" (("(/gnu/store/)([a-Z0-9]*)" all prefix hash) - (string-append prefix (string-take hash 10) "..."))) + (string-append prefix (string-take hash 10) "...")) + ;; Don't record the build-time kernel version to make the + ;; settings file reproducible. + (("Uname information:.*") + "Uname information: Linux\n")) #t)) (add-after 'install 'patch-references (lambda* (#:key inputs outputs #:allow-other-keys) @@ -792,7 +855,8 @@ extremely large and complex data collections.") (for-each delete-file (list "SZip.tar.gz" "ZLib.tar.gz" "JPEG8d.tar.gz" "HDF4.tar.gz" "HDF5.tar.gz")) - (delete-file-recursively ,(string-append "hdfjava-" version "/lib")))))) + (delete-file-recursively ,(string-append "hdfjava-" version "/lib")) + #t)))) (build-system gnu-build-system) (native-inputs `(("jdk" ,icedtea "jdk") @@ -1195,7 +1259,9 @@ online as well as original implementations of various other algorithms.") (modules '((guix build utils))) (snippet ;; Make sure we don't use the bundled software. - '(delete-file-recursively "ThirdParty")))) + '(begin + (delete-file-recursively "ThirdParty") + #t)))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -1230,7 +1296,7 @@ interfaces.") (define-public ceres (package (name "ceres-solver") - (version "1.13.0") + (version "1.14.0") (home-page "http://ceres-solver.org/") (source (origin (method url-fetch) @@ -1238,7 +1304,7 @@ interfaces.") version ".tar.gz")) (sha256 (base32 - "1kbxgab3q1vgyq7hjqasr1lji4b2sgn7ss351amklkb3jyhr1x0x")))) + "13lfxy8x58w8vprr0nkbzziaijlh0vvqshgahvcgw0mrqdgh0i27")))) (build-system cmake-build-system) (arguments ;; TODO: Build HTML user documentation and install separately. @@ -1275,12 +1341,12 @@ can solve two kinds of problems: @end enumerate\n") (license license:bsd-3))) -;; For a fully featured Octave, users are strongly recommended also to install +;; For a fully featured Octave, users are strongly recommended also to install ;; the following packages: less, ghostscript, gnuplot. (define-public octave (package (name "octave") - (version "4.2.1") + (version "4.4.1") (source (origin (method url-fetch) @@ -1288,10 +1354,11 @@ can solve two kinds of problems: version ".tar.lz")) (sha256 (base32 - "09zhhch79jw3ynw39vizx0i2cbd2bjz3sp38pjdzraqrbivpwp92")))) + "0jsdgizlv02an2ppfjwk5qf209zpwi3317yb7jvlsjzxnir3lvhy")))) (build-system gnu-build-system) (inputs `(("lapack" ,lapack) + ("qhull" ,qhull) ("readline" ,readline) ("gl2ps" ,gl2ps) ("glpk" ,glpk) @@ -1309,7 +1376,11 @@ can solve two kinds of problems: ("zlib" ,zlib) ("curl" ,curl) ("texinfo" ,texinfo) - ("graphicsmagick" ,graphicsmagick))) + ("graphicsmagick" ,graphicsmagick) + ("suitesparse" ,suitesparse) + ("libsndfile" ,libsndfile) + ("portaudio" ,portaudio) + ("alsa-lib" ,alsa-lib))) (native-inputs `(("lzip" ,lzip) ("gfortran" ,gfortran) @@ -1349,6 +1420,34 @@ Work may be performed both at the interactive command-line as well as via script files.") (license license:gpl3+))) +(define-public qtoctave + (package (inherit octave) + (name "qtoctave") + (source (origin + (inherit (package-source octave)))) + (inputs + `(("qscintilla" ,qscintilla) + ("qt" ,qtbase) + ,@(package-inputs octave))) + (native-inputs + `(("qttools" , qttools) ;for lrelease + ("texlive" ,texlive) ;for texi2dvi + ,@(package-native-inputs octave))) + (arguments + (substitute-keyword-arguments (package-arguments octave) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'configure 'patch-qscintilla-library-name + (lambda* (#:key inputs #:allow-other-keys) + ;; The QScintilla library that the Octave configure script tries + ;; to link with should be named libqscintilla-qt5.so, but the + ;; QScintilla input provides the shared library as + ;; libqscintilla2_qt5.so. + (substitute* "configure" + (("qscintilla2-qt5") + "qscintilla2_qt5")) + #t)))))))) + (define-public opencascade-oce (package (name "opencascade-oce") @@ -1419,7 +1518,9 @@ Open CASCADE library.") (modules '((guix build utils))) (snippet ;; Remove non-free METIS code - '(delete-file-recursively "contrib/Metis")))) + '(begin + (delete-file-recursively "contrib/Metis") + #t)))) (build-system cmake-build-system) (propagated-inputs `(("fltk" ,fltk) @@ -1477,7 +1578,7 @@ September 2004}") (define-public petsc (package (name "petsc") - (version "3.8.0") + (version "3.9.3") (source (origin (method url-fetch) @@ -1485,7 +1586,9 @@ September 2004}") (uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/" "petsc-lite-" version ".tar.gz")) (sha256 - (base32 "1lajbk3c29hnh83v6cbmm3a8wv6bdykh0p70kwrr4vrnizalk88s")))) + (base32 "1fwkbwv4g7zf2lc8fw865xd0bl9anb6jaczfis5dff7h449gwa48")))) + (outputs '("out" ;libraries and headers + "examples")) ;~30MiB of examples (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) @@ -1502,11 +1605,7 @@ September 2004}") #:configure-flags `("--with-mpi=0" "--with-openmp=1" - "--with-superlu=1" - ,(string-append "--with-superlu-include=" - (assoc-ref %build-inputs "superlu") "/include") - ,(string-append "--with-superlu-lib=" - (assoc-ref %build-inputs "superlu") "/lib/libsuperlu.a")) + "--with-superlu=1") #:make-flags ;; Honor (parallel-job-count) for build. Do not use --with-make-np, ;; whose value is dumped to $out/lib/petsc/conf/petscvariables. @@ -1523,7 +1622,7 @@ September 2004}") ,@configure-flags))) (format #t "build directory: ~s~%" (getcwd)) (format #t "configure flags: ~s~%" flags) - (zero? (apply system* "./configure" flags))))) + (apply invoke "./configure" flags)))) (add-after 'configure 'clean-local-references (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -1559,6 +1658,15 @@ September 2004}") "PETScBuildInternal.cmake" ;; Once installed, should uninstall with Guix "uninstall.py")) + #t))) + (add-after 'install 'move-examples + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (examples (assoc-ref outputs "examples")) + (exdir (string-append out "/share/petsc/examples")) + (exdir' (string-append examples "/share/petsc/examples"))) + (copy-recursively exdir exdir') + (delete-file-recursively exdir) #t)))))) (home-page "http://www.mcs.anl.gov/petsc") (synopsis "Library to solve PDEs") @@ -1582,6 +1690,7 @@ scientific applications modeled by partial differential equations.") (name "petsc-openmpi") (inputs `(("openmpi" ,openmpi) + ("hdf5" ,hdf5-parallel-openmpi) ,@(package-inputs petsc))) (arguments (substitute-keyword-arguments (package-arguments petsc) @@ -1589,7 +1698,15 @@ scientific applications modeled by partial differential equations.") ``("--with-mpiexec=mpirun" ,(string-append "--with-mpi-dir=" (assoc-ref %build-inputs "openmpi")) - ,@(delete "--with-mpi=0" ,cf))))) + ,(string-append "--with-hdf5-include=" + (assoc-ref %build-inputs "hdf5") "/include") + ,(string-append "--with-hdf5-lib=" + (assoc-ref %build-inputs "hdf5") "/lib/libhdf5.a") + ,@(delete "--with-mpi=0" ,cf))) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'check 'mpi-setup + ,%openmpi-setup))))) (synopsis "Library to solve PDEs (with MPI support)"))) (define-public petsc-complex-openmpi @@ -1607,10 +1724,35 @@ scientific applications modeled by partial differential equations.") ,@(delete "--with-mpi=0" ,cf))))) (synopsis "Library to solve PDEs (with complex scalars and MPI support)"))) + +(define-public python-kiwisolver + (package + (name "python-kiwisolver") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "kiwisolver" version)) + (sha256 + (base32 + "0y22ci86znwwwfhbmvbgdfnbi6lv5gv2xkdlxvjw7lml43ayafyf")))) + (build-system python-build-system) + (home-page "https://github.com/nucleic/kiwi") + (synopsis "Fast implementation of the Cassowary constraint solver") + (description + "Kiwi is an efficient C++ implementation of the Cassowary constraint +solving algorithm. Kiwi has been designed from the ground up to be +lightweight and fast. Kiwi ranges from 10x to 500x faster than the original +Cassowary solver with typical use cases gaining a 40x improvement. Memory +savings are consistently > 5x.") + (license license:bsd-3))) + +(define-public python2-kiwisolver + (package-with-python2 python-kiwisolver)) + (define-public slepc (package (name "slepc") - (version "3.8.2") + (version "3.9.2") (source (origin (method url-fetch) @@ -1618,7 +1760,7 @@ scientific applications modeled by partial differential equations.") version ".tar.gz")) (sha256 (base32 - "04zd48p43rnvg68p6cp28zll0px5whglc5v0sc3s6vdj1v920z8y")))) + "0gmhdqac8zm3jx43h935z7bflazjnpvqxjv4jh5za2y1z2rqax94")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) @@ -1655,7 +1797,8 @@ scientific applications modeled by partial differential equations.") ;; documentation is difficult. (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out"))) - (for-each delete-file (find-files out "\\.html$"))))) + (for-each delete-file (find-files out "\\.html$")) + #t))) (add-after 'install 'clean-install ;; Clean up unnecessary build logs from installation. (lambda* (#:key outputs #:allow-other-keys) @@ -1666,7 +1809,8 @@ scientific applications modeled by partial differential equations.") (delete-file f)))) '("configure.log" "make.log" "gmake.log" "test.log" "error.log" "RDict.db" - "uninstall.py")))))))) + "uninstall.py")) + #t)))))) (home-page "http://slepc.upv.es") (synopsis "Scalable library for eigenproblems") (description "SLEPc is a software library for the solution of large sparse @@ -1689,6 +1833,12 @@ arising after the discretization of partial differential equations.") (define-public slepc-openmpi (package (inherit slepc) (name "slepc-openmpi") + (arguments + (substitute-keyword-arguments (package-arguments slepc) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'mpi-setup + ,%openmpi-setup))))) (inputs `(("mpi" ,openmpi) ("arpack" ,arpack-ng-openmpi) @@ -1709,7 +1859,7 @@ arising after the discretization of partial differential equations.") (define-public mumps (package (name "mumps") - (version "5.0.2") + (version "5.1.2") (source (origin (method url-fetch) @@ -1717,7 +1867,7 @@ arising after the discretization of partial differential equations.") version ".tar.gz")) (sha256 (base32 - "0igyc1pfzxdhpbad3v3lb86ixkdbqa1a8gbs15b04r2294h2nabp")) + "1s9asin08zqzmh08257sdghhivvy9vjif7c53fhaxaax2kd5qd7b")) (patches (search-patches "mumps-build-parallelism.patch")))) (build-system gnu-build-system) (inputs @@ -1799,8 +1949,8 @@ IORDERINGSC = $(IPORD) $(IMETIS) $(ISCOTCH)" ;; By default only the d-precision library is built. Make with "all" ;; target so that all precision libraries and examples are built. (lambda _ - (zero? (system* "make" "all" - (format #f "-j~a" (parallel-job-count)))))) + (invoke "make" "all" + (format #f "-j~a" (parallel-job-count))))) (replace 'check ;; Run the simple test drivers, which read test input from stdin: ;; from the "real" input for the single- and double-precision @@ -1858,11 +2008,12 @@ sparse system of linear equations A x = b using Guassian elimination.") (substitute-keyword-arguments (package-arguments mumps) ((#:phases phases) `(modify-phases ,phases - (replace - 'check - (lambda _ - ((assoc-ref ,phases 'check) - #:exec-prefix '("mpirun" "-n" "2")))))))) + (add-before 'check 'mpi-setup + ,%openmpi-setup) + (replace 'check + (lambda _ + ((assoc-ref ,phases 'check) + #:exec-prefix '("mpirun" "-n" "2")))))))) (synopsis "Multifrontal sparse direct solver (with MPI)"))) (define-public mumps-metis-openmpi @@ -1895,12 +2046,12 @@ programming problems.") (define-public r-pracma (package (name "r-pracma") - (version "2.1.4") + (version "2.1.5") (source (origin (method url-fetch) (uri (cran-uri "pracma" version)) (sha256 - (base32 "1ygm81i7mqvh229dp9935djjyb120p3bqvaf4k572sa4q63fzjhc")))) + (base32 "18cv7c2gvagbmggfbsy2xk9bpn47izd0qrmqnc3q7afvj6pr6nf9")))) (build-system r-build-system) (propagated-inputs `(("r-quadprog" ,r-quadprog))) @@ -1912,6 +2063,38 @@ special functions. It uses Matlab function names where appropriate to simplify porting.") (license license:gpl3+))) +(define-public ruby-asciimath + (package + (name "ruby-asciimath") + (version "1.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "asciimath" version)) + (sha256 + (base32 + "1d80kiph5mc78zps7si1hv48kv4k12mzaq8jk5kb3pqpjdr72qmc")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Apply this patch + ;; https://github.com/asciidoctor/asciimath/commit/1c06fdc8086077f4785479f78b0823a4a72d7948 + (add-after 'unpack 'patch-remove-spurious-backslashes + (lambda _ + (substitute* "spec/parser_spec.rb" + (("\\\\\"") + "\""))))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + (synopsis "AsciiMath parsing and conversion library") + (description + "A pure Ruby AsciiMath parsing and conversion library. AsciiMath is an +easy-to-write markup language for mathematics.") + (home-page "https://github.com/asciidoctor/asciimath") + (license license:expat))) + (define-public superlu (package (name "superlu") @@ -1953,7 +2136,8 @@ void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g, (let ((line (read-line in 'concat))) (unless (regexp-exec rx line) (display line out) - (loop))))))))))) + (loop)))) + #t))))))) (build-system cmake-build-system) (native-inputs `(("tcsh" ,tcsh))) @@ -1980,38 +2164,38 @@ also provides threshold-based ILU factorization preconditioners.") (define-public superlu-dist (package (name "superlu-dist") - (version "3.3") + (version "5.3.0") (source (origin (method url-fetch) (uri (string-append "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/" "superlu_dist_" version ".tar.gz")) (sha256 - (base32 "1hnak09yxxp026blq8zhrl7685yip16svwngh1wysqxf8z48vzfj")) - (modules '((guix build utils))) + (base32 "0ja5ihqivkda1wd58y4lmzvmwssm9g91f70c5q0fzwhng6580h6y")) + (modules '((guix build utils))) (snippet ;; Replace the non-free implementation of MC64 with a stub '(begin (use-modules (ice-9 regex) (ice-9 rdelim)) - (call-with-output-file "SRC/mc64ad.c" + (call-with-output-file "SRC/mc64ad_dist.c" (lambda (port) (display " #include #include -void mc64id_(int *a) { +void mc64id_dist(int *a) { fprintf (stderr, \"SuperLU_DIST: non-free MC64 not available. Aborting.\\n\"); abort (); } -void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g, +void mc64ad_dist (int *a, int *b, int *c, int *d, int *e, double *f, int *g, int *h, int *i, int *j, int *k, double *l, int *m, int *n) { fprintf (stderr, \"SuperLU_DIST: non-free MC64 not available. Aborting.\\n\"); abort (); }\n" port))) - (delete-file "SRC/mc64ad.f.bak") (substitute* "SRC/util.c" ;adjust default algorithm (("RowPerm[[:blank:]]*=[[:blank:]]*LargeDiag") - "RowPerm = NOROWPERM")))) + "RowPerm = NOROWPERM")) + #t)) (patches (search-patches "superlu-dist-scotchmetis.patch")))) (build-system gnu-build-system) (native-inputs @@ -2071,14 +2255,16 @@ CDEFS = -DAdd_" "/" dir))) '("lib" "include")) #t)) + (add-before 'check 'mpi-setup + ,%openmpi-setup) (replace 'check (lambda _ (with-directory-excursion "EXAMPLE" - (and - (zero? (system* "mpirun" "-n" "2" - "./pddrive" "-r" "1" "-c" "2" "g20.rua")) - (zero? (system* "mpirun" "-n" "2" - "./pzdrive" "-r" "1" "-c" "2" "cg20.cua")))))) + (invoke "mpirun" "-n" "2" + "./pddrive" "-r" "1" "-c" "2" "g20.rua") + (invoke "mpirun" "-n" "2" + "./pzdrive" "-r" "1" "-c" "2" "cg20.cua")) + #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) ;; Library is placed in lib during the build phase. Copy over @@ -2104,16 +2290,18 @@ implemented in ANSI C, and MPI for communications.") (define-public scotch (package (name "scotch") - (version "6.0.4") + (version "6.0.5a") (source (origin (method url-fetch) - (uri (string-append "https://gforge.inria.fr/frs/download.php/34618/" - "scotch_" version ".tar.gz")) + (uri (string-append "https://gforge.inria.fr/frs/download.php/" + "latestfile/298/scotch_" version ".tar.gz")) (sha256 - (base32 "1ir088mvrqggyqdkx9qfynmiaffqbyih5qfl5mga2nrlm1qlsgzm")) + (base32 "0vsmgjz8qv80di3ljmc7hbdsizxxxwy2b9rgd2fl1mdc6dgbj8av")) (patches (search-patches "scotch-test-threading.patch" - "pt-scotch-build-parallelism.patch")))) + "scotch-build-parallelism.patch" + "scotch-graph-induce-type-64.patch" + "scotch-graph-diam-64.patch")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) @@ -2124,7 +2312,7 @@ implemented in ANSI C, and MPI for communications.") (modify-phases %standard-phases (add-after 'unpack 'chdir-to-src - (lambda _ (chdir "src"))) + (lambda _ (chdir "src") #t)) (replace 'configure (lambda _ @@ -2161,28 +2349,29 @@ YACC = bison -pscotchyy -y -b y ;; XXX: Causes invalid frees in superlu-dist tests ;; "SCOTCH_PTHREAD" ;; "SCOTCH_PTHREAD_NUMBER=2" - "restrict=__restrict")))))) - (add-after - 'build 'build-esmumps + "restrict=__restrict")))) + #t)) + (add-after 'build 'build-esmumps (lambda _ - (zero? (system* "make" - (format #f "-j~a" (parallel-job-count)) - "esmumps")))) + (invoke "make" + (format #f "-j~a" (parallel-job-count)) + "esmumps"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (mkdir out) - (zero? (system* "make" - (string-append "prefix=" out) - "install")) + (invoke "make" + (string-append "prefix=" out) + "install") ;; esmumps files are not installed with the above (for-each (lambda (f) (copy-file f (string-append out "/include/" f))) (find-files "../include" ".*esmumps.h$")) (for-each (lambda (f) (copy-file f (string-append out "/lib/" f))) - (find-files "../lib" "^lib.*esmumps.*")))))))) + (find-files "../lib" "^lib.*esmumps.*")) + #t)))))) (home-page "http://www.labri.fr/perso/pelegrin/scotch/") (synopsis "Programs and libraries for graph algorithms") (description "SCOTCH is a set of programs and libraries which implement @@ -2344,7 +2533,10 @@ schemes.") " -lopenblas") ,(string-append "LAPACK_LIBS=-L" (assoc-ref %build-inputs "lapack") - " -llapack")))) + " -llapack")) + #:phases (modify-phases %standard-phases + (add-before 'check 'mpi-setup + ,%openmpi-setup)))) (home-page "http://www.p4est.org") (synopsis "Adaptive mesh refinement on forests of octrees") (description @@ -2489,7 +2681,7 @@ point numbers.") (define-public wxmaxima (package (name "wxmaxima") - (version "17.10.1") + (version "18.02.0") (source (origin (method url-fetch) @@ -2498,12 +2690,12 @@ point numbers.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0qlzc31cqkwpfgrb9cif9bcnkj3rq487plg4rns7jxv6pq4609v1")))) - (build-system gnu-build-system) + "03kr2rgfp4hcf3is8m8d8f9hj660c3xgrc50vrrfpixx4syh6wvj")) + (patches + (search-patches "wxmaxima-do-not-use-old-gnuplot-parameters.patch")))) + (build-system cmake-build-system) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("gettext" ,gettext-minimal))) + `(("gettext" ,gettext-minimal))) (inputs `(("wxwidgets" ,wxwidgets) ("maxima" ,maxima) @@ -2512,11 +2704,9 @@ point numbers.") ("gtk+" ,gtk+) ("shared-mime-info" ,shared-mime-info))) (arguments - `(#:phases + `(#:tests? #f ; no check target + #:phases (modify-phases %standard-phases - (add-after 'unpack 'autoconf - (lambda _ - (zero? (system* "sh" "bootstrap")))) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (wrap-program (string-append (assoc-ref outputs "out") @@ -2555,16 +2745,16 @@ full text searching.") (define-public armadillo (package (name "armadillo") - (version "7.800.2") + (version "9.100.5") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/arma/armadillo-" version ".tar.xz")) (sha256 (base32 - "1qqzy7dp891j9v7062mv1599hdwr97vqzrd3j2fl8c3gmc00dmzg")))) + "1ka1vd9fcmvp12qkcm4888dkfqwnalvv00x04wy29f3nx3qwczby")))) (build-system cmake-build-system) - (arguments `(#:tests? #f)) ;no test target + (arguments `(#:tests? #f)) ; no test target (inputs `(("openblas" ,openblas) ("lapack" ,lapack) @@ -2616,16 +2806,16 @@ parts of it.") (define-public openblas (package (name "openblas") - (version "0.2.20") + (version "0.3.2") (source (origin (method url-fetch) - (uri (string-append "https://github.com/xianyi/OpenBLAS/tarball/v" - version)) + (uri (string-append "mirror://sourceforge/openblas/v" version "/OpenBLAS%20" + version "%20version.tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1bd03c5xni0bla0wg1wba841b36b0sg13sjja955kn5xzvy4i61a")))) + "0b20km2jv7m6qiylrlvhq2vnmkmilb633mr8rhqmgbn1wqrp58jq")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -2683,6 +2873,18 @@ parts of it.") "OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version.") (license license:bsd-3))) +(define-public openblas-ilp64 + (package (inherit openblas) + (name "openblas-ilp64") + (supported-systems '("x86_64-linux" "aarch64-linux" "mips64el-linux")) + (arguments + (substitute-keyword-arguments (package-arguments openblas) + ((#:make-flags flags '()) + `(append (list "INTERFACE64=1" "LIBNAMESUFFIX=ilp64") + ,flags)))) + (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)") + (license license:bsd-3))) + (define* (make-blis implementation #:optional substitutable?) "Return a BLIS package with the given IMPLEMENTATION (see config/ in the source tree for a list of implementations.) @@ -2772,7 +2974,7 @@ access to BLIS implementations via traditional BLAS routine calls.") (define-public openlibm (package (name "openlibm") - (version "0.5.1") + (version "0.6.0") (source (origin (method url-fetch) @@ -2781,7 +2983,7 @@ access to BLIS implementations via traditional BLAS routine calls.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "11czx2z7nh6dfpz45s3xl7v38hw36jxzxfvny454bk3if14pfakq")))) + "0a5fpm8nra5ldhjk0cqd2rx1qh32wiarkxmcqcm5xl8z7l4kjm6l")))) (build-system gnu-build-system) (arguments `(#:make-flags @@ -2862,7 +3064,9 @@ Fresnel integrals, and similar related functions as well.") (modules '((guix build utils))) (snippet ;; Remove bundled metis source - '(delete-file-recursively "metis-5.1.0")))) + '(begin + (delete-file-recursively "metis-5.1.0") + #t)))) (build-system gnu-build-system) (arguments '(#:tests? #f ;no "check" target @@ -3025,19 +3229,19 @@ Failure to do so will result in a library with poor performance.") (define-public glm (package (name "glm") - (version "0.9.6.3") + (version "0.9.9.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/ogl-math/glm-" version - "/glm-" version ".zip")) + (uri (string-append "https://github.com/g-truc/glm/releases/download/" + version "/glm-" version ".zip")) (sha256 (base32 - "1cnjmi033a16a95v6xfkr1bvfmkd26hzdjka8j1819hgn5b1nr8l")))) + "042a23hmxfs429czkmlg5ixf28aikzfbw18780prj2gcd4flgw8h")))) (build-system cmake-build-system) (native-inputs `(("unzip" ,unzip))) - (home-page "http://glm.g-truc.net") + (home-page "https://glm.g-truc.net/") (synopsis "OpenGL Mathematics library") (description "OpenGL Mathematics (GLM) is a header-only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) @@ -3047,7 +3251,7 @@ specifications.") (define-public lpsolve (package (name "lpsolve") - (version "5.5.2.0") + (version "5.5.2.5") (source (origin (method url-fetch) @@ -3055,34 +3259,37 @@ specifications.") "/lp_solve_" version "_source.tar.gz")) (sha256 (base32 - "176c7f023mb6b8bfmv4rfqnrlw88lsg422ca74zjh19i2h5s69sq")) + "12pj1idjz31r7c2mb5w03vy1cmvycvbkx9z29s40qdmkp1i7q6i0")) (modules '((guix build utils))) (snippet - '(substitute* (list "lp_solve/ccc" "lpsolve55/ccc") - (("^c=cc") "c=gcc") - ;; Pretend to be on a 64 bit platform to obtain a common directory - ;; name for the build results on all architectures; nothing else - ;; seems to depend on it. - (("^PLATFORM=.*$") "PLATFORM=ux64\n") - - ;; The check for 'isnan' as it is written fails with - ;; "non-floating-point argument in call to function - ;; ‘__builtin_isnan’", which leads to the 'NOISNAN' cpp macro - ;; definition, which in turn leads to bad things. Fix the feature - ;; test. - (("isnan\\(0\\)") "isnan(0.)"))))) + '(begin + (substitute* (list "lp_solve/ccc" "lpsolve55/ccc") + (("^c=cc") "c=gcc") + ;; Pretend to be on a 64 bit platform to obtain a common directory + ;; name for the build results on all architectures; nothing else + ;; seems to depend on it. + (("^PLATFORM=.*$") "PLATFORM=ux64\n") + + ;; The check for 'isnan' as it is written fails with + ;; "non-floating-point argument in call to function + ;; ‘__builtin_isnan’", which leads to the 'NOISNAN' cpp macro + ;; definition, which in turn leads to bad things. Fix the feature + ;; test. + (("isnan\\(0\\)") "isnan(0.)")) + #t)))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no check target + `(#:tests? #f ; no check target #:phases (modify-phases %standard-phases - (delete 'configure) + (delete 'configure) ; no configure script (replace 'build (lambda _ - (and (with-directory-excursion "lpsolve55" - (zero? (system* "bash" "ccc"))) - (with-directory-excursion "lp_solve" - (zero? (system* "bash" "ccc")))))) + (with-directory-excursion "lpsolve55" + (invoke "bash" "ccc")) + (with-directory-excursion "lp_solve" + (invoke "bash" "ccc")) + #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3091,11 +3298,8 @@ specifications.") ;; This is where LibreOffice expects to find the header ;; files, and where they are installed by Debian. (include (string-append out "/include/lpsolve"))) - (mkdir-p lib) - (copy-file "lpsolve55/bin/ux64/liblpsolve55.a" - (string-append lib "/liblpsolve55.a")) - (copy-file "lpsolve55/bin/ux64/liblpsolve55.so" - (string-append lib "/liblpsolve55.so")) + (install-file "lpsolve55/bin/ux64/liblpsolve55.a" lib) + (install-file "lpsolve55/bin/ux64/liblpsolve55.so" lib) (install-file "lp_solve/bin/ux64/lp_solve" bin) ;; Install a subset of the header files as on Debian @@ -3130,7 +3334,9 @@ revised simplex and the branch-and-bound methods.") (modules '((guix build utils))) (snippet ;; Remove bundled sources: UMFPACK, TBB, muParser, and boost - '(delete-file-recursively "bundled")))) + '(begin + (delete-file-recursively "bundled") + #t)))) (build-system cmake-build-system) (inputs `(("tbb" ,tbb) @@ -3196,7 +3402,8 @@ in finite element programs.") version "-src.zip")) (sha256 (base32 - "022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz")))) + "022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz")) + (patches (search-patches "flann-cmake-3.11.patch")))) (build-system cmake-build-system) (outputs '("out" "octave")) ;46 MiB .mex file that pulls Octave @@ -3303,7 +3510,7 @@ set.") (define-public hypre (package (name "hypre") - (version "2.11.0") + (version "2.14.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/LLNL/hypre/archive/" @@ -3311,7 +3518,7 @@ set.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0q69ia0jivzcr8p049dn3mg8yjpn6nwq4sw9iqac8vr63vi54l6m")) + "0v515i73bvaz378h5465b1dy9v2gf924zy2q94cpq4qqarawvkqh")) (modules '((guix build utils))) (snippet '(begin @@ -3319,7 +3526,7 @@ set.") ;; substitute the tarball creation time. (substitute* "src/utilities/HYPRE_utilities.h" (("Date Compiled: .*$") - "Date Compiled: Mar 28 2016 20:19:59 +0000\"\n")) + "Date Compiled: Apr 11 2018 16:24:59 +0000\"\n")) #t)))) (build-system gnu-build-system) (outputs '("out" ;6.1 MiB of headers and libraries @@ -3327,6 +3534,7 @@ set.") (native-inputs `(("doc++" ,doc++) ("netpbm" ,netpbm) + ("perl" ,perl) ;needed to run 'ppmquant' during tests ("texlive" ,texlive) ;full package required for fonts ("ghostscript" ,ghostscript))) (inputs @@ -3404,7 +3612,11 @@ problems.") (substitute-keyword-arguments (package-arguments hypre) ((#:configure-flags flags) ``("--with-MPI" - ,@(delete "--without-MPI" ,flags))))) + ,@(delete "--without-MPI" ,flags))) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'check 'mpi-setup + ,%openmpi-setup))))) (synopsis "Parallel solvers and preconditioners for linear equations") (description "HYPRE is a software library of high performance preconditioners and @@ -3437,18 +3649,22 @@ supports compressed MAT files, as well as newer (version 7.3) MAT files.") (define-public vc (package (name "vc") - (version "1.2.0") + (version "1.3.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/VcDevel/Vc/releases/" "download/" version "/Vc-" version ".tar.gz")) (sha256 (base32 - "1rh6dhqar3y07n4xqyml0sa0v48qv3ch9dc3yc2in855hlh4vnqi")))) + "1zmlpn32jzb38smp3j834llmbix3whsrbw0h397qxysbw792kih8")))) (build-system cmake-build-system) (arguments '(#:configure-flags - '("-DBUILD_TESTING=ON"))) + '("-DBUILD_TESTING=ON" + ;; By default, Vc will optimize for the CPU of the build machine. + ;; Setting this to "none" makes it create portable binaries. See + ;; "cmake/OptimizeForArchitecture.cmake". + "-DTARGET_ARCHITECTURE=none"))) (synopsis "SIMD vector classes for C++") (description "Vc provides portable, zero-overhead C++ types for explicitly data-parallel programming. It is a library designed to ease explicit @@ -3683,6 +3899,8 @@ exclusion algorithms are typical examples of such systems.") "-DCMAKE_INSTALL_LIBDIR=lib" "-DGFORTRAN_LIB=gfortran") #:phases (modify-phases %standard-phases + (add-before 'check 'mpi-setup + ,%openmpi-setup) (add-before 'check 'setup-tests (lambda _ ;; Parallelism is done at the MPI layer. @@ -3719,7 +3937,7 @@ reduction.") `(("boost" ,boost) ("glu" ,glu) ("mesa" ,mesa) - ("qt" ,qt))) + ("qtbase" ,qtbase))) (build-system cmake-build-system) (synopsis "Toolset for the mCRL2 formal specification language") (description @@ -3729,5 +3947,144 @@ toolset supports analysis and automatic verification, linearisation, simulation, state-space exploration and generation, and tools to optimise and analyse specifications. Also, state spaces can be manipulated, visualised and analysed.") - (home-page "http://mcrl2.org") + (home-page "https://mcrl2.org") (license license:boost1.0))) + +(define-public r-subplex + (package + (name "r-subplex") + (version "1.5-4") + (source + (origin + (method url-fetch) + (uri (cran-uri "subplex" version)) + (sha256 + (base32 + "10cbgbx1bgsax5z7gz6716g360xpq4mvq19cf4qqrxv02mmwz57z")))) + (build-system r-build-system) + (native-inputs + `(("gfortran" ,gfortran))) + (home-page "https://cran.r-project.org/web/packages/subplex") + (synopsis "Unconstrained optimization using the subplex algorithm") + (description "This package implements the Subplex optimization algorithm. +It solves unconstrained optimization problems using a simplex method on +subspaces. The method is well suited for optimizing objective functions that +are noisy or are discontinuous at the solution.") + (license license:gpl3+))) + +(define-public r-desolve + (package + (name "r-desolve") + (version "1.21") + (source + (origin + (method url-fetch) + (uri (cran-uri "deSolve" version)) + (sha256 + (base32 + "0qqc4mknw1jblzcmph1dg3k1p6w42yal0k1xjh8pqk7yb3a75hs5")))) + (properties `((upstream-name . "deSolve"))) + (build-system r-build-system) + (native-inputs + `(("gfortran" ,gfortran))) + (home-page "https://desolve.r-forge.r-project.org/") + (synopsis "Solvers for initial value problems of differential equations") + (description "This package provides functions that solve initial +value problems of a system of first-order ordinary differential equations (ODE), +of partial differential equations (PDE), of differential algebraic equations +(DAE), and of delay differential equations. The functions provide an interface +to the FORTRAN functions lsoda, lsodar, lsode, lsodes of the ODEPACK collection, +to the FORTRAN functions dvode and daspk and a C-implementation of solvers of +the Runge-Kutta family with fixed or variable time steps. The package contains +routines designed for solving ODEs resulting from 1-D, 2-D and 3-D partial +differential equations (PDE) that have been converted to ODEs by numerical +differencing.") + (license license:gpl2+))) + +(define-public tcalc + (package + (name "tcalc") + (version "2.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://sites.google.com/site/mohammedisam2000/tcalc/tcalc-" + version ".tar.gz")) + (sha256 + (base32 + "0jq806m4dqfia85nppfm75mml9w57g0cgv4cdw9bp3zymda83s0m")))) + (build-system gnu-build-system) + (synopsis "The terminal calculator") + (description + "The terminal calculator is a small program to help users of the GNU/Linux +terminal do calculations simply and quickly. The formula to be calculated can +be fed to @command{tcalc} through the command line.") + (home-page "https://sites.google.com/site/mohammedisam2000/tcalc") + (license license:gpl3+))) + +(define-public sundials + (package + (name "sundials") + (version "3.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://computation.llnl.gov/projects/sundials/download/" + "sundials-" version ".tar.gz")) + (sha256 + (base32 + "090s8ymhd0g1s1d44fa73r5yi32hb4biwahhbfi327zd64yn8kd2")))) + (build-system cmake-build-system) + (native-inputs + `(("python" ,python-2))) ;for tests; syntax incompatible with python 3 + (inputs + `(("fortran" ,gfortran) ;for fcmix + ("blas" ,openblas) + ("suitesparse" ,suitesparse))) ;TODO: Add hypre + (arguments + `(#:configure-flags `("-DEXAMPLES_ENABLE_C:BOOL=ON" + "-DEXAMPLES_ENABLE_CXX:BOOL=ON" + "-DEXAMPLES_ENABLE_F77:BOOL=ON" + "-DEXAMPLES_ENABLE_F90:BOOL=ON" + "-DEXAMPLES_INSTALL:BOOL=OFF" + + "-DFCMIX_ENABLE:BOOL=ON" + + "-DKLU_ENABLE:BOOL=ON" + ,(string-append "-DKLU_INCLUDE_DIR=" + (assoc-ref %build-inputs "suitesparse") + "/include") + ,(string-append "-DKLU_LIBRARY_DIR=" + (assoc-ref %build-inputs "suitesparse") + "/lib")))) + (home-page "https://computation.llnl.gov/projects/sundials") + (synopsis "Suite of nonlinear and differential/algebraic equation solvers") + (description "SUNDIALS is a family of software packages implemented with +the goal of providing robust time integrators and nonlinear solvers that can +easily be incorporated into existing simulation codes.") + (license license:bsd-3))) + +(define-public sundials-openmpi + (package (inherit sundials) + (name "sundials-openmpi") + (inputs + `(("mpi" ,openmpi) + ("petsc" ,petsc-openmpi) ;support in SUNDIALS requires MPI + ,@(package-inputs sundials))) + (arguments + (substitute-keyword-arguments (package-arguments sundials) + ((#:configure-flags flags '()) + `(cons* "-DMPI_ENABLE:BOOL=ON" + "-DPETSC_ENABLE:BOOL=ON" + (string-append "-DPETSC_INCLUDE_DIR=" + (assoc-ref %build-inputs "petsc") + "/include") + (string-append "-DPETSC_LIBRARY_DIR=" + (assoc-ref %build-inputs "petsc") + "/lib") + ,flags)) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'mpi-setup + ,%openmpi-setup))))) + (synopsis "SUNDIALS with OpenMPI support")))