I wrote a program in python3 to find out a product of 2 n*n
matrices, (where n
is a power of 2).
Why the code below does not work out and shows IndexError: invalid index to scalar variable
?
import numpy as np
def product(x, y, k):
def fsum(p, q, m):
r = [[p[i, j] + q[i, j] for j in range(m)] for i in range(m)]
return r
if k == 1:
return x[0][0] * y[0][0]
else:
A = x[0:(k // 2), 0:(k // 2)]
B = x[0:(k // 2), (k // 2):k]
C = x[(k // 2):k, 0:(k // 2)]
D = x[(k // 2):k, (k // 2):k]
E = y[0:(k // 2), 0:(k // 2)]
F = y[0:(k // 2), (k // 2):k]
G = y[(k // 2):k, 0:(k // 2)]
H = y[(k // 2):k, (k // 2):k]
C00 = fsum(product(A, E, k // 2), product(B, G, k // 2), k // 2)
C01 = fsum(product(A, F, k // 2), product(B, H, k // 2), k // 2)
C10 = fsum(product(C, E, k // 2), product(D, G, k // 2), k // 2)
C11 = fsum(product(C, F, k // 2), product(D, H, k // 2), k // 2)
return np.array([[C00, C01], [C10, C11]])
n = int(input('Enter index(power of 2): '))
print('Input 1st matrix')
a = np.array([[int(_) for _ in input().split()] for x in range(n)])
print('Input 2nd matrix')
b = np.array([[int(_) for _ in input().split()] for x in range(n)])
print(product(a, b, n))
input()
nonsensefsum(p, q, m)
? What's wrong withp+q
?