Re: [eigen] ISO C++ working groups on Linear Algebra / Machine Learning

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]



In my opinion, provided we just need a single matrix-matrix multiplication, like C = dot(A, B),
the notation doesn't matter. However, for more complicated expressions, e.g.

A * ( D +  C * E * B + B * E * C)

a 'star' like notation is much simpler to verify for correctness, I can just
copy from my LaTeX documentation,  than something like

dot( A, D + dot( C , dot (E, B) + dot( B, dot(E,C))))

I personally never came across some code where such a complex operations occur. Using operations such as + and * allows code doing such operations being easier to read but also needs the complexity of template meta-programming to avoid temporaries. This is the road that has been chosen by Eigen, Blaze and Armadillo. Eigen does a pretty good job at doing that.

I just believe that if we need to have something in the C++ standard library, it does not have to copy those libraries. Eigen already solve a problem which is allowing users to write “Matlab-like code” in C++. I just want to stress out that there are some people out there who needs another problem to be solved.

If you have a look at Python/Numpy or Julia, you’ll find out that those multidimensional arrays are decoupled from linear algebra, and I believe that this is something that is very powerful and needed. Data structures should be decoupled from algorithms. I know that this is against object oriented programming, but I think that OOP has done way too much harm to the software community. It is extremely helpful in some fields such as GUI frameworks, but I don’t believe it does good thing to the scientific community. Have a look at Julia which is very modern and which is designed for maths : they leave “objects” on the side of the road.

François


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/