---
title: vDSP_vmulD
framework: accelerate
role: symbol
role_heading: Function
path: accelerate/vdsp_vmuld
---

# vDSP_vmulD

Calculates the double-precision element-wise product of two vectors, using the specified stride.

## Declaration

```occ
extern void vDSP_vmulD(const double *__A, vDSP_Stride __IA, const double *__B, vDSP_Stride __IB, double *__C, vDSP_Stride __IC, vDSP_Length __N);
```

## Parameters

- `__A`: The first input vector, A.
- `__IA`: The distance between the elements in the first input vector.
- `__B`: The second input vector, B.
- `__IB`: The distance between the elements in the second input vector.
- `__C`: The output vector, C.
- `__IC`: The distance between the elements in the output vector.
- `__N`: The number of elements that the function processes.

## Discussion

Discussion This function calculates the products of the first N elements of input vectors A and B, and writes the result to output vector C.  for (n = 0; n < N; ++n)     C[n] = A[n] * B[n];

The following code shows an example of using this function:     let stride = 1     let count = 5          let a: [Double] = [ 1,  2,  3,  4,  5]     let b: [Double] = [10, 20, 30, 40, 50]          let c = [Double](unsafeUninitializedCapacity: count) {         buffer, initializedCount in                  vDSP_vmulD(a, stride,                    b, stride,                    buffer.baseAddress!, stride,                    vDSP_Length(count))                  initializedCount = count     }          // Prints "[10.0, 40.0, 90.0, 160.0, 250.0]".     print(c)

## See Also

### Binary multiplication operations

- [vDSP_vmul](accelerate/vdsp_vmul.md)
