toKey method
Converts an offset
to a key, that is a list of indices.
Implementation
List<int> toKey(int index) {
var value = index - offset;
final key = DataType.integer.newList(rank);
for (var i = 0; i < rank; i++) {
final div = value ~/ strides[i], rem = div % shape[i];
value -= (key[i] = rem) * strides[i];
}
assert(value == 0, 'Invalid index $index');
return key;
}