Files
voxelotl-engine/Sources/Voxelotl/Math/IntegerExtensions.swift

13 lines
460 B
Swift
Raw Permalink Normal View History

2024-08-30 01:58:52 +10:00
public extension BinaryInteger {
@inline(__always) func euclidianMod(_ divisor: Self) -> Self {
self.floorMod(divisor < 0 ? divisor * -1 : divisor)
}
@inline(__always) func floorMod(_ divisor: Self) -> Self {
//(self % divisor + divisor) % divisor
(self.truncateMod(divisor) + divisor).truncateMod(divisor)
}
@inline(__always) func truncateMod(_ divisor: Self) -> Self {
self.quotientAndRemainder(dividingBy: divisor).remainder
}
}