<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/vdsp-library",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "vDSP"
}
-->

# vDSP

Perform basic arithmetic operations and common digital signal processing (DSP) routines on large vectors.

## Discussion

The vDSP library contains a collection of highly optimized functions for DSP, type conversion, and general purpose arithmetic on large collections. The library includes DSP operations such as convolution and correlation, Fourier transformation, and biquadratic filtering. For arithmetic on large collections, vDSP includes functions such as multiply-add and reduction functions including sum, mean, and maximum.

The following sequence of images illustrates an example of the vDSP library’s capabilities. The [`vDSP_vtmerg`](/documentation/Accelerate/vDSP_vtmerg) function combines two waveforms to produce a vector to create a smooth transition between two signals.

![A flow diagram that depicts how the tapered merge function combines two sine waves. The top row shows a low-frequency sine wave on the left and a high-frequency sine wave on the right. The bottom row shows the merged result. The resulting signal starts with a low-frequency wave and gradually transforms to a high-frequency wave.](images/com.apple.accelerate/media-4310314@2x.png)

> Note:
> Unless otherwise mentioned, vDSP functions with the same input and output sizes (in bytes) work in-place.

The majority of vDSP operations are single-threaded and run on a single core. However, the following functions may be multithreaded depending on the size of the data they’re operating on:

- [`vDSP_mmul`](/documentation/Accelerate/vDSP_mmul)
- [`vDSP_mmulD`](/documentation/Accelerate/vDSP_mmulD)
- [`vDSP_zmma`](/documentation/Accelerate/vDSP_zmma)
- [`vDSP_zmmaD`](/documentation/Accelerate/vDSP_zmmaD)
- [`vDSP_zmms`](/documentation/Accelerate/vDSP_zmms)
- [`vDSP_zmmsD`](/documentation/Accelerate/vDSP_zmmsD)
- [`vDSP_zmmul`](/documentation/Accelerate/vDSP_zmmul)
- [`vDSP_zmmulD`](/documentation/Accelerate/vDSP_zmmulD)
- [`vDSP_zmsm`](/documentation/Accelerate/vDSP_zmsm)
- [`vDSP_zmsmD`](/documentation/Accelerate/vDSP_zmsmD)

## Topics

### Fundamentals

  <doc://com.apple.accelerate/documentation/Accelerate/controlling-vdsp-operations-with-stride>

  <doc://com.apple.accelerate/documentation/Accelerate/using-vdsp-for-vector-based-arithmetic>

### Swift overlay

[`vDSP`](/documentation/Accelerate/vDSP)

An enumeration that acts as a namespace for Swift overlays to vDSP.

  <doc://com.apple.accelerate/documentation/Accelerate/vdsp-protocols>

### Vector generation, filling, and clearing

  <doc://com.apple.accelerate/documentation/Accelerate/vector-generation>

  <doc://com.apple.accelerate/documentation/Accelerate/vector-clear-and-fill-functions>

### Vector reduction

  <doc://com.apple.accelerate/documentation/Accelerate/vector-extrema-calculation>

  <doc://com.apple.accelerate/documentation/Accelerate/vector-average-calculation>

  <doc://com.apple.accelerate/documentation/Accelerate/vector-summation>

### Vector geometry functions

  <doc://com.apple.accelerate/documentation/Accelerate/vector-distance-and-pythagorean-computation>

  <doc://com.apple.accelerate/documentation/Accelerate/dot-product-calculation>

### Element-wise vector arithmetic

Perform basic arithmetic operations on vectors that contain real and complex values.

  <doc://com.apple.accelerate/documentation/Accelerate/arithmetic-operations>

### Vector-scalar arithmetic

  <doc://com.apple.accelerate/documentation/Accelerate/vector-scalar-real-arithmetic-functions>

### Vector-vector arithmetic

  <doc://com.apple.accelerate/documentation/Accelerate/vector-vector-real-arithmetic-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/complex-basic-arithmetic>

  <doc://com.apple.accelerate/documentation/Accelerate/integer-arithmetic>

  <doc://com.apple.accelerate/documentation/Accelerate/linear-averaging-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/polynomial-evaluation>

### Vector operations

  <doc://com.apple.accelerate/documentation/Accelerate/compression-and-gathering-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/copying-element-swapping-and-merging-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/reversing-and-sorting-functions>

### Vector interpolation

  <doc://com.apple.accelerate/documentation/Accelerate/linear-interpolation-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/quadratic-interpolation-functions>

### Vector filtering

  <doc://com.apple.accelerate/documentation/Accelerate/biquadratic-iir-filters>

  <doc://com.apple.accelerate/documentation/Accelerate/single-channel-biquadratic-filters>

  <doc://com.apple.accelerate/documentation/Accelerate/multichannel-biquadratic-filters>

  <doc://com.apple.accelerate/documentation/Accelerate/finite-impulse-response-filters>

  <doc://com.apple.accelerate/documentation/Accelerate/recursive-filters>

### Vector conversion functions

  <doc://com.apple.accelerate/documentation/Accelerate/conversion-to-decibel-equivalents>

  <doc://com.apple.accelerate/documentation/Accelerate/type-conversion>

  <doc://com.apple.accelerate/documentation/Accelerate/complex-vector-conversion>

  <doc://com.apple.accelerate/documentation/Accelerate/polar-rectangular-conversion>

### Single-vector arithmetic functions

  <doc://com.apple.accelerate/documentation/Accelerate/absolute-and-negation-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/integration-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/clipping-limit-and-threshold-operations>

  <doc://com.apple.accelerate/documentation/Accelerate/normalization-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/phase-computation-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/complex-conjugation-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/vector-squaring-functions>

  <doc://com.apple.accelerate/documentation/Accelerate/fractional-part-extraction>

  <doc://com.apple.accelerate/documentation/Accelerate/zero-crossing-search>

### Single-vector sliding-window operations

  <doc://com.apple.accelerate/documentation/Accelerate/sliding-window-reduction-functions>

### Vector-to-vector spectra and coherence computation

  <doc://com.apple.accelerate/documentation/Accelerate/autospectrum-computation>

  <doc://com.apple.accelerate/documentation/Accelerate/cross-spectrum-computation>

  <doc://com.apple.accelerate/documentation/Accelerate/coherence-function-computation>

### Vector-to-vector extrema functions

  <doc://com.apple.accelerate/documentation/Accelerate/vector-to-vector-minima-and-maxima>

  <doc://com.apple.accelerate/documentation/Accelerate/extrema-finding-functions>

### Matrix operations

  <doc://com.apple.accelerate/documentation/Accelerate/multiplication>

  <doc://com.apple.accelerate/documentation/Accelerate/transposition-vdsp>

  <doc://com.apple.accelerate/documentation/Accelerate/matrix-and-submatrix-copying-functions>

### Vector and matrix correlation and convolution

  <doc://com.apple.accelerate/documentation/Accelerate/1d-correlation-and-convolution>

  <doc://com.apple.accelerate/documentation/Accelerate/2d-convolution>

### Vector and matrix Fourier transforms

  <doc://com.apple.accelerate/documentation/Accelerate/fast-fourier-transforms>

  <doc://com.apple.accelerate/documentation/Accelerate/discrete-fourier-transforms>

  <doc://com.apple.accelerate/documentation/Accelerate/discrete-cosine-transforms>

### Data types

[`vDSP_Length`](/documentation/Accelerate/vDSP_Length)

An unsigned-integer value that represents the size of vectors and the indices of elements in vectors.

[`vDSP_Stride`](/documentation/Accelerate/vDSP_Stride)

An integer value that represents the differences between indices of elements, including the lengths of strides.

[`DSPComplex`](/documentation/Accelerate/DSPComplex)

A structure that represents a single-precision complex value.

[`COMPLEX_SPLIT`](/documentation/Accelerate/COMPLEX_SPLIT)

[`DSPDoubleComplex`](/documentation/Accelerate/DSPDoubleComplex)

A structure that represents a double-precision complex value.

[`DOUBLE_COMPLEX_SPLIT`](/documentation/Accelerate/DOUBLE_COMPLEX_SPLIT)

[`DSPSplitComplex`](/documentation/Accelerate/DSPSplitComplex)

A structure that represents a single-precision complex vector with the real and imaginary parts stored in separate arrays.

[`DSPDoubleSplitComplex`](/documentation/Accelerate/DSPDoubleSplitComplex)

A structure that represents a double-precision complex vector with the real and imaginary parts stored in separate arrays.

[`VectorizableDouble`](/documentation/Accelerate/vDSP/VectorizableDouble)

A structure that represents a double-precision real value for biquadratic filtering and discrete Fourier transforms.

[`VectorizableFloat`](/documentation/Accelerate/vDSP/VectorizableFloat)

A structure that represents a single-precision real value for biquadratic filtering and discrete Fourier transforms.

### Constants

  <doc://com.apple.accelerate/documentation/Accelerate/vdsp-compile-time-version-information>

### Macros

[`vDSP_DeprecateTranslations`](/documentation/Accelerate/vDSP_DeprecateTranslations)

[`vDSP_ENUM`](/documentation/Accelerate/vDSP_ENUM)



---

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)