That is neat‼ Extremely compact code and probably runs much faster. I didn't know about the existence of ArrSum, possibly because it doesn't appear in the list of array functions although it is in the index. Here it is now:
'
' matrix multiply A*B giving C
' returns 0 on error, else 1
' the parameter symbolized by C should be passed by reference
Sub matmpy(A(),B(),C())
dim adim(0)
dim bdim(0)
adim() = getdim(A())
bdim() = getdim(B())
' must be 2 dims
if adim(0)<>2 or bdim(0)<>2 then return 0
' number of columns of A must equal number of rows of B
if adim(2)<>bdim(1) then return 0
for arow = 0 to adim(1)
for bcol = 0 to bdim(2)
' A row vector multiplied pairwise by B column vector, then summed
C(arow,bcol) = ArrSum(A(arow,*)*B(*,bcol))
next bcol
next arow
return 1
End Sub