485bed07e1b12640f489c8ac18fb13cf5ccbc6b6
2 (in-package :lineal.math
)
4 (defun mtrix-transpose (mtrix)
5 (apply #'mapcar
#'list mtrix
))
7 (defun mtrix-addn (&rest matrs
)
8 (apply #'mapcar
#'tuple-addn matrs
))
10 (defun mtrix-subtrn (&rest matrs
)
11 (apply #'mapcar
#'tuple-subtrn matrs
))
13 (defun scalar-mtrix-multn (k a
)
14 "Multiply a scalar /k/ and matrix /a/."
17 (scalar-tuple-multn k arow
))
20 (defun mtrix-mult2n (a b
)
21 "Multiply 2 matrices."
25 (mapcar #'scalar-tuple-multn
29 (defun mtrix-multn (&rest mats
)
30 "Standard matrix multiplication."
31 (do ((a (car mats
) (mtrix-mult2n a
(car tomult
)))
32 (tomult (cdr mats
) (cdr tomult
)))
35 (defun mtrix-coltuple-multn (a u
)
36 (declare (inline dot-prod
))
37 "Multiply matrix /a/ and column vector /u/."
39 :collect
(dot-prod row u
)))