+ def get_expression(self, multi_index):
+ assert(len(multi_index) == len(self.shape))
+ block_sizes = self.block_sizes()
+ block_multi_index = []
+ block_local_index = []
+
+ for dimension in range(0, len(block_sizes)):
+ offset = multi_index[dimension]
+ block_index = 0
+ while(offset - block_sizes[dimension][block_index] >= 0):
+ block_index += 1
+ offset -= block_sizes[dimension][block_index]
+
+ block_multi_index.append(block_index)
+ block_local_index.append(offset)
+
+ return self.blocks[tuple(block_multi_index)].get_expression(tuple(block_local_index))
+