summaryrefslogtreecommitdiff
path: root/cl/src
diff options
context:
space:
mode:
Diffstat (limited to 'cl/src')
-rw-r--r--cl/src/approx/maceps.lisp13
-rw-r--r--cl/src/approx/package.lisp3
-rw-r--r--cl/src/package.lisp7
-rw-r--r--cl/src/vector/distance.lisp6
-rw-r--r--cl/src/vector/norm.lisp17
-rw-r--r--cl/src/vector/package.lisp7
6 files changed, 52 insertions, 1 deletions
diff --git a/cl/src/approx/maceps.lisp b/cl/src/approx/maceps.lisp
new file mode 100644
index 0000000..cd24482
--- /dev/null
+++ b/cl/src/approx/maceps.lisp
@@ -0,0 +1,13 @@
+(in-package :lizfcm.approx)
+
+(defun compute-maceps (val f)
+ (let* ((h val)
+ (a val)
+ (err val))
+ (loop while (> err 0)
+ do
+ (progn
+ (setf h (/ h 2)
+ err (abs (- (funcall f (+ a h))
+ (funcall f a)))))
+ collect (list a h err))))
diff --git a/cl/src/approx/package.lisp b/cl/src/approx/package.lisp
index 60dd0bb..c11eb60 100644
--- a/cl/src/approx/package.lisp
+++ b/cl/src/approx/package.lisp
@@ -1,4 +1,5 @@
(in-package :cl-user)
(defpackage lizfcm.approx
(:use :cl)
- (:export :derivative-at))
+ (:export :derivative-at
+ :compute-maceps))
diff --git a/cl/src/package.lisp b/cl/src/package.lisp
new file mode 100644
index 0000000..88b10eb
--- /dev/null
+++ b/cl/src/package.lisp
@@ -0,0 +1,7 @@
+(in-package :cl-user)
+(defpackage lizfcm.vector
+ (:use :cl)
+ (:export
+ :n-norm
+ :max-norm
+ :distance))
diff --git a/cl/src/vector/distance.lisp b/cl/src/vector/distance.lisp
new file mode 100644
index 0000000..74631ce
--- /dev/null
+++ b/cl/src/vector/distance.lisp
@@ -0,0 +1,6 @@
+(in-package :lizfcm.vector)
+
+(defun distance (v1 v2 norm)
+ (let* ((d (mapcar #'- v1 v2))
+ (length (funcall norm d)))
+ length))
diff --git a/cl/src/vector/norm.lisp b/cl/src/vector/norm.lisp
new file mode 100644
index 0000000..2158296
--- /dev/null
+++ b/cl/src/vector/norm.lisp
@@ -0,0 +1,17 @@
+(in-package :lizfcm.vector)
+
+(defun p-norm (p)
+ (lambda (v)
+ (expt
+ (reduce (lambda (acc x)
+ (+ acc x))
+ (mapcar (lambda (x)
+ (abs
+ (expt x p)))
+ v))
+ (/ 1 p))))
+
+(defun max-norm (v)
+ (reduce (lambda (acc x)
+ (max acc x))
+ v))
diff --git a/cl/src/vector/package.lisp b/cl/src/vector/package.lisp
new file mode 100644
index 0000000..009b190
--- /dev/null
+++ b/cl/src/vector/package.lisp
@@ -0,0 +1,7 @@
+(in-package :cl-user)
+(defpackage lizfcm.vector
+ (:use :cl)
+ (:export
+ :p-norm
+ :max-norm
+ :distance))