simd matrix_linear_combination 在 iOS11 中去了哪里?

Where has simd matrix_linear_combination been gone in iOS11?

 let m = matrix_linear_combination(alpha, v1, 1-alpha, v0)

matrix_linear_combination 现在生成 "Use of unresolved identifier 'matrix_linear_combination'" 错误。

有任何现有的替代品吗?

PS : 我应该澄清一下我已经导入了 simd 并且在 iOS10/Swift 3).

中没有问题吗

简答: iOS 11/macOS 10.13 SDK 重命名了许多 simd 类型和函数, 前缀 matrix_ 替换为 simd_.

更长的答案:

Xcode 8 使用 iOS 10.3(resp. macOS 10.12)SDK,它定义了 simd 矩阵类型为

typedef struct { vector_float2 columns[2]; } matrix_float2x2;

和函数

static matrix_float2x2 __SIMD_ATTRIBUTES__ matrix_linear_combination(float __a, matrix_float2x2 __x, float __b, matrix_float2x2 __y);

这些被导入到Swift 3 as

public struct matrix_float2x2 { ... }
// ...

public func matrix_linear_combination(_ __a: Float, _ __x: matrix_float2x2, _ __b: Float, _ __y: matrix_float2x2) -> matrix_float2x2
// ...

Xcode 9 使用 iOS 11 (resp. macOS 10.13) SDK 并定义了 类型为

typedef struct { simd_float2 columns[2]; } simd_float2x2;
// ...

和函数

static simd_float2x2 SIMD_CFUNC simd_linear_combination(float __a, simd_float2x2 __x, float __b, simd_float2x2 __y);
// ...

这些被导入到Swift 4 as

public struct simd_float2x2 { ... }
// ...

public func simd_linear_combination(_ __a: Float, _ __x: simd_float2x2, _ __b: Float, _ __y: simd_float2x2) -> simd_float2x2
// ...