aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarvin Borner2025-03-29 15:01:54 +0100
committerMarvin Borner2025-03-29 15:01:54 +0100
commitc65b972aa42d279e17b4861438059a02032de14d (patch)
tree11a182c0652cf6e41e42c30ab2c1b91e2ea87480
parent5dcf423d97ee6dbb4adf8f18094b4a0c99772f3a (diff)
Add pow-mod
-rw-r--r--std/Number/Unary.bruijn8
1 files changed, 8 insertions, 0 deletions
diff --git a/std/Number/Unary.bruijn b/std/Number/Unary.bruijn
index cd4d642..94b7f24 100644
--- a/std/Number/Unary.bruijn
+++ b/std/Number/Unary.bruijn
@@ -41,6 +41,14 @@ mod [[[[3 &k (3 [3 [[[0 (2 (5 1)) 1]]] [1] 1] [1]) ki]]]] â§— Unary → Unary â†
:test ((+10u) % (+3u)) ((+1u))
:test ((+3u) % (+5u)) ((+3u))
+# returns the remainder of integer division of exponentiation
+pow-mod [[[0 [[1 [1 [[1 (2 1 0)]] 0]]] &ki [2 3 (1 [[[2 [2 0 1]]]] i t) (1 k i i)]]]] ⧗ Unary → Unary → Unary → Unary
+
+:test (pow-mod (+1u) (+2u) (+2u)) ((+1u))
+:test (pow-mod (+2u) (+3u) (+3u)) ((+2u))
+:test (pow-mod (+3u) (+3u) (+2u)) ((+1u))
+:test (pow-mod (+3u) (+3u) (+3u)) ((+0u))
+
# returns true if the number is even (remainder mod 2 == 0)
even? [0 not! true] ⧗ Unary → Boolean