(defun mmul (A B) (let* ((m (car (array-dimensions A))) (n (cadr (array-dimensions A))) (l (cadr (array-dimensions B))) (C (make-array `(,m ,l) :initial-element 0))) (loop for i from 0 to (- m 1) do (loop for k from 0 to (- l 1) do (setf (aref C i k) (loop for j from 0 to (- n 1) sum (* (aref A i j) (aref B j k)))))) C))