summaryrefslogtreecommitdiff
path: root/libguile
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2011-03-06 20:27:40 -0500
committerMark H Weaver <mhw@netris.org>2011-03-08 18:20:11 -0500
commit0748e3f3f07fb6b6680160ea488d73b04506f8c7 (patch)
treec54bb203016ea206fed48616ad5d00e31fab20dd /libguile
parent5d344028fbf8b3e764549d975b20aa20ae316aa9 (diff)
downloadguile-0748e3f3f07fb6b6680160ea488d73b04506f8c7.tar.gz
Quotient, remainder and modulo accept inexact integers
* libguile/numbers.c (scm_quotient, scm_remainder, scm_modulo): Accept inexact integers as well as exact ones, as required by the R5RS. * test-suite/tests/numbers.test (quotient, remainder, modulo): Add tests.
Diffstat (limited to 'libguile')
-rw-r--r--libguile/numbers.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libguile/numbers.c b/libguile/numbers.c
index be86eb575..f8891fa87 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -796,9 +796,9 @@ SCM_PRIMITIVE_GENERIC (scm_quotient, "quotient", 2, 0, 0,
"Return the quotient of the numbers @var{x} and @var{y}.")
#define FUNC_NAME s_scm_quotient
{
- if (SCM_LIKELY (SCM_I_INUMP (x)) || SCM_LIKELY (SCM_BIGP (x)))
+ if (SCM_LIKELY (scm_is_integer (x)))
{
- if (SCM_LIKELY (SCM_I_INUMP (y)) || SCM_LIKELY (SCM_BIGP (y)))
+ if (SCM_LIKELY (scm_is_integer (y)))
return scm_truncate_quotient (x, y);
else
SCM_WTA_DISPATCH_2 (g_scm_quotient, x, y, SCM_ARG2, s_scm_quotient);
@@ -817,9 +817,9 @@ SCM_PRIMITIVE_GENERIC (scm_remainder, "remainder", 2, 0, 0,
"@end lisp")
#define FUNC_NAME s_scm_remainder
{
- if (SCM_LIKELY (SCM_I_INUMP (x)) || SCM_LIKELY (SCM_BIGP (x)))
+ if (SCM_LIKELY (scm_is_integer (x)))
{
- if (SCM_LIKELY (SCM_I_INUMP (y)) || SCM_LIKELY (SCM_BIGP (y)))
+ if (SCM_LIKELY (scm_is_integer (y)))
return scm_truncate_remainder (x, y);
else
SCM_WTA_DISPATCH_2 (g_scm_remainder, x, y, SCM_ARG2, s_scm_remainder);
@@ -839,9 +839,9 @@ SCM_PRIMITIVE_GENERIC (scm_modulo, "modulo", 2, 0, 0,
"@end lisp")
#define FUNC_NAME s_scm_modulo
{
- if (SCM_LIKELY (SCM_I_INUMP (x)) || SCM_LIKELY (SCM_BIGP (x)))
+ if (SCM_LIKELY (scm_is_integer (x)))
{
- if (SCM_LIKELY (SCM_I_INUMP (y)) || SCM_LIKELY (SCM_BIGP (y)))
+ if (SCM_LIKELY (scm_is_integer (y)))
return scm_floor_remainder (x, y);
else
SCM_WTA_DISPATCH_2 (g_scm_modulo, x, y, SCM_ARG2, s_scm_modulo);