diff options
author | Alberto Ruiz <aruiz@um.es> | 2009-11-14 11:31:13 +0000 |
---|---|---|
committer | Alberto Ruiz <aruiz@um.es> | 2009-11-14 11:31:13 +0000 |
commit | 6bdf5355a26da547b775f29926c131d539e86e7c (patch) | |
tree | 7f732fe9817f514be9fbcbb9399808b7d308da34 /lib/Numeric/GSL/Vector.hs | |
parent | d404bcf2859f6b4f94d34dec205895019ed564e8 (diff) |
randomVector
Diffstat (limited to 'lib/Numeric/GSL/Vector.hs')
-rw-r--r-- | lib/Numeric/GSL/Vector.hs | 21 |
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 | ||
23 | import Data.Packed.Internal.Common | 24 | import Data.Packed.Internal.Common |
@@ -146,3 +147,21 @@ vectorZipC :: FunCodeVV -> Vector (Complex Double) -> Vector (Complex Double) -> | |||
146 | vectorZipC = vectorZipAux c_vectorZipC | 147 | vectorZipC = vectorZipAux c_vectorZipC |
147 | 148 | ||
148 | foreign import ccall safe "gsl-aux.h zipC" c_vectorZipC :: CInt -> TCVCVCV | 149 | foreign import ccall safe "gsl-aux.h zipC" c_vectorZipC :: CInt -> TCVCVCV |
150 | |||
151 | ----------------------------------------------------------------------- | ||
152 | |||
153 | data 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. | ||
158 | randomVector :: Int -- ^ seed | ||
159 | -> RandDist -- ^ distribution | ||
160 | -> Int -- ^ vector size | ||
161 | -> Vector Double | ||
162 | randomVector 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 | |||
167 | foreign import ccall safe "random_vector" c_random_vector :: CInt -> CInt -> TV | ||