[swift-evolution] TrigonometricFloatingPoint/MathFloatingPoint protocol?

Hooman Mehr hooman at mac.com
Mon Jul 31 12:45:36 CDT 2017


I prefer an approach that preserves how I am used to seeing math expressions. I use this myself:

protocol FloatingPointMath: FloatingPoint
{
    static func sqrt(_ value: Self) -> Self

    static func sin(_ value: Self) -> Self
    static func cos(_ value: Self) -> Self
    static func tan(_ value: Self) -> Self
    static func asin(_ value: Self) -> Self
    static func acos(_ value: Self) -> Self
    static func atan(_ value: Self) -> Self
    
    static func ln(_ value: Self) -> Self
    static func log(_ value: Self, base: Self) -> Self
    static func pow(_ value: Self, exponent:Self) -> Self
    static func exp(_ value: Self) -> Self
}

It does not pollute the global namespace and gives nice contextual auto-completion.  And I don’t want it in the standard library: I only add the file when I need it. (it is not a separate module for optimization reasons).

> On Jul 31, 2017, at 10:29 AM, Taylor Swift via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
> 
> On Mon, Jul 31, 2017 at 1:23 PM, Adrian Zubarev <adrian.zubarev at devandartist.com <mailto:adrian.zubarev at devandartist.com>> wrote:
> I’m not sure how I would feel about this. To be honest I’d avoid such additional changes from the stdlib, because they really don’t belong there. Instead some `Math` module/package would be a better fit than clustering everything into stdlib until we end up also adding UI stuff.
> 
> Furthermore, I don’t think a function would make any sense here. It really should be a computed property.
> 
> 
> 
> I think a standard Math module would be a good idea, but only if it benefits from the same inlining and specialization as the standard library. Also squareRoot() should be moved to the Math module if it is ever created.
>  
> Am 31. Juli 2017 um 19:03:49, Taylor Swift via swift-evolution (swift-evolution at swift.org <mailto:swift-evolution at swift.org>) schrieb:
> 
>> How would people feel about adding a protocol
>> 
>> protocol MathFloatingPoint:FloatingPoint
>> {
>>     func sin() -> Self
>>     func cos() -> Self
>>     func tan() -> Self
>>     func asin() -> Self
>>     func acos() -> Self
>>     func atan() -> Self
>> 
>>     func ln() -> Self
>>     func log(base:Self) -> Self
>>     func pow(exponent:Self) -> Self
>>     func exp() -> Self
>> }
>> 
>> to the standard library? Float and Double would then be made to conform by default using Swift implementations instead of having to import Glibc / Darwin and writing the extensions, depending on platform.
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170731/c3fa5183/attachment.html>


More information about the swift-evolution mailing list