formRamp(withInitialValue:multiplyingBy:increment:result:)
Populates a double-precision vector that contains monotonically incrementing or decrementing values, and multiplies that vector by a source vector.
Declaration
static func formRamp<U, V>(withInitialValue initialValue: inout Double, multiplyingBy vector: U, increment: Double, result: inout V) where U : AccelerateBuffer, V : AccelerateMutableBuffer, U.Element == Double, V.Element == DoubleParameters
- initialValue:
On input, the initial value of the ramp. On output, the next value in the ramp.
- vector:
The input vector that the function multiplies by the ramp.
- increment:
The increment, or decrement if negative, between each generated element.
- result:
The result.
Discussion
Use this function to generate and return a vector populated with ramped values with each element multiplied by the corresponding element in a second vector.
The following code generates a ramped vector with values in the range 0 ... 7. The function multiplies elements at even indices by 10 and multiplies elements at odd indices by 100.
let n = 8
var initialValue: Double = 0
let increment: Double = 1
let ramp = [Double](unsafeUninitializedCapacity: n) {
buffer, initializedCount in
vDSP.formRamp(withInitialValue: &initialValue,
multiplyingBy: [10, 100, 10, 100, 10, 100, 10, 100],
increment: increment,
result: &buffer)
initializedCount = n
}
// Prints "[0.0, 100.0, 20.0, 300.0, 40.0, 500.0, 60.0, 700.0]".
print(ramp)
// Prints "8".
print(initialValue)