summaryrefslogtreecommitdiffstats
path: root/arith.c
diff options
context:
space:
mode:
Diffstat (limited to 'arith.c')
-rw-r--r--arith.c35
1 files changed, 28 insertions, 7 deletions
diff --git a/arith.c b/arith.c
index 483efa15..1dff8eb6 100644
--- a/arith.c
+++ b/arith.c
@@ -1090,13 +1090,6 @@ 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 floordiv(val anum, val bnum)
{
if (missingp(bnum))
@@ -1312,6 +1305,34 @@ val roundiv(val anum, val bnum)
}
}
+val trunc_rem(val anum, val bnum)
+{
+ val quot = trunc(anum, bnum);
+ val rem = minus(anum, mul(quot, if3(missingp(bnum), one, bnum)));
+ return list(quot, rem, nao);
+}
+
+val floor_rem(val anum, val bnum)
+{
+ val quot = floordiv(anum, bnum);
+ val rem = minus(anum, mul(quot, if3(missingp(bnum), one, bnum)));
+ return list(quot, rem, nao);
+}
+
+val ceil_rem(val anum, val bnum)
+{
+ val quot = ceildiv(anum, bnum);
+ val rem = minus(anum, mul(quot, if3(missingp(bnum), one, bnum)));
+ return list(quot, rem, nao);
+}
+
+val round_rem(val anum, val bnum)
+{
+ val quot = roundiv(anum, bnum);
+ val rem = minus(anum, mul(quot, if3(missingp(bnum), one, bnum)));
+ return list(quot, rem, nao);
+}
+
val wrap_star(val start, val end, val num)
{
val modulus = minus(end, start);