From d57ed70201a9f87d591272c1afe3b1a94f0ff05f Mon Sep 17 00:00:00 2001 From: Marius Vollmer Date: Sun, 3 Nov 2002 17:13:50 +0000 Subject: [PATCH] (scm_integer_expt): Make 0^z == 0 for z != 0. --- libguile/numbers.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libguile/numbers.c b/libguile/numbers.c index 24c1e0f9a..4a177ca2c 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -1244,8 +1244,9 @@ SCM_DEFINE (scm_integer_expt, "integer-expt", 2, 0, 0, SCM acc = SCM_MAKINUM (1L); int i2; #ifdef SCM_BIGDIG + /* 0^0 == 1 according to R5RS */ if (SCM_EQ_P (n, SCM_INUM0) || SCM_EQ_P (n, acc)) - return acc; + return SCM_EQ_P (k, SCM_INUM0)? acc : n; else if (SCM_EQ_P (n, SCM_MAKINUM (-1L))) return SCM_FALSEP (scm_even_p (k)) ? n : acc; #endif