summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/neps/return-of-revenge-of-matmul-pep.rst7
1 files changed, 7 insertions, 0 deletions
diff --git a/doc/neps/return-of-revenge-of-matmul-pep.rst b/doc/neps/return-of-revenge-of-matmul-pep.rst
index cd4a476a7..69aa77f9e 100644
--- a/doc/neps/return-of-revenge-of-matmul-pep.rst
+++ b/doc/neps/return-of-revenge-of-matmul-pep.rst
@@ -446,11 +446,18 @@ The recommended semantics for ``@`` are:
The recommended semantics for ``@@`` are::
def __matpow__(self, n):
+ if not isinstance(n, numbers.Integral):
+ raise TypeError("n must be integer")
if n == 0:
return identity_matrix_with_shape(self.shape)
+ elif n < 0:
+ return inverse(self) @ (self @@ (n + 1))
else:
return self @ (self @@ (n - 1))
+(Of course we expect that much more efficient implementations will be
+used in practice.)
+
The following projects have expressed an intention to implement ``@``
and ``@@`` on their matrix-like types in a manner consistent with the
above definitions: