client
verb
test()
var matrix
r = turn(matrix(), 90)
a = matrix(0, 1, 0, -1, 0, 0)
b = matrix(0, -1, 0, 1, 0, 0)
src << "a: " + matrix2text(a)
src << "b: " + matrix2text(b)
src << "a * b: " + matrix2text(a * b)
src << "r: " + matrix2text(r)
src << "~r: " + matrix2text(~r)
src << "r * ~r: " + matrix2text(r * ~r)
Output:
runtime error: Invalid matrix proc name: test (/client/verb/test) source file: demo.dm,39 usr: Kaiochao (/mob/player) src: Kaiochao (/client) usr.loc: the floor (1,1,1) (/turf/floor) call stack: Kaiochao (/client): test() a: [[0, 1, 0], [-1, 0, 0]] b: [[0, -1, 0], [1, 0, 0]] a * b: [[1, 0, 0], [0, 1, 0]] r: [[0, 1, 0], [-1, 0, 0]]
Clearly, since A * B == I, B must be the inverse of A (which it is).
However, if you try to get the inverse of A with ~A or A.Invert(), you get an "Invalid matrix" runtime error.
This happens for the matrices turn(matrix(), 90) and turn(matrix(), 270), as far as I know.
It's the same for the latest stable version (510.1347) as it is for the latest beta version (511.1359).