From 2830fd91c623979e3c82c15fd2c560febf1e93de Mon Sep 17 00:00:00 2001 From: Mikael Djurfeldt Date: Thu, 20 Sep 2001 18:53:32 +0000 Subject: [PATCH] * numbers.c (scm_integer_expt): Accept inexact integer in second argument. (Thanks to Bill Schottstaedt.) --- libguile/ChangeLog | 5 +++++ libguile/numbers.c | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libguile/ChangeLog b/libguile/ChangeLog index ce096c2a2..0d4ec3953 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,8 @@ +2001-09-20 Mikael Djurfeldt + + * numbers.c (scm_integer_expt): Accept inexact integer in second + argument. (Thanks to Bill Schottstaedt.) + 2001-09-20 Rob Browning * .cvsignore: add version.h diff --git a/libguile/numbers.c b/libguile/numbers.c index 266d09932..11fc86f55 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -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; -- 2.20.1