On Tuesday, 9 June 2015 at 16:08:40 UTC, Andrei Alexandrescu wrote:
On 6/9/15 1:50 AM, John Colvin wrote:
On Tuesday, 9 June 2015 at 06:59:07 UTC, Andrei Alexandrescu wrote:
(a) Provide standard data layouts in std.array for the typical shapes supported by linear algebra libs: row major, column major, alongside
with striding primitives.

I don't think this is quite the right approach. Multidimensional arrays and matrices are about accessing and iteration over data, not data structures themselves. The standard layouts are common special cases.

I see. So what would be the primitives necessary? Strides (in the form of e.g. special ranges)? What are the things that would make a library vendor or user go, "OK, now I know what steps to take to use my code with D"?


N-dimensional slices can be expressed as N slices and N shifts.
Where shift equals count of elements in source range between front elements of neighboring sub-slices on corresponding slice-level.

private struct Slice(size_t N, Range)
{
    size_t[2][N] slices;
    size_t[N] shifts;
    Range range;
}

Reply via email to