Hello everyone!

I noticed that powers of non-square matrices (with MatPow) do not raise an 
error, e.g. if A = MatrixSymbol('A', 2, 3) then MatPow(A, 10) does not 
raise. I would assume that this is just an oversight, but then I see 
explicit unit tests for MatPow(A, 1), which make me wonder if perhaps there 
is a reason this is supported. However the behavior is not consistent, 
since A ** 1 does raise an error anyway. But then again ZeroMatrix(2, 3) ** 
1 does not raise.

As far as I know most textbooks do not define A ** n at all for any value 
of n when A is not square. This might also be of interest: 
https://math.stackexchange.com/questions/101590/what-is-zero-power-of-a-non-square-matrix

So question: Would it be an acceptable breaking change to completely forbid 
powers of non-square matrices, including the barely useful MatPow(A, 0) and 
MatPow(A, 1)? It doesn't seem to break any tests (other than 
test_matpow.py).

Background: I plan to do some clean-up in the MatPow code to make it follow 
the same convention used in other places, e.g. move the argument validation 
from MatrixExpr.__pow__() to MatPow.__new__() and move some specialized 
code from MatPow.doit() to the _eval_power() methods of respective 
sub-classes.

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/8b817360-def8-43c9-84a0-bfd59b3c6651%40googlegroups.com.

Reply via email to