chickadee » linear-algebra

This page is maintained in the package's github repository.

linear-algebra

This implements various linear algebra and other math operations. Much of this code is originally from Jeff Siskind's QobiScheme.

Line segments

(define-structure line-segment p q) record
(p l) procedure
(q l) procedure
(collinear? l1 l2) procedure
(point-on-line-segment? r l) procedure
(intersection-point l1 l2) procedure
(cross? l1 l2) procedure
(intersect? l1 l2) procedure
(line-tangent l) procedure
(normal-2d l) procedure
(line-segment-length l) procedure
(read-line-segments-from-file pathname) procedure
(write-line-segments-to-file line-segments pathname) procedure

Vectors

(x v) procedure
(y v) procedure
(z v) procedure
(dot u v) procedure
(cross-2d u v) procedure
(cross u v) procedure
(v+ u v) procedure
(v- u v) procedure
(k*v k v) procedure
(v*k v k) procedure
(k+v k v) procedure
(v+k v k) procedure
(v/k v k) procedure
(v* u v) procedure
(v/ u v) procedure
(v= u v) procedure
(rotate-90 u) procedure
(rotate-180 u) procedure
(rotate-270 u) procedure
(perpendicular? u v) procedure
(parallel? u v) procedure
(magnitude-squared v) procedure
(magnitude v) procedure
(unit v) procedure
(distance-squared u v) procedure
(distance u v) procedure
(clockwise-angle? u v w) procedure
(clockwise-or-same-angle? u v w) procedure
(append-vector vec1 vec2) procedure

Matrices

(matrix? v) procedure
(list->matrix l) procedure
(make-matrix m n . &rest) procedure
(make-3-by-3-matrix a11 a12 a13 a21 a22 a23 a31 a32 a33) procedure
(matrix-copy m) procedure
(matrix-rows a) procedure
(matrix-columns a) procedure
(matrix-ref a i j) procedure
(matrix-set! a i j x) procedure
(matrix-row-ref a i) procedure
(matrix-column-ref a j) procedure
(matrix-row-set! a i v) procedure
(vector->row-matrix v) procedure
(vector->column-matrix v) procedure
(m+ a b) procedure
(m- a b) procedure
(m+k m k) procedure
(m+k-diagonal m k) procedure
(k+m k m) procedure
(m*v a v) procedure
(matrix-transpose a) procedure
(outer-product f u v) procedure
(self-outer-product f v) procedure
(m* a b) procedure
(m*. a b) procedure
(m/. a b) procedure
(v*m v a) procedure
(k*m k m) procedure
(m*k m k) procedure
(m/k m k) procedure
(v*m*v v m) procedure
(determinant a) procedure
(invert-matrix a) procedure
(simplex a m1 m2 m3) procedure
(jacobi a) procedure
(eigenvalues a) procedure
(eigenvectors a) procedure
(vector->diagonal-matrix v) procedure
(identity-matrix n) procedure
(clip-eigenvalues a v) procedure
(eigenvector-angle1 m) procedure
(eigenvector-angle2 m) procedure
(left-pseudo-inverse m) procedure
(right-pseudo-inverse m) procedure
(ref-1d m a) procedure
(ref-2d m a b) procedure
(ref-3d m a b c) procedure
(ref-4d m a b c d) procedure
(ref-5d m a b c d e) procedure
(map-n-vector-2d f m n) procedure
(map-n-vector-3d f m n p) procedure
(map-n-vector-4d f m n p q) procedure
(map-n-vector-5d f m n p q r) procedure
(matrix-sum f n i) procedure
(matrix-sum-2d f m n i) procedure
(shape-matrix v c) procedure
(unshape-matrix m) procedure
(crop m x y w h) procedure
(submatrix m x-offset y-offset x-size y-size) procedure
(matrix-ref-nd m . is) procedure
(matrix-3d-ref a s i j) procedure
(matrix-set-nd! m v . is) procedure
(matrix-3d-set! a v s i j) procedure
(map-matrix-nd f m n) procedure
(for-each-matrix-nd f m n) procedure
(map-matrix f m) procedure
(for-each-matrix f m) procedure
(map-matrix-3d f m) procedure
(for-each-matrix-3d f m) procedure
(map-n-matrix f i j) procedure
(for-each-n-matrix f i j) procedure
(map-indexed-matrix f m) procedure
(for-each-indexed-matrix f m) procedure
(map-indexed-matrix-3d f p) procedure
(for-each-indexed-matrix-3d f p) procedure

Sparse matrices

(define-structure sparse-matrix row column blank) record
(define-structure sparse-matrix-row element i up down) record
(define-structure sparse-matrix-column element j left right) record
(define-structure sparse-matrix-element value i up down j left right) record
(create-sparse-matrix blank) procedure
(sparse-matrix-ref sparse-matrix i j) procedure

Traversal

(every-n-2d p v w) procedure
(every-n-3d p v w x) procedure
(every-n-4d p v w x y) procedure
(every-n-5d p v w x y z) procedure
(product-2d f m n) procedure
(sum-2d f m n) procedure
(sum-3d f m n p) procedure
(sum-4d f m n p q) procedure
(sum-pairs f m) procedure
(vector-sum f n i) procedure
(vector-sum-2d f m n i) procedure
(sum-f f l) procedure
(sum-vector v) procedure
(sum-vector-f f v) procedure

Statistics

(list-mean p) procedure
(list-covariance l) procedure
(list-variance s) procedure
(list-skewness l) procedure
(list-kurtosis l) procedure
(list-correlation l1 l2) procedure
(vector-mean v) procedure
(vector-variance v) procedure
(vector-skewness v) procedure
(vector-kurtosis v) procedure
(vector-correlation v1 v2) procedure
(coefficient-of-bimodality v) procedure
(vectors-mean values) procedure
(vectors-variance mu values) procedure
(mahalanobis-distance val mu isigma) procedure
(frequencies l) procedure

Misc

*linear-algebra:epsilon* parameter
pi constant
half-pi constant
two-pi constant
minus-pi constant
two-pi/360 constant
three-sixty/two-pi constant
(sqr x) procedure
(quadratic1 a b c) procedure
(quadratic2 a b c) procedure

License

  Copyright 2010-2012 Purdue University. All rights reserved.
  Contact Andrei Barbu, andrei@0xab.com.
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Lesser General Public License for more details.
  You should have received a copy of the GNU Lesser General Public License
  along with this program.  If not, see http://www.gnu.org/licenses.

Contents »