common lisp!
This commit is contained in:
parent
dadf03afa3
commit
9fcd733232
29
cl/lizfcm.asd
Normal file
29
cl/lizfcm.asd
Normal 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))))
|
||||
|
8
cl/src/approx/derivative.lisp
Normal file
8
cl/src/approx/derivative.lisp
Normal 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))))
|
4
cl/src/approx/package.lisp
Normal file
4
cl/src/approx/package.lisp
Normal file
@ -0,0 +1,4 @@
|
||||
(in-package :cl-user)
|
||||
(defpackage lizfcm.approx
|
||||
(:use :cl)
|
||||
(:export :derivative-at))
|
4
cl/src/utils/package.lisp
Normal file
4
cl/src/utils/package.lisp
Normal file
@ -0,0 +1,4 @@
|
||||
(in-package :cl-user)
|
||||
(defpackage lizfcm.utils
|
||||
(:use :cl)
|
||||
(:export :within-range-p))
|
5
cl/src/utils/within-range.lisp
Normal file
5
cl/src/utils/within-range.lisp
Normal 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
23
cl/tests/approx.lisp
Normal 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
10
cl/tests/suite.lisp
Normal 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")
|
Loading…
Reference in New Issue
Block a user