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

# BLAS

Perform common linear algebra operations with Apple’s implementation of the Basic Linear Algebra Subprograms (BLAS).

## Discussion

The vecLib framework contains nine C header files (not counting `vecLib.h`, which merely includes the others).

This document describes the functions declared in the header files `cblas.h` and `vblas.h`, which contain the interfaces for Apple’s implementation of the BLAS API.

Note that documentation describing the leading dimension as the first dimension of a matrix refers to column-major ordering. In row-major ordering, the leading dimension is the second dimension of a matrix.

> Important:
> Apple provides the BLAS and LAPACK libraries under the Accelerate framework to be in line with LAPACK 3.9.1. Starting with iOS 26, iPadOS 26, macOS 26, tvOS 26, visionOS 26, and watchOS 26, the libraries are in line with LAPACK 3.12.0. These new interfaces provide additional functionality, as well as a new ILP64 interface. To use the new interfaces, define `ACCELERATE_NEW_LAPACK` before including the Accelerate or vecLib headers. For ILP64 interfaces, also define `ACCELERATE_LAPACK_ILP64`. For Swift projects, specify `ACCELERATE_NEW_LAPACK=1` and `ACCELERATE_LAPACK_ILP64=1` as preprocessor macros in Xcode build settings under Apple Clang - Preprocessing > Preprocessor Macros.

## Topics

### Fortran interoperability

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

### Specifying the threading model

[`struct BLAS`](/documentation/Accelerate/BLAS)

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

[`func BLASSetThreading(BLAS_THREADING) -> Int32`](/documentation/Accelerate/BLASSetThreading(_:))

Sets the BLAS and LAPACK threading model.

[`func BLASGetThreading() -> BLAS_THREADING`](/documentation/Accelerate/BLASGetThreading())

Returns the current BLAS and LAPACK threading model.

[`struct BLAS_THREADING`](/documentation/Accelerate/BLAS_THREADING)

Constants that describe the BLAS and LAPACK threading model.

### General functions

[`void SetBLASParamErrorProc(BLASParamErrorProc __ErrorProc);`](/documentation/Accelerate/SetBLASParamErrorProc)

Sets an error handler function.

[`__LAPACK_int cblas_errprn(__LAPACK_int ierr, __LAPACK_int info, char *form, ...);`](/documentation/Accelerate/cblas_errprn)

Prints an error message.

[`void cblas_xerbla(__LAPACK_int p, char *rout, char *form, ...);`](/documentation/Accelerate/cblas_xerbla)

The default error handler for BLAS routines.

[`func cblas_icamax(__LAPACK_int, OpaquePointer?, __LAPACK_int) -> __LAPACK_int`](/documentation/Accelerate/cblas_icamax(_:_:_:))

Returns the index of the element with the largest absolute value in a vector (single-precision complex).

[`func cblas_idamax(__LAPACK_int, UnsafePointer<Double>?, __LAPACK_int) -> __LAPACK_int`](/documentation/Accelerate/cblas_idamax(_:_:_:))

Returns the index of the element with the largest absolute value in a vector (double-precision).

[`func cblas_isamax(__LAPACK_int, UnsafePointer<Float>?, __LAPACK_int) -> __LAPACK_int`](/documentation/Accelerate/cblas_isamax(_:_:_:))

Returns the index of the element with the largest absolute value in a vector (single-precision).

[`func cblas_izamax(__LAPACK_int, OpaquePointer?, __LAPACK_int) -> __LAPACK_int`](/documentation/Accelerate/cblas_izamax(_:_:_:))

Returns the index of the element with the largest absolute value in a vector (double-precision complex).

### Sparse computation

  <doc://com.apple.accelerate/documentation/Accelerate/matrix-and-vector-operations>

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

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

  <doc://com.apple.accelerate/documentation/Accelerate/general-sparse-matrix-management-operations>

  <doc://com.apple.accelerate/documentation/Accelerate/sparse-vector-utility-operations>

### Data types

[`typealias BLASParamErrorProc`](/documentation/Accelerate/BLASParamErrorProc)

A BLAS error handler callback type.

### Constants

> Note:
> The types given here are valid for C or C++ and for either PowerPC or Intel processors.   The typedefs shown are for C++ and PowerPC processors; for other, conditionally compiled typedefs, see the header files.

[`struct CBLAS_ORDER`](/documentation/Accelerate/CBLAS_ORDER)

Indicates whether a matrix is in row-major or column-major order.

[`struct CBLAS_TRANSPOSE`](/documentation/Accelerate/CBLAS_TRANSPOSE)

Indicates transpose operation to perform on a matrix.

[`struct CBLAS_UPLO`](/documentation/Accelerate/CBLAS_UPLO)

[`struct CBLAS_DIAG`](/documentation/Accelerate/CBLAS_DIAG)

Indicates whether a triangular matrix is unit-diagonal (diagonal elements are all equal to 1).

[`struct CBLAS_SIDE`](/documentation/Accelerate/CBLAS_SIDE)

Indicates the order of a matrix multiplication.

### Variables

[`var CblasColMajor: CBLAS_ORDER`](/documentation/Accelerate/CblasColMajor)

[`var CblasConjTrans: CBLAS_TRANSPOSE`](/documentation/Accelerate/CblasConjTrans)

[`var CblasLeft: CBLAS_SIDE`](/documentation/Accelerate/CblasLeft)

[`var CblasLower: CBLAS_UPLO`](/documentation/Accelerate/CblasLower)

[`var CblasNoTrans: CBLAS_TRANSPOSE`](/documentation/Accelerate/CblasNoTrans)

[`var CblasNonUnit: CBLAS_DIAG`](/documentation/Accelerate/CblasNonUnit)

[`var CblasRight: CBLAS_SIDE`](/documentation/Accelerate/CblasRight)

[`var CblasRowMajor: CBLAS_ORDER`](/documentation/Accelerate/CblasRowMajor)

[`var CblasTrans: CBLAS_TRANSPOSE`](/documentation/Accelerate/CblasTrans)

[`var CblasUnit: CBLAS_DIAG`](/documentation/Accelerate/CblasUnit)

[`var CblasUpper: CBLAS_UPLO`](/documentation/Accelerate/CblasUpper)

[`var AtlasConj: CBLAS_TRANSPOSE`](/documentation/Accelerate/AtlasConj)

### CATLAS and CBLAS vector functions

[`func catlas_caxpby(__LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/catlas_caxpby(_:_:_:_:_:_:_:))

Computes the product of two vectors, scaling each one separately (single-precision complex).

[`func catlas_cset(__LAPACK_int, OpaquePointer, OpaquePointer, __LAPACK_int)`](/documentation/Accelerate/catlas_cset(_:_:_:_:))

Modifies a vector (single-precision complex) in place, setting each element to a given value.

[`func catlas_daxpby(__LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/catlas_daxpby(_:_:_:_:_:_:_:))

Computes the sum of two vectors, scaling each one separately (double-precision).

[`func catlas_dset(__LAPACK_int, Double, UnsafeMutablePointer<Double>, __LAPACK_int)`](/documentation/Accelerate/catlas_dset(_:_:_:_:))

Modifies a vector (double-precision) in place, setting each element to a given value.

[`func catlas_saxpby(__LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/catlas_saxpby(_:_:_:_:_:_:_:))

Computes the sum of two vectors, scaling each one separately (single-precision).

[`func catlas_sset(__LAPACK_int, Float, UnsafeMutablePointer<Float>, __LAPACK_int)`](/documentation/Accelerate/catlas_sset(_:_:_:_:))

Modifies a vector (single-precision) in place, setting each element to a given value.

[`func catlas_zaxpby(__LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/catlas_zaxpby(_:_:_:_:_:_:_:))

Computes the sum of two vectors, scaling each one separately (double-precision complex).

[`func catlas_zset(__LAPACK_int, OpaquePointer, OpaquePointer, __LAPACK_int)`](/documentation/Accelerate/catlas_zset(_:_:_:_:))

Modifies a vector (double-precision complex) in place, setting each element to a given value.

[`func cblas_sdot(__LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int) -> Float`](/documentation/Accelerate/cblas_sdot(_:_:_:_:_:))

Computes the dot product of two vectors (single-precision).

[`func cblas_sdsdot(__LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int) -> Float`](/documentation/Accelerate/cblas_sdsdot(_:_:_:_:_:_:))

Computes the dot product of two single-precision vectors plus an initial single-precision value.

[`func cblas_cdotc_sub(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer)`](/documentation/Accelerate/cblas_cdotc_sub(_:_:_:_:_:_:))

Calculates the dot product of the complex conjugate of a single-precision complex vector with a second single-precision complex vector.

[`func cblas_cdotu_sub(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer)`](/documentation/Accelerate/cblas_cdotu_sub(_:_:_:_:_:_:))

Computes the dot product of two single-precision complex vectors.

[`func cblas_ddot(__LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int) -> Double`](/documentation/Accelerate/cblas_ddot(_:_:_:_:_:))

Computes the dot product of two vectors (double-precision).

[`func cblas_dsdot(__LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int) -> Double`](/documentation/Accelerate/cblas_dsdot(_:_:_:_:_:))

Computes the double-precision dot product of a pair of single-precision vectors.

[`func cblas_zdotc_sub(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer)`](/documentation/Accelerate/cblas_zdotc_sub(_:_:_:_:_:_:))

Calculates the dot product of the complex conjugate of a double-precision complex vector with a second double-precision complex vector.

[`func cblas_zdotu_sub(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer)`](/documentation/Accelerate/cblas_zdotu_sub(_:_:_:_:_:_:))

Computes the dot product of two double-precision complex vectors.

### Single-precision float matrix functions

[`func cblas_sasum(__LAPACK_int, UnsafePointer<Float>?, __LAPACK_int) -> Float`](/documentation/Accelerate/cblas_sasum(_:_:_:))

Computes the sum of the absolute values of elements in a vector (single-precision).

[`func cblas_saxpy(__LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_saxpy(_:_:_:_:_:_:))

Computes a constant times a vector plus a vector (single-precision).

[`func cblas_scopy(__LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_scopy(_:_:_:_:_:))

Copies a vector to another vector (single-precision).

[`func cblas_sgbmv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_sgbmv(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a general band matrix, then multiplies by a vector, then adds a vector (single precision).

[`func cblas_sgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_sgemm(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies two matrices (single-precision).

[`func cblas_sgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_sgemv(_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a single-precision matrix by a vector.

[`func cblas_sger(CBLAS_ORDER, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_sger(_:_:_:_:_:_:_:_:_:_:))

Multiplies vector X by the transpose of vector Y, then adds matrix A (single precison).

[`func cblas_snrm2(__LAPACK_int, UnsafePointer<Float>?, __LAPACK_int) -> Float`](/documentation/Accelerate/cblas_snrm2(_:_:_:))

Computes the L2 norm (Euclidian length) of a vector (single precision).

[`func cblas_srot(__LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int, Float, Float)`](/documentation/Accelerate/cblas_srot(_:_:_:_:_:_:_:))

Applies a Givens rotation matrix to a pair of vectors.

[`func cblas_srotg(UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>)`](/documentation/Accelerate/cblas_srotg(_:_:_:_:))

Constructs a Givens rotation matrix.

[`func cblas_srotm(__LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int, UnsafePointer<Float>)`](/documentation/Accelerate/cblas_srotm(_:_:_:_:_:_:))

Applies a modified Givens transformation (single precision).

[`func cblas_srotmg(UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, Float, UnsafeMutablePointer<Float>)`](/documentation/Accelerate/cblas_srotmg(_:_:_:_:_:))

Generates a modified Givens rotation matrix.

[`func cblas_ssbmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_ssbmv(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a symmetric band matrix, then multiplies by a vector, then adds a vector (single-precision).

[`func cblas_sscal(__LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_sscal(_:_:_:_:))

Multiplies each element of a vector by a constant (single-precision).

[`func cblas_sspmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, UnsafePointer<Float>?, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_sspmv(_:_:_:_:_:_:_:_:_:_:))

Scales a packed symmetric matrix, then multiplies by a vector, then scales and adds another vector (single precision).

[`func cblas_sspr(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?)`](/documentation/Accelerate/cblas_sspr(_:_:_:_:_:_:_:))

Rank one update: adds a packed symmetric matrix to the product of a scaling factor, a vector, and its transpose (single precision).

[`func cblas_sspr2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?)`](/documentation/Accelerate/cblas_sspr2(_:_:_:_:_:_:_:_:_:))

Rank two update of a packed symmetric matrix using two vectors (single precision).

[`func cblas_sswap(__LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_sswap(_:_:_:_:_:))

Exchanges the elements of two vectors (single precision).

[`func cblas_ssymm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_ssymm(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a matrix by a symmetric matrix (single-precision).

[`func cblas_ssymv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_ssymv(_:_:_:_:_:_:_:_:_:_:_:))

Scales a symmetric matrix, multiplies by a vector, then scales and adds another vector (single precision).

[`func cblas_ssyr(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_ssyr(_:_:_:_:_:_:_:_:))

Rank one update: adds a symmetric matrix to the product of a scaling factor, a vector, and its transpose (single precision).

[`func cblas_ssyr2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_ssyr2(_:_:_:_:_:_:_:_:_:_:))

Rank two update of a symmetric matrix using two vectors (single precision).

[`func cblas_ssyr2k(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_ssyr2k(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Performs a rank-2k update of a symmetric matrix (single precision).

[`func cblas_ssyrk(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_ssyrk(_:_:_:_:_:_:_:_:_:_:_:))

Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (single precision).

[`func cblas_stbmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_stbmv(_:_:_:_:_:_:_:_:_:_:))

Scales a triangular band matrix, then multiplies by a vector (single precision).

[`func cblas_stbsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_stbsv(_:_:_:_:_:_:_:_:_:_:))

Solves a triangular banded system of equations.

[`func cblas_stpmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Float>?, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_stpmv(_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector, then adds a vector (single precision).

[`func cblas_stpsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Float>?, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_stpsv(_:_:_:_:_:_:_:_:))

Solves a packed triangular system of equations.

[`func cblas_strmm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_strmm(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a triangular matrix and multiplies it by a matrix.

[`func cblas_strmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_strmv(_:_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector.

[`func cblas_strsm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_strsm(_:_:_:_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with multiple values for the right side.

[`func cblas_strsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>?, __LAPACK_int)`](/documentation/Accelerate/cblas_strsv(_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with a single value for the right side.

[`func appleblas_sgeadd(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, Float, UnsafePointer<Float>?, __LAPACK_int, UnsafeMutablePointer<Float>, __LAPACK_int)`](/documentation/Accelerate/appleblas_sgeadd(_:_:_:_:_:_:_:_:_:_:_:_:_:))

### Single-precision complex matrix functions

[`func cblas_caxpy(__LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_caxpy(_:_:_:_:_:_:))

Computes a constant times a vector plus a vector (single-precision complex).

[`func cblas_ccopy(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ccopy(_:_:_:_:_:))

Copies a vector to another vector (single-precision complex).

[`func cblas_cgbmv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cgbmv(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a general band matrix, then multiplies by a vector, then adds a vector (single-precision complex).

[`func cblas_cgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cgemm(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies two matrices (single-precision complex).

[`func cblas_cgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cgemv(_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a matrix by a vector (single-precision complex).

[`func cblas_cgerc(CBLAS_ORDER, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cgerc(_:_:_:_:_:_:_:_:_:_:))

Multiplies vector X by the conjugate transpose of vector Y, then adds matrix A (single-precision complex).

[`func cblas_cgeru(CBLAS_ORDER, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cgeru(_:_:_:_:_:_:_:_:_:_:))

Multiplies vector X by the transpose of vector Y, then adds matrix A (single-precision complex).

[`func cblas_chbmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_chbmv(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a Hermitian band matrix, then multiplies by a vector, then adds a vector (single-precision complex).

[`func cblas_chemm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_chemm(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies two Hermitian matrices (single-precision complex), then adds a third (with scaling).

[`func cblas_chemv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_chemv(_:_:_:_:_:_:_:_:_:_:_:))

Scales and multiplies a Hermitian matrix by a vector, then adds a second (scaled) vector.

[`func cblas_cher(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cher(_:_:_:_:_:_:_:_:))

Hermitian rank 1 update: adds the product of a scaling factor, vector `X`, and the conjugate transpose of `X` to matrix `A`.

[`func cblas_cher2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cher2(_:_:_:_:_:_:_:_:_:_:))

Hermitian rank 2 update: adds the product of a scaling factor, vector `X`, and the conjugate transpose of vector `Y` to the product of the conjugate of the scaling factor, vector `Y`, and the conjugate transpose of vector `X`, and adds the result to matrix `A`.

[`func cblas_cher2k(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, Float, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cher2k(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Performs a rank-2k update of a complex Hermitian matrix (single-precision complex).

[`func cblas_cherk(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Float, OpaquePointer?, __LAPACK_int, Float, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cherk(_:_:_:_:_:_:_:_:_:_:_:))

Rank-k update—multiplies a Hermitian matrix by its transpose and adds a second matrix (single precision).

[`func cblas_chpmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_chpmv(_:_:_:_:_:_:_:_:_:_:))

Scales a packed hermitian matrix, multiplies it by a vector, and adds a scaled vector.

[`func cblas_chpr(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Float, OpaquePointer?, __LAPACK_int, OpaquePointer?)`](/documentation/Accelerate/cblas_chpr(_:_:_:_:_:_:_:))

Scales and multiplies a vector times its conjugate transpose, then adds a matrix.

[`func cblas_chpr2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?)`](/documentation/Accelerate/cblas_chpr2(_:_:_:_:_:_:_:_:_:))

Multiplies a vector times the conjugate transpose of a second vector and vice-versa, sums the results, and adds a matrix.

[`func cblas_crotg(OpaquePointer, OpaquePointer, UnsafeMutablePointer<Float>, OpaquePointer)`](/documentation/Accelerate/cblas_crotg(_:_:_:_:))

Constructs a complex Givens rotation.

[`func cblas_cscal(__LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cscal(_:_:_:_:))

Multiplies each element of a vector by a constant (single-precision complex).

[`func cblas_csrot(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, Float, Float)`](/documentation/Accelerate/cblas_csrot(_:_:_:_:_:_:_:))

Applies a Givens rotation matrix to a pair of complex vectors.

[`func cblas_csscal(__LAPACK_int, Float, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_csscal(_:_:_:_:))

Multiplies each element of a vector by a constant (single-precision complex).

[`func cblas_cswap(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_cswap(_:_:_:_:_:))

Exchanges the elements of two vectors (single-precision complex).

[`func cblas_csymm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_csymm(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a matrix by a symmetric matrix (single-precision complex).

[`func cblas_csyr2k(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_csyr2k(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Performs a rank-2k update of a symmetric matrix (single-precision complex).

[`func cblas_csyrk(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_csyrk(_:_:_:_:_:_:_:_:_:_:_:))

Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (single-precision complex).

[`func cblas_ctbmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctbmv(_:_:_:_:_:_:_:_:_:_:))

Scales a triangular band matrix, then multiplies by a vector (single-precision compex).

[`func cblas_ctbsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctbsv(_:_:_:_:_:_:_:_:_:_:))

Solves a triangular banded system of equations.

[`func cblas_ctpmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctpmv(_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector, then adds a vector (single-precision complex).

[`func cblas_ctpsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctpsv(_:_:_:_:_:_:_:_:))

Solves a packed triangular system of equations.

[`func cblas_ctrmm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctrmm(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a triangular matrix and multiplies it by a matrix.

[`func cblas_ctrmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctrmv(_:_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector.

[`func cblas_ctrsm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctrsm(_:_:_:_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with multiple values for the right side.

[`func cblas_ctrsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ctrsv(_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with a single value for the right side.

[`func cblas_scasum(__LAPACK_int, OpaquePointer?, __LAPACK_int) -> Float`](/documentation/Accelerate/cblas_scasum(_:_:_:))

Computes the sum of the absolute values of real and imaginary parts of elements in a vector (single-precision complex).

[`func cblas_scnrm2(__LAPACK_int, OpaquePointer?, __LAPACK_int) -> Float`](/documentation/Accelerate/cblas_scnrm2(_:_:_:))

Computes the unitary norm of a vector (single-precision complex).

### Double-precision float matrix functions

[`func cblas_dasum(__LAPACK_int, UnsafePointer<Double>?, __LAPACK_int) -> Double`](/documentation/Accelerate/cblas_dasum(_:_:_:))

Computes the sum of the absolute values of elements in a vector (double-precision).

[`func cblas_daxpy(__LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_daxpy(_:_:_:_:_:_:))

Computes a constant times a vector plus a vector (double-precision).

[`func cblas_dcopy(__LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dcopy(_:_:_:_:_:))

Copies a vector to another vector (double-precision).

[`func cblas_dgbmv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dgbmv(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a general band matrix, then multiplies by a vector, then adds a vector (double precision).

[`func cblas_dgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dgemm(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies two matrices (double-precision).

[`func cblas_dgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dgemv(_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a matrix by a vector (double precision).

[`func cblas_dger(CBLAS_ORDER, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dger(_:_:_:_:_:_:_:_:_:_:))

Multiplies vector X by the transpose of vector Y, then adds matrix A (double precison).

[`func cblas_dnrm2(__LAPACK_int, UnsafePointer<Double>?, __LAPACK_int) -> Double`](/documentation/Accelerate/cblas_dnrm2(_:_:_:))

Computes the L2 norm (Euclidian length) of a vector (double precision).

[`func cblas_drot(__LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int, Double, Double)`](/documentation/Accelerate/cblas_drot(_:_:_:_:_:_:_:))

Applies a Givens rotation matrix to a pair of vectors.

[`func cblas_drotg(UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>)`](/documentation/Accelerate/cblas_drotg(_:_:_:_:))

Constructs a Givens rotation matrix.

[`func cblas_drotm(__LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int, UnsafePointer<Double>)`](/documentation/Accelerate/cblas_drotm(_:_:_:_:_:_:))

Applies a modified Givens transformation (single precision).

[`func cblas_drotmg(UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, Double, UnsafeMutablePointer<Double>)`](/documentation/Accelerate/cblas_drotmg(_:_:_:_:_:))

Generates a modified Givens rotation matrix.

[`func cblas_dsbmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dsbmv(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a symmetric band matrix, then multiplies by a vector, then adds a vector (double precision).

[`func cblas_dscal(__LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dscal(_:_:_:_:))

Multiplies each element of a vector by a constant (double-precision).

[`func cblas_dspmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, UnsafePointer<Double>?, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dspmv(_:_:_:_:_:_:_:_:_:_:))

Scales a packed symmetric matrix, then multiplies by a vector, then scales and adds another vector (double precision).

[`func cblas_dspr(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?)`](/documentation/Accelerate/cblas_dspr(_:_:_:_:_:_:_:))

Rank one update: adds a packed symmetric matrix to the product of a scaling factor, a vector, and its transpose (double precision).

[`func cblas_dspr2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?)`](/documentation/Accelerate/cblas_dspr2(_:_:_:_:_:_:_:_:_:))

Rank two update of a packed symmetric matrix using two vectors (single precision).

[`func cblas_dswap(__LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dswap(_:_:_:_:_:))

Exchanges the elements of two vectors (double precision).

[`func cblas_dsymm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dsymm(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a matrix by a symmetric matrix (double-precision).

[`func cblas_dsymv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dsymv(_:_:_:_:_:_:_:_:_:_:_:))

Scales a symmetric matrix, multiplies by a vector, then scales and adds another vector (single precision).

[`func cblas_dsyr(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dsyr(_:_:_:_:_:_:_:_:))

Rank one update: adds a symmetric matrix to the product of a scaling factor, a vector, and its transpose (double precision).

[`func cblas_dsyr2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dsyr2(_:_:_:_:_:_:_:_:_:_:))

Rank two update of a symmetric matrix using two vectors (single precision).

[`func cblas_dsyr2k(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dsyr2k(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Performs a rank-2k update of a symmetric matrix (double precision).

[`func cblas_dsyrk(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dsyrk(_:_:_:_:_:_:_:_:_:_:_:))

Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (double precision).

[`func cblas_dtbmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtbmv(_:_:_:_:_:_:_:_:_:_:))

Scales a triangular band matrix, then multiplies by a vector (double precision).

[`func cblas_dtbsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtbsv(_:_:_:_:_:_:_:_:_:_:))

Solves a triangular banded system of equations.

[`func cblas_dtpmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Double>?, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtpmv(_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector, then adds a vector (double precision).

[`func cblas_dtpsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Double>?, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtpsv(_:_:_:_:_:_:_:_:))

Solves a packed triangular system of equations.

[`func cblas_dtrmm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtrmm(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a triangular matrix and multiplies it by a matrix.

[`func cblas_dtrmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtrmv(_:_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector.

[`func cblas_dtrsm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtrsm(_:_:_:_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with multiple values for the right side.

[`func cblas_dtrsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>?, __LAPACK_int)`](/documentation/Accelerate/cblas_dtrsv(_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with a single value for the right side.

[`func appleblas_dgeadd(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, Double, UnsafePointer<Double>?, __LAPACK_int, UnsafeMutablePointer<Double>, __LAPACK_int)`](/documentation/Accelerate/appleblas_dgeadd(_:_:_:_:_:_:_:_:_:_:_:_:_:))

### Double-precision complex matrix functions

[`func cblas_dzasum(__LAPACK_int, OpaquePointer?, __LAPACK_int) -> Double`](/documentation/Accelerate/cblas_dzasum(_:_:_:))

Computes the sum of the absolute values of real and imaginary parts of elements in a vector (single-precision complex).

[`func cblas_dznrm2(__LAPACK_int, OpaquePointer?, __LAPACK_int) -> Double`](/documentation/Accelerate/cblas_dznrm2(_:_:_:))

Computes the unitary norm of a vector (double-precision complex).

[`func cblas_zaxpy(__LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zaxpy(_:_:_:_:_:_:))

Computes a constant times a vector plus a vector (double-precision complex).

[`func cblas_zcopy(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zcopy(_:_:_:_:_:))

Copies a vector to another vector (double-precision complex).

[`func cblas_zdrot(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, Double, Double)`](/documentation/Accelerate/cblas_zdrot(_:_:_:_:_:_:_:))

Applies a Givens rotation matrix to a pair of complex vectors.

[`func cblas_zdscal(__LAPACK_int, Double, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zdscal(_:_:_:_:))

Multiplies each element of a vector by a constant (double-precision complex).

[`func cblas_zgbmv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zgbmv(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a general band matrix, then multiplies by a vector, then adds a vector (double-precision complex).

[`func cblas_zgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zgemm(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies two matrices (double-precision complex).

[`func cblas_zgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zgemv(_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a matrix by a vector (double-precision complex).

[`func cblas_zgerc(CBLAS_ORDER, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zgerc(_:_:_:_:_:_:_:_:_:_:))

Multiplies vector X by the conjugate transpose of vector Y, then adds matrix A (double-precision complex).

[`func cblas_zgeru(CBLAS_ORDER, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zgeru(_:_:_:_:_:_:_:_:_:_:))

Multiplies vector X by the transpose of vector Y, then adds matrix A (double-precision complex).

[`func cblas_zhbmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zhbmv(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a Hermitian band matrix, then multiplies by a vector, then adds a vector (double-precision complex).

[`func cblas_zhemm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zhemm(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies two Hermitian matrices (double-precision complex).

[`func cblas_zhemv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zhemv(_:_:_:_:_:_:_:_:_:_:_:))

Scales and multiplies a Hermitian matrix by a vector, then adds a second (scaled) vector.

[`func cblas_zher(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zher(_:_:_:_:_:_:_:_:))

Adds the product of a scaling factor, vector `X`, and the conjugate transpose of `X` to matrix `A`.

[`func cblas_zher2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zher2(_:_:_:_:_:_:_:_:_:_:))

Hermitian rank 2 update: adds the product of a scaling factor, vector `X`, and the conjugate transpose of vector `Y` to the product of the conjugate of the scaling factor, vector `Y`, and the conjugate transpose of vector `X`, and adds the result to matrix `A`.

[`func cblas_zher2k(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, Double, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zher2k(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Performs a rank-2k update of a complex Hermitian matrix (double-precision complex).

[`func cblas_zherk(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, Double, OpaquePointer?, __LAPACK_int, Double, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zherk(_:_:_:_:_:_:_:_:_:_:_:))

Rank-k update—multiplies a Hermitian matrix by its transpose and adds a second matrix (single precision).

[`func cblas_zhpmv(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zhpmv(_:_:_:_:_:_:_:_:_:_:))

Scales a packed hermitian matrix, multiplies it by a vector, and adds a scaled vector.

[`func cblas_zhpr(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, Double, OpaquePointer?, __LAPACK_int, OpaquePointer?)`](/documentation/Accelerate/cblas_zhpr(_:_:_:_:_:_:_:))

Scales and multiplies a vector times its conjugate transpose, then adds a matrix.

[`func cblas_zhpr2(CBLAS_ORDER, CBLAS_UPLO, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?)`](/documentation/Accelerate/cblas_zhpr2(_:_:_:_:_:_:_:_:_:))

Multiplies a vector times the conjugate transpose of a second vector and vice-versa, sums the results, and adds a matrix.

[`func cblas_zrotg(OpaquePointer, OpaquePointer, UnsafeMutablePointer<Double>, OpaquePointer)`](/documentation/Accelerate/cblas_zrotg(_:_:_:_:))

Constructs a complex Givens rotation.

[`func cblas_zscal(__LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zscal(_:_:_:_:))

Multiplies each element of a vector by a constant (double-precision complex).

[`func cblas_zswap(__LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zswap(_:_:_:_:_:))

Exchanges the elements of two vectors (double-precision complex).

[`func cblas_zsymm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zsymm(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Multiplies a matrix by a symmetric matrix (double-precision complex).

[`func cblas_zsyr2k(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zsyr2k(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Performs a rank-2k update of a symmetric matrix (double-precision complex).

[`func cblas_zsyrk(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_zsyrk(_:_:_:_:_:_:_:_:_:_:_:))

Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (double-precision complex).

[`func cblas_ztbmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztbmv(_:_:_:_:_:_:_:_:_:_:))

Scales a triangular band matrix, then multiplies by a vector (double-precision complex).

[`func cblas_ztbsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztbsv(_:_:_:_:_:_:_:_:_:_:))

Solves a triangular banded system of equations.

[`func cblas_ztpmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztpmv(_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector, then adds a vector (double-precision compex).

[`func cblas_ztpsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztpsv(_:_:_:_:_:_:_:_:))

Solves a packed triangular system of equations.

[`func cblas_ztrmm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztrmm(_:_:_:_:_:_:_:_:_:_:_:_:))

Scales a triangular matrix and multiplies it by a matrix.

[`func cblas_ztrmv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztrmv(_:_:_:_:_:_:_:_:_:))

Multiplies a triangular matrix by a vector.

[`func cblas_ztrsm(CBLAS_ORDER, CBLAS_SIDE, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, __LAPACK_int, OpaquePointer, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztrsm(_:_:_:_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with multiple values for the right side.

[`func cblas_ztrsv(CBLAS_ORDER, CBLAS_UPLO, CBLAS_TRANSPOSE, CBLAS_DIAG, __LAPACK_int, OpaquePointer?, __LAPACK_int, OpaquePointer?, __LAPACK_int)`](/documentation/Accelerate/cblas_ztrsv(_:_:_:_:_:_:_:_:_:))

Solves a triangular system of equations with a single value for the right side.

### LAPACK functions

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

[`func cgedmd_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafeMutablePointer<__LAPACK_int>, OpaquePointer?, OpaquePointer?, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/cgedmd_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func cgedmdq_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafeMutablePointer<__LAPACK_int>, OpaquePointer?, OpaquePointer?, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/cgedmdq_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func cgeqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, OpaquePointer?, OpaquePointer, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/cgeqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func claqp2rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, OpaquePointer?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, OpaquePointer, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/claqp2rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func claqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_bool>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, OpaquePointer?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, OpaquePointer?, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/claqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func crscl_(UnsafePointer<__LAPACK_int>, OpaquePointer, OpaquePointer?, UnsafePointer<__LAPACK_int>)`](/documentation/Accelerate/crscl_(_:_:_:_:))

[`func dgedmd_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/dgedmd_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func dgedmdq_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/dgedmdq_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func dgeqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/dgeqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func dlaqp2rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/dlaqp2rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func dlaqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_bool>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/dlaqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func sgedmd_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/sgedmd_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func sgedmdq_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/sgedmdq_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func sgeqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/sgeqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func slaqp2rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/slaqp2rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func sgeqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/sgeqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func slaqp2rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/slaqp2rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func slaqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<__LAPACK_int>, UnsafePointer<Float>, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_bool>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafeMutablePointer<Float>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/slaqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func zgedmd_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafeMutablePointer<__LAPACK_int>, OpaquePointer?, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/zgedmd_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func zgedmdq_(UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<CChar>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafeMutablePointer<__LAPACK_int>, OpaquePointer?, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/zgedmdq_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func zgeqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<__LAPACK_int>?, OpaquePointer?, OpaquePointer, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/zgeqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func zlaqp2rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<__LAPACK_int>?, OpaquePointer?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, OpaquePointer, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/zlaqp2rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func zlaqp3rk_(UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<__LAPACK_int>, UnsafePointer<Double>, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_bool>, UnsafeMutablePointer<__LAPACK_int>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafeMutablePointer<__LAPACK_int>?, OpaquePointer?, UnsafeMutablePointer<Double>?, UnsafeMutablePointer<Double>?, OpaquePointer?, OpaquePointer?, UnsafePointer<__LAPACK_int>, UnsafeMutablePointer<__LAPACK_int>?, UnsafeMutablePointer<__LAPACK_int>)`](/documentation/Accelerate/zlaqp3rk_(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

[`func zrscl_(UnsafePointer<__LAPACK_int>, OpaquePointer, OpaquePointer?, UnsafePointer<__LAPACK_int>)`](/documentation/Accelerate/zrscl_(_:_:_:_:))

[`typealias sparse_matrix_double_complex`](/documentation/Accelerate/sparse_matrix_double_complex)

[`typealias sparse_matrix_float_complex`](/documentation/Accelerate/sparse_matrix_float_complex)

[`typealias vFloatPacked`](/documentation/Accelerate/vFloatPacked)



---

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)