2 (defun mtrix-transpose (mtrix)
3 (apply #'mapcar
#'list mtrix
))
5 (defun mtrix-addn (&rest matrs
)
6 (apply #'mapcar
#'tuple-addn matrs
))
8 (defun mtrix-subtrn (&rest matrs
)
9 (apply #'mapcar
#'tuple-subtrn matrs
))
11 (defun scalar-mtrix-multn (k a
)
12 "Multiply a scalar /k/ and matrix /a/."
15 (scalar-tuple-multn k arow
))
18 (defun mtrix-mult2n (a b
)
19 "Multiply 2 matrices."
23 (mapcar #'scalar-tuple-multn
27 (defun mtrix-multn (&rest mats
)
28 "Standard matrix multiplication."
29 (do ((a (car mats
) (mtrix-mult2n a
(car tomult
)))
30 (tomult (cdr mats
) (cdr tomult
)))
33 (defun mtrix-coltuple-multn (a u
)
34 (declare (inline dot-prod
))
35 "Multiply matrix /a/ and column vector /u/."
37 :collect
(dot-prod row u
)))