X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fnumbers.lisp;h=3f02be24e69dc65c015e07684a9e45c011fe3ead;hb=abfd7c2c9d4882e05a2e9953baf87f8e02a6a1af;hp=caafd1be6f67c95181cf3e7de6eb2f1623505b0f;hpb=58490f7806d56c0b9f08e39d75f40c1b264446a6;p=sbcl.git diff --git a/src/code/numbers.lisp b/src/code/numbers.lisp index caafd1b..3f02be2 100644 --- a/src/code/numbers.lisp +++ b/src/code/numbers.lisp @@ -969,39 +969,6 @@ the first." ((complex (or float rational)) (and (= (realpart x) y) (zerop (imagpart x)))))) - -(defun eql (obj1 obj2) - #!+sb-doc - "Return T if OBJ1 and OBJ2 represent the same object, otherwise NIL." - (or (eq obj1 obj2) - (if (or (typep obj2 'fixnum) - (not (typep obj2 'number))) - nil - (macrolet ((foo (&rest stuff) - `(typecase obj2 - ,@(mapcar (lambda (foo) - (let ((type (car foo)) - (fn (cadr foo))) - `(,type - (and (typep obj1 ',type) - (,fn obj1 obj2))))) - stuff)))) - (foo - (single-float eql) - (double-float eql) - #!+long-float - (long-float eql) - (bignum - (lambda (x y) - (zerop (bignum-compare x y)))) - (ratio - (lambda (x y) - (and (eql (numerator x) (numerator y)) - (eql (denominator x) (denominator y))))) - (complex - (lambda (x y) - (and (eql (realpart x) (realpart y)) - (eql (imagpart x) (imagpart y)))))))))) ;;;; logicals @@ -1393,7 +1360,7 @@ the first." (number-dispatch ((u integer) (v integer)) ((fixnum fixnum) (locally - (declare (optimize (speed 3) (safety 0))) + (declare (optimize (speed 3) (safety 0))) (do ((k 0 (1+ k)) (u (abs u) (ash u -1)) (v (abs v) (ash v -1))) @@ -1409,11 +1376,11 @@ the first." (setq temp (- u v)) (when (zerop temp) (let ((res (ash u k))) - (declare (type (signed-byte 31) res) + (declare (type sb!vm:signed-word res) (optimize (inhibit-warnings 3))) (return res)))))) - (declare (type (mod 30) k) - (type (signed-byte 31) u v))))) + (declare (type (mod #.sb!vm:n-word-bits) k) + (type sb!vm:signed-word u v))))) ((bignum bignum) (bignum-gcd u v)) ((bignum fixnum)