X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/f36afe4d05aa9bef729dd7032f7e71a1c7e59e06..2742f87e17eb81088e041b363bb2f854b22a27bc:/gnu/packages/maths.scm diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index ebc34ccd87..0d2efdde26 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1,9 +1,12 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Andreas Enge +;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2014 John Darrington ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2014 Federico Beffa +;;; Copyright © 2014 Mathieu Lirzin +;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,15 +24,18 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages maths) + #:use-module (ice-9 regex) #:use-module (gnu packages) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix svn-download) #:use-module (guix utils) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages algebra) #:use-module (gnu packages bison) + #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages curl) @@ -57,11 +63,13 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages readline) + #:use-module (gnu packages tbb) #:use-module (gnu packages tcsh) #:use-module (gnu packages tcl) #:use-module (gnu packages texinfo) #:use-module (gnu packages texlive) - #:use-module (gnu packages xml)) + #:use-module (gnu packages xml) + #:use-module (gnu packages zip)) (define-public units (package @@ -84,6 +92,29 @@ effectively as a scientific calculator.") (license license:gpl3+) (home-page "http://www.gnu.org/software/units/"))) +(define-public dionysus + (package + (name "dionysus") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/dionysus/dionysus-" version + ".tar.gz")) + (sha256 + (base32 + "1aqnvw6z33bzqgd1ga571pnx6vq2zrkckm1cz91grv45h4jr9vgs")))) + (build-system gnu-build-system) + (inputs `(("tcl" ,tcl))) ;for 'tclsh' + (synopsis "Local search for universal constants and scientific values") + (description + "GNU Dionysus is a convenient system for quickly retrieving the values of +mathematical constants used in science and engineering. Values can be +searched using a simple command-line tool, choosing from three databases: +universal constants, atomic numbers, and constants related to +semiconductors.") + (license license:gpl3+) + (home-page "http://www.gnu.org/software/dionysus/"))) + (define-public gsl (package (name "gsl") @@ -151,7 +182,7 @@ LP/MIP solver is included in the package.") (define-public pspp (package (name "pspp") - (version "0.8.3") + (version "0.8.4") (source (origin (method url-fetch) @@ -159,7 +190,7 @@ LP/MIP solver is included in the package.") version ".tar.gz")) (sha256 (base32 - "0vri2pzvmm38qaihfvwlry30f40lcnps4blg59ixic4q20ldxf5d")))) + "0b65q45x05ps95pph6glbg7ymdr638nfb0rk9x5x9qm5k073pk5z")))) (build-system gnu-build-system) (inputs `(("cairo" ,cairo) @@ -187,6 +218,31 @@ can be imported from spreadsheets, text files and database sources and it can be output in text, PostScript, PDF or HTML.") (license license:gpl3+))) +(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) + (home-page "https://github.com/opencollab/arpack-ng") + (inputs + `(("lapack" ,lapack) + ("fortran" ,gfortran-4.8))) + (synopsis "Fortran subroutines for solving eigenvalue problems") + (description + "ARPACK-NG is a collection of Fortran77 subroutines designed to solve +large scale eigenvalue problems.") + (license (license:non-copyleft "file://COPYING" + "See COPYING in the distribution.")))) + (define-public lapack (package (name "lapack") @@ -217,7 +273,7 @@ be output in text, PostScript, PDF or HTML.") (description "LAPACK is a Fortran 90 library for solving the most commonly occurring problems in numerical linear algebra.") - (license (license:bsd-style "file://LICENSE" + (license (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) (define-public gnuplot @@ -242,9 +298,9 @@ problems in numerical linear algebra.") (home-page "http://www.gnuplot.info") (synopsis "Command-line driven graphing utility") (description "Gnuplot is a portable command-line driven graphing -utility. It was originally created to allow scientists and students to +utility. It was originally created to allow scientists and students to visualize mathematical functions and data interactively, but has grown to -support many non-interactive uses such as web scripting. It is also used as a +support many non-interactive uses such as web scripting. It is also used as a plotting engine by third-party applications like Octave.") ;; X11 Style with the additional restriction that derived works may only be ;; distributed as patches to the original. @@ -264,6 +320,8 @@ plotting engine by third-party applications like Octave.") (sha256 (base32 "0f9n0v3p3lwc7564791a39c6cn1d3dbrn7d1j3ikqsi27a8hy23d")))) (build-system gnu-build-system) + (inputs + `(("zlib" ,zlib))) (arguments `(#:phases (alist-cons-before @@ -272,7 +330,6 @@ plotting engine by third-party applications like Octave.") (substitute* "configure" (("/bin/mv") "mv"))) %standard-phases))) - (outputs '("out" "bin" "lib" "include")) (home-page "http://www.hdfgroup.org") (synopsis "Management suite for extremely large and complex data") (description "HDF5 is a suite that makes possible the management of @@ -286,7 +343,7 @@ extremely large and complex data collections.") (define-public octave (package (name "octave") - (version "3.8.0") + (version "3.8.2") (source (origin (method url-fetch) @@ -294,7 +351,7 @@ extremely large and complex data collections.") version ".tar.gz")) (sha256 (base32 - "0ks9pr154syw0vb3jn6xsnrkkrbvf9y7i7gaxa28rz6ngxbxvq9l")))) + "05slz8yx8k91fqlnfr1f0vni95iq9qmchz41c7nf4isn3b2fjn7j")))) (build-system gnu-build-system) (inputs `(("lapack" ,lapack) @@ -305,8 +362,7 @@ extremely large and complex data collections.") ("fltk" ,fltk) ("fontconfig" ,fontconfig) ("freetype" ,freetype) - ("hdf5-lib" ,hdf5 "lib") - ("hdf5-include" ,hdf5 "include") + ("hdf5" ,hdf5) ("libxft" ,libxft) ("mesa" ,mesa) ("zlib" ,zlib))) @@ -358,10 +414,10 @@ files.") `(("fltk" ,fltk) ("gfortran" ,gfortran-4.8) ("gmp" ,gmp) - ("hdf5-lib" ,hdf5 "lib") - ("hdf5-include" ,hdf5 "include") + ("hdf5" ,hdf5) ("lapack" ,lapack) ("mesa" ,mesa) + ("glu" ,glu) ("libx11" ,libx11) ("libxext" ,libxext))) (arguments @@ -468,7 +524,7 @@ ASCII text files using Gmsh's own scripting language.") (description "PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations.") - (license (license:bsd-style + (license (license:non-copyleft "http://www.mcs.anl.gov/petsc/documentation/copyright.html")))) (define-public petsc-complex @@ -911,3 +967,342 @@ point numbers") ;; At least one file (src/maxima.asd) says "version 2." ;; GPLv2 only is therefore the smallest subset. (license license:gpl2))) + +(define-public muparser + (package + (name "muparser") + (version "2.2.5") + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url "http://muparser.googlecode.com/svn/trunk/") + (revision 34))) + (sha256 + (base32 + "1d6bdbhx9zj3srwj3m7c9hvr18gnx1fx43h6d25my7q85gicpcwn")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--enable-samples=no") + #:tests? #f)) ;no "check" target + (home-page "http://muparser.beltoforion.de/") + (synopsis "Fast parser library for mathematical expressions") + (description + "muParser is an extensible high performance math parser library. It is +based on transforming an expression into a bytecode and precalculating +constant parts of it.") + (license license:expat))) + +(define-public openblas + (package + (name "openblas") + (version "0.2.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/xianyi/OpenBLAS/tarball/v" + version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1asg5mix13ipxgj5h2yj2p0r8km1di5jbcjkn5gmhb37nx7qfv6k")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;no "check" target + #:substitutable? #f ;force local build because of CPU detection + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out")) + "SHELL=bash" + "NO_LAPACK=1") + ;; no configure script + #:phases (alist-delete 'configure %standard-phases))) + (inputs + `(("fortran" ,gfortran-4.8))) + (native-inputs + `(("cunit" ,cunit) + ("perl" ,perl))) + (home-page "http://www.openblas.net/") + (synopsis "Optimized BLAS library based on GotoBLAS") + (description + "OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version.") + (license license:bsd-3))) + +(define-public openlibm + (package + (name "openlibm") + (version "0.4.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/JuliaLang/openlibm/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0cwqqqlblj3kzp9aq1wnpfs1fl0qd1wp1xzm5shb09w06i4rh9nn")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "prefix=" (assoc-ref %outputs "out"))) + #:phases + ;; no configure script + (alist-delete 'configure %standard-phases) + #:tests? #f)) ;the tests are part of the default target + (home-page "http://openlibm.org/") + (synopsis "Portable C mathematical library (libm)") + (description + "OpenLibm is an effort to have a high quality, portable, standalone C +mathematical library (libm). It can be used standalone in applications and +programming language implementations. The project was born out of a need to +have a good libm for the Julia programming langage that worked consistently +across compilers and operating systems, and in 32-bit and 64-bit +environments.") + ;; See LICENSE.md for details. + (license (list license:expat + license:isc + license:bsd-2 + license:public-domain + license:lgpl2.1+)))) + +(define-public openspecfun + (package + (name "openspecfun") + (version "0.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/JuliaLang/openspecfun/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0nsa3jjmlhcqkw5ba5ypbn3n0c8b6lc22zzlxnmxkxi9shhdx65z")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;no "check" target + #:make-flags + (list (string-append "prefix=" (assoc-ref %outputs "out"))) + ;; no configure script + #:phases (alist-delete 'configure %standard-phases))) + (inputs + `(("fortran" ,gfortran-4.8))) + (home-page "https://github.com/JuliaLang/openspecfun") + (synopsis "Collection of special mathematical functions") + (description + "Openspecfun provides AMOS and Faddeeva. AMOS (from Netlib) is a +portable package for Bessel Functions of a Complex Argument and Nonnegative +Order; it contains subroutines for computing Bessel functions and Airy +functions. Faddeeva allows computing the various error functions of arbitrary +complex arguments (Faddeeva function, error function, complementary error +function, scaled complementary error function, imaginary error function, and +Dawson function); given these, one can also easily compute Voigt functions, +Fresnel integrals, and similar related functions as well.") + ;; Faddeeva is released under the Expat license; AMOS is included as + ;; public domain software. + (license (list license:expat license:public-domain)))) + +(define-public suitesparse + (package + (name "suitesparse") + (version "4.4.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-" + version ".tar.gz")) + (sha256 + (base32 + "100hdzr0mf4mzlwnqpmwpfw4pymgsf9n3g0ywb1yps2nk1zbkdy5")))) + (build-system gnu-build-system) + (arguments + '(#:parallel-build? #f ;cholmod build fails otherwise + #:tests? #f ;no "check" target + #:make-flags + (list "CC=gcc" + "BLAS=-lblas" + "TBB=-ltbb" + "CHOLMOD_CONFIG=-DNPARTITION" ;required when METIS is not used + (string-append "INSTALL_LIB=" + (assoc-ref %outputs "out") "/lib") + (string-append "INSTALL_INCLUDE=" + (assoc-ref %outputs "out") "/include")) + #:phases + (alist-cons-before + 'install 'prepare-out + ;; README.txt states that the target directories must exist prior to + ;; running "make install". + (lambda _ + (mkdir-p (string-append (assoc-ref %outputs "out") "/lib")) + (mkdir-p (string-append (assoc-ref %outputs "out") "/include"))) + ;; no configure script + (alist-delete 'configure %standard-phases)))) + (inputs + `(("tbb" ,tbb) + ("lapack" ,lapack))) + (home-page "http://faculty.cse.tamu.edu/davis/suitesparse.html") + (synopsis "Suite of sparse matrix software") + (description + "SuiteSparse is a suite of sparse matrix algorithms, including: UMFPACK, +multifrontal LU factorization; CHOLMOD, supernodal Cholesky; SPQR, +multifrontal QR; KLU and BTF, sparse LU factorization, well-suited for circuit +simulation; ordering methods (AMD, CAMD, COLAMD, and CCOLAMD); CSparse and +CXSparse, a concise sparse Cholesky factorization package; and many other +packages.") + ;; LGPLv2.1+: + ;; AMD, CAMD, BTF, COLAMD, CCOLAMD, CSparse, CXSparse, KLU, LDL + ;; GPLv2+: + ;; GPUQREngine, RBio, SuiteSparse_GPURuntime, SuiteSparseQR, UMFPACK + (license (list license:gpl2+ license:lgpl2.1+)))) + +(define-public atlas + (package + (name "atlas") + (version "3.10.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/math-atlas/atlas" + version ".tar.bz2")) + (sha256 + (base32 + "0bqh4bdnjdyww4mcpg6kn0x7338mfqbdgysn97dzrwwb26di7ars")))) + (build-system gnu-build-system) + (home-page "http://math-atlas.sourceforge.net/") + (inputs `(("gfortran" ,gfortran-4.8) + ("lapack-tar" ,(package-source lapack)))) + (outputs '("out" "doc")) + ;; For the moment we drop support for MIPS at it fails to compile. See + ;; https://lists.gnu.org/archive/html/guix-devel/2014-11/msg00516.html + (supported-systems (delete "mips64el-linux" %supported-systems)) + (arguments + `(#:parallel-build? #f + #:parallel-tests? #f + + ;; ATLAS tunes itself for the machine it is built on, as explained at + ;; . + ;; For this reason, we want users to build it locally instead of using + ;; substitutes. + #:substitutable? #f + + #:modules ((srfi srfi-26) + (srfi srfi-1) + (guix build gnu-build-system) + (guix build utils)) + #:configure-flags + `(;; Generate position independent code suitable for dynamic libraries + ;; and use WALL timer to get more accurate timing. + "-Fa" "alg" "-fPIC" "-D" "c" "-DWALL" + ;; Set word width. + "-b" + ,,(if (string-match "64" (%current-system)) + "64" + "32") + ;; Disable parallel build as it gives errors: atlas_pthread.h is + ;; needed to compile C files before it is generated. + "-Ss" "pmake" "make -j 1" + ;; Probe is failing for MIPS. We therefore define the system + ;; architecture explicitly by setting (-A) MACHINETYPE = 49 + ;; 'MIPSR1xK' and (-V) ISA = 1 'none'. + ,,@(if (string-prefix? "mips" (%current-system)) + (list "-A" "49" "-V" "1") + (list)) + ;; Generate shared libraries. + "--shared" + ;; Build a full LAPACK library. + ,(string-append "--with-netlib-lapack-tarfile=" + (assoc-ref %build-inputs "lapack-tar"))) + #:phases + (alist-cons-after + 'install 'install-doc + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((doc (string-append (assoc-ref outputs "doc") + "/share/doc/atlas"))) + (mkdir-p doc) + (fold (lambda (file previous) + (and previous (zero? (system* "cp" file doc)))) + #t (find-files "../ATLAS/doc" ".*")))) + (alist-cons-after + 'check 'check-pt + (lambda _ (zero? (system* "make" "ptcheck"))) + ;; Fix files required to run configure. + (alist-cons-before + 'configure 'fix-/bin/sh + (lambda _ + ;; Use `sh', not `/bin/sh'. + (substitute* (find-files "." "Makefile|configure|SpewMakeInc\\.c") + (("/bin/sh") + "sh"))) + ;; Fix /bin/sh in generated make files. + (alist-cons-after + 'configure 'fix-/bin/sh-in-generated-files + (lambda _ + (substitute* (find-files "." "^[Mm]ake\\.inc.*") + (("/bin/sh") + "sh"))) + ;; ATLAS configure program does not accepts the default flags + ;; passed by the 'gnu-build-system'. + (alist-replace + 'configure + (lambda* (#:key native-inputs inputs outputs + (configure-flags '()) + #:allow-other-keys #:rest args) + (let* ((prefix (assoc-ref outputs "out")) + (bash (or (and=> (assoc-ref + (or native-inputs inputs) "bash") + (cut string-append <> "/bin/bash")) + "/bin/sh")) + (flags `(,(string-append "--prefix=" prefix) + ,@configure-flags)) + (abs-srcdir (getcwd)) + (srcdir (string-append "../" (basename abs-srcdir)))) + (format #t "source directory: ~s (relative from build: ~s)~%" + abs-srcdir srcdir) + (mkdir "../build") + (chdir "../build") + (format #t "build directory: ~s~%" (getcwd)) + (format #t "configure flags: ~s~%" flags) + (zero? (apply system* bash + (string-append srcdir "/configure") + flags)))) + %standard-phases))))))) + (synopsis "Automatically Tuned Linear Algebra Software") + (description + "ATLAS is an automatically tuned linear algebra software library +providing C and Fortran77 interfaces to a portably efficient BLAS +implementation, as well as a few routines from LAPACK. + +Optimization occurs at build time. For this reason, the library is built on +the machine where it is installed, without resorting to pre-built substitutes. + +Before building the library, CPU throttling should be disabled. This can be +done in the BIOS, or, on GNU/Linux, with the following commands: + +cpufreq-selector -g performance -c 0 +... +cpufreq-selector -g performance -c N-1 + +where N is the number of cores of your CPU. Failure to do so will result in a +library with poor performance.") + (license license:bsd-3))) + +(define-public glm + (package + (name "glm") + (version "0.9.6.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/ogl-math/glm-" + version ".zip")) + (sha256 + (base32 + "1cnjmi033a16a95v6xfkr1bvfmkd26hzdjka8j1819hgn5b1nr8l")))) + (build-system cmake-build-system) + (native-inputs + `(("unzip" ,unzip))) + (home-page "http://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) +specifications.") + (license license:expat)))