[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 5463b7e: * lisp/emacs-lisp/cl-extra.el (cl-isqrt):
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master 5463b7e: * lisp/emacs-lisp/cl-extra.el (cl-isqrt): Speed up bignum case |
Date: |
Tue, 25 Jun 2019 17:08:06 -0400 (EDT) |
branch: master
commit 5463b7e77ab4f22bb10192fb23af6df88dde37e6
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* lisp/emacs-lisp/cl-extra.el (cl-isqrt): Speed up bignum case
---
lisp/emacs-lisp/cl-extra.el | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 9053329..ca33c56 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -332,10 +332,9 @@ If so, return the true (non-nil) value returned by
PREDICATE.
;;;###autoload
(defun cl-isqrt (x)
- "Return the integer square root of the argument."
+ "Return the integer square root of the (integer) argument."
(if (and (integerp x) (> x 0))
- (let ((g (cond ((<= x 100) 10) ((<= x 10000) 100)
- ((<= x 1000000) 1000) (t x)))
+ (let ((g (ash 2 (/ (logb x) 2)))
g2)
(while (< (setq g2 (/ (+ g (/ x g)) 2)) g)
(setq g g2))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 5463b7e: * lisp/emacs-lisp/cl-extra.el (cl-isqrt): Speed up bignum case,
Stefan Monnier <=