Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/abarbu/linear-algebra

Chicken egg for linear algebra
https://github.com/abarbu/linear-algebra

Last synced: 25 days ago
JSON representation

Chicken egg for linear algebra

Awesome Lists containing this project

README

        

[[tags: egg math]]
[[toc:]]

This page is maintained in the package's
[[https://github.com/abarbu/linear-algebra|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)
(p l)
(q l)
(collinear? l1 l2)
(point-on-line-segment? r l)
(intersection-point l1 l2)
(cross? l1 l2)
(intersect? l1 l2)
(line-tangent l)
(normal-2d l)
(line-segment-length l)
(read-line-segments-from-file pathname)
(write-line-segments-to-file line-segments pathname)

=== Vectors

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

=== Matrices

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

=== Sparse matrices

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

=== Traversal

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

=== Statistics

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

=== Misc

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

=== License

Copyright 2010-2012 Purdue University. All rights reserved.

Contact Andrei Barbu, [email protected].

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.