From 3ffea9114b573eb11e2e41ddfc6a8b69fdd6baed Mon Sep 17 00:00:00 2001 From: Peter Dobsan Date: Fri, 27 Apr 2018 00:08:15 +0200 Subject: Fixed vector show instance and related haddock entries. --- packages/base/hmatrix.cabal | 2 +- packages/base/src/Internal/Algorithms.hs | 11 +++++++---- packages/base/src/Internal/Container.hs | 30 +++++++++++++++++++++++++----- packages/base/src/Internal/Convolution.hs | 6 ++++-- packages/base/src/Internal/Matrix.hs | 3 ++- packages/base/src/Internal/Sparse.hs | 4 +++- packages/base/src/Internal/Static.hs | 16 ++++++++-------- packages/base/src/Internal/Util.hs | 6 ++++-- packages/base/src/Internal/Vector.hs | 12 ++++++++---- packages/base/src/Internal/Vectorized.hs | 3 ++- packages/base/src/Numeric/LinearAlgebra.hs | 3 ++- 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 bytestring, storable-complex, semigroups, - vector >= 0.8 + vector >= 0.11 hs-source-dirs: src 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) -0.690 -0.352 0.433 -0.233 0.398 >>> s -fromList [35.18264833189422,1.4769076999800903,1.089145439970417e-15] +[35.18264833189422,1.4769076999800903,1.089145439970417e-15] +it :: Vector Double >>> disp 3 v 3x3 @@ -222,7 +223,8 @@ a = (5><3) -0.690 -0.352 0.433 >>> s -fromList [35.18264833189422,1.4769076999800903,1.089145439970417e-15] +[35.18264833189422,1.4769076999800903,1.089145439970417e-15] +it :: Vector Double >>> disp 3 v 3x3 @@ -281,7 +283,8 @@ a = (5><3) -0.690 -0.352 >>> s -fromList [35.18264833189422,1.4769076999800903] +[35.18264833189422,1.476907699980091] +it :: Vector Double >>> disp 3 u 5x2 @@ -533,7 +536,7 @@ a = (3><3) >>> let (l, v) = eigSH a >>> l -fromList [11.344814282762075,0.17091518882717918,-0.5157294715892575] +[11.344814282762075,0.17091518882717918,-0.5157294715892575] >>> disp 3 $ v <> diag l <> tr v 3x3 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 ((<>)) {- | Creates a real vector containing a range of values: >>> linspace 5 (-3,7::Double) -fromList [-3.0,-0.5,2.0,4.5,7.0]@ +[-3.0,-0.5,2.0,4.5,7.0] +it :: Vector Double >>> linspace 5 (8,2+i) :: Vector (Complex Double) + +:6:17: ERROR: + Variable not in scope: i :: Complex Double + fromList [8.0 :+ 0.0,6.5 :+ 0.25,5.0 :+ 0.5,3.5 :+ 0.75,2.0 :+ 1.0] Logarithmic spacing can be defined as follows: @@ -85,7 +90,8 @@ infixr 8 <.> >>> let v = vector [10,20,30] >>> m #> v -fromList [140.0,320.0] +[140.0,320.0] +it :: Vector Numeric.LinearAlgebra.Data.R -} infixr 8 #> @@ -134,10 +140,12 @@ v = vector [13.0,27.0,1.0] >>> let x = a <\> v >>> x -fromList [3.0799999999999996,5.159999999999999] +[3.0799999999999996,5.159999999999999] +it :: Vector Numeric.LinearAlgebra.Data.R >>> a #> x -fromList [13.399999999999999,26.799999999999997,1.0] +[13.399999999999999,26.799999999999997,0.9999999999999991] +it :: Vector Numeric.LinearAlgebra.Data.R It also admits multiple right-hand sides stored as columns in a matrix. @@ -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 where -- | -- >>> build 5 (**2) :: Vector Double - -- fromList [0.0,1.0,4.0,9.0,16.0] + -- [0.0,1.0,4.0,9.0,16.0] + -- it :: Vector Double -- -- Hilbert matrix of order N: -- @@ -203,6 +212,17 @@ optimiseMult = mconcat {- | Compute mean vector and covariance matrix of the rows of a matrix. >>> meanCov $ gaussianSample 666 1000 (fromList[4,5]) (diagl[2,3]) + +:4:52: ERROR: + • Couldn't match expected type ‘Herm Double’ + with actual type ‘Matrix Double’ + • In the fourth argument of ‘gaussianSample’, namely + ‘(diagl [2, 3])’ + In the second argument of ‘($)’, namely + ‘gaussianSample 666 1000 (fromList [4, 5]) (diagl [2, 3])’ + In the expression: + meanCov $ gaussianSample 666 1000 (fromList [4, 5]) (diagl [2, 3]) + (fromList [4.010341078059521,5.0197204699640405], (2><2) [ 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 {- ^ correlation >>> corr (fromList[1,2,3]) (fromList [1..10]) -fromList [14.0,20.0,26.0,32.0,38.0,44.0,50.0,56.0] +[14.0,20.0,26.0,32.0,38.0,44.0,50.0,56.0] +it :: (Enum t, Product t, Container Vector t) => Vector t -} corr ker v @@ -54,7 +55,8 @@ conv :: (Container Vector t, Product t, Num t) => Vector t -> Vector t -> Vector {- ^ convolution ('corr' with reversed kernel and padded input, equivalent to polynomial product) >>> conv (fromList[1,1]) (fromList [-1,1]) -fromList [-1.0,0.0,1.0] +[-1.0,0.0,1.0] +it :: (Product t, Container Vector t) => Vector t -} conv 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) {- | Creates a vector by concatenation of rows. If the matrix is ColumnMajor, this operation requires a transpose. >>> flatten (ident 3) -fromList [1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0] +[1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0] +it :: (Num t, Element t) => Vector t -} flatten :: 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 {- | general matrix - vector product >>> let m = mkSparse [((0,999),1.0),((1,1999),2.0)] +m :: GMatrix >>> m !#> vector [1..2000] -fromList [1000.0,4000.0] +[1000.0,4000.0] +it :: Vector Double -} infixr 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)) instance KnownNat n => Show (R n) where show s@(R (Dim v)) - | singleV v = "("++show (v!0)++" :: R "++show d++")" - | otherwise = "(vector"++ drop 8 (show v)++" :: R "++show d++")" + | singleV v = "(" ++ show (v!0) ++ " :: R " ++ show d ++ ")" + | otherwise = "(vector " ++ show v ++ " :: R " ++ show d ++")" where d = size s instance KnownNat n => Show (C n) where show s@(C (Dim v)) - | singleV v = "("++show (v!0)++" :: C "++show d++")" - | otherwise = "(vector"++ drop 8 (show v)++" :: C "++show d++")" + | singleV v = "(" ++ show (v!0) ++ " :: C " ++ show d ++ ")" + | otherwise = "(vector " ++ show v ++ " :: C " ++ show d ++")" where d = size s instance (KnownNat m, KnownNat n) => Show (L m n) where - show (isDiag -> Just (z,y,(m',n'))) = printf "(diag %s %s :: L %d %d)" (show z) (drop 9 $ show y) m' n' + show (isDiag -> Just (z,y,(m',n'))) = printf "(diag %s %s :: L %d %d)" (show z) (show y) m' n' show s@(L (Dim (Dim x))) | singleM x = printf "(%s :: L %d %d)" (show (x `atIndex` (0,0))) m' n' - | otherwise = "(matrix"++ dropWhile (/='\n') (show x)++" :: L "++show m'++" "++show n'++")" + | otherwise = "(matrix" ++ dropWhile (/='\n') (show x) ++ " :: L " ++ show m' ++ " " ++ show n' ++ ")" where (m',n') = size s instance (KnownNat m, KnownNat n) => Show (M m n) where - show (isDiagC -> Just (z,y,(m',n'))) = printf "(diag %s %s :: M %d %d)" (show z) (drop 9 $ show y) m' n' + show (isDiagC -> Just (z,y,(m',n'))) = printf "(diag %s %s :: M %d %d)" (show z) (show y) m' n' show s@(M (Dim (Dim x))) | singleM x = printf "(%s :: M %d %d)" (show (x `atIndex` (0,0))) m' n' - | otherwise = "(matrix"++ dropWhile (/='\n') (show x)++" :: M "++show m'++" "++show n'++")" + | otherwise = "(matrix" ++ dropWhile (/='\n') (show x) ++ " :: M " ++ show m' ++ " " ++ show n' ++ ")" where (m',n') = size s 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 {- | Create a real vector. >>> vector [1..5] -fromList [1.0,2.0,3.0,4.0,5.0] +[1.0,2.0,3.0,4.0,5.0] +it :: Vector R -} vector :: [R] -> Vector R @@ -376,7 +377,8 @@ size = size' On a matrix it gets the k-th row as a vector: >>> matrix 5 [1..15] ! 1 -fromList [6.0,7.0,8.0,9.0,10.0] +[6.0,7.0,8.0,9.0,10.0] +it :: Vector Double >>> matrix 5 [1..15] ! 1 ! 3 9.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) be used, for instance, with infinite lists. >>> 5 |> [1..] -fromList [1.0,2.0,3.0,4.0,5.0] +[1.0,2.0,3.0,4.0,5.0] +it :: (Enum a, Num a, Foreign.Storable.Storable a) => Vector a -} (|>) :: (Storable a) => Int -> [a] -> Vector a @@ -132,7 +133,8 @@ idxs js = fromList (map fromIntegral js) :: Vector I {- | takes a number of consecutive elements from a Vector >>> subVector 2 3 (fromList [1..10]) -fromList [3.0,4.0,5.0] +[3.0,4.0,5.0] +it :: (Enum t, Num t, Foreign.Storable.Storable t) => Vector t -} subVector :: Storable t => Int -- ^ index of the starting element @@ -166,7 +168,8 @@ at' v n = safeRead v $ flip peekElemOff n {- | concatenate a list of vectors >>> vjoin [fromList [1..5::Double], konst 1 3] -fromList [1.0,2.0,3.0,4.0,5.0,1.0,1.0,1.0] +[1.0,2.0,3.0,4.0,5.0,1.0,1.0,1.0] +it :: Vector Double -} vjoin :: Storable t => [Vector t] -> Vector t @@ -188,7 +191,8 @@ vjoin as = unsafePerformIO $ do {- | Extract consecutive subvectors of the given sizes. >>> takesV [3,4] (linspace 10 (1,10::Double)) -[fromList [1.0,2.0,3.0],fromList [4.0,5.0,6.0,7.0]] +[[1.0,2.0,3.0],[4.0,5.0,6.0,7.0]] +it :: [Vector Double] -} takesV :: 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 -- | -- >>> range 5 --- fromList [0,1,2,3,4] +-- [0,1,2,3,4] +-- it :: Vector I -- range :: Int -> Vector I range 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 ( -- as the Hadamard product or the Schur product): -- -- >>> vector [1,2,3] * vector [3,0,-2] - -- fromList [3.0,0.0,-6.0] + -- [3.0,0.0,-6.0] + -- it :: Vector R -- -- >>> matrix 3 [1..9] * ident 3 -- (3><3) -- cgit v1.2.3