(Fexpt): Use floats for negative exponent.
authorThien-Thi Nguyen <ttn@gnuvola.org>
Sat, 6 Aug 2005 18:27:09 +0000 (18:27 +0000)
committerThien-Thi Nguyen <ttn@gnuvola.org>
Sat, 6 Aug 2005 18:27:09 +0000 (18:27 +0000)
src/ChangeLog
src/floatfns.c

index 6d8608d..9ff58e7 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * floatfns.c (Fexpt): Use floats for negative
+       exponent (computing a root).  Reported by D Goel.
+
 2005-08-02  Richard M. Stallman  <rms@gnu.org>
 
        * frame.c (Fframe_char_width): Doc fix.
index 529e7b7..cbcc0bf 100644 (file)
@@ -460,7 +460,8 @@ DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0,
   CHECK_NUMBER_OR_FLOAT (arg1);
   CHECK_NUMBER_OR_FLOAT (arg2);
   if (INTEGERP (arg1)     /* common lisp spec */
-      && INTEGERP (arg2)) /* don't promote, if both are ints */
+      && INTEGERP (arg2)   /* don't promote, if both are ints, and */
+      && 0 <= XINT (arg2)) /* we are not computing the -ARG2 root */
     {                          /* this can be improved by pre-calculating */
       EMACS_INT acc, x, y;     /* some binary powers of x then accumulating */
       Lisp_Object val;