diff options
author | Thomas Bushnell, BSG <tb@debian.org> | 2007-12-28 16:25:32 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:39 -0800 |
commit | d8ae23691ed6392b7f320f5fa7d4dd78ae52c10e (patch) | |
tree | b20b8bc02e854c4c86d39ee22a0638a8b06e01af /determ.scm | |
parent | edd1ebef3ad774e7cbcc2f5918d555bfb0b44091 (diff) | |
parent | 64f037d91e0c9296dcaef9a0ff3eb33b19a2ed34 (diff) | |
download | slib-d8ae23691ed6392b7f320f5fa7d4dd78ae52c10e.tar.gz slib-d8ae23691ed6392b7f320f5fa7d4dd78ae52c10e.zip |
Import Debian changes 3a5-1debian/3a5-1
slib (3a5-1) unstable; urgency=low
* New upstream release.
* slib.texi (Library Catalogs): Repeat change from 3a3-3.
* Makefile: Repeat $(htmldir)slib_toc.html changes from 3a2-1.
* guile.init: (library-vicinity): Repeat change from 3a4-2.
* debian/rules (binary-indep): Don't hide .init files in a separate
subdirectory, thus conforming better to the usual slib practice. Put a
symlink in place to ease transitions. (Closes: #407370).
Diffstat (limited to 'determ.scm')
-rw-r--r-- | determ.scm | 48 |
1 files changed, 38 insertions, 10 deletions
@@ -114,18 +114,46 @@ matrix)))) ;;@body -;;Returns the product of matrices @1 and @2. -(define (matrix:product m1 m2) +;;Returns the element-wise sum of matricies @1 and @2. +(define (matrix:sum m1 m2) (define mat1 (matrix->lists m1)) (define mat2 (matrix->lists m2)) - (define (dot-product v1 v2) (apply + (map * v1 v2))) - (coerce-like-arg - (map (lambda (arow) - (apply map - (lambda bcol (dot-product bcol arow)) - mat2)) - mat1) - m1)) + (coerce-like-arg (map (lambda (row1 row2) (map + row1 row2)) mat1 mat2) + m1)) + +;;@body +;;Returns the element-wise difference of matricies @1 and @2. +(define (matrix:difference m1 m2) + (define mat1 (matrix->lists m1)) + (define mat2 (matrix->lists m2)) + (coerce-like-arg (map (lambda (row1 row2) (map - row1 row2)) mat1 mat2) + m1)) + +(define (matrix:scale m1 scl) + (coerce-like-arg (map (lambda (row1) (map (lambda (x) (* scl x)) row1)) + (matrix->lists m1)) + m1)) + +;;@args m1 m2 +;;Returns the product of matrices @1 and @2. +;;@args m1 z +;;Returns matrix @var{m1} times scalar @var{z}. +;;@args z m1 +;;Returns matrix @var{m1} times scalar @var{z}. +(define (matrix:product m1 m2) + (cond ((number? m1) (matrix:scale m2 m1)) + ((number? m2) (matrix:scale m1 m2)) + (else + (let ((mat1 (matrix->lists m1)) + (mat2 (matrix->lists m2))) + (define (dot-product v1 v2) (apply + (map * v1 v2))) + (coerce-like-arg + (map (lambda (arow) + (apply map + (lambda bcol (dot-product bcol arow)) + mat2)) + mat1) + m1))))) ;;@body ;;@1 must be a square matrix. |