matrices 0.4.2 → 0.4.3
raw patch · 14 files changed
+81/−85 lines, 14 files
Files
- matrices.cabal +2/−2
- src/Data/Matrix.hs +2/−2
- src/Data/Matrix/Dense/Generic.hs +15/−15
- src/Data/Matrix/Dense/Generic/Mutable.hs +4/−4
- src/Data/Matrix/Generic.hs +7/−7
- src/Data/Matrix/Generic/Mutable.hs +9/−14
- src/Data/Matrix/Mutable.hs +2/−2
- src/Data/Matrix/Sparse/Generic.hs +17/−17
- src/Data/Matrix/Storable.hs +2/−2
- src/Data/Matrix/Storable/Mutable.hs +2/−2
- src/Data/Matrix/Symmetric.hs +11/−10
- src/Data/Matrix/Symmetric/Mutable.hs +4/−4
- src/Data/Matrix/Unboxed.hs +2/−2
- src/Data/Matrix/Unboxed/Mutable.hs +2/−2
matrices.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: matrices-version: 0.4.2+version: 0.4.3 synopsis: native matrix based on vector description: This library provide the APIs for creating, indexing, modifying matrices (2d arrays), including dense and@@ -39,7 +39,7 @@ -- other-modules: build-depends:- base >=4.0 && <5+ base >=4.5 && <5 , vector >=0.9 , primitive
src/Data/Matrix.hs view
@@ -3,8 +3,8 @@ , module Data.Matrix.Dense.Generic )where +import Data.Matrix.Dense.Generic hiding (Matrix) import qualified Data.Matrix.Dense.Generic as MG-import Data.Matrix.Dense.Generic hiding (Matrix)-import qualified Data.Vector as V+import qualified Data.Vector as V type Matrix = MG.Matrix V.Vector
src/Data/Matrix/Dense/Generic.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE BangPatterns #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeFamilies #-} module Data.Matrix.Dense.Generic- ( + ( -- * Immutable Matrix Matrix(..) @@ -48,7 +48,7 @@ , fromBlocks , isSymmetric , force- + , Data.Matrix.Dense.Generic.foldl -- * Mapping@@ -102,15 +102,15 @@ , MG.create ) where -import Prelude hiding (mapM_, mapM)-import Control.Arrow ((***), (&&&))-import Control.Monad (liftM, foldM, foldM_)-import qualified Data.Foldable as F-import qualified Data.Vector.Generic as G-import qualified Data.Vector.Generic.Mutable as GM+import Control.Arrow ((&&&), (***))+import Control.Monad (foldM, foldM_, liftM)+import qualified Data.Foldable as F+import qualified Data.Vector.Generic as G+import qualified Data.Vector.Generic.Mutable as GM+import Prelude hiding (mapM, mapM_) -import qualified Data.Matrix.Generic as MG-import Data.Matrix.Dense.Generic.Mutable (MMatrix(..))+import Data.Matrix.Dense.Generic.Mutable (MMatrix (..))+import qualified Data.Matrix.Generic as MG type instance MG.Mutable Matrix = MMatrix @@ -120,7 +120,7 @@ !Int -- physical row dimension !Int -- offset !(v a) -- flat matrix- deriving (Show)+ deriving (Show, Read, Eq) instance G.Vector v a => MG.Matrix Matrix v a where
src/Data/Matrix/Dense/Generic/Mutable.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} module Data.Matrix.Dense.Generic.Mutable ( -- * Mutable Matrix@@ -13,9 +13,9 @@ , C.replicate ) where -import Prelude hiding (read, replicate)-import Control.Monad (liftM)+import Control.Monad (liftM) import qualified Data.Vector.Generic.Mutable as GM+import Prelude hiding (read, replicate) import qualified Data.Matrix.Generic.Mutable as C @@ -39,7 +39,7 @@ replicate (r,c) x = MMatrix r c c 0 `liftM` GM.replicate (r*c) x {-# INLINE replicate #-}- + takeRow :: GM.MVector v a => MMatrix v m a -> Int -> v m a takeRow (MMatrix _ c tda offset vec) i = GM.slice i' c vec where
src/Data/Matrix/Generic.hs view
@@ -1,7 +1,7 @@+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE Rank2Types #-}+{-# LANGUAGE Rank2Types #-}+{-# LANGUAGE TypeFamilies #-} module Data.Matrix.Generic ( Mutable , Matrix(..)@@ -25,10 +25,10 @@ , create ) where -import Control.Monad.ST (runST, ST)-import Control.Monad.Primitive (PrimMonad, PrimState)-import qualified Data.Vector.Generic as G-import Text.Printf+import Control.Monad.Primitive (PrimMonad, PrimState)+import Control.Monad.ST (ST, runST)+import qualified Data.Vector.Generic as G+import Text.Printf import qualified Data.Matrix.Generic.Mutable as MM
src/Data/Matrix/Generic/Mutable.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeFamilies #-} module Data.Matrix.Generic.Mutable ( MMatrix(..)@@ -7,9 +7,9 @@ , read ) where -import Prelude hiding (read)-import Control.Monad.Primitive (PrimMonad, PrimState)+import Control.Monad.Primitive (PrimMonad, PrimState) import qualified Data.Vector.Generic.Mutable as GM+import Prelude hiding (read) class GM.MVector v a => MMatrix m v a where dim :: m v s a -> (Int, Int)@@ -29,23 +29,18 @@ write :: (PrimMonad s, MMatrix m v a) => m v (PrimState s) a -> (Int, Int) -> a -> s ()-write mat (i,j) | i >= r || j >= c = error "Index out of bounds"- | otherwise = unsafeWrite mat (i,j)+write mat (i,j)+ | i < 0 || i >= r || j < 0 || j >= c = error "write: Index out of bounds"+ | otherwise = unsafeWrite mat (i,j) where (r,c) = dim mat {-# INLINE write #-} read :: (PrimMonad s, MMatrix m v a) => m v (PrimState s) a -> (Int, Int) -> s a-read mat (i,j) | i >= r || j >= c = error "Index out of bounds"- | otherwise = unsafeRead mat (i,j)+read mat (i,j)+ | i <0 || i >= r || j < 0 || j >= c = error "read: Index out of bounds"+ | otherwise = unsafeRead mat (i,j) where (r,c) = dim mat {-# INLINE read #-}--{--replicate :: (PrimMonad s, MMatrix m v a)- => (Int, Int) -> a -> s (m v (PrimState s) a)-replicate (r,c) x = do- mat <- new (r,c)- -}
src/Data/Matrix/Mutable.hs view
@@ -3,8 +3,8 @@ , module Data.Matrix.Dense.Generic.Mutable ) where +import Data.Matrix.Dense.Generic.Mutable hiding (MMatrix) import qualified Data.Matrix.Dense.Generic.Mutable as MG-import Data.Matrix.Dense.Generic.Mutable hiding (MMatrix)-import qualified Data.Vector.Mutable as VM+import qualified Data.Vector.Mutable as VM type MMatrix a = MG.MMatrix VM.MVector a
src/Data/Matrix/Sparse/Generic.hs view
@@ -1,8 +1,8 @@-{-# LANGUAGE BangPatterns #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeFamilies #-} module Data.Matrix.Sparse.Generic ( Zero(..) , CSR(..)@@ -38,17 +38,17 @@ , MG.toLists ) where -import Control.Applicative ((<$>))-import Control.Monad (when, forM_, foldM)-import Control.Monad.ST (runST)-import qualified Data.Vector.Generic as G-import qualified Data.Vector.Generic.Mutable as GM-import qualified Data.Vector.Unboxed as U-import Data.Bits (shiftR)-import Text.Printf (printf)+import Control.Applicative ((<$>))+import Control.Monad (foldM, forM_, when)+import Control.Monad.ST (runST)+import Data.Bits (shiftR)+import qualified Data.Vector.Generic as G+import qualified Data.Vector.Generic.Mutable as GM+import qualified Data.Vector.Unboxed as U+import Text.Printf (printf) -import qualified Data.Matrix.Generic as MG-import Data.Matrix.Dense.Generic.Mutable (MMatrix)+import Data.Matrix.Dense.Generic.Mutable (MMatrix)+import qualified Data.Matrix.Generic as MG class Eq a => Zero a where zero :: a@@ -131,7 +131,7 @@ col <- GM.new n row <- GM.new (r+1) - ((i,_),_) <- foldM (f v col row) ((-1,-1),0) al + ((i,_),_) <- foldM (f v col row) ((-1,-1),0) al let stride = r - i forM_ [0..stride-1] $ \s -> GM.write row (r-s) n@@ -147,11 +147,11 @@ GM.write col acc j let stride = i - i' when (stride > 0) $ forM_ [0..stride-1] $ \s -> GM.write row (i-s) acc- + return ((i,j), acc+1) else error $ printf "Input must be sorted by row and then by column: (%d,%d) >= (%d,%d)" i' j' i j {-# INLINE fromAscAL #-}- + binarySearchByBounds :: U.Vector Int -> Int -> Int -> Int -> Maybe Int binarySearchByBounds vec x = loop where
src/Data/Matrix/Storable.hs view
@@ -3,8 +3,8 @@ , module Data.Matrix.Dense.Generic ) where +import Data.Matrix.Dense.Generic hiding (Matrix) import qualified Data.Matrix.Dense.Generic as MG-import Data.Matrix.Dense.Generic hiding (Matrix)-import qualified Data.Vector.Storable as V+import qualified Data.Vector.Storable as V type Matrix a = MG.Matrix V.Vector a
src/Data/Matrix/Storable/Mutable.hs view
@@ -3,8 +3,8 @@ , module Data.Matrix.Dense.Generic.Mutable ) where +import Data.Matrix.Dense.Generic.Mutable hiding (MMatrix) import qualified Data.Matrix.Dense.Generic.Mutable as MG-import Data.Matrix.Dense.Generic.Mutable hiding (MMatrix)-import qualified Data.Vector.Storable.Mutable as VM+import qualified Data.Vector.Storable.Mutable as VM type MMatrix a = MG.MMatrix VM.MVector a
src/Data/Matrix/Symmetric.hs view
@@ -1,8 +1,8 @@+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE TypeFamilies #-} module Data.Matrix.Symmetric ( SymMatrix(..) , dim@@ -25,13 +25,14 @@ , zipWith ) where -import Prelude hiding (zip, zipWith)-import Control.Monad (liftM)-import Data.Bits (shiftR)-import qualified Data.Vector.Generic as G+import Control.Monad (liftM)+import Data.Bits (shiftR)+import qualified Data.Vector.Generic as G+import Prelude hiding (zip, zipWith) -import Data.Matrix.Generic-import Data.Matrix.Symmetric.Mutable (SymMMatrix(..), unsafeWrite, new)+import Data.Matrix.Generic+import Data.Matrix.Symmetric.Mutable (SymMMatrix (..), new,+ unsafeWrite) type instance Mutable SymMatrix = SymMMatrix
src/Data/Matrix/Symmetric/Mutable.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} module Data.Matrix.Symmetric.Mutable ( -- * Mutable Matrix@@ -12,10 +12,10 @@ , C.replicate ) where -import Prelude hiding (read, replicate)-import Control.Monad (liftM)-import Data.Bits (shiftR)+import Control.Monad (liftM)+import Data.Bits (shiftR) import qualified Data.Vector.Generic.Mutable as GM+import Prelude hiding (read, replicate) import qualified Data.Matrix.Generic.Mutable as C
src/Data/Matrix/Unboxed.hs view
@@ -3,8 +3,8 @@ , module Data.Matrix.Dense.Generic ) where +import Data.Matrix.Dense.Generic hiding (Matrix) import qualified Data.Matrix.Dense.Generic as MG-import Data.Matrix.Dense.Generic hiding (Matrix)-import qualified Data.Vector.Unboxed as V+import qualified Data.Vector.Unboxed as V type Matrix a = MG.Matrix V.Vector a
src/Data/Matrix/Unboxed/Mutable.hs view
@@ -3,8 +3,8 @@ , module Data.Matrix.Dense.Generic.Mutable ) where +import Data.Matrix.Dense.Generic.Mutable hiding (MMatrix) import qualified Data.Matrix.Dense.Generic.Mutable as MG-import Data.Matrix.Dense.Generic.Mutable hiding (MMatrix)-import qualified Data.Vector.Unboxed.Mutable as VM+import qualified Data.Vector.Unboxed.Mutable as VM type MMatrix a = MG.MMatrix VM.MVector a