gnu: calibre: Remove unrar test.
[jackhill/guix/guix.git] / gnu / packages / multiprecision.scm
index 4ee316f..6383976 100644 (file)
@@ -1,10 +1,12 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015, 2018 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,7 +26,9 @@
 (define-module (gnu packages multiprecision)
   #:use-module (guix licenses)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages gcc)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
                           (else '())))))
    (synopsis "Multiple-precision arithmetic library")
    (description
-    "GMP is a library for arbitrary precision arithmetic, operating on
-signed integers, rational numbers and floating point numbers.  The precision
-is only limited by the available memory.  The library is highly optimized,
-with a design focus on execution speed.  It is aimed at use in, for example,
-cryptography and computational algebra.")
+    "@dfn{GMP} (the GNU Multiple Precision Arithmetic Library) is a library for
+arbitrary-precision arithmetic, operating on signed integers, rational numbers
+and floating point numbers.  The precision is only limited by the available
+memory.  The library is highly optimized, with a design focus on execution
+speed.  It is aimed at use in, for example, cryptography and computational
+algebra.")
    (license lgpl3+)
    (home-page "https://gmplib.org/")))
 
@@ -88,13 +93,13 @@ cryptography and computational algebra.")
 (define-public mpfr
   (package
    (name "mpfr")
-   (version "3.1.5")
+   (version "4.0.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/mpfr/mpfr-" version
                                 ".tar.xz"))
             (sha256 (base32
-                     "1g32l2fg8f62lcyzzh88y3fsh6rk539qc6ahhdgvx7wpnf1dwpq1"))))
+                     "0vp1lrc08gcmwdaqck6bpzllkrykvp06vz5gnqpyw0v3h9h4m1v7"))))
    (build-system gnu-build-system)
    (outputs '("out" "debug"))
    (propagated-inputs `(("gmp" ,gmp)))            ; <mpfr.h> refers to <gmp.h>
@@ -104,19 +109,19 @@ cryptography and computational algebra.")
 library for performing multiple-precision, floating-point computations with
 correct rounding.")
    (license lgpl3+)
-   (home-page "http://www.mpfr.org/")))
+   (home-page "https://www.mpfr.org/")))
 
 (define-public mpc
   (package
    (name "mpc")
-   (version "1.0.3")
+   (version "1.1.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "mirror://gnu/mpc/mpc-" version ".tar.gz"))
             (sha256
               (base32
-                "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1"))))
+                "0biwnhjm3rx3hc0rfpvyniky4lpzsvdcwhmcn7f0h4iw2hwcb1b9"))))
    (build-system gnu-build-system)
    (outputs '("out" "debug"))
    (propagated-inputs `(("gmp" ,gmp)              ; <mpc.h> refers to both
@@ -156,3 +161,207 @@ are both guaranteed, thanks to interval computation, and accurate, thanks to
 multiple-precision arithmetic.")
     (license lgpl2.1+)
     (home-page "https://perso.ens-lyon.fr/nathalie.revol/software.html")))
+
+(define-public irram
+  (package
+    (name "irram")
+    (version "2013_01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://irram.uni-trier.de/irram-files/iRRAM_"
+                           version ".tar.bz2"))
+       (sha256
+        (base32 "1cdmvb4hsa161rfdjqyhd9sb3fcr43p3a6nsj7cb4kn9f94qmjpj"))))
+    (build-system gnu-build-system)
+    (propagated-inputs `(("gmp" ,gmp)   ; <mpfi.h> refers to both
+                         ("mpfr" ,mpfr)))
+    (arguments
+     `(#:parallel-build? #f))
+    (synopsis "C++ package for real arithmetic based on the Real-RAM concept")
+    (description
+     "@dfn{iRRAM} is a C++ package for error-free real arithmetic based on
+the concept of a Real-RAM.  Its capabilities range from ordinary arithmetic
+over trigonometric functions to linear algebra and differential
+equations.  A program using iRRAM is coded in ordinary C++, but may use a
+special class that behaves like real numbers without any
+error.  Additionally, iRRAM uses the concept of multi-valued functions.")
+    (license lgpl2.0+)
+    (home-page "http://irram.uni-trier.de/")))
+
+(define-public qd
+  (package
+    (name "qd")
+    (version "2.3.22")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://crd.lbl.gov/~dhbailey/mpdist/qd-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0wpgdzjcbanwd0c9mk90n04nas0q5fwc5zkrlbxyn6yjd2n8k3i6"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gfortran" ,gfortran)))
+    (arguments
+     `(#:configure-flags `("--disable-enable_fma" ;weird :/
+                           "--enable-shared"
+                           ,,@(if (string-prefix? "aarch64"
+                                                  (or (%current-target-system)
+                                                      (%current-system)))
+                                  ;; XXX: The qd_test test fails numerical
+                                  ;; accuracy checks for 'dd_real::exp()' on
+                                  ;; aarch64 with GCC 5.4 at -O2.  Disabling
+                                  ;; expensive optimizations lets it pass.
+                                  '("CXXFLAGS=-O3 -fno-expensive-optimizations")
+                                  '("CXXFLAGS=-O3")))))
+    (home-page "http://crd-legacy.lbl.gov/~dhbailey/mpdist/")
+    (synopsis "Double-double and quad-double library")
+    (description "This package supports both a double-double
+datatype (approx. 32 decimal digits) and a quad-double datatype (approx. 64
+decimal digits).  The computational library is written in C++.  Both C++ and
+Fortran-90 high-level language interfaces are provided to permit one to
+convert an existing C++ or Fortran-90 program to use the library with only
+minor changes to the source code.  In most cases only a few type statements
+and (for Fortran-90 programs) read/write statements need to be changed.  PSLQ
+and numerical quadrature programs are included.")
+    (license bsd-3)))
+
+(define-public tomsfastmath
+  (package
+    (name "tomsfastmath")
+    (version "0.13.1")
+    (synopsis "Large integer arithmetic library")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/libtom/tomsfastmath/"
+                                  "releases/download/v" version "/"
+                                  "tfm-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0f0pmiaskh89sp0q933pafxb914shpaj5ad8sb5rzk1wv8d7mja7"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("libtool" ,libtool)))
+    (arguments
+     `(#:make-flags (list "-f" "makefile.shared"
+                          (string-append "LIBPATH=" %output "/lib")
+                          (string-append "INCPATH=" %output "/include")
+                          "GROUP=root" "USER=root"
+                          "CC=gcc")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configuration
+         (replace 'check
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make"
+                    "stest" "test_standalone"
+                    make-flags)
+             (invoke "./stest")
+             (invoke "./test")))
+         (add-before 'install 'install-nogroup
+           (lambda _
+             ;; Let permissions inherit from the current process.
+             (substitute* "makefile.shared"
+               (("-g \\$\\(GROUP\\) -o \\$\\(USER\\)") ""))
+             #t))
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((docdir (string-append (assoc-ref outputs "out")
+                                          "/share/doc/tomsfastmath")))
+               (install-file "doc/tfm.pdf" docdir)
+               #t)))
+         (add-after 'install 'install-pc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (pc-dir (string-append out "/lib/pkgconfig")))
+               (call-with-output-file "tomsfastmath.pc"
+                 (lambda (port)
+                   (format port "~
+Name: TomsFastMath
+Description: ~a
+Version: ~a
+Libs: -L~a/lib -ltfm~%"
+                           ,synopsis ,version out)))
+               (install-file "tomsfastmath.pc" pc-dir)
+               #t))))))
+    (home-page "https://www.libtom.net/TomsFastMath/")
+    (description "TomsFastMath is a large integer library written in portable
+ISO C.  It is a port of LibTomMath with optional support for inline assembler
+multiplies.")
+    (license public-domain)))
+
+(define-public libtommath
+  (package
+    (name "libtommath")
+    (version "1.1.0")
+    (outputs '("out" "static"))
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/libtom/libtommath/releases/"
+                            "download/v" version "/ltm-" version ".tar.xz"))
+        (sha256
+         (base32
+          "1bbyagqzfdbg37k1n08nsqzdf44z8zsnjjinqbsyj7rxg246qilh"))
+        (patches (search-patches "libtommath-fix-linkage.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure) ; no configure
+         (add-after 'unpack 'prepare-build
+           (lambda _
+             ;; Don't pull in coreutils.
+             (substitute* "makefile_include.mk"
+               (("arch") "uname -m"))
+
+             ;; We want the shared library by default so force it to be the
+             ;; default makefile target.
+             (delete-file "makefile")
+             (symlink "makefile.shared" "makefile")
+             #t))
+         (add-after 'install 'remove-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/lib/libtommath.a"))
+             #t))
+         (replace 'check
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "test_standalone" make-flags)
+             (invoke "sh" "test")))
+         (add-after 'install 'install-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "make" "-f" "makefile.unix" "install"
+                     (string-append "PREFIX=" (assoc-ref outputs "static"))
+                     (string-append "CC=" (which "gcc"))))))
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                          "CC=gcc")))
+    (native-inputs
+     `(("libtool" ,libtool)))
+    (home-page "https://www.libtom.net/LibTomMath/")
+    (synopsis "Portable number theoretic multiple-precision integer library")
+    (description "LibTomMath is a portable number theoretic multiple-precision
+integer library written entirely in C.  It's designed to provide an API that is
+simple to work with that provides fairly efficient routines that build out of
+the box without configuration.")
+    (license unlicense)))
+
+(define-public libtommath-1.0
+  (package
+    (inherit libtommath)
+    (version "1.0.1")
+    (outputs '("out"))
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/libtom/libtommath/releases/"
+                            "download/v" version "/ltm-" version ".tar.xz"))
+        (sha256
+         (base32
+          "0sbccdwbkfc680id2fi0x067j23biqcjqilwkk7y9339knrjy0s7"))))
+    (arguments
+      (substitute-keyword-arguments (package-arguments libtommath)
+        ((#:phases phases)
+         `(modify-phases ,phases
+            (delete 'install-static-library)))))))