packages feed

matrices 0.4.2 → 0.4.3

raw patch · 14 files changed

+81/−85 lines, 14 files

Files

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