diff options
author | Jay Belanger <jay.p.belanger@gmail.com> | 2008-09-20 22:09:39 +0000 |
---|---|---|
committer | Jay Belanger <jay.p.belanger@gmail.com> | 2008-09-20 22:09:39 +0000 |
commit | 11041c992f7bb7c82c609fc244caa5e0aaa19729 (patch) | |
tree | cc4f68d2e2d407dba898597fcddccb2f0aa5993f /lisp/calc/calc-vec.el | |
parent | f3681087a3c53cb1218be5b66e28b1668f9a8337 (diff) | |
download | emacs-11041c992f7bb7c82c609fc244caa5e0aaa19729.tar.gz |
(calcFunc-venum): Properly handle intervals.
Diffstat (limited to 'lisp/calc/calc-vec.el')
-rw-r--r-- | lisp/calc/calc-vec.el | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el index 5ca08377147..b0220cd89c2 100644 --- a/lisp/calc/calc-vec.el +++ b/lisp/calc/calc-vec.el @@ -1294,18 +1294,24 @@ (defun calcFunc-venum (a) (setq a (calcFunc-vfloor a t)) (or (math-constp a) (math-reject-arg a "*Set must be finite")) - (let ((p a) next) - (while (cdr p) - (setq next (cdr p)) - (if (eq (car-safe (nth 1 p)) 'intv) - (setcdr p (nconc (cdr (calcFunc-index (math-add - (math-sub (nth 3 (nth 1 p)) - (nth 2 (nth 1 p))) - 1) - (nth 2 (nth 1 p)))) - (cdr (cdr p))))) - (setq p next)) - a)) + (let* ((prev a) (this (cdr prev)) this-val next this-last) + (while this + (setq next (cdr this) + this-val (car this)) + (if (eq (car-safe this-val) 'intv) + (progn + (setq this (cdr (calcFunc-index (math-add + (math-sub (nth 3 this-val) + (nth 2 this-val)) + 1) + (nth 2 this-val)))) + (setq this-last (last this)) + (setcdr this-last next) + (setcdr prev this) + (setq prev this-last)) + (setq prev this)) + (setq this next))) + a) (defun calcFunc-vpack (a) (setq a (calcFunc-vfloor a t)) |