From d5d98cb660f7a8c7897c228414deb169222e3254 Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Thu, 5 Jul 1990 21:35:57 +0000 Subject: [PATCH] Added ext: in front of truly-the. Changed plusp to minusp in multiply-fixnums so that it will not negate 0. --- code/bignum.lisp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/bignum.lisp b/code/bignum.lisp index a35d708b9..d485ddfb7 100644 --- a/code/bignum.lisp +++ b/code/bignum.lisp @@ -548,22 +548,22 @@ (defun multiply-fixnums (a b) (declare (fixnum a b)) - (let* ((a-plusp (plusp a)) - (b-plusp (plusp b))) + (let* ((a-minusp (minusp a)) + (b-minusp (minusp b))) (multiple-value-bind (high low) - (%multiply (%fixnum-to-digit (if a-plusp a (- a))) - (%fixnum-to-digit (if b-plusp b (- b)))) + (%multiply (%fixnum-to-digit (if a-minusp (- a) a)) + (%fixnum-to-digit (if b-minusp (- b) b))) (if (and (zerop high) (%digit-0-or-plusp low)) - (let ((low (truly-the (unsigned-byte 31) - (%fixnum-digit-with-correct-sign low)))) - (if (eq a-plusp b-plusp) + (let ((low (ext:truly-the (unsigned-byte 31) + (%fixnum-digit-with-correct-sign low)))) + (if (eq a-minusp b-minusp) low (- low))) (let ((res (%allocate-bignum 2))) (%bignum-set res 0 low) (%bignum-set res 1 high) - (unless (eq a-plusp b-plusp) (negate-bignum-in-place res)) + (unless (eq a-minusp b-minusp) (negate-bignum-in-place res)) (%normalize-bignum res 2)))))) -- GitLab