summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HSSL.cabal1
-rw-r--r--README54
-rw-r--r--lib/GSL/Special.hs103
-rw-r--r--lib/GSL/Special/Clausen.hs2
-rw-r--r--lib/GSL/Special/Coulomb.hs2
-rw-r--r--lib/GSL/Special/Coupling.hs2
-rw-r--r--lib/GSL/Special/Dawson.hs2
-rw-r--r--lib/GSL/Special/Debye.hs2
-rw-r--r--lib/GSL/Special/Dilog.hs2
-rw-r--r--lib/GSL/Special/Elementary.hs2
-rw-r--r--lib/GSL/Special/Ellint.hs2
-rw-r--r--lib/GSL/Special/Expint.hs2
-rw-r--r--lib/GSL/Special/Fermi_dirac.hs2
-rw-r--r--lib/GSL/Special/Gegenbauer.hs2
-rw-r--r--lib/GSL/Special/Hyperg.hs2
-rw-r--r--lib/GSL/Special/Laguerre.hs2
-rw-r--r--lib/GSL/Special/Lambert.hs2
-rw-r--r--lib/GSL/Special/Legendre.hs278
-rw-r--r--lib/GSL/Special/Log.hs2
-rw-r--r--lib/GSL/Special/Pow_int.hs2
-rw-r--r--lib/GSL/Special/Psi.hs2
-rw-r--r--lib/GSL/Special/Synchrotron.hs2
-rw-r--r--lib/GSL/Special/Trig.hs2
-rw-r--r--lib/GSL/Special/Zeta.hs2
-rw-r--r--lib/GSL/Special/legendre.h44
-rw-r--r--lib/GSL/Special/manual.txt2
26 files changed, 469 insertions, 53 deletions
diff --git a/HSSL.cabal b/HSSL.cabal
index 393e3fb..a29f944 100644
--- a/HSSL.cabal
+++ b/HSSL.cabal
@@ -42,6 +42,7 @@ Exposed-modules: Data.Packed.Internal,
42 GSL.Special.Pow_int, GSL.Special.Psi, 42 GSL.Special.Pow_int, GSL.Special.Psi,
43 GSL.Special.Synchrotron, GSL.Special.Trig, 43 GSL.Special.Synchrotron, GSL.Special.Trig,
44 GSL.Special.Zeta, GSL.Special.Log, 44 GSL.Special.Zeta, GSL.Special.Log,
45 GSL.Special.Legendre,
45 GSL.Fourier, 46 GSL.Fourier,
46 GSL.Polynomials, 47 GSL.Polynomials,
47 GSL.Minimization, 48 GSL.Minimization,
diff --git a/README b/README
index 8d1c8b6..07f557f 100644
--- a/README
+++ b/README
@@ -1 +1,53 @@
1 1REQUIREMENTS
2
31) GNU Scientific Library (http://www.gnu.org/software/gsl) development packages
4 for your system (typically "gsl" and "gsl-devel").
5
62) ATLAS BLAS AND LAPACK (http://www.netlib.org/lapack). Usually included with GNU-Octave.
7
8INSTALLATION
9
10(More detailed information is included in the "tutorial",
11available in the web page of the project.)
12
13$ runhaskell Setup.hs configure --prefix=$HOME
14$ runhaskell Setup.hs build
15$ runhaskell Setup.hs haddock
16$ runhaskell Setup.hs install --user
17
18USING ATLAS
19
20$ ln -s /usr/lib/atlas/libblas.so.3.0 $HOME/lib/HSSL-0.1/ghc-6.6.1/libcblas.so
21$ ln -s /usr/lib/atlas/liblapack.so.3.0 $HOME/lib/HSSL-0.1/ghc-6.6.1/liblapack.so
22
23TESTS
24
25$ runhaskell examples/tests.hs
26
27EXAMPLES
28
29$ ghci
30Prelude> :m + GSL
31Prelude GSL> let quad = integrateQNG 1E-10
32Prelude GSL> quad (^2) 0 1
33(0.3333333333333333,3.700743415417188e-15)
34Prelude GSL> :q
35Leaving GHCi.
36
37--------------------------------------------------------------------------------------
38ACKNOWLEDGEMENTS
39
40I thank Henning Thielemann and all the people in the Haskell mailing lists for their help.
41
42- Nico Mahlo discovered a bug in the eigendecomposition wrapper.
43
44- Frederik Eaton discovered a bug in the design of the wrappers.
45
46- Eric Kidd has created a wiki page explaining the installation on MacOS X:
47 http://www.haskell.org/haskellwiki/GSLHaskell_on_MacOS_X
48
49- Fawzi Mohamed discovered a portability bug in the lapack wrappers.
50
51- Pedro E. López de Teruel fixed the interface to lapack.
52
53- Antti Siira discovered a bug in the plotting functions.
diff --git a/lib/GSL/Special.hs b/lib/GSL/Special.hs
index e9c1798..9eaf733 100644
--- a/lib/GSL/Special.hs
+++ b/lib/GSL/Special.hs
@@ -1,4 +1,3 @@
1{-# OPTIONS #-}
2----------------------------------------------------------------------------- 1-----------------------------------------------------------------------------
3{- | 2{- |
4Module : GSL.Special 3Module : GSL.Special
@@ -16,63 +15,63 @@ Wrappers for selected special functions.
16----------------------------------------------------------------------------- 15-----------------------------------------------------------------------------
17 16
18module GSL.Special ( 17module GSL.Special (
19 module GSL.Special.Airy 18 module GSL.Special.Airy
20, module GSL.Special.Bessel 19, module GSL.Special.Bessel
21, module GSL.Special.Clausen 20, module GSL.Special.Clausen
22, module GSL.Special.Coulomb 21, module GSL.Special.Coulomb
23, module GSL.Special.Coupling 22, module GSL.Special.Coupling
24, module GSL.Special.Dawson 23, module GSL.Special.Dawson
25, module GSL.Special.Debye 24, module GSL.Special.Debye
26, module GSL.Special.Dilog 25, module GSL.Special.Dilog
27, module GSL.Special.Elementary 26, module GSL.Special.Elementary
28, module GSL.Special.Ellint 27, module GSL.Special.Ellint
29, module GSL.Special.Erf 28, module GSL.Special.Erf
30, module GSL.Special.Exp 29, module GSL.Special.Exp
31, module GSL.Special.Expint 30, module GSL.Special.Expint
32, module GSL.Special.Fermi_dirac 31, module GSL.Special.Fermi_dirac
33, module GSL.Special.Gamma 32, module GSL.Special.Gamma
34, module GSL.Special.Gegenbauer 33, module GSL.Special.Gegenbauer
35, module GSL.Special.Hyperg 34, module GSL.Special.Hyperg
36, module GSL.Special.Internal 35, module GSL.Special.Laguerre
37, module GSL.Special.Laguerre 36, module GSL.Special.Lambert
38, module GSL.Special.Lambert 37, module GSL.Special.Legendre
39, module GSL.Special.Log 38, module GSL.Special.Log
40, module GSL.Special.Pow_int 39, module GSL.Special.Pow_int
41, module GSL.Special.Psi 40, module GSL.Special.Psi
42, module GSL.Special.Synchrotron 41, module GSL.Special.Synchrotron
43, module GSL.Special.Trig 42, module GSL.Special.Trig
44, module GSL.Special.Zeta 43, module GSL.Special.Zeta
45) 44)
46where 45where
47 46
48import Foreign 47import Foreign
49import GSL.Special.Internal 48import GSL.Special.Internal
50import GSL.Special.Airy hiding (Precision(..)) 49import GSL.Special.Airy
51import GSL.Special.Bessel 50import GSL.Special.Bessel
52import GSL.Special.Clausen 51import GSL.Special.Clausen
53import GSL.Special.Coulomb 52import GSL.Special.Coulomb
54import GSL.Special.Coupling 53import GSL.Special.Coupling
55import GSL.Special.Dawson 54import GSL.Special.Dawson
56import GSL.Special.Debye 55import GSL.Special.Debye
57import GSL.Special.Dilog 56import GSL.Special.Dilog
58import GSL.Special.Elementary 57import GSL.Special.Elementary
59import GSL.Special.Ellint 58import GSL.Special.Ellint
60import GSL.Special.Erf 59import GSL.Special.Erf
61import GSL.Special.Exp 60import GSL.Special.Exp
62import GSL.Special.Expint 61import GSL.Special.Expint
63import GSL.Special.Fermi_dirac 62import GSL.Special.Fermi_dirac
64import GSL.Special.Gamma 63import GSL.Special.Gamma
65import GSL.Special.Gegenbauer 64import GSL.Special.Gegenbauer
66import GSL.Special.Hyperg 65import GSL.Special.Hyperg
67import GSL.Special.Internal 66import GSL.Special.Laguerre
68import GSL.Special.Laguerre 67import GSL.Special.Lambert
69import GSL.Special.Lambert 68import GSL.Special.Legendre
70import GSL.Special.Log 69import GSL.Special.Log
71import GSL.Special.Pow_int 70import GSL.Special.Pow_int
72import GSL.Special.Psi 71import GSL.Special.Psi
73import GSL.Special.Synchrotron 72import GSL.Special.Synchrotron
74import GSL.Special.Trig 73import GSL.Special.Trig
75import GSL.Special.Zeta 74import GSL.Special.Zeta
76 75
77 76
78-------------------- simple functions -------------------------- 77-------------------- simple functions --------------------------
diff --git a/lib/GSL/Special/Clausen.hs b/lib/GSL/Special/Clausen.hs
index 9089499..33da421 100644
--- a/lib/GSL/Special/Clausen.hs
+++ b/lib/GSL/Special/Clausen.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Clausen-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Coulomb.hs b/lib/GSL/Special/Coulomb.hs
index df3b8a4..6995ee3 100644
--- a/lib/GSL/Special/Coulomb.hs
+++ b/lib/GSL/Special/Coulomb.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Coulomb-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Coupling.hs b/lib/GSL/Special/Coupling.hs
index e57108b..fb949d1 100644
--- a/lib/GSL/Special/Coupling.hs
+++ b/lib/GSL/Special/Coupling.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Coupling-Coefficients.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Dawson.hs b/lib/GSL/Special/Dawson.hs
index 62d0baf..54671e1 100644
--- a/lib/GSL/Special/Dawson.hs
+++ b/lib/GSL/Special/Dawson.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Dawson-Function.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Debye.hs b/lib/GSL/Special/Debye.hs
index aa0bd89..ecb617e 100644
--- a/lib/GSL/Special/Debye.hs
+++ b/lib/GSL/Special/Debye.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Debye-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Dilog.hs b/lib/GSL/Special/Dilog.hs
index 199095a..c7412dd 100644
--- a/lib/GSL/Special/Dilog.hs
+++ b/lib/GSL/Special/Dilog.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Dilogarithm.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Elementary.hs b/lib/GSL/Special/Elementary.hs
index 5da89ca..1eab1ce 100644
--- a/lib/GSL/Special/Elementary.hs
+++ b/lib/GSL/Special/Elementary.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Elementary-Operations.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Ellint.hs b/lib/GSL/Special/Ellint.hs
index f79c702..b277072 100644
--- a/lib/GSL/Special/Ellint.hs
+++ b/lib/GSL/Special/Ellint.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Elliptic-Integrals.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Expint.hs b/lib/GSL/Special/Expint.hs
index f761966..6dd5959 100644
--- a/lib/GSL/Special/Expint.hs
+++ b/lib/GSL/Special/Expint.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Exponential-Integrals.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Fermi_dirac.hs b/lib/GSL/Special/Fermi_dirac.hs
index 26923d2..454ce1c 100644
--- a/lib/GSL/Special/Fermi_dirac.hs
+++ b/lib/GSL/Special/Fermi_dirac.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Fermi_002dDirac-Function.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Gegenbauer.hs b/lib/GSL/Special/Gegenbauer.hs
index 06f3628..d4309db 100644
--- a/lib/GSL/Special/Gegenbauer.hs
+++ b/lib/GSL/Special/Gegenbauer.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Gegenbauer-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Hyperg.hs b/lib/GSL/Special/Hyperg.hs
index c84c32c..afe60e6 100644
--- a/lib/GSL/Special/Hyperg.hs
+++ b/lib/GSL/Special/Hyperg.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Hypergeometric-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Laguerre.hs b/lib/GSL/Special/Laguerre.hs
index 6fa4343..61f366b 100644
--- a/lib/GSL/Special/Laguerre.hs
+++ b/lib/GSL/Special/Laguerre.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Laguerre-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Lambert.hs b/lib/GSL/Special/Lambert.hs
index ff4c75c..ded7fa0 100644
--- a/lib/GSL/Special/Lambert.hs
+++ b/lib/GSL/Special/Lambert.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Lambert-W-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Legendre.hs b/lib/GSL/Special/Legendre.hs
new file mode 100644
index 0000000..70315e9
--- /dev/null
+++ b/lib/GSL/Special/Legendre.hs
@@ -0,0 +1,278 @@
1------------------------------------------------------------
2{- |
3Module : GSL.Special.Legendre
4Copyright : (c) Alberto Ruiz 2006
5License : GPL-style
6Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional
8Portability : uses ffi
9
10Wrappers for selected functions described at:
11
12<http://www.gnu.org/software/gsl/manual/html_node/Legendre-Functions-and-Spherical-Harmonics.html>
13
14-}
15------------------------------------------------------------
16
17module GSL.Special.Legendre(
18 legendre_Pl_e
19, legendre_Pl
20, legendre_P1_e
21, legendre_P2_e
22, legendre_P3_e
23, legendre_P1
24, legendre_P2
25, legendre_P3
26, legendre_Q0_e
27, legendre_Q0
28, legendre_Q1_e
29, legendre_Q1
30, legendre_Ql_e
31, legendre_Ql
32, legendre_Plm_e
33, legendre_Plm
34, legendre_sphPlm_e
35, legendre_sphPlm
36, legendre_array_size
37, conicalP_half_e
38, conicalP_half
39, conicalP_mhalf_e
40, conicalP_mhalf
41, conicalP_0_e
42, conicalP_0
43, conicalP_1_e
44, conicalP_1
45, conicalP_sph_reg_e
46, conicalP_sph_reg
47, conicalP_cyl_reg_e
48, conicalP_cyl_reg
49, legendre_H3d_0_e
50, legendre_H3d_0
51, legendre_H3d_1_e
52, legendre_H3d_1
53, legendre_H3d_e
54, legendre_H3d
55) where
56
57import Foreign(Ptr)
58import GSL.Special.Internal
59
60-- | wrapper for int gsl_sf_legendre_Pl_e(int l,double x,gsl_sf_result* result);
61legendre_Pl_e :: Int -> Double -> (Double,Double)
62legendre_Pl_e l x = createSFR "legendre_Pl_e" $ gsl_sf_legendre_Pl_e l x
63foreign import ccall "legendre.h gsl_sf_legendre_Pl_e" gsl_sf_legendre_Pl_e :: Int -> Double -> Ptr Double -> IO(Int)
64
65-- | wrapper for double gsl_sf_legendre_Pl(int l,double x);
66legendre_Pl :: Int -> Double -> Double
67legendre_Pl = gsl_sf_legendre_Pl
68foreign import ccall "legendre.h gsl_sf_legendre_Pl" gsl_sf_legendre_Pl :: Int -> Double -> Double
69
70-- | wrapper for int gsl_sf_legendre_Pl_array(int lmax,double x,double* result_array);
71legendre_Pl_array :: Int -> Double -> Ptr Double -> Int
72legendre_Pl_array = gsl_sf_legendre_Pl_array
73foreign import ccall "legendre.h gsl_sf_legendre_Pl_array" gsl_sf_legendre_Pl_array :: Int -> Double -> Ptr Double -> Int
74
75-- | wrapper for int gsl_sf_legendre_Pl_deriv_array(int lmax,double x,double* result_array,double* result_deriv_array);
76legendre_Pl_deriv_array :: Int -> Double -> Ptr Double -> Ptr Double -> Int
77legendre_Pl_deriv_array = gsl_sf_legendre_Pl_deriv_array
78foreign import ccall "legendre.h gsl_sf_legendre_Pl_deriv_array" gsl_sf_legendre_Pl_deriv_array :: Int -> Double -> Ptr Double -> Ptr Double -> Int
79
80-- | wrapper for int gsl_sf_legendre_P1_e(double x,gsl_sf_result* result);
81legendre_P1_e :: Double -> (Double,Double)
82legendre_P1_e x = createSFR "legendre_P1_e" $ gsl_sf_legendre_P1_e x
83foreign import ccall "legendre.h gsl_sf_legendre_P1_e" gsl_sf_legendre_P1_e :: Double -> Ptr Double -> IO(Int)
84
85-- | wrapper for int gsl_sf_legendre_P2_e(double x,gsl_sf_result* result);
86legendre_P2_e :: Double -> (Double,Double)
87legendre_P2_e x = createSFR "legendre_P2_e" $ gsl_sf_legendre_P2_e x
88foreign import ccall "legendre.h gsl_sf_legendre_P2_e" gsl_sf_legendre_P2_e :: Double -> Ptr Double -> IO(Int)
89
90-- | wrapper for int gsl_sf_legendre_P3_e(double x,gsl_sf_result* result);
91legendre_P3_e :: Double -> (Double,Double)
92legendre_P3_e x = createSFR "legendre_P3_e" $ gsl_sf_legendre_P3_e x
93foreign import ccall "legendre.h gsl_sf_legendre_P3_e" gsl_sf_legendre_P3_e :: Double -> Ptr Double -> IO(Int)
94
95-- | wrapper for double gsl_sf_legendre_P1(double x);
96legendre_P1 :: Double -> Double
97legendre_P1 = gsl_sf_legendre_P1
98foreign import ccall "legendre.h gsl_sf_legendre_P1" gsl_sf_legendre_P1 :: Double -> Double
99
100-- | wrapper for double gsl_sf_legendre_P2(double x);
101legendre_P2 :: Double -> Double
102legendre_P2 = gsl_sf_legendre_P2
103foreign import ccall "legendre.h gsl_sf_legendre_P2" gsl_sf_legendre_P2 :: Double -> Double
104
105-- | wrapper for double gsl_sf_legendre_P3(double x);
106legendre_P3 :: Double -> Double
107legendre_P3 = gsl_sf_legendre_P3
108foreign import ccall "legendre.h gsl_sf_legendre_P3" gsl_sf_legendre_P3 :: Double -> Double
109
110-- | wrapper for int gsl_sf_legendre_Q0_e(double x,gsl_sf_result* result);
111legendre_Q0_e :: Double -> (Double,Double)
112legendre_Q0_e x = createSFR "legendre_Q0_e" $ gsl_sf_legendre_Q0_e x
113foreign import ccall "legendre.h gsl_sf_legendre_Q0_e" gsl_sf_legendre_Q0_e :: Double -> Ptr Double -> IO(Int)
114
115-- | wrapper for double gsl_sf_legendre_Q0(double x);
116legendre_Q0 :: Double -> Double
117legendre_Q0 = gsl_sf_legendre_Q0
118foreign import ccall "legendre.h gsl_sf_legendre_Q0" gsl_sf_legendre_Q0 :: Double -> Double
119
120-- | wrapper for int gsl_sf_legendre_Q1_e(double x,gsl_sf_result* result);
121legendre_Q1_e :: Double -> (Double,Double)
122legendre_Q1_e x = createSFR "legendre_Q1_e" $ gsl_sf_legendre_Q1_e x
123foreign import ccall "legendre.h gsl_sf_legendre_Q1_e" gsl_sf_legendre_Q1_e :: Double -> Ptr Double -> IO(Int)
124
125-- | wrapper for double gsl_sf_legendre_Q1(double x);
126legendre_Q1 :: Double -> Double
127legendre_Q1 = gsl_sf_legendre_Q1
128foreign import ccall "legendre.h gsl_sf_legendre_Q1" gsl_sf_legendre_Q1 :: Double -> Double
129
130-- | wrapper for int gsl_sf_legendre_Ql_e(int l,double x,gsl_sf_result* result);
131legendre_Ql_e :: Int -> Double -> (Double,Double)
132legendre_Ql_e l x = createSFR "legendre_Ql_e" $ gsl_sf_legendre_Ql_e l x
133foreign import ccall "legendre.h gsl_sf_legendre_Ql_e" gsl_sf_legendre_Ql_e :: Int -> Double -> Ptr Double -> IO(Int)
134
135-- | wrapper for double gsl_sf_legendre_Ql(int l,double x);
136legendre_Ql :: Int -> Double -> Double
137legendre_Ql = gsl_sf_legendre_Ql
138foreign import ccall "legendre.h gsl_sf_legendre_Ql" gsl_sf_legendre_Ql :: Int -> Double -> Double
139
140-- | wrapper for int gsl_sf_legendre_Plm_e(int l,int m,double x,gsl_sf_result* result);
141legendre_Plm_e :: Int -> Int -> Double -> (Double,Double)
142legendre_Plm_e l m x = createSFR "legendre_Plm_e" $ gsl_sf_legendre_Plm_e l m x
143foreign import ccall "legendre.h gsl_sf_legendre_Plm_e" gsl_sf_legendre_Plm_e :: Int -> Int -> Double -> Ptr Double -> IO(Int)
144
145-- | wrapper for double gsl_sf_legendre_Plm(int l,int m,double x);
146legendre_Plm :: Int -> Int -> Double -> Double
147legendre_Plm = gsl_sf_legendre_Plm
148foreign import ccall "legendre.h gsl_sf_legendre_Plm" gsl_sf_legendre_Plm :: Int -> Int -> Double -> Double
149
150-- | wrapper for int gsl_sf_legendre_Plm_array(int lmax,int m,double x,double* result_array);
151legendre_Plm_array :: Int -> Int -> Double -> Ptr Double -> Int
152legendre_Plm_array = gsl_sf_legendre_Plm_array
153foreign import ccall "legendre.h gsl_sf_legendre_Plm_array" gsl_sf_legendre_Plm_array :: Int -> Int -> Double -> Ptr Double -> Int
154
155-- | wrapper for int gsl_sf_legendre_Plm_deriv_array(int lmax,int m,double x,double* result_array,double* result_deriv_array);
156legendre_Plm_deriv_array :: Int -> Int -> Double -> Ptr Double -> Ptr Double -> Int
157legendre_Plm_deriv_array = gsl_sf_legendre_Plm_deriv_array
158foreign import ccall "legendre.h gsl_sf_legendre_Plm_deriv_array" gsl_sf_legendre_Plm_deriv_array :: Int -> Int -> Double -> Ptr Double -> Ptr Double -> Int
159
160-- | wrapper for int gsl_sf_legendre_sphPlm_e(int l,int m,double x,gsl_sf_result* result);
161legendre_sphPlm_e :: Int -> Int -> Double -> (Double,Double)
162legendre_sphPlm_e l m x = createSFR "legendre_sphPlm_e" $ gsl_sf_legendre_sphPlm_e l m x
163foreign import ccall "legendre.h gsl_sf_legendre_sphPlm_e" gsl_sf_legendre_sphPlm_e :: Int -> Int -> Double -> Ptr Double -> IO(Int)
164
165-- | wrapper for double gsl_sf_legendre_sphPlm(int l,int m,double x);
166legendre_sphPlm :: Int -> Int -> Double -> Double
167legendre_sphPlm = gsl_sf_legendre_sphPlm
168foreign import ccall "legendre.h gsl_sf_legendre_sphPlm" gsl_sf_legendre_sphPlm :: Int -> Int -> Double -> Double
169
170-- | wrapper for int gsl_sf_legendre_sphPlm_array(int lmax,int m,double x,double* result_array);
171legendre_sphPlm_array :: Int -> Int -> Double -> Ptr Double -> Int
172legendre_sphPlm_array = gsl_sf_legendre_sphPlm_array
173foreign import ccall "legendre.h gsl_sf_legendre_sphPlm_array" gsl_sf_legendre_sphPlm_array :: Int -> Int -> Double -> Ptr Double -> Int
174
175-- | wrapper for int gsl_sf_legendre_sphPlm_deriv_array(int lmax,int m,double x,double* result_array,double* result_deriv_array);
176legendre_sphPlm_deriv_array :: Int -> Int -> Double -> Ptr Double -> Ptr Double -> Int
177legendre_sphPlm_deriv_array = gsl_sf_legendre_sphPlm_deriv_array
178foreign import ccall "legendre.h gsl_sf_legendre_sphPlm_deriv_array" gsl_sf_legendre_sphPlm_deriv_array :: Int -> Int -> Double -> Ptr Double -> Ptr Double -> Int
179
180-- | wrapper for int gsl_sf_legendre_array_size(int lmax,int m);
181legendre_array_size :: Int -> Int -> Int
182legendre_array_size = gsl_sf_legendre_array_size
183foreign import ccall "legendre.h gsl_sf_legendre_array_size" gsl_sf_legendre_array_size :: Int -> Int -> Int
184
185-- | wrapper for int gsl_sf_conicalP_half_e(double lambda,double x,gsl_sf_result* result);
186conicalP_half_e :: Double -> Double -> (Double,Double)
187conicalP_half_e lambda x = createSFR "conicalP_half_e" $ gsl_sf_conicalP_half_e lambda x
188foreign import ccall "legendre.h gsl_sf_conicalP_half_e" gsl_sf_conicalP_half_e :: Double -> Double -> Ptr Double -> IO(Int)
189
190-- | wrapper for double gsl_sf_conicalP_half(double lambda,double x);
191conicalP_half :: Double -> Double -> Double
192conicalP_half = gsl_sf_conicalP_half
193foreign import ccall "legendre.h gsl_sf_conicalP_half" gsl_sf_conicalP_half :: Double -> Double -> Double
194
195-- | wrapper for int gsl_sf_conicalP_mhalf_e(double lambda,double x,gsl_sf_result* result);
196conicalP_mhalf_e :: Double -> Double -> (Double,Double)
197conicalP_mhalf_e lambda x = createSFR "conicalP_mhalf_e" $ gsl_sf_conicalP_mhalf_e lambda x
198foreign import ccall "legendre.h gsl_sf_conicalP_mhalf_e" gsl_sf_conicalP_mhalf_e :: Double -> Double -> Ptr Double -> IO(Int)
199
200-- | wrapper for double gsl_sf_conicalP_mhalf(double lambda,double x);
201conicalP_mhalf :: Double -> Double -> Double
202conicalP_mhalf = gsl_sf_conicalP_mhalf
203foreign import ccall "legendre.h gsl_sf_conicalP_mhalf" gsl_sf_conicalP_mhalf :: Double -> Double -> Double
204
205-- | wrapper for int gsl_sf_conicalP_0_e(double lambda,double x,gsl_sf_result* result);
206conicalP_0_e :: Double -> Double -> (Double,Double)
207conicalP_0_e lambda x = createSFR "conicalP_0_e" $ gsl_sf_conicalP_0_e lambda x
208foreign import ccall "legendre.h gsl_sf_conicalP_0_e" gsl_sf_conicalP_0_e :: Double -> Double -> Ptr Double -> IO(Int)
209
210-- | wrapper for double gsl_sf_conicalP_0(double lambda,double x);
211conicalP_0 :: Double -> Double -> Double
212conicalP_0 = gsl_sf_conicalP_0
213foreign import ccall "legendre.h gsl_sf_conicalP_0" gsl_sf_conicalP_0 :: Double -> Double -> Double
214
215-- | wrapper for int gsl_sf_conicalP_1_e(double lambda,double x,gsl_sf_result* result);
216conicalP_1_e :: Double -> Double -> (Double,Double)
217conicalP_1_e lambda x = createSFR "conicalP_1_e" $ gsl_sf_conicalP_1_e lambda x
218foreign import ccall "legendre.h gsl_sf_conicalP_1_e" gsl_sf_conicalP_1_e :: Double -> Double -> Ptr Double -> IO(Int)
219
220-- | wrapper for double gsl_sf_conicalP_1(double lambda,double x);
221conicalP_1 :: Double -> Double -> Double
222conicalP_1 = gsl_sf_conicalP_1
223foreign import ccall "legendre.h gsl_sf_conicalP_1" gsl_sf_conicalP_1 :: Double -> Double -> Double
224
225-- | wrapper for int gsl_sf_conicalP_sph_reg_e(int l,double lambda,double x,gsl_sf_result* result);
226conicalP_sph_reg_e :: Int -> Double -> Double -> (Double,Double)
227conicalP_sph_reg_e l lambda x = createSFR "conicalP_sph_reg_e" $ gsl_sf_conicalP_sph_reg_e l lambda x
228foreign import ccall "legendre.h gsl_sf_conicalP_sph_reg_e" gsl_sf_conicalP_sph_reg_e :: Int -> Double -> Double -> Ptr Double -> IO(Int)
229
230-- | wrapper for double gsl_sf_conicalP_sph_reg(int l,double lambda,double x);
231conicalP_sph_reg :: Int -> Double -> Double -> Double
232conicalP_sph_reg = gsl_sf_conicalP_sph_reg
233foreign import ccall "legendre.h gsl_sf_conicalP_sph_reg" gsl_sf_conicalP_sph_reg :: Int -> Double -> Double -> Double
234
235-- | wrapper for int gsl_sf_conicalP_cyl_reg_e(int m,double lambda,double x,gsl_sf_result* result);
236conicalP_cyl_reg_e :: Int -> Double -> Double -> (Double,Double)
237conicalP_cyl_reg_e m lambda x = createSFR "conicalP_cyl_reg_e" $ gsl_sf_conicalP_cyl_reg_e m lambda x
238foreign import ccall "legendre.h gsl_sf_conicalP_cyl_reg_e" gsl_sf_conicalP_cyl_reg_e :: Int -> Double -> Double -> Ptr Double -> IO(Int)
239
240-- | wrapper for double gsl_sf_conicalP_cyl_reg(int m,double lambda,double x);
241conicalP_cyl_reg :: Int -> Double -> Double -> Double
242conicalP_cyl_reg = gsl_sf_conicalP_cyl_reg
243foreign import ccall "legendre.h gsl_sf_conicalP_cyl_reg" gsl_sf_conicalP_cyl_reg :: Int -> Double -> Double -> Double
244
245-- | wrapper for int gsl_sf_legendre_H3d_0_e(double lambda,double eta,gsl_sf_result* result);
246legendre_H3d_0_e :: Double -> Double -> (Double,Double)
247legendre_H3d_0_e lambda eta = createSFR "legendre_H3d_0_e" $ gsl_sf_legendre_H3d_0_e lambda eta
248foreign import ccall "legendre.h gsl_sf_legendre_H3d_0_e" gsl_sf_legendre_H3d_0_e :: Double -> Double -> Ptr Double -> IO(Int)
249
250-- | wrapper for double gsl_sf_legendre_H3d_0(double lambda,double eta);
251legendre_H3d_0 :: Double -> Double -> Double
252legendre_H3d_0 = gsl_sf_legendre_H3d_0
253foreign import ccall "legendre.h gsl_sf_legendre_H3d_0" gsl_sf_legendre_H3d_0 :: Double -> Double -> Double
254
255-- | wrapper for int gsl_sf_legendre_H3d_1_e(double lambda,double eta,gsl_sf_result* result);
256legendre_H3d_1_e :: Double -> Double -> (Double,Double)
257legendre_H3d_1_e lambda eta = createSFR "legendre_H3d_1_e" $ gsl_sf_legendre_H3d_1_e lambda eta
258foreign import ccall "legendre.h gsl_sf_legendre_H3d_1_e" gsl_sf_legendre_H3d_1_e :: Double -> Double -> Ptr Double -> IO(Int)
259
260-- | wrapper for double gsl_sf_legendre_H3d_1(double lambda,double eta);
261legendre_H3d_1 :: Double -> Double -> Double
262legendre_H3d_1 = gsl_sf_legendre_H3d_1
263foreign import ccall "legendre.h gsl_sf_legendre_H3d_1" gsl_sf_legendre_H3d_1 :: Double -> Double -> Double
264
265-- | wrapper for int gsl_sf_legendre_H3d_e(int l,double lambda,double eta,gsl_sf_result* result);
266legendre_H3d_e :: Int -> Double -> Double -> (Double,Double)
267legendre_H3d_e l lambda eta = createSFR "legendre_H3d_e" $ gsl_sf_legendre_H3d_e l lambda eta
268foreign import ccall "legendre.h gsl_sf_legendre_H3d_e" gsl_sf_legendre_H3d_e :: Int -> Double -> Double -> Ptr Double -> IO(Int)
269
270-- | wrapper for double gsl_sf_legendre_H3d(int l,double lambda,double eta);
271legendre_H3d :: Int -> Double -> Double -> Double
272legendre_H3d = gsl_sf_legendre_H3d
273foreign import ccall "legendre.h gsl_sf_legendre_H3d" gsl_sf_legendre_H3d :: Int -> Double -> Double -> Double
274
275-- | wrapper for int gsl_sf_legendre_H3d_array(int lmax,double lambda,double eta,double* result_array);
276legendre_H3d_array :: Int -> Double -> Double -> Ptr Double -> Int
277legendre_H3d_array = gsl_sf_legendre_H3d_array
278foreign import ccall "legendre.h gsl_sf_legendre_H3d_array" gsl_sf_legendre_H3d_array :: Int -> Double -> Double -> Ptr Double -> Int
diff --git a/lib/GSL/Special/Log.hs b/lib/GSL/Special/Log.hs
index 9fd51a8..0d62e99 100644
--- a/lib/GSL/Special/Log.hs
+++ b/lib/GSL/Special/Log.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Logarithm-and-Related-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Pow_int.hs b/lib/GSL/Special/Pow_int.hs
index 3585db4..b476a92 100644
--- a/lib/GSL/Special/Pow_int.hs
+++ b/lib/GSL/Special/Pow_int.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Power-Function.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Psi.hs b/lib/GSL/Special/Psi.hs
index 59c9495..31f4f8c 100644
--- a/lib/GSL/Special/Psi.hs
+++ b/lib/GSL/Special/Psi.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Psi-_0028Digamma_0029-Function.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Synchrotron.hs b/lib/GSL/Special/Synchrotron.hs
index da49c34..7cec281 100644
--- a/lib/GSL/Special/Synchrotron.hs
+++ b/lib/GSL/Special/Synchrotron.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Synchrotron-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Trig.hs b/lib/GSL/Special/Trig.hs
index 56d3933..4d37a05 100644
--- a/lib/GSL/Special/Trig.hs
+++ b/lib/GSL/Special/Trig.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Trigonometric-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/Zeta.hs b/lib/GSL/Special/Zeta.hs
index ae514c0..6eff537 100644
--- a/lib/GSL/Special/Zeta.hs
+++ b/lib/GSL/Special/Zeta.hs
@@ -7,7 +7,9 @@ Maintainer : Alberto Ruiz (aruiz at um dot es)
7Stability : provisional 7Stability : provisional
8Portability : uses ffi 8Portability : uses ffi
9 9
10Wrappers for selected functions described at:
10 11
12<http://www.gnu.org/software/gsl/manual/html_node/Zeta-Functions.html>
11 13
12-} 14-}
13------------------------------------------------------------ 15------------------------------------------------------------
diff --git a/lib/GSL/Special/legendre.h b/lib/GSL/Special/legendre.h
new file mode 100644
index 0000000..aebe84f
--- /dev/null
+++ b/lib/GSL/Special/legendre.h
@@ -0,0 +1,44 @@
1int gsl_sf_legendre_Pl_e(int l,double x,double* result);
2double gsl_sf_legendre_Pl(int l,double x);
3int gsl_sf_legendre_Pl_array(int lmax,double x,double* result_array);
4int gsl_sf_legendre_Pl_deriv_array(int lmax,double x,double* result_array,double* result_deriv_array);
5int gsl_sf_legendre_P1_e(double x,double* result);
6int gsl_sf_legendre_P2_e(double x,double* result);
7int gsl_sf_legendre_P3_e(double x,double* result);
8double gsl_sf_legendre_P1(double x);
9double gsl_sf_legendre_P2(double x);
10double gsl_sf_legendre_P3(double x);
11int gsl_sf_legendre_Q0_e(double x,double* result);
12double gsl_sf_legendre_Q0(double x);
13int gsl_sf_legendre_Q1_e(double x,double* result);
14double gsl_sf_legendre_Q1(double x);
15int gsl_sf_legendre_Ql_e(int l,double x,double* result);
16double gsl_sf_legendre_Ql(int l,double x);
17int gsl_sf_legendre_Plm_e(int l,int m,double x,double* result);
18double gsl_sf_legendre_Plm(int l,int m,double x);
19int gsl_sf_legendre_Plm_array(int lmax,int m,double x,double* result_array);
20int gsl_sf_legendre_Plm_deriv_array(int lmax,int m,double x,double* result_array,double* result_deriv_array);
21int gsl_sf_legendre_sphPlm_e(int l,int m,double x,double* result);
22double gsl_sf_legendre_sphPlm(int l,int m,double x);
23int gsl_sf_legendre_sphPlm_array(int lmax,int m,double x,double* result_array);
24int gsl_sf_legendre_sphPlm_deriv_array(int lmax,int m,double x,double* result_array,double* result_deriv_array);
25int gsl_sf_legendre_array_size(int lmax,int m);
26int gsl_sf_conicalP_half_e(double lambda,double x,double* result);
27double gsl_sf_conicalP_half(double lambda,double x);
28int gsl_sf_conicalP_mhalf_e(double lambda,double x,double* result);
29double gsl_sf_conicalP_mhalf(double lambda,double x);
30int gsl_sf_conicalP_0_e(double lambda,double x,double* result);
31double gsl_sf_conicalP_0(double lambda,double x);
32int gsl_sf_conicalP_1_e(double lambda,double x,double* result);
33double gsl_sf_conicalP_1(double lambda,double x);
34int gsl_sf_conicalP_sph_reg_e(int l,double lambda,double x,double* result);
35double gsl_sf_conicalP_sph_reg(int l,double lambda,double x);
36int gsl_sf_conicalP_cyl_reg_e(int m,double lambda,double x,double* result);
37double gsl_sf_conicalP_cyl_reg(int m,double lambda,double x);
38int gsl_sf_legendre_H3d_0_e(double lambda,double eta,double* result);
39double gsl_sf_legendre_H3d_0(double lambda,double eta);
40int gsl_sf_legendre_H3d_1_e(double lambda,double eta,double* result);
41double gsl_sf_legendre_H3d_1(double lambda,double eta);
42int gsl_sf_legendre_H3d_e(int l,double lambda,double eta,double* result);
43double gsl_sf_legendre_H3d(int l,double lambda,double eta);
44int gsl_sf_legendre_H3d_array(int lmax,double lambda,double eta,double* result_array);
diff --git a/lib/GSL/Special/manual.txt b/lib/GSL/Special/manual.txt
index a95823d..1391d06 100644
--- a/lib/GSL/Special/manual.txt
+++ b/lib/GSL/Special/manual.txt
@@ -6,5 +6,7 @@ Coupling
6 remove deprecated INCORRECT 6 remove deprecated INCORRECT
7Trig.hs 7Trig.hs
8 qualify names 8 qualify names
9Legendre.hs
10 remove extern inline
9Log.hs 11Log.hs
10 remove extern inline, qualify name 12 remove extern inline, qualify name