From 4dd7c77c20c5ee8bcc600f6ad62f32acd40a5120 Mon Sep 17 00:00:00 2001 From: Didictateur Date: Mon, 23 Oct 2023 14:36:21 +0200 Subject: [PATCH] updated Matrix with numpy --- QElephant/Matrix.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/QElephant/Matrix.py b/QElephant/Matrix.py index be98492..3c82d57 100644 --- a/QElephant/Matrix.py +++ b/QElephant/Matrix.py @@ -23,17 +23,8 @@ class Matrix: def __mul__(self, __value: "Matrix") -> "Matrix": if type(__value) is not Matrix: raise ValueError(f"cannot multiply Matrix with {type(__value)}") - - l: list[list[complex]] = [] - for i in range(self.__size[0]*__value.__size[0]): - l.append([0]*(self.__size[1]*__value.__size[1])) - for i in range(self.__size[0]): - for j in range(self.__size[1]): - for x in range(__value.__size[0]): - for y in range(__value.__size[1]): - pos = (i*__value.__size[0]+x, j*__value.__size[1]+y) - l[pos[0]][pos[1]] = self.__m[i][j]*__value.__m[x][y] + l = np.kron(self.__m, __value._Matrix__m).tolist() return Matrix(l) @@ -46,10 +37,7 @@ class Matrix: if not self.__size[1] == len(x): ValueError(f"the vector was expectedd to be of size {self.__size[1]}, but is of size {len(x)}") - y: list[complex] = [0]*self.__size[0] - for i in range(self.__size[0]): - for j in range(self.__size[1]): - y[i] += self.__m[i][j]*x[j] + y: list[complex] = np.dot(self.__m, x).tolist() return y def __str__(self) -> str: