summaryrefslogtreecommitdiff
path: root/lib/Numeric/GSL/Special/Elljac.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Numeric/GSL/Special/Elljac.hs')
-rw-r--r--lib/Numeric/GSL/Special/Elljac.hs38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/Numeric/GSL/Special/Elljac.hs b/lib/Numeric/GSL/Special/Elljac.hs
new file mode 100644
index 0000000..5b32cfe
--- /dev/null
+++ b/lib/Numeric/GSL/Special/Elljac.hs
@@ -0,0 +1,38 @@
1------------------------------------------------------------
2-- |
3-- Module : Numeric.GSL.Special.Elljac
4-- Copyright : (c) Alberto Ruiz 2006
5-- License : GPL
6-- Maintainer : Alberto Ruiz (aruiz at um dot es)
7-- Stability : provisional
8-- Portability : uses ffi
9--
10-- Wrappers for selected functions described at:
11--
12-- <http://www.google.com/search?q=gsl_sf_elljac.h&as_sitesearch=www.gnu.org/software/gsl/manual&btnI=Lucky>
13------------------------------------------------------------
14
15module Numeric.GSL.Special.Elljac(
16elljac_e
17) where
18
19import Foreign
20import Foreign.C.Types(CInt)
21
22elljac_e :: Double -> Double -> (Double,Double,Double)
23elljac_e u m = unsafePerformIO $ do
24 psn <- malloc
25 pcn <- malloc
26 pdn <- malloc
27 res <- gsl_sf_elljac_e u m psn pcn pdn
28 sn <- peek psn
29 cn <- peek pcn
30 dn <- peek pdn
31 free psn
32 free pcn
33 free pdn
34 if res == 0 then return (sn,cn,dn)
35 else error $ "error code "++show res++
36 " in elljac_e "++show u++" "++show m
37
38foreign import ccall "gsl_sf_elljac_e" gsl_sf_elljac_e :: Double -> Double -> Ptr Double -> Ptr Double -> Ptr Double -> IO CInt