From: Paul Eggert Date: Thu, 6 Oct 2011 07:51:21 +0000 (-0700) Subject: * floatfns.c (Fexpt): Avoid unnecessary multiplications. X-Git-Tag: emacs-24.2.90~471^2~6^2~166 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8d1da888c6f3c6763c7e6e73a5bdd3bf997d0cfc;p=emacs.git * floatfns.c (Fexpt): Avoid unnecessary multiplications. --- diff --git a/src/floatfns.c b/src/floatfns.c index 6158b9bd26d..f8b775011ae 100644 --- a/src/floatfns.c +++ b/src/floatfns.c @@ -490,26 +490,13 @@ DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0, x = XINT (arg1); y = XINT (arg2); - acc = 1; + acc = (y & 1 ? x : 1); - if (y < 0) + while ((y >>= 1) != 0) { - if (x == 1) - acc = 1; - else if (x == -1) - acc = (y & 1) ? -1 : 1; - else - acc = 0; - } - else - { - while (y > 0) - { - if (y & 1) - acc *= x; - x *= x; - y >>= 1; - } + x *= x; + if (y & 1) + acc *= x; } XSETINT (val, acc); return val;