# HG changeset patch # User Jay Belanger # Date 1101508609 0 # Node ID 399026e59f7f615bc8b809048b3727662081a2b1 # Parent f2bcc073e61ed411e7ad316853d16d05b38df325 (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. diff -r f2bcc073e61e -r 399026e59f7f lisp/calc/calc-map.el --- a/lisp/calc/calc-map.el Fri Nov 26 22:36:10 2004 +0000 +++ b/lisp/calc/calc-map.el Fri Nov 26 22:36:49 2004 +0000 @@ -3,8 +3,7 @@ ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2004 Free Software Foundation, Inc. ;; Author: David Gillespie -;; Maintainers: D. Goel -;; Colin Walters +;; Maintainer: Jay Belanger ;; 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)))