summaryrefslogtreecommitdiff
path: root/libguile/integers.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2021-12-19 10:54:47 +0100
committerAndy Wingo <wingo@pobox.com>2022-01-13 09:37:16 +0100
commit6298d731155ea35aecf68f21af81f1c4fd2f5e87 (patch)
tree5aef2df9105d09c1dc5e198cb7dbd343fd0c45aa /libguile/integers.c
parent459163fca16eacebefa463d514a9364e6adcb779 (diff)
downloadguile-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.c19
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);
+}