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

# Multiplication

Multiply vectors that contain real or complex values.

## Topics

### Multiplying real matrices

[`extern void vDSP_mmul(const float *__A, vDSP_Stride __IA, const float *__B, vDSP_Stride __IB, float *__C, vDSP_Stride __IC, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_mmul)

Performs an out-of-place multiplication of two single-precision real matrices.

[`extern void vDSP_mmulD(const double *__A, vDSP_Stride __IA, const double *__B, vDSP_Stride __IB, double *__C, vDSP_Stride __IC, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_mmulD)

Performs an out-of-place multiplication of two double-precision real matrices.

### Multiplying complex matrices

[`extern void vDSP_zmmul(const DSPSplitComplex *__A, vDSP_Stride __IA, const DSPSplitComplex *__B, vDSP_Stride __IB, const DSPSplitComplex *__C, vDSP_Stride __IC, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmmul)

Performs an out-of-place multiplication of two single-precision complex matrices.

[`extern void vDSP_zmmulD(const DSPDoubleSplitComplex *__A, vDSP_Stride __IA, const DSPDoubleSplitComplex *__B, vDSP_Stride __IB, const DSPDoubleSplitComplex *__C, vDSP_Stride __IC, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmmulD)

Performs an out-of-place multiplication of two double-precision complex matrices.

### Multiplying and adding complex matrices

[`extern void vDSP_zmma(const DSPSplitComplex *__A, vDSP_Stride __IA, const DSPSplitComplex *__B, vDSP_Stride __IB, const DSPSplitComplex *__C, vDSP_Stride __IC, const DSPSplitComplex *__D, vDSP_Stride __ID, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmma)

Adds a single-precision complex matrix to the product of two single-precision complex matrices.

[`extern void vDSP_zmmaD(const DSPDoubleSplitComplex *__A, vDSP_Stride __IA, const DSPDoubleSplitComplex *__B, vDSP_Stride __IB, const DSPDoubleSplitComplex *__C, vDSP_Stride __IC, const DSPDoubleSplitComplex *__D, vDSP_Stride __ID, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmmaD)

Adds a double-precision complex matrix to the product of two double-precision complex matrices.

### Multiplying and subtracting complex matrices

[`extern void vDSP_zmms(const DSPSplitComplex *__A, vDSP_Stride __IA, const DSPSplitComplex *__B, vDSP_Stride __IB, const DSPSplitComplex *__C, vDSP_Stride __IC, const DSPSplitComplex *__D, vDSP_Stride __ID, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmms)

Subtracts a single-precision complex matrix from the product of two single-precision complex matrices.

[`extern void vDSP_zmmsD(const DSPDoubleSplitComplex *__A, vDSP_Stride __IA, const DSPDoubleSplitComplex *__B, vDSP_Stride __IB, const DSPDoubleSplitComplex *__C, vDSP_Stride __IC, const DSPDoubleSplitComplex *__D, vDSP_Stride __ID, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmmsD)

Subtracts a double-precision complex matrix from the product of two double-precision complex matrices.

[`extern void vDSP_zmsm(const DSPSplitComplex *__A, vDSP_Stride __IA, const DSPSplitComplex *__B, vDSP_Stride __IB, const DSPSplitComplex *__C, vDSP_Stride __IC, const DSPSplitComplex *__D, vDSP_Stride __ID, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmsm)

Subtracts the product of two single-precision complex matrices from a single-precision complex matrix.

[`extern void vDSP_zmsmD(const DSPDoubleSplitComplex *__A, vDSP_Stride __IA, const DSPDoubleSplitComplex *__B, vDSP_Stride __IB, const DSPDoubleSplitComplex *__C, vDSP_Stride __IC, const DSPDoubleSplitComplex *__D, vDSP_Stride __ID, vDSP_Length __M, vDSP_Length __N, vDSP_Length __P);`](/documentation/Accelerate/vDSP_zmsmD)

Subtracts the product of two double-precision complex matrices from a double-precision complex matrix.



---

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)