-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcache.py
33 lines (30 loc) · 1 KB
/
cache.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# cached values
import numpy as np
from numpy.linalg import inv
def make_cache_matrix(matrix):
inverse = None
def set(new_matrix):
nonlocal matrix
matrix = new_matrix
nonlocal inverse
inverse = None
def get():
return matrix
def set_inverse(new_inverse):
nonlocal inverse
inverse = new_inverse
def get_inverse():
return inverse
return {'set' : set, 'get': get, 'set_inverse': set_inverse, 'get_inverse': get_inverse}
def cache_solve(function_dict):
inverse = function_dict['get_inverse']()
if inverse is not None:
print("This inverse is retrieved from cache (previously calculated):")
return(inverse)
temp_matrix = function_dict['get']()
inverse = inv(temp_matrix)
function_dict['set_inverse'](inverse)
print("This inverse is freshly calculated:")
return inverse
test_matrix = np.append([[1, 9, 3], [5, 4, 6]], [[7, 5, 9]], axis=0)
test2 = np.append([[2, 9, 3], [5, 4, 6]], [[7, 5, 9]], axis=0)