summaryrefslogtreecommitdiff
path: root/packages/base/src/Internal/ST.hs
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2015-06-22 11:54:16 +0200
committerAlberto Ruiz <aruiz@um.es>2015-06-22 11:54:16 +0200
commit8053285df72177dab6b6d86241307d743fa0025f (patch)
tree582a033ef3d7e10b355d844d57b608d8f3efa753 /packages/base/src/Internal/ST.hs
parentbd1bca66174ec3c0feb38c531cfc611cc0239b21 (diff)
implicit rowOrder
Diffstat (limited to 'packages/base/src/Internal/ST.hs')
-rw-r--r--packages/base/src/Internal/ST.hs10
1 files changed, 5 insertions, 5 deletions
diff --git a/packages/base/src/Internal/ST.hs b/packages/base/src/Internal/ST.hs
index d1defda..c98ff0e 100644
--- a/packages/base/src/Internal/ST.hs
+++ b/packages/base/src/Internal/ST.hs
@@ -109,13 +109,13 @@ newVector x n = do
109 109
110{-# INLINE ioReadM #-} 110{-# INLINE ioReadM #-}
111ioReadM :: Storable t => Matrix t -> Int -> Int -> IO t 111ioReadM :: Storable t => Matrix t -> Int -> Int -> IO t
112ioReadM (Matrix _ nc cv RowMajor) r c = ioReadV cv (r*nc+c) 112ioReadM m r c = ioReadV (xdat m) (r * (ti $ xRow m) + c * (ti $ xCol m))
113ioReadM (Matrix nr _ fv ColumnMajor) r c = ioReadV fv (c*nr+r) 113
114 114
115{-# INLINE ioWriteM #-} 115{-# INLINE ioWriteM #-}
116ioWriteM :: Storable t => Matrix t -> Int -> Int -> t -> IO () 116ioWriteM :: Storable t => Matrix t -> Int -> Int -> t -> IO ()
117ioWriteM (Matrix _ nc cv RowMajor) r c val = ioWriteV cv (r*nc+c) val 117ioWriteM m r c val = ioWriteV (xdat m) (r * (ti $ xRow m) + c * (ti $ xCol m)) val
118ioWriteM (Matrix nr _ fv ColumnMajor) r c val = ioWriteV fv (c*nr+r) val 118
119 119
120newtype STMatrix s t = STMatrix (Matrix t) 120newtype STMatrix s t = STMatrix (Matrix t)
121 121
@@ -150,7 +150,7 @@ unsafeFreezeMatrix (STMatrix x) = unsafeIOToST . return $ x
150freezeMatrix :: (Storable t) => STMatrix s t -> ST s (Matrix t) 150freezeMatrix :: (Storable t) => STMatrix s t -> ST s (Matrix t)
151freezeMatrix m = liftSTMatrix id m 151freezeMatrix m = liftSTMatrix id m
152 152
153cloneMatrix (Matrix r c d o) = cloneVector d >>= return . (\d' -> Matrix r c d' o) 153cloneMatrix m = cloneVector (xdat m) >>= return . (\d' -> m{xdat = d'})
154 154
155{-# INLINE safeIndexM #-} 155{-# INLINE safeIndexM #-}
156safeIndexM f (STMatrix m) r c 156safeIndexM f (STMatrix m) r c