From 181c44d85f4bdd13c5ba9afbdc708de993b7787f Mon Sep 17 00:00:00 2001 From: kayomn Date: Tue, 23 May 2023 23:22:12 +0000 Subject: [PATCH] Add number wrapping utility to coral --- source/coral/math.zig | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/coral/math.zig b/source/coral/math.zig index cd843f0..262a27f 100755 --- a/source/coral/math.zig +++ b/source/coral/math.zig @@ -161,3 +161,12 @@ pub fn min_int(comptime int: std.builtin.Type.Int) comptime_int { return -(1 << (bit_count - 1)); } + +/// +/// Returns `value` wrapped around the inclusive bounds of `lower` and `upper`. +/// +pub fn wrap(value: anytype, lower: anytype, upper: anytype) @TypeOf(value, lower, upper) { + const range = upper - lower; + + return if (range == 0) lower else lower + @mod((@mod((value - lower), range) + range), range); +}