数值附件补充了Swift标准库提供的数值功能。
**
和复合赋值运算符**=
。BinaryInteger
扩展方法用于指数、平方根、立方根、最大公约数和最小公倍数。Math
,一个支持基本函数的数字类型的协议。Real
,一个支持基本函数和选择特殊函数的浮点类型的协议。PRNG
,一个用于伪随机数生成器的协议。Rational
,一个表示有理值的值类型,支持除以零。Complex
,一个表示笛卡尔形式的复数值的值类型。Random
和Random.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 许可证的双重许可。