1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-30 19:53:09 +00:00

* lisp/emacs-lisp/cl-extra.el (cl-isqrt): Speed up bignum case

This commit is contained in:
Stefan Monnier 2019-06-25 17:08:01 -04:00
parent 955e370373
commit 5463b7e77a

View File

@ -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))