2 (in-package :clem-test
)
4 (defun matrix-test-1 ()
5 (let ((m (array->matrix
#2A
((1 2 3)(4 1 6)(7 1 9)))))
6 (print-matrix (invert-matrix m
)))
9 (defun matrix-test-2 ()
10 (let ((m (array->matrix
#2A
((1 2 3)(4 5 6)(7 8 9)))))
15 (let ((q (val m
0 0)))
16 (map-row m
0 #'(lambda (x) (/ x q
)))
17 (scalar-mult-col m
0 4)
18 (scalar-divide-col m
0 3)
24 (defun matrix-test-3 ()
25 (let ((m1 (array->matrix
#2A
((1 2 3)(4 5 6)(7 8 9) (10 11 12)))))
29 (let ((t1 (transpose m1
)))
33 (let ((m2 (array->matrix
#2A
((1 2 3 4 5 6 7 8 9)))))
40 (defun matrix-test-4 ()
41 (let ((m3 (array->matrix
#2A
((1) (2) (3) (4) (5) (6) (7) (8) (9)))))
46 (defun matrix-test-5 ()
47 (let ((m (array->matrix
#2A
((1 2 3)(4 5 6)(7 8 9)))))
48 (print-matrix (mat-mult m m
))
49 (let ((inv (invert-matrix m
)))
50 (if inv
(print-matrix (invert-matrix m
)))
54 (defun matrix-test-6 ()
55 (let ((m (array->matrix
#2A
((1 2 3)(4 5 6)(7 8 9)))))
56 (print-matrix (mat-mult m m
))
57 (let ((inv (invert-matrix m
)))
58 (if inv
(print-matrix (invert-matrix m
)))
63 (let ((run (ch-util:make-test-run
)))
64 (ch-util:run-test
#'matrix-test-1
"matrix-test-1" run
)
65 (ch-util:run-test
#'matrix-test-2
"matrix-test-2" run
)
66 (ch-util:run-test
#'matrix-test-3
"matrix-test-3" run
)
67 (ch-util:run-test
#'matrix-test-4
"matrix-test-4" run
)
68 (ch-util:run-test
#'matrix-test-5
"matrix-test-5" run
)
69 (format t
"~&~A of ~A tests passed" (ch-util:test-run-passed run
) (ch-util:test-run-tests run
))
72 (defun run-defmatrix-tests ()
73 ;; (pprint (macroexpand '(defmatrixtype ape-matrix () :element-type (unsigned-byte 8))))
74 (defmatrixtype ape-matrix
()
75 :element-type
(unsigned-byte 8)
76 :accumulator-type
(unsigned-byte 32)
77 :minval
23 :maxval
95)
78 (let ((q (make-instance 'ape-matrix
:rows
4 :cols
4)))
82 (describe (clem::matrix-vals q
))
83 (map-matrix-fit #'(lambda (a i j
)
90 (let ((q (make-instance 'sb8-matrix
:rows
4 :cols
4)))
91 (map-matrix-fit #'(lambda (a i j
)
92 (if (oddp (+ i j
)) -
255 255)
97 (let ((q (make-instance 't-matrix
:rows
4 :cols
4)))
98 (describe (clem::matrix-vals q
))
100 (let ((q (make-instance 'bit-matrix
:rows
4 :cols
4)))
101 (describe (clem::matrix-vals q
))