
A Thursday 05 March 2009, David Cournapeau escrigué:
I don't understand your argument about Row vs Column matters: which one is best depends on your linear algebra equations. You give an example where Fortran is better, but I can find example where C order will be more appropriate. Most of the time, for anything non trivial, which one is best depends on the dimensions of the problem (Kalman filtering in high dimensional spaces for example), because some parts of the equations are better handled in a row-order fashion, and some other parts in a column order fashion.
Yeah. Yet another (simple) example coming from linear algebra: a matrix multiplied by a vector. Given a (matrix): a = [[0,1,2], [3,4,5], [6,7,8]] and b (vector): b = [[1], [2], [3]] the most intuitive way to do the multiplication is to take the 1st row of a and do a dot product against b, repeating the process for 2nd and 3rd rows of a. C order coincides with this rule, and it is optimal from the point of view of memory access, while Fortran order is not. -- Francesc Alted