Add math.divmod and math.floor_divmod

This commit is contained in:
gingerBill
2022-08-15 16:31:43 +01:00
parent 5a9422b6bc
commit 737bccbd5e

View File

@@ -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