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