> On Jun 23, 2016, at 14:38, Nicola Salmoria via swift-evolution > <[email protected]> wrote: > > 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.
…except when taking a remainder dividing by 0, right? Jordan _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
