Attoparsec parser for the NIST Matrix Market format .
The library also contains functions for serializing to text file, and the read/write/read roundtrip works as expected.
Data.Matrix.MatrixMarket exports the user interface:
readMatrix :: FilePath -> IO (Matrix S.Scientific) readArray :: FilePath -> IO (Array S.Scientific) writeMatrix :: Show a => FilePath -> Matrix a -> IO () writeArray :: Show a => FilePath -> Array a -> IO ()
The first two functions contain the parsing logic, and make use of
scientific for parsing numerical data in scientific notation.
We follow the MatrixMarket format definitions, by which a "Matrix" is sparse and stored in coordinate format (row, column, entry), whereas an "Array" is a dense grid of numbers, stored in column-oriented form. Algebraic vectors, such as the right-hand sides of equation systems, are stored as n-by-1 Arrays.
test/LibSpec.hs contains a simple read/write/read sanity test for the included Matrix Marked data files (
m0 <- readMatrix fname -- load original writeMatrix ftemp m0 -- save as temp m1 <- readMatrix ftemp -- load temp m0 `shouldBe` m1 -- compare temp with original
Added MatrixMarket module from