Neanderthal 0.15.0 Released - Many more specialized matrix data structures in Clojure

Need help with your custom Clojure software? I'm open to (selected) contract work.

September 1, 2017

Please share: .

These books fund my work! Please check them out.

The new release of Neanderthal, the fast Clojure one stop shop for linear algebra and matrix computations at top speed on Intel & AMD CPU's, and both Nvidia and AMD GPU's has just been released to Clojars.

In addition to further internal refinements of existing features, there's now many specialized matrix types to choose from to speed up computations even more by exploiting the additional knowledge of matrices at hand:

Dense matrices now offer the choice of:

When we know that all non-zero data in our matrix are concentrated close to the diagonal, we might want to choose banded matrices, that come in three flavors, too:

But that's not all. We can also opt for packed storage:

When appropriate, Neanderthal can also do efficient polymorphic conversions between those.

Why all this variety? Because, in lots of cases, we know that the matrix we work with have some properties. By choosing the appropriate representation, we can get help from Neanderthal, who can now use that information to automatically select the best algorithm for the operation that we want to invoke! And expect more! There is going to be support for huge sparse matrices, and for tensors. All at high speed, and with a nice Clojure API that does almost all automatically for us!

To start discovering how linear algebra can help you in your Clojure programming, read my Clojure Linear Algebra Refresher series. In addition, expect more detailed tutorials about how to effectively use Neanderthal for certain numerical tasks. There is also an extensive test suite with lots of examples: check out Neanderthal GitHub repository. Last, but not least, each public function comes with the documentation, so don't forget to check that out.

Neanderthal 0.15.0 Released - Many more specialized matrix data structures in Clojure - September 1, 2017 - Dragan Djuric