diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux.lux | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux index e4214a899..51e9af4dc 100644 --- a/stdlib/source/lux.lux +++ b/stdlib/source/lux.lux @@ -6054,3 +6054,16 @@ _ (fail "Wrong syntax for ^code"))) + +(def: #export (n/mod param subject) + (-> Nat Nat Nat) + (let [exact (|> subject (n// param) (n/* param))] + (|> subject (n/- exact)))) + +(def: #export (i/mod param subject) + (All [m] (-> Int Int Int)) + (let [raw (i/% param subject)] + (if (i/< 0 raw) + (let [shift (if (i/< 0 param) i/- i/+)] + (|> raw (shift param))) + raw))) |