diff options
author | Mark H Weaver <mhw@netris.org> | 2013-12-20 18:12:37 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2014-01-08 21:42:16 -0500 |
commit | 900a897cd31df98df06b84a478b77a7438739b54 (patch) | |
tree | d165b8b39954d1c004780e34974c1ab211754cce /libguile/numbers.c | |
parent | f659df44954a7f182361395396c5e0340b08c7dd (diff) | |
download | guile-900a897cd31df98df06b84a478b77a7438739b54.tar.gz |
Implement 'exact-integer?' and 'scm_is_exact_integer'.
* libguile/numbers.c (scm_exact_integer_p, scm_is_exact_integer):
New procedures.
(scm_integer_p): Improve docstring.
* libguile/numbers.h (scm_exact_integer_p, scm_is_exact_integer):
New prototypes.
* doc/ref/api-data.texi (Integers): Add docs.
* test-suite/tests/numbers.test ("exact-integer?"): Add tests.
Diffstat (limited to 'libguile/numbers.c')
-rw-r--r-- | libguile/numbers.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/libguile/numbers.c b/libguile/numbers.c index 22b53a502..51e813ac9 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -6515,8 +6515,8 @@ SCM_DEFINE (scm_rational_p, "rational?", 1, 0, 0, SCM_DEFINE (scm_integer_p, "integer?", 1, 0, 0, (SCM x), - "Return @code{#t} if @var{x} is an integer number, @code{#f}\n" - "else.") + "Return @code{#t} if @var{x} is an integer number,\n" + "else return @code{#f}.") #define FUNC_NAME s_scm_integer_p { if (SCM_I_INUMP (x) || SCM_BIGP (x)) @@ -6531,6 +6531,19 @@ SCM_DEFINE (scm_integer_p, "integer?", 1, 0, 0, } #undef FUNC_NAME +SCM_DEFINE (scm_exact_integer_p, "exact-integer?", 1, 0, 0, + (SCM x), + "Return @code{#t} if @var{x} is an exact integer number,\n" + "else return @code{#f}.") +#define FUNC_NAME s_scm_exact_integer_p +{ + if (SCM_I_INUMP (x) || SCM_BIGP (x)) + return SCM_BOOL_T; + else + return SCM_BOOL_F; +} +#undef FUNC_NAME + SCM scm_i_num_eq_p (SCM, SCM, SCM); SCM_PRIMITIVE_GENERIC (scm_i_num_eq_p, "=", 0, 2, 1, @@ -9604,6 +9617,12 @@ scm_is_integer (SCM val) } int +scm_is_exact_integer (SCM val) +{ + return scm_is_true (scm_exact_integer_p (val)); +} + +int scm_is_signed_integer (SCM val, scm_t_intmax min, scm_t_intmax max) { if (SCM_I_INUMP (val)) |