Changed `log…` of ’Logarithm.swift’ be implemented in terms of `logInPlace`

This commit is contained in:
Vincent Esche 2019-09-24 17:57:18 +02:00
parent b9fbf3f730
commit 048d343e7e
1 changed files with 8 additions and 18 deletions

View File

@ -23,27 +23,17 @@ import Accelerate
// MARK: - Base-e Logarithm
/// - Warning: does not support memory stride (assumes stride is 1).
public func log<X: UnsafeMemoryAccessible>(_ x: X) -> [Float] where X.Element == Float {
return x.withUnsafeMemory { xm in
precondition(xm.stride == 1, "\(#function) does not support strided memory access")
var results = [Float](x)
results.withUnsafeMutableBufferPointer { rbp in
vvlogf(rbp.baseAddress!, xm.pointer, [numericCast(xm.count)])
}
public func log<L: UnsafeMemoryAccessible>(_ lhs: L) -> [Float] where L.Element == Float {
var results = Array(lhs)
logInPlace(&results)
return results
}
}
/// - Warning: does not support memory stride (assumes stride is 1).
public func log<X: UnsafeMemoryAccessible>(_ x: X) -> [Double] where X.Element == Double {
return x.withUnsafeMemory { xm in
precondition(xm.stride == 1, "\(#function) does not support strided memory access")
var results = [Double](x)
results.withUnsafeMutableBufferPointer { rbp in
vvlog(rbp.baseAddress!, xm.pointer, [numericCast(xm.count)])
}
public func log<L: UnsafeMemoryAccessible>(_ lhs: L) -> [Double] where L.Element == Double {
var results = Array(lhs)
logInPlace(&results)
return results
}
}
// MARK: - Base-e Logarithm: In Place