[Haskell-cafe] Is anyone working on a sparse matrix library in Haskell?

wren ng thornton wren at freegeek.org
Sun Dec 2 04:52:38 CET 2012


On 11/30/12 4:58 PM, Mark Flamer wrote:
> Thanks for all the replies,
>   It sounds like there is enough interest and even some potential
> collaborators out there. I have created a few data structures to represent
> sparse vectors and matrices. The vector was a simple binary tree and the
> matrix a quad tree. As I suspected a standard IntMap was around 3X as fast
> as my binary tree, so I have switched to the IntMap for now. I was hoping to
> hold on to my quad tree for the matrix rep. because I like the elegance of
> the recursive algorithms like Strassen’s for multiplication. In the end it
> will most likely be best to have a few different matrix representations
> anyway. For instance, I know that compressed row form is most efficient for
> certain algorithms. I have a Gauss iterative solver working currently and am
> thinking of moving on to a parallel Conjugate gradient or direct solver
> using LU decomposition. I’m no expert in Haskell or numeric methods but I do
> my best.

I've also been working haphazardly on some similar stuff lately. 
However, my focus is rather different[1] so I'm afeared not much code 
sharing could happen at the moment. While I'm certainly no expert on 
numerical methods, I seem to have acquired some experience in that 
domain so I may be able to lend a hand from time to time.


[1] In particular my goal has been to revive some old ideas about making 
linear algebra well-typed. The vast majority (if not all) of extant 
linear algebra systems are poorly typed and will do stupid things to 
"resolve" type errors (e.g., automatically padding, truncating, and 
reshaping things). Because of the use case I have in mind, this project 
also involves setting up a proper numerical type-class hierarchy (i.e., 
one which expresses semirings and other things ignored by the numerical 
hierarchies out there today). My goal for all this is in setting up the 
type system, not performance. I figure there are other folks who know 
and care a lot more about the numerical tricks of giving the actual 
implementations.

-- 
Live well,
~wren



More information about the Haskell-Cafe mailing list