summaryrefslogtreecommitdiff
path: root/lib/Numeric/GSL/Vector.hs
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2009-11-14 11:31:13 +0000
committerAlberto Ruiz <aruiz@um.es>2009-11-14 11:31:13 +0000
commit6bdf5355a26da547b775f29926c131d539e86e7c (patch)
tree7f732fe9817f514be9fbcbb9399808b7d308da34 /lib/Numeric/GSL/Vector.hs
parentd404bcf2859f6b4f94d34dec205895019ed564e8 (diff)
randomVector
Diffstat (limited to 'lib/Numeric/GSL/Vector.hs')
-rw-r--r--lib/Numeric/GSL/Vector.hs21
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/Numeric/GSL/Vector.hs b/lib/Numeric/GSL/Vector.hs
index 0366744..2b21de2 100644
--- a/lib/Numeric/GSL/Vector.hs
+++ b/lib/Numeric/GSL/Vector.hs
@@ -17,7 +17,8 @@ module Numeric.GSL.Vector (
17 FunCodeS(..), toScalarR, 17 FunCodeS(..), toScalarR,
18 FunCodeV(..), vectorMapR, vectorMapC, 18 FunCodeV(..), vectorMapR, vectorMapC,
19 FunCodeSV(..), vectorMapValR, vectorMapValC, 19 FunCodeSV(..), vectorMapValR, vectorMapValC,
20 FunCodeVV(..), vectorZipR, vectorZipC 20 FunCodeVV(..), vectorZipR, vectorZipC,
21 RandDist(..), randomVector
21) where 22) where
22 23
23import Data.Packed.Internal.Common 24import Data.Packed.Internal.Common
@@ -146,3 +147,21 @@ vectorZipC :: FunCodeVV -> Vector (Complex Double) -> Vector (Complex Double) ->
146vectorZipC = vectorZipAux c_vectorZipC 147vectorZipC = vectorZipAux c_vectorZipC
147 148
148foreign import ccall safe "gsl-aux.h zipC" c_vectorZipC :: CInt -> TCVCVCV 149foreign import ccall safe "gsl-aux.h zipC" c_vectorZipC :: CInt -> TCVCVCV
150
151-----------------------------------------------------------------------
152
153data RandDist = Uniform -- ^ uniform distribution in [0,1)
154 | Gaussian -- ^ normal distribution with mean zero and standard deviation one
155 deriving Enum
156
157-- | Obtains a vector of pseudorandom elements from the the mt19937 generator in GSL, with a given seed. Use randomIO to get a random seed.
158randomVector :: Int -- ^ seed
159 -> RandDist -- ^ distribution
160 -> Int -- ^ vector size
161 -> Vector Double
162randomVector seed dist n = unsafePerformIO $ do
163 r <- createVector n
164 app1 (c_random_vector (fi seed) ((fi.fromEnum) dist)) vec r "randomVector"
165 return r
166
167foreign import ccall safe "random_vector" c_random_vector :: CInt -> CInt -> TV