gnu: calibre: Remove unrar test.
[jackhill/guix/guix.git] / gnu / packages / multiprecision.scm
index ee427f8..6383976 100644 (file)
@@ -1,12 +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 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,6 +26,7 @@
 (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)
@@ -108,7 +109,7 @@ 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
@@ -161,17 +162,44 @@ 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.18")
+    (version "2.3.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://crd.lbl.gov/~dhbailey/mpdist/qd-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0vkihcj9fyv2cycq8515713gbs3yskhmivy8bznvx72i6ddnn2c1"))))
+                "0wpgdzjcbanwd0c9mk90n04nas0q5fwc5zkrlbxyn6yjd2n8k3i6"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -198,3 +226,142 @@ 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)))))))