diff --git a/core/math/math.odin b/core/math/math.odin index 5a6115e55..5f9c737ab 100644 --- a/core/math/math.odin +++ b/core/math/math.odin @@ -614,6 +614,25 @@ floor_mod :: proc "contextless" (x, y: $T) -> T return r } +divmod :: #force_inline proc "contextless" (x, y: $T) -> (div, mod: T) + where intrinsics.type_is_integer(T) { + div = x / y + mod = x % y + return +} + +floor_divmod :: #force_inline proc "contextless" (x, y: $T) -> (div, mod: T) + where intrinsics.type_is_integer(T) { + div = x / y + mod = x % y + if (div > 0 && y < 0) || (mod < 0 && y > 0) { + div -= 1 + mod += y + } + return +} + + modf_f16 :: proc "contextless" (x: f16) -> (int: f16, frac: f16) { shift :: F16_SHIFT mask :: F16_MASK