gnu: gsl: Disable numerically unstable test on i686.
[jackhill/guix/guix.git] / gnu / packages / maths.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
3 ;;;
4 ;;; This file is part of GNU Guix.
5 ;;;
6 ;;; GNU Guix is free software; you can redistribute it and/or modify it
7 ;;; under the terms of the GNU General Public License as published by
8 ;;; the Free Software Foundation; either version 3 of the License, or (at
9 ;;; your option) any later version.
10 ;;;
11 ;;; GNU Guix is distributed in the hope that it will be useful, but
12 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ;;; GNU General Public License for more details.
15 ;;;
16 ;;; You should have received a copy of the GNU General Public License
17 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19 (define-module (gnu packages maths)
20 #:use-module (gnu packages)
21 #:use-module ((guix licenses)
22 #:renamer (symbol-prefix-proc 'license:))
23 #:use-module (guix packages)
24 #:use-module (guix download)
25 #:use-module (guix build-system gnu)
26 #:use-module (gnu packages compression)
27 #:use-module ((gnu packages gettext)
28 #:renamer (symbol-prefix-proc 'gnu:))
29 #:use-module (gnu packages perl)
30 #:use-module (gnu packages pkg-config)
31 #:use-module (gnu packages readline)
32 #:use-module (gnu packages xml))
33
34 (define-public units
35 (package
36 (name "units")
37 (version "2.01")
38 (source (origin
39 (method url-fetch)
40 (uri (string-append "mirror://gnu/units/units-" version
41 ".tar.gz"))
42 (sha256 (base32
43 "1wl8kaxgk4l5jgc1f71mx1rwa6ib84krjmzyzn2f987z1g3i52qk"))))
44 (build-system gnu-build-system)
45 (synopsis "Conversion between thousands of scales")
46 (description
47 "GNU Units converts quantities expressed in various systems of
48 measurement to their equivalents in other systems of measurement. Like
49 many similar programs, it can handle multiplicative scale changes. It can
50 also handle nonlinear conversions such as Fahrenheit to Celsius or wire
51 gauge, and it can convert from and to sums of units, such as converting
52 between meters and feet plus inches.
53
54 Beyond simple unit conversions, GNU Units can be used as a general-purpose
55 scientific calculator that keeps track of units in its calculations. You
56 can form arbitrary complex mathematical expressions of dimensions including
57 sums, products, quotients, powers, and even roots of dimensions. Thus you
58 can ensure accuracy and dimensional consistency when working with long
59 expressions that involve many different units that may combine in complex
60 ways.
61
62 The units are defined in an external data file. You can use the extensive
63 data file that comes with this program, or you can provide your own data
64 file to suit your needs. You can also use your own data file to supplement
65 the standard data file.")
66 (license license:gpl3+)
67 (home-page "http://www.gnu.org/software/units/")))
68
69 (define-public gsl
70 (package
71 (name "gsl")
72 (version "1.15")
73 (source
74 (origin
75 (method url-fetch)
76 (uri (string-append "mirror://gnu/gsl/gsl-"
77 version ".tar.gz"))
78 (sha256
79 (base32
80 "18qf6jzz1r3mzb5qynywv4xx3z9g61hgkbpkdrhbgqh2g7jhgfc5"))))
81 (build-system gnu-build-system)
82 (arguments
83 `(#:phases
84 (alist-replace
85 'configure
86 (lambda* (#:key target system outputs #:allow-other-keys #:rest args)
87 (let ((configure (assoc-ref %standard-phases 'configure)))
88 ;; disable numerically unstable test on i686, see thread at
89 ;; http://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html
90 (if (string=? (or target system) "i686-linux")
91 (substitute* "ode-initval2/Makefile.in"
92 (("TESTS = \\$\\(check_PROGRAMS\\)") "TESTS =")))
93 (apply configure args)))
94 %standard-phases)))
95 (home-page "http://www.gnu.org/software/gsl/")
96 (synopsis "Numerical library for C and C++")
97 (description
98 "The GNU Scientific Library (GSL) is a numerical library for C
99 and C++ programmers. It is free software under the GNU General
100 Public License.
101
102 The library provides a wide range of mathematical routines such
103 as random number generators, special functions and least-squares
104 fitting. There are over 1000 functions in total with an
105 extensive test suite.")
106 (license license:gpl3+)))
107
108 (define-public pspp
109 (package
110 (name "pspp")
111 (version "0.8.0a")
112 (source
113 (origin
114 (method url-fetch)
115 (uri (string-append "mirror://gnu/pspp/pspp-"
116 version ".tar.gz"))
117 (sha256
118 (base32
119 "1pgkb3z8b4wk4gymnafclhkrqq7n05wq83mra3v53jdl6bnllmyq"))))
120 (build-system gnu-build-system)
121 (inputs
122 `(("gettext" ,gnu:gettext)
123 ("gsl" ,gsl)
124 ("libxml2" ,libxml2)
125 ("readline" ,readline)
126 ("zlib" ,zlib)))
127 (native-inputs
128 `(("perl" ,perl)
129 ("pkg-config" ,pkg-config)))
130 (arguments
131 `(#:configure-flags
132 `("--without-cairo" ; FIXME: tests currently fail for lack of font
133 "--without-gui"))) ; FIXME: package missing dependencies
134 (home-page "http://www.gnu.org/software/pspp/")
135 (synopsis "Statistical analysis")
136 (description
137 "PSPP is a program for statistical analysis of sampled data. It is a
138 free replacement for the proprietary program SPSS, and appears very similar
139 to it.
140
141 PSPP can perform descriptive statistics, T-tests, anova, linear and logistic
142 regression, cluster analysis, factor analysis, non-parametric tests and
143 more. Its backend is designed to perform its analyses as fast as possible,
144 regardless of the size of the input data. You can use PSPP with its
145 graphical interface or the more traditional syntax commands.")
146 (license license:gpl3+)))