On Thu, 29 Apr 2010 19:16:49 -0400, Gareth Charnock <gareth....@gmail.com> wrote:

Jérôme M. Berger wrote:
Gareth Charnock wrote:
PS: Okay so I just had a looked at the matrix and vector classes in
Ogre3D and irrlicht. Looks like they both define v*v as element wise
multiplication but m*m is matrix multiplication. That just seems even
more inconsistent.
        Eigen (http://eigen.tuxfamily.org/ ) uses '*' for the matrix
multiplication. v*v is an error (incompatible shapes). Element wise
operations can be done like this: v.cwise()*v
                Jerome
That's an very impressive looking library if even half of what they claim is true. I can't believe I've missed this for so long (found the boost matrix library, blitz++, the matrix template library, FLENS, something called armadillo but not eigen. I do believe all my C++ linear algebra woes are over.

Eigen seems to treat vectors as 1 by n matrices and if you do this you get the matrix-vector product and the dot product for free as these are all the same operation. Probably v^T*v would be the dot product. Expression templates should make these operations efficient.


Actually, express templates, though they give nice syntax result in a lot of temporaries, which hurt performance. Check out Don's BLADE library and the associated talks and posts.

Reply via email to