1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
REQUIREMENTS
1) GNU Scientific Library (http://www.gnu.org/software/gsl) development packages
for your system (typically "gsl" and "gsl-devel").
2) ATLAS BLAS AND LAPACK (http://www.netlib.org/lapack). Usually included with GNU-Octave.
INSTALLATION
(More detailed information is included in the "tutorial",
available in the web page of the project.)
$ runhaskell Setup.lhs configure --prefix=$HOME
$ runhaskell Setup.lhs build
$ runhaskell Setup.lhs haddock
$ runhaskell Setup.lhs install --user
USING ATLAS
$ ln -s /usr/lib/atlas/libblas.so.3.0 $HOME/lib/hssl-0.1/ghc-6.6.1/libcblas.so
$ ln -s /usr/lib/atlas/liblapack.so.3.0 $HOME/lib/hssl-0.1/ghc-6.6.1/liblapack.so
TESTS
$ runhaskell examples/tests.hs
EXAMPLES
$ ghci
Prelude> :m + Numeric.GSL
Prelude Numeric.GSL> let quad = integrateQNG 1E-10
Prelude Numeric.GSL> quad (^2) 0 1
(0.3333333333333333,3.700743415417188e-15)
Prelude Numeric.GSL> :m + Numeric.LinearAlgebra
Prelude Numeric.LinearAlgebra> let m = (2><3)[1,2,3,4,5,6::Double]
Prelude Numeric.LinearAlgebra> let (u,d,v) = full svd m
Prelude Numeric.LinearAlgebra> d
(2><3)
[ 9.508032000695724, 0.0, 0.0
, 0.0, 0.7728696356734838, 0.0 ]
Prelude Numeric.LinearAlgebra> u <> d <> trans v
(2><3)
[ 1.0000000000000004, 2.0, 3.0
, 3.9999999999999996, 5.000000000000001, 6.0 ]
Prelude Numeric.GSL> :q
Leaving GHCi.
--------------------------------------------------------------------------------------
ACKNOWLEDGEMENTS
I thank Henning Thielemann and all the people in the Haskell mailing lists for their help.
- Nico Mahlo discovered a bug in the eigendecomposition wrapper.
- Frederik Eaton discovered a bug in the design of the wrappers.
- Eric Kidd has created a wiki page explaining the installation on MacOS X:
http://www.haskell.org/haskellwiki/GSLHaskell_on_MacOS_X
- Fawzi Mohamed discovered a portability bug in the lapack wrappers.
- Pedro E. López de Teruel fixed the interface to lapack.
- Antti Siira discovered a bug in the plotting functions.
|