Mercurial > emacs
changeset 98282:fe3feb2e202d
(calcFunc-venum): Properly handle intervals.
author | Jay Belanger <jay.p.belanger@gmail.com> |
---|---|
date | Sat, 20 Sep 2008 22:07:17 +0000 |
parents | b65be0dea2c2 |
children | e38f9f28d6ce |
files | lisp/calc/calc-vec.el |
diffstat | 1 files changed, 18 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/calc/calc-vec.el Sat Sep 20 21:55:04 2008 +0000 +++ b/lisp/calc/calc-vec.el Sat Sep 20 22:07:17 2008 +0000 @@ -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))