summaryrefslogtreecommitdiffstats
path: root/arith.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-02-07 19:58:38 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-02-07 19:58:38 -0800
commit45fe65bb4305b896ac95bfa70c3273662e8e44f1 (patch)
treea925250b15d656980cc1c97ec26ec0620c7382df /arith.c
parent91664c356f4eb1f31a90f36d369bceb386466f42 (diff)
downloadtxr-45fe65bb4305b896ac95bfa70c3273662e8e44f1.tar.gz
txr-45fe65bb4305b896ac95bfa70c3273662e8e44f1.tar.bz2
txr-45fe65bb4305b896ac95bfa70c3273662e8e44f1.zip
* arith.c (trunc_rem): New function.
* eval.c (eval_init): Register trunc-rem intrinsic. * lib.h (trunc_rem): Declared. * txr.1: Documented trunc-rem. * tl.vim, txr.vim: Updated.
Diffstat (limited to 'arith.c')
-rw-r--r--arith.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arith.c b/arith.c
index 20d1ae3b..9aeb0875 100644
--- a/arith.c
+++ b/arith.c
@@ -945,6 +945,13 @@ divzero:
uw_throw(numeric_error_s, lit("mod: division by zero"));
}
+val trunc_rem(val anum, val bnum)
+{
+ val quot = trunc(anum, bnum);
+ val rem = minus(anum, mul(quot, bnum));
+ return list(quot, rem, nao);
+}
+
val wrap_star(val start, val end, val num)
{
val modulus = minus(end, start);