I have recently published neo, a fork of my previous linear algebra library. By removing the part related to matrices and vectors of static dimension (that is, known and checked at compile time) I was able to streamline the library considerably and I started adding new features.
Neo is now in good shape, and I have plans to add new features: improve the part of the library running on the GPU and make it more uniform with the CPU part, support complex numbers, FFT, tensors and more.
But I only have so much time. I have started collecting a few ideas I have in the Github issues. They are written quite tersely, but if anyone wants to chime in and help with one of these, I will be happy to expand in detail what has to be done.
Other than that, there is some work to be done with documentation, tutorials, examples and tests.
If anyone is interested, please let me know. :-)
I've looked at neo a little bit and it looks really promising. I'm glad for all the work you've done with linalg- I think Nim can be a really good language for numerical computing and data science, and having a good linear algebra library will go a long way towards making that happen.
I'm definitely interested in helping, but I don't know how much time I can promise - I'm working full time and trying to finish my master's. I'll check out the issue list and see if there's some low-hanging fruit I can help with. What I'd really like would be:
Manual memory management for vectors / matrices as an option (would make sharing between threads a bit easier).
I'm not as sure about this as the other - when I wrote my clustering program I could get multithreading working with protect / dispose and the Boehm GC, but I'm not sure if manual memory management for vectors or a different approach altogether would lead to a smoother approach to multithreading.
I might make some issues for ^^^ or just check out neo more and the issues you've already created first. I can't promise a lot of time, but I'll contribute whatever I can.
Hi, have a look at the issues: these items are already planned! :-)
In particular:
The nice thing is that / is a template, and rewrite rules are applied after template expansion, so that one is already covered! :-)
Check this test