Prevent commutation of elements within non-commutative matrix multiplication.



Hi,

I'm reasonably new to working with matrices in maxima, and I'm having a
problem I hope someone can help me with.
It seems that the inner product is assuming that the elements of a matrix
commute, so running:

declare([a,b],nonscalar)$
display2d:false$
A:matrix([0,a],[b,0])$
A.A;

gives
matrix([a*b,0],[0,a*b])
rather than matrix([a.b,0],[0,b.a]), which is what I need. Is there any way
around this?

Thanks,
Matthew Everitt