<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/using-vdsp-for-vector-based-arithmetic",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Using vDSP for vector-based arithmetic"
}
-->

# Using vDSP for vector-based arithmetic

Increase the performance of common mathematical tasks with vDSP vector-vector and vector-scalar operations.

## Discussion

vDSP provides a suite of general-purpose, high-performance arithmetic functions that are alternatives to `for` loops and `map` when applying operations on collections of floating-point values.

For example, the code below multiplies the element-wise sum of two arrays by a scalar value:

```swift
let a: [Float] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let b: [Float] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
let c: Float = 2

let d = zip(a, b).map {
    ($0.0 + $0.1) * c
}

// d = [22.0, 44.0, 66.0, 88.0, 110.0, 132.0, 154.0, 176.0, 198.0, 220.0]
```

The vDSP version of the same operation runs significantly faster.

```swift
let d = [Float](unsafeUninitializedCapacity: a.count) {
    buffer, initializedCount in
    
    vDSP.multiply(addition: (a, b),
                  c,
                  result: &buffer)
    
    initializedCount = a.count
}

// d = [22.0, 44.0, 66.0, 88.0, 110.0, 132.0, 154.0, 176.0, 198.0, 220.0]
```

Many vDSP functions have a variant that returns the result.

```swift
let a: [Float] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let b: [Float] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
let c: Float = 2

let d = vDSP.multiply(addition: (a, b),
                      c)
```

### Available arithmetic functions

The following table summarizes the basic arithmetic functions available in vDSP. All functions are available in single- and double-precision variants.

In the *Operation* column, a subscript (for example, `a[i]`) indicates a vector, and no subscript (for example, `a`) indicates a scalar value.

|Operation                                                  |Function                                                                                                    |
|-----------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
|`c[i] = a[i] + b`                                          |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/add(_:_:)-53nh9``                                |
|`c[i] = a[i] + b[i]`                                       |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/add(_:_:)-7swvf``                                |
|`c[i] = a[i] - b[i]`                                       |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/subtract(_:_:)-9xmo8``                           |
|`c[i] = a[i] * b`                                          |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(_:_:)-993yp``                           |
|`c[i] = a[i] * b[i]`                                       |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(_:_:)-9zgw``                            |
|`c[i] = a[i] / b`                                          |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/divide(_:_:)-1uqmz``                             |
|`c[i] = a / b[i]`                                          |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/divide(_:_:)-70npt``                             |
|`o0[i] = i1[i] + i0[i]` ![](spacer) `o1[i] = i1[i] - i0[i]`|``doc://com.apple.accelerate/documentation/Accelerate/vDSP/addSubtract(_:_:addResult:subtractResult:)-avzd``|
|`c[i] = a[i] / b[i]`                                       |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/divide(_:_:)-6nfsi``                             |
|`d[i] = (a[i] + b[i]) * c`                                 |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(addition:_:)-4fnbx``                    |
|`d[i] = (a[i] + b[i]) * c[i]`                              |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(addition:_:)-7t59``                     |
|`d[i] = (a[i] - b[i]) * c`                                 |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(subtraction:_:)-106pt``                 |
|`d[i] = (a[i] - b[i]) * c[i]`                              |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(subtraction:_:)-6y7g6``                 |
|`d[i] = (a[i] * b[i]) + c`                                 |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/add(multiplication:_:)-36vhq``                   |
|`d[i] = (a[i] * b) + c[i]`                                 |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/add(multiplication:_:)-7aut1``                   |
|`d[i] = (a[i] * b[i]) + c[i]`                              |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/add(multiplication:_:)-9bgb2``                   |
|`d[i] = (a[i] * b[i]) - c[i]`                              |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/subtract(multiplication:_:)-6u3sp``              |
|`e[i] = (a[i] * b) + (c[i] * d)`                           |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/add(multiplication:multiplication:)-8rjh8``      |
|`e[i] = (a[i] + b[i]) * (c[i] + d[i])`                     |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(addition:addition:)-1voy8``             |
|`e[i] = (a[i] * b[i]) - (c[i] * d[i])`                     |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/subtract(multiplication:multiplication:)-1ghyu`` |
|`e[i] = (a[i] - b[i]) * (c[i] - d[i])`                     |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(subtraction:subtraction:)-1rnom``       |
|`e[i] = (a[i] + b[i]) * (c[i] - d[i])`                     |``doc://com.apple.accelerate/documentation/Accelerate/vDSP/multiply(addition:subtraction:)-6h89l``          |

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)