diff --git a/code/numbers.lisp b/code/numbers.lisp index bdf36c4d60f0bb82e0fd36b668a85ba866b92c8d..63c9af61a04e8240ed86c737fab07d00dfa430ed 100644 --- a/code/numbers.lisp +++ b/code/numbers.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.46 2003/01/29 02:16:30 toy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.47 2003/08/07 10:31:42 gerd Exp $") ;;; ;;; ********************************************************************** ;;; @@ -824,6 +824,8 @@ (defun = (number &rest more-numbers) "Returns T if all of its arguments are numerically equal, NIL otherwise." + (declare (optimize (safety 2)) (number number) + (dynamic-extent more-numbers)) (do ((nlist more-numbers (cdr nlist))) ((atom nlist) T) (declare (list nlist)) @@ -831,10 +833,12 @@ (defun /= (number &rest more-numbers) "Returns T if no two of its arguments are numerically equal, NIL otherwise." + (declare (optimize (safety 2)) (number number) + (dynamic-extent more-numbers)) (do* ((head number (car nlist)) (nlist more-numbers (cdr nlist))) ((atom nlist) t) - (declare (list nlist)) + (declare (list nlist) (number head)) (unless (do* ((nl nlist (cdr nl))) ((atom nl) T) (declare (list nl)) @@ -843,46 +847,57 @@ (defun < (number &rest more-numbers) "Returns T if its arguments are in strictly increasing order, NIL otherwise." + (declare (optimize (safety 2)) (real number) + (dynamic-extent more-numbers)) (do* ((n number (car nlist)) (nlist more-numbers (cdr nlist))) ((atom nlist) t) - (declare (list nlist)) + (declare (list nlist) (real n)) (if (not (< n (car nlist))) (return nil)))) (defun > (number &rest more-numbers) "Returns T if its arguments are in strictly decreasing order, NIL otherwise." + (declare (optimize (safety 2)) (real number) + (dynamic-extent more-numbers)) (do* ((n number (car nlist)) (nlist more-numbers (cdr nlist))) ((atom nlist) t) - (declare (list nlist)) + (declare (list nlist) (real n)) (if (not (> n (car nlist))) (return nil)))) (defun <= (number &rest more-numbers) "Returns T if arguments are in strictly non-decreasing order, NIL otherwise." + (declare (optimize (safety 2)) (real number) + (dynamic-extent more-numbers)) (do* ((n number (car nlist)) (nlist more-numbers (cdr nlist))) ((atom nlist) t) - (declare (list nlist)) + (declare (list nlist) (real n)) (if (not (<= n (car nlist))) (return nil)))) (defun >= (number &rest more-numbers) "Returns T if arguments are in strictly non-increasing order, NIL otherwise." + (declare (optimize (safety 2)) (real number) + (dynamic-extent more-numbers)) (do* ((n number (car nlist)) (nlist more-numbers (cdr nlist))) ((atom nlist) t) - (declare (list nlist)) + (declare (list nlist) (real n)) (if (not (>= n (car nlist))) (return nil)))) (defun max (number &rest more-numbers) "Returns the greatest of its arguments." - (do ((nlist more-numbers (cdr nlist)) - (result (the real number))) - ((null nlist) (return result)) - (declare (list nlist)) - (if (> (car nlist) result) (setq result (car nlist))))) + (declare (optimize (safety 2)) (real number) + (dynamic-extent more-numbers)) + (dolist (real more-numbers) + (when (> (the real real) number) + (setq number real))) + (the real number)) (defun min (number &rest more-numbers) "Returns the least of its arguments." + (declare (optimize (safety 2)) (real number) + (dynamic-extent more-numbers)) (do ((nlist more-numbers (cdr nlist)) (result (the real number))) ((null nlist) (return result))