Max Moiseev via swift-evolution <swift-evolution@...> writes: > > For FixedWidthInteger#dividedWithOverflow/remainderWithOverflow, under what situations would > you have an overflow? I could only come up with something like Int.min.dividedWithOverflow(-1). > If you look at the prototype here: > https://github.com/apple/swift/blob/master/test/Prototypes /Integers.swift.gyb#L789 > there is > exactly the check that you’ve mentioned, but for all signed integers. Besides, it is very convenient to > have all the arithmetic operations be implemented the same way, even if there were no real overflows for division.
I agree with this for the four basic operations, but not for the remainder operation. By definition, the remainder is always strictly smaller (in absolute value) than the divisor, so even if the division itself overflows, the remainder must be representable, so technically it never overflow. In the only actual case where the division overflow, that is Int.min / -1, the remainder is simply 0. For these reasons, I think it would make sense to explicitly request that the remainder operation never traps, and remove the overflow variants. Nicola _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
