Ecsodikas / Minerva

Small linear algebra library without any dependencies except phobos.
MIT License
7 stars 0 forks source link

Why yet another linear algebra library? #5

Open nordlow opened 2 years ago

nordlow commented 2 years ago

There's already a state-of-the-art stack of linear algebra at https://code.dlang.org/packages/lubeck and https://code.dlang.org/packages/mir-core that's been actively developed for years mainly by @9il. Why create yet another instead of helping out developing mir-core and lubeck?

9il commented 2 years ago

Minerva is a linear library for visualisation. BLAS / LAPACK based libraries can't be used instead.

nordlow commented 2 years ago

Minerva is a linear library for visualisation. BLAS / LAPACK based libraries can't be used instead.

I take it you mean Miverna is library for algbraic operations on fixed-dimenisonal (typically 2, 3 and 4-dimensional) vectors and matrices which can be applied to geometric operations in visualization libraries. I thought that was supposed to be supported by lubeck and mir.

9il commented 2 years ago

I take it you mean Miverna is library for algbraic operations on fixed-dimenisonal (typically 2, 3 and 4-dimensional) vectors and matrices which can be applied to geometric operations in visualization libraries. I thought that was supposed to be supported by lubeck and mir.

No. Mir provides only a layer on top of BLAS/LAPACK

Ecsodikas commented 2 years ago

I found other linear algebra libraries either incredible sophisticated where only a very small percentage is actually interesting for the targeted use-case of Minerva, they used C++ libraries somewhere in the back or I did not find / did not enough research on them. Plus, maybe I suffered a bit from the "not invented here syndrome". But like 9il mentioned, the use case of this library is graphics / visualization and for now it is only here to power a highly unoptimized ray tracer. A huge point I want to have is also the pure functional interface of the library, which is (probably) not given by high performance LA libraries. Another huge point is the "dependency-less-ness". I absolutely don't want any linking to any other libraries outside the D ecosystem (this is mostly not a sane decision that I made for myself).

So all in all, if there is a pure functional, dependency-less linear algebra which is not too filled with operations not needed for graphics/visualization, Minerva could easily replaced by it.

I hope this clears up a bit of why I created Minerva. Thanks for being interested and involved in the topic and in what makes OSS great, because I also think if there is already some library doing something, it would be better to support the already existing thing instead of creating something new.

nordlow commented 2 years ago

Cool. Anyway, you might find my https://github.com/nordlow/phobos-next/blob/master/src/nxt/geometry.d useful. Boost License. Pick what you like.