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 qrecord
p lprocedure
q lprocedure
collinear? l1 l2procedure
point-on-line-segment? r lprocedure
intersection-point l1 l2procedure
cross? l1 l2procedure
intersect? l1 l2procedure
line-tangent lprocedure
normal-2d lprocedure
line-segment-length lprocedure
write-line-segments-to-file line-segments pathnameprocedure

Vectors

x vprocedure
y vprocedure
z vprocedure
dot u vprocedure
cross-2d u vprocedure
cross u vprocedure
v+ u vprocedure
v- u vprocedure
k*v k vprocedure
v*k v kprocedure
k+v k vprocedure
v+k v kprocedure
v/k v kprocedure
v* u vprocedure
v/ u vprocedure
v= u vprocedure
rotate-90 uprocedure
rotate-180 uprocedure
rotate-270 uprocedure
perpendicular? u vprocedure
parallel? u vprocedure
magnitude-squared vprocedure
magnitude vprocedure
unit vprocedure
distance-squared u vprocedure
distance u vprocedure
clockwise-angle? u v wprocedure
clockwise-or-same-angle? u v wprocedure
append-vector vec1 vec2procedure

Matrices

matrix? vprocedure
list->matrix lprocedure
make-matrix m n #!rest &restprocedure
make-3-by-3-matrix a11 a12 a13 a21 a22 a23 a31 a32 a33procedure
matrix-copy mprocedure
matrix-rows aprocedure
matrix-columns aprocedure
matrix-ref a i jprocedure
matrix-set! a i j xprocedure
matrix-row-ref a iprocedure
matrix-column-ref a jprocedure
matrix-row-set! a i vprocedure
vector->row-matrix vprocedure
vector->column-matrix vprocedure
m+ a bprocedure
m- a bprocedure
m+k m kprocedure
m+k-diagonal m kprocedure
k+m k mprocedure
m*v a vprocedure
matrix-transpose aprocedure
outer-product f u vprocedure
self-outer-product f vprocedure
m* a bprocedure
m*. a bprocedure
m/. a bprocedure
v*m v aprocedure
k*m k mprocedure
m*k m kprocedure
m/k m kprocedure
v*m*v v mprocedure
determinant aprocedure
invert-matrix aprocedure
simplex a m1 m2 m3procedure
jacobi aprocedure
eigenvalues aprocedure
eigenvectors aprocedure
vector->diagonal-matrix vprocedure
identity-matrix nprocedure
clip-eigenvalues a vprocedure
eigenvector-angle1 mprocedure
eigenvector-angle2 mprocedure
left-pseudo-inverse mprocedure
right-pseudo-inverse mprocedure
ref-1d m aprocedure
ref-2d m a bprocedure
ref-3d m a b cprocedure
ref-4d m a b c dprocedure
ref-5d m a b c d eprocedure
map-n-vector-2d f m nprocedure
map-n-vector-3d f m n pprocedure
map-n-vector-4d f m n p qprocedure
map-n-vector-5d f m n p q rprocedure
matrix-sum f n iprocedure
matrix-sum-2d f m n iprocedure
shape-matrix v cprocedure
unshape-matrix mprocedure
crop m x y w hprocedure
submatrix m x-offset y-offset x-size y-sizeprocedure
matrix-ref-nd m #!rest isprocedure
matrix-3d-ref a s i jprocedure
matrix-set-nd! m v #!rest isprocedure
matrix-3d-set! a v s i jprocedure
map-matrix-nd f m nprocedure
for-each-matrix-nd f m nprocedure
map-matrix f mprocedure
for-each-matrix f mprocedure
map-matrix-3d f mprocedure
for-each-matrix-3d f mprocedure
map-n-matrix f i jprocedure
for-each-n-matrix f i jprocedure
map-indexed-matrix f mprocedure
for-each-indexed-matrix f mprocedure
map-indexed-matrix-3d f pprocedure
for-each-indexed-matrix-3d f pprocedure

Sparse matrices

define-structure sparse-matrix row column blankrecord
define-structure sparse-matrix-row element i up downrecord
define-structure sparse-matrix-column element j left rightrecord
define-structure sparse-matrix-element value i up down j left rightrecord
create-sparse-matrix blankprocedure
sparse-matrix-ref sparse-matrix i jprocedure

Traversal

every-n-2d p v wprocedure
every-n-3d p v w xprocedure
every-n-4d p v w x yprocedure
every-n-5d p v w x y zprocedure
product-2d f m nprocedure
sum-2d f m nprocedure
sum-3d f m n pprocedure
sum-4d f m n p qprocedure
sum-pairs f mprocedure
vector-sum f n iprocedure
vector-sum-2d f m n iprocedure
sum-f f lprocedure
sum-vector vprocedure
sum-vector-f f vprocedure

Statistics

list-mean pprocedure
list-covariance lprocedure
list-variance sprocedure
list-skewness lprocedure
list-kurtosis lprocedure
list-correlation l1 l2procedure
vector-mean vprocedure
vector-variance vprocedure
vector-skewness vprocedure
vector-kurtosis vprocedure
vector-correlation v1 v2procedure
coefficient-of-bimodality vprocedure
vectors-mean valuesprocedure
vectors-variance mu valuesprocedure
mahalanobis-distance val mu isigmaprocedure
frequencies lprocedure

Misc

*linear-algebra:epsilon*parameter
piconstant
half-piconstant
two-piconstant
minus-piconstant
two-pi/360constant
three-sixty/two-piconstant
sqr xprocedure