
On Thu, May 7, 2015 at 5:55 AM, David Bellot <david.bellot@gmail.com> wrote:
Me: Just #include this and use types called floatvec2 and floatmat2x2 and + and * just work.
my cosmetic and artistic opinion about that: with ublas, you can do that:
#include <boost/ numeric/ublas/matrix.hpp>
// this is not needed but it's useful to have them #include <boost/ numeric/ublas/io.hpp> #include <boost/ numeric/ublas/assignment.hpp>
int main() { fixed_matrix<double,3,3> m1;
m1 <<= 1,2,3 4,5,6, 7,8,9;
cout << m1 << endl; }
And personally, I find fixed_matrix<double,3,3> to be easier to remember and more explicit to use than floatvec2 or dblmat2x2 or whatever else. And I don't have to look into the doc, if I can't remember if the matrix name was DblMat2x2 or double_mat2_2... or Matrix2D ? (no, it's not the same library).
Perhaps I'm missing something in the ublas design -- please someone correct me if I'm wrong that in ublas operator overloads (e.g. matrix multiplication) are defined as members of various ublas types that have matrix semantics. QVM uses a different approach: it defines *only* namespace-scope operator overloads that then work on any type with matrix semantics. So yes, you might or might not prefer fixed_matrix<double,3,3> to double33 or dblmat3x3 -- QVM is neutral to such preferences. It just gives you the relevant operations for whatever types you might have on your hands. Thanks, Emil