<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/complex-basic-arithmetic",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Complex basic arithmetic"
}
-->

# Complex basic arithmetic

Perform element-wise operations on vectors of complex values.

## Topics

### Binary Addition Operations

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

Adds two single-precision complex vectors.

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

Adds two double-precision complex vectors.

### Binary Subtraction Operations

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

Subtracts two single-precision complex vectors.

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

Subtracts two double-precision complex vectors.

### Binary Conjugate-Multiply Operations

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

Multiplies a single-precision complex vector by the conjugate of another single-precision complex vector.

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

Multiplies a double-precision complex vector by the conjugate of another double-precision complex vector.

### Binary Optional Conjugate-Multiply Operations

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

Multiplies a single-precision complex vector by the optionally conjugate of another single-precision complex vector.

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

Multiplies a double-precision complex vector by the optionally conjugate of another double-precision complex vector.

### Binary Division Operations

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

Divides two complex single-precision vectors.

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

Divides two complex double-precision vectors.

### Binary Transfer Operations

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

Divides a complex single-precision vector by a real single-precision vector.

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

Divides a complex double-precision vector by a real double-precision vector.

### Binary (Complex-Real) Addition Operations

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

Adds a single-precision complex vector to a single-precision real vector.

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

Adds a double-precision complex vector to a double-precision real vector.

### Binary (Complex-Real) Subtraction Operations

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

Subtracts a single-precision real vector from a single-precision complex vector.

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

Subtracts a double-precision real vector from a double-precision complex vector.

### Binary (Complex) Multiplication Operations

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

Calculates the single-precision element-wise product of a complex vector and a complex scalar value, using the specified stride.

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

Calculates the double-precision element-wise product of a complex vector and a complex scalar value, using the specified stride.

### Binary (Complex-Real) Multiplication Operations

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

Multiplies a single-precision complex vector by a single-precision real vector.

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

Multiplies a double-precision complex vector by a double-precision real vector.

### Binary (Complex-Real) Division Operations

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

Divides a single-precision complex vector by a single-precision real vector.

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

Divides a double-precision complex vector by a double-precision real vector.

### Ternary Multiply-Add Operations

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

Adds a single-precision complex vector to the product of two single-precision complex vectors.

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

Adds a double-precision complex vector to the product of two double-precision complex vectors.

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

Calculates the single-precision element-wise addition of the product of a complex vector and a complex scalar value, and a complex vector, using the specified stride.

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

Calculates the double-precision element-wise addition of the product of a complex vector and a complex scalar value, and a complex vector, using the specified stride.

### Ternary Conjugate-Multiply-Add

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

Adds a single-precision complex vector to the product of a single-precision complex vector and the conjugate of another complex single-precision vector.

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

Adds a double-precision complex vector to the product of a double-precision complex vector and the conjugate of another complex double-precision vector.

### Quinary Multiply-Multiply-Add-Add

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

Adds a single-precision complex vector to the sum of the product of two single-precision complex vectors and a second product of two single-precision complex vectors.

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

Adds a double-precision complex vector to the sum of the product of two double-precision complex vectors and a second product of two double-precision complex vectors.



---

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)