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:
parent
4952f0be95
commit
8b31b5197e
1 changed files with 28 additions and 14 deletions
|
|
@ -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)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue