summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/base/hmatrix.cabal2
-rw-r--r--packages/base/src/Internal/Algorithms.hs11
-rw-r--r--packages/base/src/Internal/Container.hs30
-rw-r--r--packages/base/src/Internal/Convolution.hs6
-rw-r--r--packages/base/src/Internal/Matrix.hs3
-rw-r--r--packages/base/src/Internal/Sparse.hs4
-rw-r--r--packages/base/src/Internal/Static.hs16
-rw-r--r--packages/base/src/Internal/Util.hs6
-rw-r--r--packages/base/src/Internal/Vector.hs12
-rw-r--r--packages/base/src/Internal/Vectorized.hs3
-rw-r--r--packages/base/src/Numeric/LinearAlgebra.hs3
11 files changed, 66 insertions, 30 deletions
diff --git a/packages/base/hmatrix.cabal b/packages/base/hmatrix.cabal
index 39a2b71..6368683 100644
--- a/packages/base/hmatrix.cabal
+++ b/packages/base/hmatrix.cabal
@@ -47,7 +47,7 @@ library
47 bytestring, 47 bytestring,
48 storable-complex, 48 storable-complex,
49 semigroups, 49 semigroups,
50 vector >= 0.8 50 vector >= 0.11
51 51
52 hs-source-dirs: src 52 hs-source-dirs: src
53 53
diff --git a/packages/base/src/Internal/Algorithms.hs b/packages/base/src/Internal/Algorithms.hs
index 99c9e34..5fe7796 100644
--- a/packages/base/src/Internal/Algorithms.hs
+++ b/packages/base/src/Internal/Algorithms.hs
@@ -168,7 +168,8 @@ a = (5><3)
168-0.690 -0.352 0.433 -0.233 0.398 168-0.690 -0.352 0.433 -0.233 0.398
169 169
170>>> s 170>>> s
171fromList [35.18264833189422,1.4769076999800903,1.089145439970417e-15] 171[35.18264833189422,1.4769076999800903,1.089145439970417e-15]
172it :: Vector Double
172 173
173>>> disp 3 v 174>>> disp 3 v
1743x3 1753x3
@@ -222,7 +223,8 @@ a = (5><3)
222-0.690 -0.352 0.433 223-0.690 -0.352 0.433
223 224
224>>> s 225>>> s
225fromList [35.18264833189422,1.4769076999800903,1.089145439970417e-15] 226[35.18264833189422,1.4769076999800903,1.089145439970417e-15]
227it :: Vector Double
226 228
227>>> disp 3 v 229>>> disp 3 v
2283x3 2303x3
@@ -281,7 +283,8 @@ a = (5><3)
281-0.690 -0.352 283-0.690 -0.352
282 284
283>>> s 285>>> s
284fromList [35.18264833189422,1.4769076999800903] 286[35.18264833189422,1.476907699980091]
287it :: Vector Double
285 288
286>>> disp 3 u 289>>> disp 3 u
2875x2 2905x2
@@ -533,7 +536,7 @@ a = (3><3)
533>>> let (l, v) = eigSH a 536>>> let (l, v) = eigSH a
534 537
535>>> l 538>>> l
536fromList [11.344814282762075,0.17091518882717918,-0.5157294715892575] 539[11.344814282762075,0.17091518882717918,-0.5157294715892575]
537 540
538>>> disp 3 $ v <> diag l <> tr v 541>>> disp 3 $ v <> diag l <> tr v
5393x3 5423x3
diff --git a/packages/base/src/Internal/Container.hs b/packages/base/src/Internal/Container.hs
index 1520489..d64523d 100644
--- a/packages/base/src/Internal/Container.hs
+++ b/packages/base/src/Internal/Container.hs
@@ -38,9 +38,14 @@ import Prelude hiding ((<>))
38{- | Creates a real vector containing a range of values: 38{- | Creates a real vector containing a range of values:
39 39
40>>> linspace 5 (-3,7::Double) 40>>> linspace 5 (-3,7::Double)
41fromList [-3.0,-0.5,2.0,4.5,7.0]@ 41[-3.0,-0.5,2.0,4.5,7.0]
42it :: Vector Double
42 43
43>>> linspace 5 (8,2+i) :: Vector (Complex Double) 44>>> linspace 5 (8,2+i) :: Vector (Complex Double)
45
46<interactive>:6:17: ERROR:
47 Variable not in scope: i :: Complex Double
48
44fromList [8.0 :+ 0.0,6.5 :+ 0.25,5.0 :+ 0.5,3.5 :+ 0.75,2.0 :+ 1.0] 49fromList [8.0 :+ 0.0,6.5 :+ 0.25,5.0 :+ 0.5,3.5 :+ 0.75,2.0 :+ 1.0]
45 50
46Logarithmic spacing can be defined as follows: 51Logarithmic spacing can be defined as follows:
@@ -85,7 +90,8 @@ infixr 8 <.>
85>>> let v = vector [10,20,30] 90>>> let v = vector [10,20,30]
86 91
87>>> m #> v 92>>> m #> v
88fromList [140.0,320.0] 93[140.0,320.0]
94it :: Vector Numeric.LinearAlgebra.Data.R
89 95
90-} 96-}
91infixr 8 #> 97infixr 8 #>
@@ -134,10 +140,12 @@ v = vector [13.0,27.0,1.0]
134 140
135>>> let x = a <\> v 141>>> let x = a <\> v
136>>> x 142>>> x
137fromList [3.0799999999999996,5.159999999999999] 143[3.0799999999999996,5.159999999999999]
144it :: Vector Numeric.LinearAlgebra.Data.R
138 145
139>>> a #> x 146>>> a #> x
140fromList [13.399999999999999,26.799999999999997,1.0] 147[13.399999999999999,26.799999999999997,0.9999999999999991]
148it :: Vector Numeric.LinearAlgebra.Data.R
141 149
142It also admits multiple right-hand sides stored as columns in a matrix. 150It also admits multiple right-hand sides stored as columns in a matrix.
143 151
@@ -165,7 +173,8 @@ class Build d f c e | d -> c, c -> d, f -> e, f -> d, f -> c, c e -> f, d e -> f
165 where 173 where
166 -- | 174 -- |
167 -- >>> build 5 (**2) :: Vector Double 175 -- >>> build 5 (**2) :: Vector Double
168 -- fromList [0.0,1.0,4.0,9.0,16.0] 176 -- [0.0,1.0,4.0,9.0,16.0]
177 -- it :: Vector Double
169 -- 178 --
170 -- Hilbert matrix of order N: 179 -- Hilbert matrix of order N:
171 -- 180 --
@@ -203,6 +212,17 @@ optimiseMult = mconcat
203{- | Compute mean vector and covariance matrix of the rows of a matrix. 212{- | Compute mean vector and covariance matrix of the rows of a matrix.
204 213
205>>> meanCov $ gaussianSample 666 1000 (fromList[4,5]) (diagl[2,3]) 214>>> meanCov $ gaussianSample 666 1000 (fromList[4,5]) (diagl[2,3])
215
216<interactive>:4:52: ERROR:
217 • Couldn't match expected type ‘Herm Double’
218 with actual type ‘Matrix Double’
219 • In the fourth argument of ‘gaussianSample’, namely
220 ‘(diagl [2, 3])’
221 In the second argument of ‘($)’, namely
222 ‘gaussianSample 666 1000 (fromList [4, 5]) (diagl [2, 3])’
223 In the expression:
224 meanCov $ gaussianSample 666 1000 (fromList [4, 5]) (diagl [2, 3])
225
206(fromList [4.010341078059521,5.0197204699640405], 226(fromList [4.010341078059521,5.0197204699640405],
207(2><2) 227(2><2)
208 [ 1.9862461923890056, -1.0127225830525157e-2 228 [ 1.9862461923890056, -1.0127225830525157e-2
diff --git a/packages/base/src/Internal/Convolution.hs b/packages/base/src/Internal/Convolution.hs
index 004e1ff..75fbef4 100644
--- a/packages/base/src/Internal/Convolution.hs
+++ b/packages/base/src/Internal/Convolution.hs
@@ -41,7 +41,8 @@ corr
41{- ^ correlation 41{- ^ correlation
42 42
43>>> corr (fromList[1,2,3]) (fromList [1..10]) 43>>> corr (fromList[1,2,3]) (fromList [1..10])
44fromList [14.0,20.0,26.0,32.0,38.0,44.0,50.0,56.0] 44[14.0,20.0,26.0,32.0,38.0,44.0,50.0,56.0]
45it :: (Enum t, Product t, Container Vector t) => Vector t
45 46
46-} 47-}
47corr ker v 48corr ker v
@@ -54,7 +55,8 @@ conv :: (Container Vector t, Product t, Num t) => Vector t -> Vector t -> Vector
54{- ^ convolution ('corr' with reversed kernel and padded input, equivalent to polynomial product) 55{- ^ convolution ('corr' with reversed kernel and padded input, equivalent to polynomial product)
55 56
56>>> conv (fromList[1,1]) (fromList [-1,1]) 57>>> conv (fromList[1,1]) (fromList [-1,1])
57fromList [-1.0,0.0,1.0] 58[-1.0,0.0,1.0]
59it :: (Product t, Container Vector t) => Vector t
58 60
59-} 61-}
60conv ker v 62conv ker v
diff --git a/packages/base/src/Internal/Matrix.hs b/packages/base/src/Internal/Matrix.hs
index 4905f61..2856ec2 100644
--- a/packages/base/src/Internal/Matrix.hs
+++ b/packages/base/src/Internal/Matrix.hs
@@ -151,7 +151,8 @@ extractAll ord m = unsafePerformIO (copy ord m)
151{- | Creates a vector by concatenation of rows. If the matrix is ColumnMajor, this operation requires a transpose. 151{- | Creates a vector by concatenation of rows. If the matrix is ColumnMajor, this operation requires a transpose.
152 152
153>>> flatten (ident 3) 153>>> flatten (ident 3)
154fromList [1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0] 154[1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]
155it :: (Num t, Element t) => Vector t
155 156
156-} 157-}
157flatten :: Element t => Matrix t -> Vector t 158flatten :: Element t => Matrix t -> Vector t
diff --git a/packages/base/src/Internal/Sparse.hs b/packages/base/src/Internal/Sparse.hs
index 1ff3f57..a8a5fe0 100644
--- a/packages/base/src/Internal/Sparse.hs
+++ b/packages/base/src/Internal/Sparse.hs
@@ -170,8 +170,10 @@ gmXv Dense{..} v
170{- | general matrix - vector product 170{- | general matrix - vector product
171 171
172>>> let m = mkSparse [((0,999),1.0),((1,1999),2.0)] 172>>> let m = mkSparse [((0,999),1.0),((1,1999),2.0)]
173m :: GMatrix
173>>> m !#> vector [1..2000] 174>>> m !#> vector [1..2000]
174fromList [1000.0,4000.0] 175[1000.0,4000.0]
176it :: Vector Double
175 177
176-} 178-}
177infixr 8 !#> 179infixr 8 !#>
diff --git a/packages/base/src/Internal/Static.hs b/packages/base/src/Internal/Static.hs
index f9dfff0..357645e 100644
--- a/packages/base/src/Internal/Static.hs
+++ b/packages/base/src/Internal/Static.hs
@@ -321,34 +321,34 @@ isDiagg (Dim (Dim x))
321instance KnownNat n => Show (R n) 321instance KnownNat n => Show (R n)
322 where 322 where
323 show s@(R (Dim v)) 323 show s@(R (Dim v))
324 | singleV v = "("++show (v!0)++" :: R "++show d++")" 324 | singleV v = "(" ++ show (v!0) ++ " :: R " ++ show d ++ ")"
325 | otherwise = "(vector"++ drop 8 (show v)++" :: R "++show d++")" 325 | otherwise = "(vector " ++ show v ++ " :: R " ++ show d ++")"
326 where 326 where
327 d = size s 327 d = size s
328 328
329instance KnownNat n => Show (C n) 329instance KnownNat n => Show (C n)
330 where 330 where
331 show s@(C (Dim v)) 331 show s@(C (Dim v))
332 | singleV v = "("++show (v!0)++" :: C "++show d++")" 332 | singleV v = "(" ++ show (v!0) ++ " :: C " ++ show d ++ ")"
333 | otherwise = "(vector"++ drop 8 (show v)++" :: C "++show d++")" 333 | otherwise = "(vector " ++ show v ++ " :: C " ++ show d ++")"
334 where 334 where
335 d = size s 335 d = size s
336 336
337instance (KnownNat m, KnownNat n) => Show (L m n) 337instance (KnownNat m, KnownNat n) => Show (L m n)
338 where 338 where
339 show (isDiag -> Just (z,y,(m',n'))) = printf "(diag %s %s :: L %d %d)" (show z) (drop 9 $ show y) m' n' 339 show (isDiag -> Just (z,y,(m',n'))) = printf "(diag %s %s :: L %d %d)" (show z) (show y) m' n'
340 show s@(L (Dim (Dim x))) 340 show s@(L (Dim (Dim x)))
341 | singleM x = printf "(%s :: L %d %d)" (show (x `atIndex` (0,0))) m' n' 341 | singleM x = printf "(%s :: L %d %d)" (show (x `atIndex` (0,0))) m' n'
342 | otherwise = "(matrix"++ dropWhile (/='\n') (show x)++" :: L "++show m'++" "++show n'++")" 342 | otherwise = "(matrix" ++ dropWhile (/='\n') (show x) ++ " :: L " ++ show m' ++ " " ++ show n' ++ ")"
343 where 343 where
344 (m',n') = size s 344 (m',n') = size s
345 345
346instance (KnownNat m, KnownNat n) => Show (M m n) 346instance (KnownNat m, KnownNat n) => Show (M m n)
347 where 347 where
348 show (isDiagC -> Just (z,y,(m',n'))) = printf "(diag %s %s :: M %d %d)" (show z) (drop 9 $ show y) m' n' 348 show (isDiagC -> Just (z,y,(m',n'))) = printf "(diag %s %s :: M %d %d)" (show z) (show y) m' n'
349 show s@(M (Dim (Dim x))) 349 show s@(M (Dim (Dim x)))
350 | singleM x = printf "(%s :: M %d %d)" (show (x `atIndex` (0,0))) m' n' 350 | singleM x = printf "(%s :: M %d %d)" (show (x `atIndex` (0,0))) m' n'
351 | otherwise = "(matrix"++ dropWhile (/='\n') (show x)++" :: M "++show m'++" "++show n'++")" 351 | otherwise = "(matrix" ++ dropWhile (/='\n') (show x) ++ " :: M " ++ show m' ++ " " ++ show n' ++ ")"
352 where 352 where
353 (m',n') = size s 353 (m',n') = size s
354 354
diff --git a/packages/base/src/Internal/Util.hs b/packages/base/src/Internal/Util.hs
index 8c8a31e..959e58f 100644
--- a/packages/base/src/Internal/Util.hs
+++ b/packages/base/src/Internal/Util.hs
@@ -97,7 +97,8 @@ iC = 0:+1
97{- | Create a real vector. 97{- | Create a real vector.
98 98
99>>> vector [1..5] 99>>> vector [1..5]
100fromList [1.0,2.0,3.0,4.0,5.0] 100[1.0,2.0,3.0,4.0,5.0]
101it :: Vector R
101 102
102-} 103-}
103vector :: [R] -> Vector R 104vector :: [R] -> Vector R
@@ -376,7 +377,8 @@ size = size'
376On a matrix it gets the k-th row as a vector: 377On a matrix it gets the k-th row as a vector:
377 378
378>>> matrix 5 [1..15] ! 1 379>>> matrix 5 [1..15] ! 1
379fromList [6.0,7.0,8.0,9.0,10.0] 380[6.0,7.0,8.0,9.0,10.0]
381it :: Vector Double
380 382
381>>> matrix 5 [1..15] ! 1 ! 3 383>>> matrix 5 [1..15] ! 1 ! 3
3829.0 3849.0
diff --git a/packages/base/src/Internal/Vector.hs b/packages/base/src/Internal/Vector.hs
index 67d0416..e1e4aa8 100644
--- a/packages/base/src/Internal/Vector.hs
+++ b/packages/base/src/Internal/Vector.hs
@@ -113,7 +113,8 @@ toList v = safeRead v $ peekArray (dim v)
113 be used, for instance, with infinite lists. 113 be used, for instance, with infinite lists.
114 114
115>>> 5 |> [1..] 115>>> 5 |> [1..]
116fromList [1.0,2.0,3.0,4.0,5.0] 116[1.0,2.0,3.0,4.0,5.0]
117it :: (Enum a, Num a, Foreign.Storable.Storable a) => Vector a
117 118
118-} 119-}
119(|>) :: (Storable a) => Int -> [a] -> Vector a 120(|>) :: (Storable a) => Int -> [a] -> Vector a
@@ -132,7 +133,8 @@ idxs js = fromList (map fromIntegral js) :: Vector I
132{- | takes a number of consecutive elements from a Vector 133{- | takes a number of consecutive elements from a Vector
133 134
134>>> subVector 2 3 (fromList [1..10]) 135>>> subVector 2 3 (fromList [1..10])
135fromList [3.0,4.0,5.0] 136[3.0,4.0,5.0]
137it :: (Enum t, Num t, Foreign.Storable.Storable t) => Vector t
136 138
137-} 139-}
138subVector :: Storable t => Int -- ^ index of the starting element 140subVector :: Storable t => Int -- ^ index of the starting element
@@ -166,7 +168,8 @@ at' v n = safeRead v $ flip peekElemOff n
166{- | concatenate a list of vectors 168{- | concatenate a list of vectors
167 169
168>>> vjoin [fromList [1..5::Double], konst 1 3] 170>>> vjoin [fromList [1..5::Double], konst 1 3]
169fromList [1.0,2.0,3.0,4.0,5.0,1.0,1.0,1.0] 171[1.0,2.0,3.0,4.0,5.0,1.0,1.0,1.0]
172it :: Vector Double
170 173
171-} 174-}
172vjoin :: Storable t => [Vector t] -> Vector t 175vjoin :: Storable t => [Vector t] -> Vector t
@@ -188,7 +191,8 @@ vjoin as = unsafePerformIO $ do
188{- | Extract consecutive subvectors of the given sizes. 191{- | Extract consecutive subvectors of the given sizes.
189 192
190>>> takesV [3,4] (linspace 10 (1,10::Double)) 193>>> takesV [3,4] (linspace 10 (1,10::Double))
191[fromList [1.0,2.0,3.0],fromList [4.0,5.0,6.0,7.0]] 194[[1.0,2.0,3.0],[4.0,5.0,6.0,7.0]]
195it :: [Vector Double]
192 196
193-} 197-}
194takesV :: Storable t => [Int] -> Vector t -> [Vector t] 198takesV :: Storable t => [Int] -> Vector t -> [Vector t]
diff --git a/packages/base/src/Internal/Vectorized.hs b/packages/base/src/Internal/Vectorized.hs
index a410bb2..2990173 100644
--- a/packages/base/src/Internal/Vectorized.hs
+++ b/packages/base/src/Internal/Vectorized.hs
@@ -389,7 +389,8 @@ foreign import ccall unsafe "round_vector" c_round_vector :: TVV Double
389 389
390-- | 390-- |
391-- >>> range 5 391-- >>> range 5
392-- fromList [0,1,2,3,4] 392-- [0,1,2,3,4]
393-- it :: Vector I
393-- 394--
394range :: Int -> Vector I 395range :: Int -> Vector I
395range n = unsafePerformIO $ do 396range n = unsafePerformIO $ do
diff --git a/packages/base/src/Numeric/LinearAlgebra.hs b/packages/base/src/Numeric/LinearAlgebra.hs
index 73d4a13..520eeb7 100644
--- a/packages/base/src/Numeric/LinearAlgebra.hs
+++ b/packages/base/src/Numeric/LinearAlgebra.hs
@@ -27,7 +27,8 @@ module Numeric.LinearAlgebra (
27 -- as the Hadamard product or the Schur product): 27 -- as the Hadamard product or the Schur product):
28 -- 28 --
29 -- >>> vector [1,2,3] * vector [3,0,-2] 29 -- >>> vector [1,2,3] * vector [3,0,-2]
30 -- fromList [3.0,0.0,-6.0] 30 -- [3.0,0.0,-6.0]
31 -- it :: Vector R
31 -- 32 --
32 -- >>> matrix 3 [1..9] * ident 3 33 -- >>> matrix 3 [1..9] * ident 3
33 -- (3><3) 34 -- (3><3)