数值附件 0.1.19

数值附件 0.1.19

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2017年8月
SwiftSwift版本4.0
SPM支持SPM

吴晓迪维护。



  • 吴晓迪

NumericAnnex

数值附件补充了Swift标准库提供的数值功能。

特性

  • 指数运算符**和复合赋值运算符**=
  • BinaryInteger扩展方法用于指数、平方根、立方根、最大公约数和最小公倍数。
  • Math,一个支持基本函数的数字类型的协议。
  • Real,一个支持基本函数和选择特殊函数的浮点类型的协议。
  • PRNG,一个用于伪随机数生成器的协议。
  • Rational,一个表示有理值的值类型,支持除以零。
  • Complex,一个表示笛卡尔形式的复数值的值类型。
  • RandomRandom.Xoroshiro,两个实现高效伪随机数生成器的引用类型。

注意:该项目处于早期开发阶段,目前尚未准备好投入生产。

要求

数值附件现在需要Xcode 9 beta 5或更高版本,或者包括修订后的数值协议的Swift 4.0的最新开发快照。

在Apple平台上,它需要安全框架来提供加密安全的随机字节。

安装

在将NumericAnnex克隆或本地下载后,使用命令swift build(macOS)或swift build -Xcc -D_GNU_SOURCE(Linux)构建库。使用命令swift test(macOS)或swift test -Xcc -D_GNU_SOURCE(Linux)运行测试。可以使用命令swift package generate-xcodeproj生成Xcode项目。

要使用CocoaPods将包作为依赖项添加,在您的Podfile中插入以下行

pod 'NumericAnnex', '~> 0.1.19'

Swift包管理器也可以用来将包作为依赖项添加。有关详细信息,请参阅Swift文档。

基本使用

import NumericAnnex

print(2 ** 3)
// Prints "8".

print(4.0 ** 5.0)
// Prints "1024.0".

print(Int.cbrt(8))
// Prints "2".

print(Double.cbrt(27.0))
// Prints "3.0".

var x: Ratio = 1 / 4
// Ratio is a type alias for Rational<Int>.

print(x.reciprocal())
// Prints "4".

x *= 8
print(x + x)
// Prints "4".

x = Ratio(Float.phi) // Golden ratio.
print(x)
// Prints "13573053/8388608".

var z: Complex64 = 42 * .i
// Complex64 is a type alias for Complex<Float>.

print(Complex.sqrt(z))
// Prints "4.58258 + 4.58258i".

z = .pi + .i * .log(2 - .sqrt(3))
print(Complex.cos(z).real)
// Prints "-2.0".

文档

所有公共协议、类型和函数在代码中都有详细的文档。有关详细信息,请参阅格式化参考

该项目遵循了在 Swift 标准库中找到的许多设计模式。例如,Math 类型提供如 cubeRoot()tangent() 等方法,就像 FloatingPoint 类型提供如 squareRoot() 等方法。

除非它们是 Swift 标准库中现有函数的重载,否则在此库中不会声明任何自由函数。相反,提供如 cbrt(_:)tan(_:) 等函数作为静态成员。这避免了与您可能希望使用的 C 标准库函数发生冲突。当复杂运算的结果与其实际对应项不同时(例如,Complex128.cbrt(-8) != -2),这也有助于在调用位置提高清晰性。

未来方向

  • 添加更多测试,包括性能测试
  • PRNG 上设计和实现更多方法

许可证

所有原始作品均以 MIT 许可证发布。有关详细信息,请参阅 LICENSE

复数平方根和初等超越函数的一部分使用从 libc++ 中借用的特殊值检查。libc++ 中的代码采用 MIT 和 UIUC/NCSA 许可证的双重许可。