Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / multiprecision.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
4 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
5 ;;;
6 ;;; This file is part of GNU Guix.
7 ;;;
8 ;;; GNU Guix is free software; you can redistribute it and/or modify it
9 ;;; under the terms of the GNU General Public License as published by
10 ;;; the Free Software Foundation; either version 3 of the License, or (at
11 ;;; your option) any later version.
12 ;;;
13 ;;; GNU Guix is distributed in the hope that it will be useful, but
14 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 ;;; GNU General Public License for more details.
17 ;;;
18 ;;; You should have received a copy of the GNU General Public License
19 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21 (define-module (gnu packages multiprecision)
22 #:use-module (guix licenses)
23 #:use-module (gnu packages)
24 #:use-module (gnu packages m4)
25 #:use-module (guix packages)
26 #:use-module (guix download)
27 #:use-module (guix utils)
28 #:use-module (guix build-system gnu))
29
30 (define-public gmp
31 (package
32 (name "gmp")
33 (version "6.0.0a")
34 (source (origin
35 (method url-fetch)
36 (uri
37 (string-append "mirror://gnu/gmp/gmp-"
38 version ".tar.xz"))
39 (sha256
40 (base32
41 "0r5pp27cy7ch3dg5v0rsny8bib1zfvrza6027g2mp5f6v8pd6mli"))
42 (patches (list (search-patch "gmp-arm-asm-nothumb.patch")))))
43 (build-system gnu-build-system)
44 (native-inputs `(("m4" ,m4)))
45 (outputs '("out" "debug"))
46 (arguments `(#:configure-flags
47 '(;; Build a "fat binary", with routines for several
48 ;; sub-architectures.
49 "--enable-fat"
50 "--enable-cxx"
51
52 ;; FIXME: gmp-6.0.0a's config.guess fails on
53 ;; multi-core armhf systems.
54 ,@(if (%current-target-system)
55 '()
56 (let ((triplet
57 (nix-system->gnu-triplet (%current-system))))
58 (list (string-append "--build=" triplet)))))))
59 (synopsis "Multiple-precision arithmetic library")
60 (description
61 "GMP is a library for arbitrary precision arithmetic, operating on
62 signed integers, rational numbers and floating point numbers. The precision
63 is only limited by the available memory. The library is highly optimized,
64 with a design focus on execution speed. It is aimed at use in, for example,
65 cryptography and computational algebra.")
66 (license lgpl3+)
67 (home-page "http://gmplib.org/")))
68
69 (define-public mpfr
70 (package
71 (name "mpfr")
72 (version "3.1.2")
73 (source (origin
74 (method url-fetch)
75 (uri (string-append "mirror://gnu/mpfr/mpfr-" version
76 ".tar.xz"))
77 (sha256 (base32
78 "0fs501qi8l523gs3cpy4jjcnvwxggyfbklcys80wq236xx3hz79r"))))
79 (build-system gnu-build-system)
80 (outputs '("out" "debug"))
81 (propagated-inputs `(("gmp" ,gmp))) ; <mpfr.h> refers to <gmp.h>
82 (synopsis "C library for arbitrary precision floating-point arithmetic")
83 (description
84 "GNU MPFR is a C library for performing multiple-precision,
85 floating-point computations with correct rounding.")
86 (license lgpl3+)
87 (home-page "http://www.mpfr.org/")))
88
89 (define-public mpc
90 (package
91 (name "mpc")
92 (version "1.0.3")
93 (source (origin
94 (method url-fetch)
95 (uri (string-append
96 "mirror://gnu/mpc/mpc-" version ".tar.gz"))
97 (sha256
98 (base32
99 "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1"))))
100 (build-system gnu-build-system)
101 (outputs '("out" "debug"))
102 (propagated-inputs `(("gmp" ,gmp) ; <mpc.h> refers to both
103 ("mpfr" ,mpfr)))
104 (synopsis "C library for arbitrary precision complex arithmetic")
105 (description
106 "GNU MPC is a C library for performing arithmetic on complex numbers.
107 It supports arbitrarily high precision and it correctly rounds the results.")
108 (license lgpl3+)
109 (home-page "http://mpc.multiprecision.org/")))