苹果发布 Swift 的数学计算项目:Swift Numerics
Swift 标准函数库团队成员 Steve Canon 宣布 Swift 开源生态又添一员 —— Swift Numerics。这是用于 Swift 的 Numerical API,源码托管在 GitHub 上,旨在迅速填补标准库现有 API 中的一些重要空白,并为 Swift 编程开拓新领域。
据介绍,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 的支持。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
字节码联盟成立,WebAssembly 生态将完善网络安全性
近日 Mozilla、Fastly、Intel 与 Red Hat 宣布成立联合组织Bytecode Alliance(字节码联盟),该联盟旨在通过协作实施标准和提出新标准,以完善WebAssembly 在浏览器之外的生态。 WebAssembly 也叫 Wasm,它是为基于栈的虚拟机设计的二进制指令格式,Wasm 作为可移植目标,用于编译高级语言(如 C/C++/Rust),从而可以在Web 上部署客户端和服务器应用。 WebAssembly 描述了一种内存安全的沙箱执行环境,该环境甚至可以在现有 JavaScript 虚拟机内部实现。当嵌入到 Web 中时,WebAssembly 将强制执行浏览器的同源和权限安全策略。 目前 1.0 版本的 Wasm 已经支持 Chrome、Firefox、Safari 与 Edge 浏览器。 此次四家公司为什么结成Bytecode Alliance 呢?Mozilla 官网博客上Lin Clark作了介绍。 Lin 表示,当前网络用户身处越来越大的风险中,目前大家在构建大规模的模块化应用,其中 80% 的代码库来自软件包注册中心,例如 npm、P...
- 下一篇
每日一博 | GraphQL 在 HTTP/2 世界中仍然有意义吗?
大约一周前,Phil Sturgeon 的这则推文激起了许多 GraphQL 爱好者的关注。 相关上下文:https://apisyouwonthate.com/blog/lets-stop-building-apis-around-a-network-hack 大约在同一时间,创建了这个名为Vulcain的项目。(这看起来还不错!)公告的一部分包括“ 您不再需要#GraphQL!”。最后,马克·诺丁汉(Mark Nottingham)本周发表了一篇精彩的文章HTTP/2的功能及其对API设计的意义。 这些文章以及项目让我开始思考这么一个问题:当世界上的一切开始运行 HTTP/2( 或者 HTTP/3)时,我们还有什么理由使用 GraphQL? 首先让我们了解 HTTP/2 哪些内容将改变 GraphQL 。HTTP/2 中有很多新特性,例如新的二进制格式和更好的 HTTP Header 压缩,但是在 GraphQL 上下文中让我们谈论的最有意义的事情是 HTTP/2 处理请求/回应。 打开 TCP 连接是许多HTTP/1客户端都希望避免的昂贵操作。出于这个原因,开发人员经常因其大量开...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题