I'm in the early stages of developing a general linear algebra library, primarily to learn a new language but I expect to use/share it. The language confers many advantages over C/C++/Matlab/R/Python/Java.
My past usage of linear algebra is singularly focused around ML and signal processing.
The layout so far is to implement Numpy style ndarrays, i.e. a tensor represented internally by a vector and shape info. The language I'm working in doesn't support polyargs/default args but I've come up with solns around it. This approach is preferable to Matlab in that I can avoid tricky index arithmetic by defining operations over axes. This is approach is primitive when compared to R in that named features and observations ids aren't native.
Juggling an index vector is PITA, but it's assumptive of me to expect that all work uses these. It'd be a bad use of resources to bake them in at that level. I'm trying to design it with the ability to easily wrap label info but not mandate it.
Multiplication/Division is Hadamard.
Indices can accept boolean ndarrays and negative values.
I've considered doing linear algebra on abstract types, then compiling them by filtering over lapack driver rearrangement, subject to Oh time regression on input size and matrix features(triangular, diagonal, et al) to optimize performance but this introduces API headaches and having an "active library,", i.e. one that makes decisions based on ./configure. This feature should be middleware to lapack.
Anyway, at the core of a linear algebra interface what would you like to see? The language doesn't support infixed operations easily. So scratching that, what nifty linear algebra interfaces would make your specific work easier.
[link][11 comments]