changeset 66478:57b78015fb51

Add functions to autoloads. (math-identity-matrix-p, math-ident-row-p): New functions.
author Jay Belanger <jay.p.belanger@gmail.com>
date Fri, 28 Oct 2005 03:51:00 +0000
parents 117f8e71b37a
children 5da715ee89b8
files lisp/calc/calc-ext.el
diffstat 1 files changed, 31 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calc/calc-ext.el	Fri Oct 28 01:59:12 2005 +0000
+++ b/lisp/calc/calc-ext.el	Fri Oct 28 03:51:00 2005 +0000
@@ -659,7 +659,7 @@
  ("calc-alg" calc-has-rules math-defsimplify
 calc-modify-simplify-mode calcFunc-collect calcFunc-esimplify
 calcFunc-islin calcFunc-islinnt calcFunc-lin calcFunc-linnt
-calcFunc-simplify calcFunc-subst math-beforep
+calcFunc-simplify calcFunc-subst calcFunc-writeoutpower math-beforep
 math-build-polynomial-expr math-expand-formula math-expr-contains
 math-expr-contains-count math-expr-depends math-expr-height
 math-expr-subst math-expr-weight math-integer-plus math-is-linear
@@ -923,7 +923,7 @@
  ("calc-alg" calc-alg-evaluate calc-apart calc-collect calc-expand
 calc-expand-formula calc-factor calc-normalize-rat calc-poly-div
 calc-poly-div-rem calc-poly-gcd calc-poly-rem calc-simplify
-calc-simplify-extended calc-substitute)
+calc-simplify-extended calc-substitute calc-writeoutpower)
 
  ("calcalg2" calc-alt-summation calc-derivative
 calc-dump-integral-cache calc-integral calc-num-integral
@@ -2107,6 +2107,35 @@
     (and (cdr dims)
 	 (= (car dims) (nth 1 dims)))))
 
+;;; True if MAT is an identity matrix.
+(defun math-identity-matrix-p (mat &optional mul)
+  (if (math-square-matrixp mat)
+      (let ((a (if mul
+                   (nth 1 (nth 1 mat))
+                 1))
+            (n (1- (length mat)))
+            (i 1))
+        (while (and (<= i n)
+                    (math-ident-row-p (nth i mat) i a))
+          (setq i (1+ i)))
+        (if (> i n)
+            a
+          nil))))
+
+(defun math-ident-row-p (row n &optional a)
+  (unless a
+    (setq a 1))
+  (and
+   (not (memq nil (mapcar 
+                   (lambda (x) (eq x 0))
+                   (nthcdr (1+ n) row))))
+   (not (memq nil (mapcar 
+                   (lambda (x) (eq x 0))
+                   (butlast 
+                    (cdr row)
+                    (- (length row) n)))))
+   (eq (elt row n) a)))
+
 ;;; True if A is any scalar data object.  [P x]
 (defun math-objectp (a)    ;  [Public]
   (or (integerp a)