summaryrefslogtreecommitdiff
path: root/lisp/calc/calcalg3.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/calc/calcalg3.el')
-rw-r--r--lisp/calc/calcalg3.el51
1 files changed, 27 insertions, 24 deletions
diff --git a/lisp/calc/calcalg3.el b/lisp/calc/calcalg3.el
index 1b2b2b8f349..842290df259 100644
--- a/lisp/calc/calcalg3.el
+++ b/lisp/calc/calcalg3.el
@@ -1,6 +1,9 @@
-;; Calculator for GNU Emacs, part II [calc-alg-3.el]
+;;; calcalg3.el --- more algebraic functions for Calc
+
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
-;; Written by Dave Gillespie, daveg@synaptics.com.
+
+;; Author: David Gillespie <daveg@synaptics.com>
+;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
+;;; Commentary:
+;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@@ -601,9 +606,9 @@
(set (nth 2 (aref math-root-vars m)) (car p)))
(setq expr-val (math-evaluate-expr expr)
jacob-val (math-evaluate-expr jacob))
- (or (and (math-constp expr-val)
- (math-constp jacob-val))
- (math-reject-arg guess "*Newton's method encountered a singularity"))
+ (unless (and (math-constp expr-val)
+ (math-constp jacob-val))
+ (math-reject-arg guess "*Newton's method encountered a singularity"))
(setq next (math-add guess (math-div (math-float (math-neg expr-val))
(math-float jacob-val)))
p guess p2 next)
@@ -626,10 +631,10 @@
(var-DUMMY nil)
(jacob (list 'vec))
p p2 m row)
- (or (eq (car-safe var) 'vec)
- (math-reject-arg var 'vectorp))
- (or (= (length var) (1+ n))
- (math-dimension-error))
+ (unless (eq (car-safe var) 'vec)
+ (math-reject-arg var 'vectorp))
+ (unless (= (length var) (1+ n))
+ (math-dimension-error))
(setq expr (copy-sequence expr))
(while (>= n (length math-root-vars))
(let ((symb (intern (concat "math-root-v"
@@ -648,10 +653,10 @@
(while (setq p2 (cdr p2))
(setcar p2 (math-expr-subst (car p2) (car p)
(aref math-root-vars m)))))
- (or (eq (car-safe guess) 'vec)
- (math-reject-arg guess 'vectorp))
- (or (= (length guess) (1+ n))
- (math-dimension-error))
+ (unless (eq (car-safe guess) 'vec)
+ (math-reject-arg guess 'vectorp))
+ (unless (= (length guess) (1+ n))
+ (math-dimension-error))
(setq guess (copy-sequence guess)
p guess)
(while (setq p (cdr p))
@@ -677,10 +682,10 @@
(setq m (math-abs-approx guess))
(math-newton-multi expr jacob n guess guess
(if (math-zerop m) '(float 1 3) (math-mul m 10))))
- (or (eq (car-safe var) 'var)
- (math-reject-arg var "*Expected a variable"))
- (or (math-expr-contains expr var)
- (math-reject-arg expr "*Formula does not contain specified variable"))
+ (unless (eq (car-safe var) 'var)
+ (math-reject-arg var "*Expected a variable"))
+ (unless (math-expr-contains expr var)
+ (math-reject-arg expr "*Formula does not contain specified variable"))
(if (assq (car expr) calc-tweak-eqn-table)
(setq expr (math-sub (nth 1 expr) (nth 2 expr))))
(math-with-extra-prec 2
@@ -758,6 +763,7 @@
a
(math-reject-arg a 'realp))))
+(defvar math-min-or-max "minimum")
;;; A bracket for a minimum is a < b < c where f(b) < f(a) and f(b) < f(c).
@@ -1145,7 +1151,6 @@
(if isvec
(list 'vec vec (nth 2 res))
(list 'vec (nth 1 vec) (nth 2 res)))))))
-(setq math-min-or-max "minimum")
(defun calcFunc-minimize (expr var guess)
(let ((calc-internal-prec (max (/ calc-internal-prec 2) 3))
@@ -1390,9 +1395,8 @@
;;; The following algorithms come from Numerical Recipes, chapter 14.
-(setq math-dummy-vars [(var DUMMY var-DUMMY)])
-(setq math-dummy-counter 0)
-
+(defvar math-dummy-vars [(var DUMMY var-DUMMY)])
+(defvar math-dummy-counter 0)
(defun math-dummy-variable ()
(if (= math-dummy-counter (length math-dummy-vars))
(let ((symb (intern (format "math-dummy-%d" math-dummy-counter))))
@@ -1403,7 +1407,8 @@
(aref math-dummy-vars math-dummy-counter)
(setq math-dummy-counter (1+ math-dummy-counter))))
-
+(defvar math-in-fit 0)
+(defvar calc-fit-to-trail nil)
(defun calcFunc-fit (expr vars &optional coefs data)
(let ((math-in-fit 10))
@@ -1708,8 +1713,6 @@
'(var nan var-nan)))
expr))))
-(setq math-in-fit 0)
-(setq calc-fit-to-trail nil)
(defun calcFunc-fitvar (x)
(if (>= math-in-fit 2)