summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorJay Belanger <jay.p.belanger@gmail.com>2004-11-07 23:33:29 +0000
committerJay Belanger <jay.p.belanger@gmail.com>2004-11-07 23:33:29 +0000
commit4710da05cb3e569a3701b06b83a16a63cc3ac24c (patch)
tree3caa8ea943ecb6ed521c36f9e6a203ac15bc42e7 /lisp
parent3fc61fde57cae39c7b4c922355ac056b71b17abf (diff)
downloademacs-4710da05cb3e569a3701b06b83a16a63cc3ac24c.tar.gz
emacs-4710da05cb3e569a3701b06b83a16a63cc3ac24c.tar.bz2
emacs-4710da05cb3e569a3701b06b83a16a63cc3ac24c.zip
(math-linear-subst-tried): New variable.
(math-do-integral): Set `math-linear-subst-tried' to nil. (math-do-integral-methods): Use `math-linear-subst-tried' to determine what type of substitution to try. (math-integ-try-linear-substituion): Set `math-linear-subst-tried' to t.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/calc/calcalg2.el9
1 files changed, 7 insertions, 2 deletions
diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el
index 2a463009e58..7e8484ea79f 100644
--- a/lisp/calc/calcalg2.el
+++ b/lisp/calc/calcalg2.el
@@ -738,8 +738,12 @@
(setcar (cdr cur-record) 'cancelled)))
(math-replace-integral-parts (car expr)))))))
+(defvar math-linear-subst-tried t
+ "Non-nil means that a linear substitution has been tried.")
+
(defun math-do-integral (expr)
- (let (t1 t2)
+ (let ((math-linear-subst-tried nil)
+ t1 t2)
(or (cond ((not (math-expr-contains expr math-integ-var))
(math-mul expr math-integ-var))
((equal expr math-integ-var)
@@ -977,7 +981,7 @@
;; Integration by substitution, for various likely sub-expressions.
;; (In first pass, we look only for sub-exprs that are linear in X.)
- (or (if math-enable-subst
+ (or (if math-linear-subst-tried
(math-integ-try-substitutions expr)
(math-integ-try-linear-substitutions expr))
@@ -1189,6 +1193,7 @@
;;; Look for substitutions of the form u = a x + b.
(defun math-integ-try-linear-substitutions (sub-expr)
+ (setq math-linear-subst-tried t)
(and (not (Math-primp sub-expr))
(or (and (not (memq (car sub-expr) '(+ - * / neg)))
(not (and (eq (car sub-expr) '^)