diff options
author | Andy Wingo <wingo@pobox.com> | 2021-12-19 10:54:47 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2022-01-13 09:37:16 +0100 |
commit | 6298d731155ea35aecf68f21af81f1c4fd2f5e87 (patch) | |
tree | 5aef2df9105d09c1dc5e198cb7dbd343fd0c45aa /libguile/integers.c | |
parent | 459163fca16eacebefa463d514a9364e6adcb779 (diff) | |
download | guile-6298d731155ea35aecf68f21af81f1c4fd2f5e87.tar.gz |
Implement scm_logtest with new integer library
* libguile/integers.c (scm_integer_logtest_ii, scm_integer_logtest_zi)
(scm_integer_logtest_zz): New internal functions.
* libguile/integers.h: Declare the new internal functions.
* libguile/numbers.c (scm_logtest): Use new internal functions.
Diffstat (limited to 'libguile/integers.c')
-rw-r--r-- | libguile/integers.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libguile/integers.c b/libguile/integers.c index 174e42e18..ff5499af9 100644 --- a/libguile/integers.c +++ b/libguile/integers.c @@ -27,6 +27,7 @@ #include <stdio.h> #include <verify.h> +#include "boolean.h" #include "numbers.h" #include "integers.h" @@ -1989,3 +1990,21 @@ scm_integer_logxor_zz (SCM x, SCM y) scm_remember_upto_here_2 (x, y); return take_mpz (result); } + +int +scm_integer_logtest_ii (scm_t_inum x, scm_t_inum y) +{ + return (x & y) ? 1 : 0; +} + +int +scm_integer_logtest_zi (SCM x, scm_t_inum y) +{ + return scm_is_eq (scm_integer_logand_zi (x, y), SCM_INUM0); +} + +int +scm_integer_logtest_zz (SCM x, SCM y) +{ + return scm_is_eq (scm_integer_logand_zz (x, y), SCM_INUM0); +} |