mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
calc/calc.el (math-normalize-error): New variable.
(math-normalize): Set `math-normalize-error' to t when there's an error. calc/calc-alg.el (math-simplify): Don't simplify when `math-normalize' returns an error.
This commit is contained in:
parent
26918d77f7
commit
9052f9f01e
@ -1,3 +1,12 @@
|
||||
2012-07-29 Jay Belanger <jay.p.belanger@gmail.com>
|
||||
|
||||
* calc/calc.el (math-normalize-error): New variable.
|
||||
(math-normalize): Set `math-normalize-error' to t
|
||||
when there's an error.
|
||||
|
||||
* calc/calc-alg.el (math-simplify): Don't simplify when
|
||||
`math-normalize' returns an error.
|
||||
|
||||
2012-07-29 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* international/mule-cmds.el (set-locale-environment): Revert last
|
||||
|
@ -356,6 +356,8 @@
|
||||
;; math-simplify-step, which is called by math-simplify.
|
||||
(defvar math-top-only)
|
||||
|
||||
;; math-normalize-error is declared in calc.el.
|
||||
(defvar math-normalize-error)
|
||||
(defun math-simplify (top-expr)
|
||||
(let ((math-simplifying t)
|
||||
(math-top-only (consp calc-simplify-mode))
|
||||
@ -383,10 +385,12 @@
|
||||
(calc-with-default-simplification
|
||||
(while (let ((r simp-rules))
|
||||
(setq res (math-normalize top-expr))
|
||||
(while r
|
||||
(setq res (math-rewrite res (car r))
|
||||
r (cdr r)))
|
||||
(not (equal top-expr (setq res (math-simplify-step res)))))
|
||||
(if (not math-normalize-error)
|
||||
(progn
|
||||
(while r
|
||||
(setq res (math-rewrite res (car r))
|
||||
r (cdr r)))
|
||||
(not (equal top-expr (setq res (math-simplify-step res)))))))
|
||||
(setq top-expr res)))))
|
||||
top-expr)
|
||||
|
||||
|
@ -2583,7 +2583,11 @@ largest Emacs integer.")
|
||||
;;; Reduce an object to canonical (normalized) form. [O o; Z Z] [Public]
|
||||
|
||||
(defvar math-normalize-a)
|
||||
(defvar math-normalize-error nil
|
||||
"Non-nil if the last call the `math-normalize' returned an error.")
|
||||
|
||||
(defun math-normalize (math-normalize-a)
|
||||
(setq math-normalize-error nil)
|
||||
(cond
|
||||
((not (consp math-normalize-a))
|
||||
(if (integerp math-normalize-a)
|
||||
@ -2672,31 +2676,38 @@ largest Emacs integer.")
|
||||
(fboundp (car math-normalize-a))))
|
||||
(apply (car math-normalize-a) args)))))
|
||||
(wrong-number-of-arguments
|
||||
(setq math-normalize-error t)
|
||||
(calc-record-why "*Wrong number of arguments"
|
||||
(cons (car math-normalize-a) args))
|
||||
nil)
|
||||
(wrong-type-argument
|
||||
(setq math-normalize-error t)
|
||||
(or calc-next-why
|
||||
(calc-record-why "Wrong type of argument"
|
||||
(cons (car math-normalize-a) args)))
|
||||
nil)
|
||||
(args-out-of-range
|
||||
(setq math-normalize-error t)
|
||||
(calc-record-why "*Argument out of range"
|
||||
(cons (car math-normalize-a) args))
|
||||
nil)
|
||||
(inexact-result
|
||||
(setq math-normalize-error t)
|
||||
(calc-record-why "No exact representation for result"
|
||||
(cons (car math-normalize-a) args))
|
||||
nil)
|
||||
(math-overflow
|
||||
(setq math-normalize-error t)
|
||||
(calc-record-why "*Floating-point overflow occurred"
|
||||
(cons (car math-normalize-a) args))
|
||||
nil)
|
||||
(math-underflow
|
||||
(setq math-normalize-error t)
|
||||
(calc-record-why "*Floating-point underflow occurred"
|
||||
(cons (car math-normalize-a) args))
|
||||
nil)
|
||||
(void-variable
|
||||
(setq math-normalize-error t)
|
||||
(if (eq (nth 1 err) 'var-EvalRules)
|
||||
(progn
|
||||
(setq var-EvalRules nil)
|
||||
|
Loading…
Reference in New Issue
Block a user