vDSP_vaddsub
Calculates the single-precision element-wise sum and subtraction of two vectors, using the specified stride.
Declaration
void vDSP_vaddsub(const float *__I0, vDSP_Stride __I0S, const float *__I1, vDSP_Stride __I1S, float *__O0, vDSP_Stride __O0S, float *__O1, vDSP_Stride __O1S, vDSP_Length __N);Parameters
- __I0:
The first input vector,
A. - __I0S:
The distance between the elements in the first input vector.
- __I1:
The second input vector,
B. - __I1S:
The distance between the elements in the second input vector.
- __O0:
The addition output vector,
O0. - __O0S:
The distance between the elements in the addition output vector.
- __O1:
The subtraction output vector,
O1. - __O1S:
The distance between the elements in the subtraction output vector.
- __N:
The number of elements that the function processes.
Discussion
This function calculates the addition and subtraction of the first N elements of input vectors A and B, and writes the result to output vector C.
for (i = 0; i < N; ++i)
{
i1 = I1[i*I1S];
i0 = I0[i*I0S];
O0[i*O0S] = i1 + i0;
O1[i*O1S] = i1 - i0;
}
[Image]
The following code shows an example of using this function:
let stride = 1
let count = 5
let b: [Float] = [10, 20, 30, 40, 50]
let a: [Float] = [ 1, 2, 3, 4, 5]
var o0 = [Float](repeating: 0, count: count)
var o1 = [Float](repeating: 0, count: count)
vDSP_vaddsub(a, stride,
b, stride,
&o0, stride,
&o1, stride,
vDSP_Length(count))
// Prints the addition result: "[11.0, 22.0, 33.0, 44.0, 55.0]".
print(o0)
// Prints the subtraction result: "[9.0, 18.0, 27.0, 36.0, 45.0]".
print(o1)