common lisp!

This commit is contained in:
Elizabeth Hunt 2023-09-07 12:19:32 -06:00
parent dadf03afa3
commit 9fcd733232
Signed by: simponic
GPG Key ID: 52B3774857EB24B1
7 changed files with 83 additions and 0 deletions

29
cl/lizfcm.asd Normal file
View File

@ -0,0 +1,29 @@
(asdf:defsystem "lizfcm"
:version "0.1.0"
:author "Elizabeth Hunt"
:license "MIT"
:components ((:module "src"
:components
((:module "utils"
:components
((:file "within-range" :depends-on ("package"))
(:file "package")))
(:module "approx"
:components
((:file "derivative" :depends-on ("package"))
(:file "package")))))))
(asdf:defsystem "lizfcm/tests"
:author "Elizabeth Hunt"
:license "MIT"
:depends-on (:fiveam
:lizfcm)
:components ((:module "tests"
:components
((:file "approx" :depends-on ("suite"))
(:file "suite"))))
:perform (asdf:test-op (o c) (uiop:symbol-call
:fiveam :run!
(uiop:find-symbol* :lizfcm-test-suite :lizfcm/tests))))

View File

@ -0,0 +1,8 @@
(in-package :lizfcm.approx)
(defun derivative-at (f x &optional (delta 0.01))
(let* ((x2 (+ x delta))
(x1 (- x delta))
(y2 (apply f (list x2)))
(y1 (apply f (list x1))))
(/ (- y2 y1) (- x2 x1))))

View File

@ -0,0 +1,4 @@
(in-package :cl-user)
(defpackage lizfcm.approx
(:use :cl)
(:export :derivative-at))

View File

@ -0,0 +1,4 @@
(in-package :cl-user)
(defpackage lizfcm.utils
(:use :cl)
(:export :within-range-p))

View File

@ -0,0 +1,5 @@
(in-package :lizfcm.utils)
(defun within-range-p (x true-value delta)
(and (< x (+ true-value delta))
(> x (- true-value delta))))

23
cl/tests/approx.lisp Normal file
View File

@ -0,0 +1,23 @@
(defpackage lizfcm/tests.approx
(:use :cl
:fiveam
:lizfcm.approx
:lizfcm.utils
:lizfcm/tests)
(:export :approx-suite))
(in-package :lizfcm/tests.approx)
(def-suite approx-suite
:in lizfcm-test-suite)
(in-suite approx-suite)
(test derivative-at
:description "derivative at is within bounds"
(let ((f (lambda (x) (* x x)))
(x 2)
(f-prime-at-x 4)
(delta 0.01))
(is (within-range-p
(derivative-at f x delta)
f-prime-at-x
0.1))))

10
cl/tests/suite.lisp Normal file
View File

@ -0,0 +1,10 @@
(in-package :cl-user)
(defpackage lizfcm/tests
(:use :cl
:fiveam)
(:export :run!
:lizfcm-test-suite))
(in-package :lizfcm/tests)
(def-suite lizfcm-test-suite
:description "The ultimate parent test suite")