Swift中Pointwise Equal,Pointwise小于和Pointwise大的功能是什么?

Dee*_*ora 3 swift

在阅读Apple的Swift编程语言书时,我遇到了Pointwise等于,Pointwise小于和Pointwise大于运算符。参考:https : //developer.apple.com/documentation/swift/swift_standard_library/operator_declarations

.== Pointwise equal

.!= Pointwise not equal
Run Code Online (Sandbox Code Playgroud)

我找不到有关何时使用它们的任何解释和示例。这些操作员的功能是什么?

Mar*_*n R 5

运算符是“ SIMD矢量类型”所遵循protocol SIMD的协议的 一部分。

它们在SE-0229的 Swift 5中引入。根据该建议:

让我们讨论面具。SIMD是等值的,因此具有==和!=运算符,但它们还提供“逐点比较” .==.!=运算符,用于比较两个向量的泳道,并产生Mask(布尔)向量。掩码的每个泳道为truefalse,取决于比较相应泳道中的值的结果。一个例子:

(swift) let x = SIMD4<Int>(1,2,3,4)
// x : SIMD4<Int> = SIMD4<Int>(1, 2, 3, 4)
(swift) let y = SIMD4<Int>(3,2,1,0)
// y : SIMD4<Int> = SIMD4<Int>(3, 2, 1, 0)
(swift) x .== y
// r0 : SIMDMask<SIMD4<Int.SIMDMaskScalar>> = SIMDMask<SIMD4<Int>>(false, true, false, false)
Run Code Online (Sandbox Code Playgroud)

在这里,第二个泳道是true,因为2 == 2,而其他所有泳道都是假的,因为这些泳道中x和y的元素不相等。

摘自protocol SIMD

固定数量的元素的SIMD向量。

static func .== (Self, Self) -> SIMDMask<Self.MaskStorage>
// Returns a vector mask with the result of a pointwise equality comparison.

static func .> (Self, Self) -> SIMDMask<Self.MaskStorage>
// Returns a vector mask with the result of a pointwise greater than comparison.
Run Code Online (Sandbox Code Playgroud)

另一个例子:

import simd

let x = SIMD3<Float>(1.0, 2.0, 3.0)
let y = SIMD3<Float>(3.0, 2.0, 1.0)

print(x .== y) // SIMDMask<SIMD3<Int32>>(false, true, false)
print(x .!= y) // SIMDMask<SIMD3<Int32>>(true, false, true)
print(x .< y)  // SIMDMask<SIMD3<Int32>>(true, false, false)
Run Code Online (Sandbox Code Playgroud)