lizfcm/deprecated-cl/tests,vector.lisp

43 lines
1.3 KiB
Common Lisp

(defpackage lizfcm/tests.vector
(:use :cl
:fiveam
:lizfcm.vector
:lizfcm.utils
:lizfcm/tests)
(:export :vector-suite))
(in-package :lizfcm/tests.vector)
(def-suite vector-suite
:in lizfcm-test-suite)
(in-suite vector-suite)
(test p-norm
:description "computes p-norm"
(let ((v '(1 1))
(length (sqrt 2))
(2-norm (p-norm 2)))
(is (within-range-p (funcall 2-norm v)
length
0.00001))))
(test vector-distance
:description "computes distance via norm"
(let ((v1 '(0 0))
(v2 '(1 1))
(dist (sqrt 2)))
(is (within-range-p (distance v1 v2 (p-norm 2))
dist
0.00001))))
(test least-squares
:description "least squares is correct enough"
(let ((x '(0 1 2 3 4))
(y '(1 2 3 4 5)))
(destructuring-bind (m b) (lizfcm.vector:least-squares-reg x y)
(is (within-range-p m 1 0.00001))
(is (within-range-p b 1 0.00001))))
(let ((x '(1 2 3 4 5 6 7))
(y '(0.5 3 2 3.5 5 6 7.5)))
(destructuring-bind (m b) (lizfcm.vector:least-squares-reg x y)
(is (within-range-p m 1 0.3))))) ;; just a guestimate for best fit