matrix library

Carl Vogel via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Mon May 23 11:10:40 PDT 2016


On Monday, 23 May 2016 at 07:28:20 UTC, Vlad Levenfeld wrote:
> https://github.com/evenex/linalg
>
> I've some heard people (including me) asking about matrix 
> libraries for D, and while there is gl3n it only goes to 4x4 
> matrices and was written before all the multidimensional 
> indexing stuff.
>
> So I was using gl3n for awhile until I needed some 6x6s and 
> threw together a syntax-sugary sort of wrapper over 
> std.experimental.ndslice and cblas for matrix math.
>
> You can slice submatrices, assign to them, and perform ops on 
> them with other matrices or 2-dimensional array slices... 
> though, for implementation-ish reasons, ops involving 2-d 
> arrays are elementwise (you'll have to call the Matrix 
> constructor to use matrix multiplication again).
>
> It was built in kind of an ad-hoc way and I will be adding 
> stuff to it as the need arises, so there's nothing there yet 
> beyond the bare basics and you should expect bugs. All the 
> matrices hold static arrays because I don't want to mess with 
> reference problems right now. A matrix past a certain size will 
> be more efficient to store as a dynamic array, of course. But, 
> right now, I need this to make writing linear algebra code 
> comfortable for myself rather than try to win at benchmarks.
>
> Bugs/Pull/Feature requests welcome.

This is nice! I recently found myself having to make ad hoc 
lightweight matrix classes that wrap some blas functions. Making 
the dims template/compile-time params is an interesting choice, 
but I wonder if it is unduly limiting.

How does what you're doing compare to what's in 
https://github.com/DlangScience/scid/blob/master/source/scid/linalg.d ? While that project doesn't have a ton of manpower behind it, it does seem like it's actively maintained, and they have brought in a ton of the lapack/blas headers already. It would be nice, and I think do-able, to have a relatively complete and performant library for matrices/ndarrays, especially given the recent work on ndslice. (If there are plans or a roadmap for this sort of thing, I'd love to contribute, and it seems from this announcement that others are interested also.)


More information about the Digitalmars-d-announce mailing list