1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

(math-ms-temp, math-ms-args): New variables.

(math-multi-subst, math-multi-subst-rec): Replace variables temp and
arg by declared variables.

(calcFunc-reducer): Fixed incorrect variable.

(math-inner-mul-func, math-inner-add-func): New variables.
(calcFunc-inner, math-inner-mats): Replace variables mul-func
and add-func by declared variables.
This commit is contained in:
Jay Belanger 2004-11-26 22:36:49 +00:00
parent 4952f0be95
commit 8b31b5197e

View file

@ -3,8 +3,7 @@
;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2004 Free Software Foundation, Inc.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainers: D. Goel <deego@gnufans.org>
;; Colin Walters <walters@debian.org>
;; Maintainer: Jay Belanger <belanger@truman.edu>
;; This file is part of GNU Emacs.
@ -802,25 +801,34 @@
(cons f args))))))
;;; Do substitutions in parallel to avoid crosstalk.
;; The variables math-ms-temp and math-ms-args are local to
;; math-multi-subst, but are used by math-multi-subst-rec, which
;; is called by math-multi-subst.
(defvar math-ms-temp)
(defvar math-ms-args)
(defun math-multi-subst (expr olds news)
(let ((args nil)
temp)
(let ((math-ms-args nil)
math-ms-temp)
(while (and olds news)
(setq args (cons (cons (car olds) (car news)) args)
(setq math-ms-args (cons (cons (car olds) (car news)) math-ms-args)
olds (cdr olds)
news (cdr news)))
(math-multi-subst-rec expr)))
(defun math-multi-subst-rec (expr)
(cond ((setq temp (assoc expr args)) (cdr temp))
(cond ((setq math-ms-temp (assoc expr math-ms-args))
(cdr math-ms-temp))
((Math-primp expr) expr)
((and (eq (car expr) 'calcFunc-lambda) (> (length expr) 2))
(let ((new (list (car expr)))
(args args))
(math-ms-args math-ms-args))
(while (cdr (setq expr (cdr expr)))
(setq new (cons (car expr) new))
(if (assoc (car expr) args)
(setq args (cons (cons (car expr) (car expr)) args))))
(if (assoc (car expr) math-ms-args)
(setq math-ms-args (cons (cons (car expr) (car expr))
math-ms-args))))
(nreverse (cons (math-multi-subst-rec (car expr)) new))))
(t
(cons (car expr)
@ -1033,7 +1041,7 @@
(calcFunc-mod . math-mod)
(calcFunc-vconcat .
math-concat) )))
lfunc)))
func)))
(while (cdr vec)
(setq expr (funcall lfunc expr (nth 1 vec))
vec (cdr vec)))))
@ -1222,7 +1230,13 @@
(math-normalize (cons 'vec (nreverse mat)))))
(defun calcFunc-inner (mul-func add-func a b)
;; The variables math-inner-mul-func and math-inner-add-func are
;; local to calcFunc-inner, but are used by math-inner-mats,
;; which is called by math-inner-mats.
(defvar math-inner-mul-func)
(defvar math-inner-add-func)
(defun calcFunc-inner (math-inner-mul-func math-inner-add-func a b)
(or (math-vectorp a) (math-reject-arg a 'vectorp))
(or (math-vectorp b) (math-reject-arg b 'vectorp))
(if (math-matrixp a)
@ -1240,7 +1254,7 @@
(math-dimension-error))))
(if (math-matrixp b)
(nth 1 (math-inner-mats (list 'vec a) b))
(calcFunc-reduce add-func (calcFunc-map mul-func a b)))))
(calcFunc-reduce math-inner-add-func (calcFunc-map math-inner-mul-func a b)))))
(defun math-inner-mats (a b)
(let ((mat nil)
@ -1250,8 +1264,8 @@
(setq col cols
row nil)
(while (> (setq col (1- col)) 0)
(setq row (cons (calcFunc-reduce add-func
(calcFunc-map mul-func
(setq row (cons (calcFunc-reduce math-inner-add-func
(calcFunc-map math-inner-mul-func
(car a)
(math-mat-col b col)))
row)))