gnu: Move numerous "inputs" which should be "native-inputs".
[jackhill/guix/guix.git] / gnu / packages / algebra.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
90a6d47c 2;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr>
4e6b699d 3;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
2ed139c4 4;;;
233e7676 5;;; This file is part of GNU Guix.
2ed139c4 6;;;
233e7676 7;;; GNU Guix is free software; you can redistribute it and/or modify it
2ed139c4
AE
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
233e7676 12;;; GNU Guix is distributed in the hope that it will be useful, but
2ed139c4
AE
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
233e7676 18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
2ed139c4 19
1ffa7090 20(define-module (gnu packages algebra)
59a43334 21 #:use-module (gnu packages)
1ffa7090
LC
22 #:use-module (gnu packages multiprecision)
23 #:use-module (gnu packages perl)
24 #:use-module (gnu packages readline)
25 #:use-module (gnu packages flex)
2ed139c4
AE
26 #:use-module (guix licenses)
27 #:use-module (guix packages)
28 #:use-module (guix download)
29 #:use-module (guix build-system gnu))
30
31
32(define-public mpfrcx
33 (package
34 (name "mpfrcx")
9c68798d 35 (version "0.4.2")
2ed139c4
AE
36 (source (origin
37 (method url-fetch)
38 (uri (string-append
39 "http://www.multiprecision.org/mpfrcx/download/mpfrcx-"
40 version ".tar.gz"))
41 (sha256
42 (base32
9c68798d 43 "0grw66b255r574lvll1bqccm5myj2m8ajzsjaygcyq9zjnnbnhhy"))))
2ed139c4
AE
44 (build-system gnu-build-system)
45 (inputs `(("gmp" ,gmp)
46 ("mpfr" ,mpfr)
47 ("mpc" ,mpc)))
48 (synopsis "mpfrcx, a library for the arithmetic of univariate polynomials
49over arbitrary precision real or complex numbers")
50 (description
51 "mpfrcx is a library for the arithmetic of univariate polynomials over
52arbitrary precision real (mpfr) or complex (mpc) numbers, without control
53on the rounding. For the time being, only the few functions needed to
54implement the floating point approach to complex multiplication are
55implemented. On the other hand, these comprise asymptotically fast
56multiplication routines such as Toom–Cook and the FFT. ")
57 (license lgpl2.1+)
58 (home-page "http://mpfrcx.multiprecision.org/")))
59
2ed139c4
AE
60(define-public fplll
61 (package
62 (name "fplll")
5a15ed50 63 (version "4.0.4")
2ed139c4
AE
64 (source (origin
65 (method url-fetch)
66 (uri (string-append
67 "http://perso.ens-lyon.fr/damien.stehle/fplll/libfplll-"
68 version ".tar.gz"))
69 (sha256 (base32
5a15ed50 70 "1cbiby7ykis4z84swclpysrljmqhfcllpkcbll1m08rzskgb1a6b"))))
2ed139c4
AE
71 (build-system gnu-build-system)
72 (inputs `(("gmp" ,gmp)
73 ("mpfr" ,mpfr)))
74 (synopsis "fplll, a library for LLL-reduction of euclidean lattices")
75 (description
76 "fplll LLL-reduces euclidean lattices. Since version 3, it can also
77solve the shortest vector problem.")
78 (license lgpl2.1+)
79 (home-page "http://perso.ens-lyon.fr/damien.stehle/fplll/")))
4e6b699d 80
90a6d47c
AE
81(define-public pari-gp
82 (package
83 (name "pari-gp")
9a6a9dae 84 (version "2.5.5")
90a6d47c
AE
85 (source (origin
86 (method url-fetch)
87 (uri (string-append
88 "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
89 version ".tar.gz"))
90 (sha256 (base32
9a6a9dae 91 "058nw1fhggy7idii4f124ami521lv3izvngs9idfz964aks8cvvn"))))
90a6d47c
AE
92 (build-system gnu-build-system)
93 (inputs `(("gmp" ,gmp)
94 ("perl" ,perl)
95 ("readline" ,readline)))
96 (arguments
12abb19d
LC
97 '(#:make-flags '("gp")
98 ;; FIXME: building the documentation requires tex; once this is available,
99 ;; replace "gp" by "all"
100 #:test-target "dobench"
101 #:phases
102 (alist-replace
103 'configure
104 (lambda* (#:key inputs outputs #:allow-other-keys)
105 (let ((out (assoc-ref outputs "out"))
106 (readline (assoc-ref inputs "readline"))
107 (gmp (assoc-ref inputs "gmp")))
108 (zero?
109 (system* "./Configure"
110 (string-append "--prefix=" out)
111 (string-append "--with-readline=" readline)
112 (string-append "--with-gmp=" gmp)))))
113 ;; FIXME: readline and gmp will be detected automatically in the next
114 ;; stable release
115 %standard-phases)))
90a6d47c
AE
116 (synopsis "PARI/GP, a computer algebra system for number theory")
117 (description
118 "PARI/GP is a widely used computer algebra system designed for fast
119computations in number theory (factorisations, algebraic number theory,
120elliptic curves...), but it also contains a large number of other useful
121functions to compute with mathematical entities such as matrices,
122polynomials, power series, algebraic numbers, etc., and a lot of
123transcendental functions.
124PARI is also available as a C library to allow for faster computations.")
125 (license gpl2+)
126 (home-page "http://pari.math.u-bordeaux.fr/")))
ed9f9a77 127
f854a8c1
AE
128(define-public gp2c
129 (package
130 (name "gp2c")
131 (version "0.0.8")
132 (source (origin
133 (method url-fetch)
134 (uri (string-append
135 "http://pari.math.u-bordeaux.fr/pub/pari/GP2C/gp2c-"
136 version ".tar.gz"))
137 (sha256 (base32
138 "03fgiwy2si264g3zfgw2yi6i2l8szl5m106zgwk77sddshk20b34"))))
139 (build-system gnu-build-system)
140 (inputs `(("pari-gp" ,pari-gp)))
141 (arguments
142 '(#:configure-flags
143 (list (string-append "--with-paricfg="
144 (assoc-ref %build-inputs "pari-gp")
145 "/lib/pari/pari.cfg"))))
146 (synopsis "PARI/GP, a computer algebra system for number theory")
147 (description
148 "PARI/GP is a widely used computer algebra system designed for fast
149computations in number theory (factorisations, algebraic number theory,
150elliptic curves...), but it also contains a large number of other useful
151functions to compute with mathematical entities such as matrices,
152polynomials, power series, algebraic numbers, etc., and a lot of
153transcendental functions.
154PARI is also available as a C library to allow for faster computations.
155
156GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
157 (license gpl2)
158 (home-page "http://pari.math.u-bordeaux.fr/")))
159
ed9f9a77
LC
160(define-public bc
161 (package
162 (name "bc")
163 (version "1.06")
164 (source (origin
165 (method url-fetch)
166 (uri (string-append "mirror://gnu/bc/bc-" version ".tar.gz"))
167 (sha256
168 (base32
169 "0cqf5jkwx6awgd2xc2a0mkpxilzcfmhncdcfg7c9439wgkqxkxjf"))))
170 (build-system gnu-build-system)
c4c4cc05
JD
171 (inputs `(("readline" ,readline)))
172 (native-inputs `(("flex" ,flex)))
ed9f9a77
LC
173 (arguments
174 '(#:phases
175 (alist-replace 'configure
176 (lambda* (#:key outputs #:allow-other-keys)
177 ;; This old `configure' script doesn't support
178 ;; variables passed as arguments.
179 (let ((out (assoc-ref outputs "out")))
180 (setenv "CONFIG_SHELL" (which "bash"))
181 (zero?
182 (system* "./configure"
183 (string-append "--prefix=" out)))))
184 %standard-phases)))
185 (home-page "http://www.gnu.org/software/bc/")
f50d2669 186 (synopsis "Arbitrary precision numeric processing language")
ed9f9a77 187 (description
a22dc0c4
LC
188 "bc is an arbitrary precision numeric processing language. It includes
189an interactive environment for evaluating mathematical statements. Its
190syntax is similar to that of C, so basic usage is familiar. It also includes
191\"dc\", a reverse-polish calculator.")
ed9f9a77 192 (license gpl2+)))
37e6cdcd
LC
193
194(define-public fftw
195 (package
196 (name "fftw")
197 (version "3.3.3")
198 (source (origin
199 (method url-fetch)
200 (uri (string-append "ftp://ftp.fftw.org/pub/fftw/fftw-"
201 version".tar.gz"))
202 (sha256
203 (base32
204 "1wwp9b2va7vkq3ay7a9jk22nr4x5q6m37rzqy2j8y3d11c5grkc5"))))
205 (build-system gnu-build-system)
206 (arguments
207 '(#:configure-flags '("--enable-shared" "--enable-openmp")
208 #:phases (alist-cons-before
209 'build 'no-native
210 (lambda _
211 ;; By default '-mtune=native' is used. However, that may
212 ;; cause the use of ISA extensions (SSE2, etc.) that are
213 ;; not necessarily available on the user's machine when
214 ;; that package is built on a different machine.
215 (substitute* (find-files "." "Makefile$")
216 (("-mtune=native") "")))
217 %standard-phases)))
218 (native-inputs `(("perl" ,perl)))
219 (home-page "http://fftw.org")
220 (synopsis "Computing the discrete Fourier transform")
221 (description
222 "FFTW is a C subroutine library for computing the discrete Fourier
223transform (DFT) in one or more dimensions, of arbitrary input size, and of
224both real and complex data (as well as of even/odd data---i.e. the discrete
225cosine/ sine transforms or DCT/DST).")
226 (license gpl2+)))