NumericAnnex 补充了 Swift 标准库中提供的数值功能。
**
和复合赋值运算符 **=
。BinaryInteger
的扩展方法,用于指数运算、平方根、立方根、最大公约数和最小公倍数。Math
,一个用于支持基本函数的有符号数值类型的协议。Real
,一个用于支持基本函数和一些特殊函数的浮点类型的协议。PRNG
,一个用于伪随机数生成器的协议。Rational
,一个用于表示支持除以零的 Rational 值的 值类型。Complex
,一个用于以笛卡尔形式表示复数值的值类型。Random
和 Random.Xoroshiro
,两个实现了高效伪随机数生成器的引用类型。注意:此项目尚处于早期开发阶段,目前尚未准备好用于生产环境。
NumericAnnex 需要 Swift 4.1 (swift-4.1-branch
) 或 Swift 4.2 (master
)。在 Apple 平台上,它还需要 Security framework 以获得加密安全的随机字节。
在本地克隆或下载 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 Package Manager 也可以用于将包添加为依赖项。 有关详细信息,请参阅 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 双重许可下获得许可。