vDSP_maxv
没有在下面的代码中分配最大值output
。
我希望最后一行 print 2
,但它每次都打印不同的东西,通常是一个非常大或小的数字,比如2.8026e-45
我已经阅读了本教程、文档和头文件中的内联文档vDSP_maxv
,但我不明白为什么下面的代码没有产生预期的结果。
制作numbers
anUnsafePointer
而不是 anUnsafeMutablePointer
没有用,我尝试过的其他一些事情也没有,所以也许我错过了一些基本的东西。
import Accelerate
do {
// INPUT - pointer pointing at: 0.0, 1.0, 2.0
let count = 3
let numbers = UnsafeMutablePointer<Float>
.allocate(capacity: count)
defer { numbers.deinitialize() }
for i in 0..<count {
(numbers+i).initialize(to: Float(i))
}
// OUTPUT
var output = UnsafeMutablePointer<Float>
.allocate(capacity: 1)
// FIND MAX
vDSP_maxv(
numbers,
MemoryLayout<Float>.stride,
output,
vDSP_Length(count)
)
print(output.pointee) // prints various numbers, none of which are expected
}