* numbers.c (scm_integer_expt): Accept inexact integer in second
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Thu, 20 Sep 2001 18:53:32 +0000 (18:53 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Thu, 20 Sep 2001 18:53:32 +0000 (18:53 +0000)
argument.  (Thanks to Bill Schottstaedt.)

libguile/ChangeLog
libguile/numbers.c

index ce096c2..0d4ec39 100644 (file)
@@ -1,3 +1,8 @@
+2001-09-20  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * numbers.c (scm_integer_expt): Accept inexact integer in second
+       argument.  (Thanks to Bill Schottstaedt.)
+
 2001-09-20  Rob Browning  <rlb@defaultvalue.org>
 
        * .cvsignore: add version.h
index 266d099..11fc86f 100644 (file)
@@ -1118,7 +1118,15 @@ SCM_DEFINE (scm_integer_expt, "integer-expt", 2, 0, 0,
   else if (SCM_EQ_P (n, SCM_MAKINUM (-1L)))
     return SCM_FALSEP (scm_even_p (k)) ? n : acc;
 #endif
-  SCM_VALIDATE_ULONG_COPY (2,k,i2);
+  if (SCM_REALP (k))
+    {
+      double r = SCM_REAL_VALUE (k);
+      i2 = r;
+      if (i2 != r)
+       SCM_WRONG_TYPE_ARG (2, k);
+    }
+  else
+    SCM_VALIDATE_ULONG_COPY (2,k,i2);
   if (i2 < 0)
     {
       i2 = -i2;