[swift-evolution] [Review #2] SE-0067: Enhanced Floating Point Protocols
xiaodi.wu at gmail.com
Tue Apr 26 19:04:18 CDT 2016
I thought you'd mentioned that AbsoluteValuable conformance was removed for
a reason and that the method would be added to FloatingPoint? Otherwise, it
seems like conformance to AbsoluteValuable would be much the same...
On Tue, Apr 26, 2016 at 6:54 PM, Stephen Canon <scanon at apple.com> wrote:
> Do you actually want a method added, or just conformance to
> – Steve
> On Apr 26, 2016, at 7:41 PM, Xiaodi Wu <xiaodi.wu at gmail.com> wrote:
> Unrelated to this discussion about comparison operators, please remember
> to put back .abs() or .absoluteValue() somewhere in FloatingPoint. Thanks!
> On Tue, Apr 26, 2016 at 12:07 PM, Nicola Salmoria via swift-evolution <
> swift-evolution at swift.org> wrote:
>> If performance is the only reasons to have a separate method, perhaps it
>> might make sense to have a note about this in the isLessThanOrEqualTo
>> description, and provide a default implementation that calls down on isLess
>> and isEqual.
>> On Tue, Apr 26, 2016 at 4:59 PM, Stephen Canon <scanon at apple.com> wrote:
>>> On Apr 26, 2016, at 10:03 AM, Nicola Salmoria via swift-evolution <
>>> swift-evolution at swift.org> wrote:
>>> it should be enough to do
>>> func <= <T: FloatingPoint>(lhs: T, rhs: T) -> Bool
>>> return lhs.isLess(than: rhs) || lhs.isEqual(to: rhs)
>>> Or is there some case of x, y where (x <= y) is true but (x < y) and (x
>>> == y) are both false?
>>> No, these are always equivalent.
>>> However, there is a problem with this approach: the compiler knows about
>>> the built-in floating-point types (Float, Double, Float80) and their
>>> aliases (CGFloat, etc) and can fuse the two comparisons into a single
>>> hardware operation. However, for soft-float types, without a
>>> lessThanOrEqual method, there is no single comparison that the compiler
>>> could fuse these to.
>>> In some cases, if they are simple enough, the compiler may be able to
>>> actually fuse the bodies of the two comparison operations, but we can’t
>>> reasonably depend on that happening or even being possible in all cases.
>>> So for performance, it’s important that there be an actual less than or
>>> equal to method.
>>> – Steve
>> swift-evolution mailing list
>> swift-evolution at swift.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution