On Thursday, 7 September 2017 at 20:46:22 UTC, jmh530 wrote:
On Thursday, 7 September 2017 at 12:28:00 UTC, jmh530 wrote:
On Thursday, 7 September 2017 at 12:27:19 UTC, jmh530 wrote:

auto x = data.sliced(2, 3).universal;

Err, (3, 4) not (2, 3)

All kinds of screwed up. This is what I get for not testing things before I post them.

unittest {
    auto data = iota(12);

    auto x = data.sliced(3, 4).universal;
    assert(x.strides == [4, 1]);
    assert(x[1, 2] == data[1 * 4 + 2 * 1]);

    auto y = x.transposed;
    assert(y.strides == [1, 4]);
    assert(y[1, 2] == data[1 * 1 + 2 * 4]);
}

Another small difference is slicing:
For example, for contiguous matrix m:
1. m[a .. b]         is contiguous
2. m[i]              is contiguous
3. m[a .. b, i] is universal (because there are no 1D canonical slices)
4. m[a .. b, c .. d] is canonical

BTW, could you please update the docs or may be write a small article for Mir blog?
I will be happy to answer your questions if any.

Best Regards,
Ilya

Reply via email to