Changed `exp2…` of ’Arithmetic.swift’ be implemented in terms of `exp2InPlace`

This commit is contained in:
Vincent Esche 2019-09-24 14:20:15 +02:00
parent 2c73c84355
commit 38cac915a6
1 changed files with 6 additions and 24 deletions

View File

@ -554,34 +554,16 @@ func expInPlace<X: UnsafeMutableMemoryAccessible>(_ lhs: inout X) where X.Elemen
/// - Warning: does not support memory stride (assumes stride is 1).
public func exp2<X: UnsafeMemoryAccessible>(_ lhs: X) -> [Float] where X.Element == Float {
return lhs.withUnsafeMemory { lhsMemory in
precondition(lhsMemory.stride == 1, "\(#function) does not support strided memory access")
var lhsCount = Int32(lhs.count)
var results = [Float](repeating: 0.0, count: lhs.count)
results.withUnsafeMutableBufferPointer { bufferPointer in
vvexp2f(bufferPointer.baseAddress!, lhsMemory.pointer, &lhsCount)
}
var results = Array(lhs)
exp2InPlace(&results)
return results
}
}
/// - Warning: does not support memory stride (assumes stride is 1).
public func exp2<X: UnsafeMemoryAccessible>(_ lhs: X) -> [Double] where X.Element == Double {
return lhs.withUnsafeMemory { lhsMemory in
precondition(lhsMemory.stride == 1, "\(#function) does not support strided memory access")
var lhsCount = Int32(lhs.count)
var results = [Double](repeating: 0.0, count: lhs.count)
results.withUnsafeMutableBufferPointer { bufferPointer in
vvexp2(bufferPointer.baseAddress!, lhsMemory.pointer, &lhsCount)
}
var results = Array(lhs)
exp2InPlace(&results)
return results
}
}
// MARK: - Square Exponentiation: In Place