On Tuesday, 13 March 2018 at 13:02:45 UTC, Ilya Yaroshenko wrote:
On Tuesday, 13 March 2018 at 12:23:23 UTC, jmh530 wrote:
On Tuesday, 13 March 2018 at 10:35:15 UTC, 9il wrote:
On Tuesday, 13 March 2018 at 04:35:53 UTC, jmh530 wrote:
[snip]

What's TMMat?

TMat is a transposed matrix. Not sure for now if it would be required.


There are some people who like being able to specify a whether a matrix has column or row layout. Would an option to control this be the same thing?

Good point. Would matrix(j, i) syntax solve this issue? One of reasons to introduce Mat is API simplicity. ndslice has 3 compile time params. I hope we would have only type for Mat, like Mat!double.

I'm not sure I understand what your syntax solution does...

But I agree that there is a benefit from API simplicity. It would probably be easier to just say Mat is row-major and have another that is column-major (or have the options in ndslice). Nevertheless, it can't help to look at what other matrix libraries do.

Eigen's (C++ library) Matrix class uses template arguments to set storage order (_Options). It looks like Eigen has six template arguments.
https://eigen.tuxfamily.org/dox/classEigen_1_1Matrix.html

Numpy does the same thing at run-time
https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html

Also, many of the languages that emphasize linear algebra strongly (Fortran, Matlab, etc) use column-major order. Row-order is most popular coming from C-based languages.
https://en.wikipedia.org/wiki/Row-_and_column-major_order

Reply via email to