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的支持。
-
蘋果
+關注
關注
61文章
24465瀏覽量
199596 -
SWIFT
+關注
關注
0文章
116瀏覽量
23831
發布評論請先 登錄
相關推薦
評論