assignment 2, matrix inverse cache