import operator
shape = self.shape
if index >= reduce(operator.mul, shape):
raise ApiError("value %s of index to large for matrix of size %s" % (index, shape))
if index < 0:
raise ApiError("Negative value %s of index not allowed" % index)
result = len(shape) * [None]
for ii in range(len(shape)-1,-1,-1):
index,result[ii] = divmod(index,shape[ii])
result = tuple(result)