From: stassats <sta...@us...> - 2016-10-15 11:52:09
|
The branch "master" has been updated in SBCL: via 252e9a90d6b5b556646e365338060b25bdd3b5ab (commit) from 6ca4d6bea2f35be0f5ee0bbe064d95d34686c9ba (commit) - Log ----------------------------------------------------------------- commit 252e9a90d6b5b556646e365338060b25bdd3b5ab Author: Stas Boukarev <sta...@gm...> Date: Sat Oct 15 14:40:17 2016 +0300 Speed up SIGNUM on floats. Return 1.0/-1.0 instead of doing the costly (/ number (abs number)). --- src/code/numbers.lisp | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/code/numbers.lisp b/src/code/numbers.lisp index 319d95f..9c6ac93 100644 --- a/src/code/numbers.lisp +++ b/src/code/numbers.lisp @@ -334,9 +334,13 @@ (declare (explicit-check)) (if (zerop number) number - (if (rationalp number) - (if (plusp number) 1 -1) - (/ number (abs number))))) + (number-dispatch ((number number)) + (((foreach fixnum rational single-float double-float)) + (if (plusp number) + (coerce 1 '(dispatch-type number)) + (coerce -1 '(dispatch-type number)))) + ((complex) + (/ number (abs number)))))) ;;;; ratios ----------------------------------------------------------------------- hooks/post-receive -- SBCL |