code: def matrix_multiplication(self, matrix):
          
          resultMatrix = Matrix(matrix.get_width(), self.get_height())
          for r_row in xrange(self._rows):
              for r_col in xrange(matrix.get_width()):
                  #blockwise matrix multiplication hack
                  if isinstance(self.get_array()[0][0], Matrix):
                      blocksize = self.get_array()[0][0].get_width()
                      valueT = Matrix(blocksize, blocksize)
                  else:
                      valueT = 0
                  for column in xrange(matrix.get_height()):
                      valueT += self.get_value(column, r_row) * matrix.get_value(r_col, column)
                  resultMatrix.set_value(r_col, r_row, valueT)
          return resultMatrix
docs: Multiply :py:obj:`self` with the given matrix and return result matrix.
  
          param Matrix matrix: The matrix, which should be multiplied.
  
          :return:    Returns a new Matrix with the result of the multiplication
          :rtype:     Matrix
  
          :note: Make sure, that the matrices can be multiplied.
                  The number of columns of the Matrix instance must match with
                  the number of rows of the Matrix given as parameter.
                  Use is_matrix_mult_possible(matrix) to test.