summaryrefslogtreecommitdiff
path: root/lib/Numeric/GSL/Special/Elljac.hs
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2009-06-17 12:27:17 +0000
committerAlberto Ruiz <aruiz@um.es>2009-06-17 12:27:17 +0000
commite58f1e0e94407983fa18cd535cf76427019f1519 (patch)
tree4ffffdb92fd78e2233485895fb288111af0bf386 /lib/Numeric/GSL/Special/Elljac.hs
parent45e0e90ffdedd3c1fbe3da750018c65a1535cf75 (diff)
added special transport and elljac
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