苹果发布Swift的数学计算项目:Swift Numerics

Swift 标准函数库团队成员 Steve Canon 宣布 Swift 开源生态又添一员 —— Swift Numerics。这是用于 Swift 的 Numerical API,源码托管在 GitHub 上,旨在迅速填补标准库现有 API 中的一些重要空白,并为 Swift 编程开拓新领域。

苹果发布Swift的数学计算项目:Swift Numerics

据介绍,Swift Numerics 可为 Swift 开发者提供构建数值运算的基础,相关的数值运算模块都会捆绑在一起,并以独立的 Swift 组件发布。

Steve Canon 已在 Swift Numerics 的 GitHub 仓库中内置了两个呼声甚高的数学计算模块,分别是实数模块(Real Number)和提供复数运算的复数(Complex Number)模块。SE-0246 提案建议在 Swift 中加入基础数学函数 API,提供诸如三角函数与对数等通用运算。这项提案已经被接受,但由于编译器的限制,该 API 还不能被加到标准函数库中,因此实数模块将以独立的模块提供 API,开发者现在可在项目中使用这些功能。

实数模块定义了三个协议。最通用的是ElementaryFunctions,它提供以下函数:
指数函数:exp,expMinusOne

对数函数:log,log(onePlus:)

三角函数:cos,sin,tan

反三角函数:acos,asin,atan

双曲函数:cosh,sinh,tanh

反双曲函数:acosh,asinh,atanh

幂函数和根函数:pow,sqrt,root

复数模块则是创建于基础实数类型之上(官方说法是复数模块基于实数模块构建)。我们都知道复数在数学计算中经常会用到,尤其是在进行傅立叶转换的时候,处理音频或是电路仿真时都会用到复数。Steve Canon 提到,在开发者日常使用时,函数库通常会自动隐藏这些复数消息,但是当要开发相关函数库时,复数模块会是很重要的工具。

Steve Canon 还解释了不在标准函数库中提供 Swift Numerics 功能,而要利用组件的形式发布的原因。他表示这其中存在许多考量,但最主要的原因是,他认为并非所有内容都应该放进标准函数库中。随着时间变迁,Swift Numerics 中的部分功能可能会被放进标准函数库中,但在默认情况下,某些模块不应默认加入到每一个项目里,它们应有一个自己专属的地方,而 Swift Numerics 就是这类数学计算模块的集合,就像 SwiftNIO 组件是专门提供网络相关功能一样。

另外,以组件打包的好处还包括 Swift Numerics 的更新将不受 Swift 版本发布的时间限制,开发者可以在进入稳定版之前,先发布测试模块进行试验。

Steve Canon 还提到,接下来他们还会为 Swift Numerics 加入重要的 ShapedArray 协议以及支持的类型,让开发者能方便地表达多维度的同质数据,此外还会增加对 Float16 的支持。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...