summaryrefslogtreecommitdiff
path: root/cl/src
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-09-07 12:19:32 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-09-07 12:19:32 -0600
commit9fcd733232b6f209519d2eadc83ed4cbd3376e0d (patch)
tree0b4dfead39515c11c5aa4a998ffc3683546eef65 /cl/src
parentdadf03afa37c785d5bb68396381eb3105178847f (diff)
downloadcmath-9fcd733232b6f209519d2eadc83ed4cbd3376e0d.tar.gz
cmath-9fcd733232b6f209519d2eadc83ed4cbd3376e0d.zip
common lisp!
Diffstat (limited to 'cl/src')
-rw-r--r--cl/src/approx/derivative.lisp8
-rw-r--r--cl/src/approx/package.lisp4
-rw-r--r--cl/src/utils/package.lisp4
-rw-r--r--cl/src/utils/within-range.lisp5
4 files changed, 21 insertions, 0 deletions
diff --git a/cl/src/approx/derivative.lisp b/cl/src/approx/derivative.lisp
new file mode 100644
index 0000000..280463f
--- /dev/null
+++ b/cl/src/approx/derivative.lisp
@@ -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))))
diff --git a/cl/src/approx/package.lisp b/cl/src/approx/package.lisp
new file mode 100644
index 0000000..60dd0bb
--- /dev/null
+++ b/cl/src/approx/package.lisp
@@ -0,0 +1,4 @@
+(in-package :cl-user)
+(defpackage lizfcm.approx
+ (:use :cl)
+ (:export :derivative-at))
diff --git a/cl/src/utils/package.lisp b/cl/src/utils/package.lisp
new file mode 100644
index 0000000..0436a94
--- /dev/null
+++ b/cl/src/utils/package.lisp
@@ -0,0 +1,4 @@
+(in-package :cl-user)
+(defpackage lizfcm.utils
+ (:use :cl)
+ (:export :within-range-p))
diff --git a/cl/src/utils/within-range.lisp b/cl/src/utils/within-range.lisp
new file mode 100644
index 0000000..9a0b762
--- /dev/null
+++ b/cl/src/utils/within-range.lisp
@@ -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))))