1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-22 20:40:29 +02:00

(scm_integer_expt): Make 0^z == 0 for z != 0.

This commit is contained in:
Marius Vollmer 2002-11-03 17:13:50 +00:00
parent 7f5b1b7739
commit d57ed70201

View file

@ -1244,8 +1244,9 @@ SCM_DEFINE (scm_integer_expt, "integer-expt", 2, 0, 0,
SCM acc = SCM_MAKINUM (1L); SCM acc = SCM_MAKINUM (1L);
int i2; int i2;
#ifdef SCM_BIGDIG #ifdef SCM_BIGDIG
/* 0^0 == 1 according to R5RS */
if (SCM_EQ_P (n, SCM_INUM0) || SCM_EQ_P (n, acc)) 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))) else if (SCM_EQ_P (n, SCM_MAKINUM (-1L)))
return SCM_FALSEP (scm_even_p (k)) ? n : acc; return SCM_FALSEP (scm_even_p (k)) ? n : acc;
#endif #endif