Hi Slava,
> hello, may be i'm not first, but i find bug: example A - matrix,
> A^0 = matrix([1,1],[1,1]) or A^(-1)*A = matrix([1,1],[1,1]), expected =matrix([1,0],[0,-1]).
You want . (i.e., dot) for noncommutative multiplication here
instead of * which is commutative multiplication.
Also you want ^^ for exponentiation induced by . .
E.g.
A : matrix ([4, a], [b, 17]);
display2d : false;
A ^^ -1; => matrix([-17/(a*b-68),a/(a*b-68)],[b/(a*b-68),-4/(a*b-68)])
A . %; => matrix([a*b/(a*b-68)-68/(a*b-68),0],[0,a*b/(a*b-68)-68/(a*b-68)])
ratsimp (%); => matrix([1,0],[0,1])
A ^^ 0; => matrix([1,0],[0,1])
In all cases % = most recent preceding result.
Hope this helps,
Robert Dodier