<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/sparse-direct-solving-functions-matrix-rhs",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Sparse Direct Solving Functions (Matrix RHS)"
}
-->

# Sparse Direct Solving Functions (Matrix RHS)

Solve a system with a right-hand-side dense matrix using a factored sparse coefficient matrix.

## Topics

### In-place direct solving functions

[`func SparseSolve(SparseOpaqueFactorization_Double, DenseMatrix_Double)`](/documentation/Accelerate/SparseSolve(_:_:)-9j9rw)

Solves the system *AX = B* using the supplied double-precision factorization of *A*, in place.

[`func SparseSolve(SparseOpaqueFactorization_Float, DenseMatrix_Float)`](/documentation/Accelerate/SparseSolve(_:_:)-1jp0k)

Solves the system *AX = B* using the supplied single-precision factorization of *A*, in place.

### Out-of-place direct solving functions

[`func SparseSolve(SparseOpaqueFactorization_Double, DenseMatrix_Double, DenseMatrix_Double)`](/documentation/Accelerate/SparseSolve(_:_:_:)-3iav7)

Solves the system *AX = B* using the supplied double-precision factorization of *A*.

[`func SparseSolve(SparseOpaqueFactorization_Float, DenseMatrix_Float, DenseMatrix_Float)`](/documentation/Accelerate/SparseSolve(_:_:_:)-2rxlq)

Solves the system *AX = B* using the supplied single-precision factorization of *A*.

### In-place direct solving functions with user-defined workspace

[`func SparseSolve(SparseOpaqueFactorization_Double, DenseMatrix_Double, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:)-l2kw)

Solves the system *AX = B* using the supplied double-precision factorization of *A*, in place and without any internal memory allocations.

[`func SparseSolve(SparseOpaqueFactorization_Float, DenseMatrix_Float, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:)-749fu)

Solves the system *AX = B* using the supplied single-precision factorization of *A*, in place and without any internal memory allocations.

### Out-of-place direct solving functions with user-defined workspace

[`func SparseSolve(SparseOpaqueFactorization_Double, DenseMatrix_Double, DenseMatrix_Double, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:_:)-7aj3g)

Solves the system *AX = B* using the supplied double-precision factorization of *A*, without any internal memory allocations.

[`func SparseSolve(SparseOpaqueFactorization_Float, DenseMatrix_Float, DenseMatrix_Float, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:_:)-8xma8)

Solves the system *AX = B* using the supplied single-precision factorization of *A*, without any internal memory allocations.

### Complex matrix solving functions

[`func SparseSolve(SparseOpaqueFactorization_Complex_Double, DenseMatrix_Complex_Double)`](/documentation/Accelerate/SparseSolve(_:_:)-31yj7)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Double`
of `A`, in place.

[`func SparseSolve(SparseOpaqueSubfactor_Complex_Double, DenseMatrix_Complex_Double)`](/documentation/Accelerate/SparseSolve(_:_:)-3x0vj)

Solve the equation `Subfactor * X = B` for the matrix `X` of complex double values, in place.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Float, DenseMatrix_Complex_Float)`](/documentation/Accelerate/SparseSolve(_:_:)-4j17a)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Float`
of `A`, in place.

[`func SparseSolve(SparseOpaqueSubfactor_Complex_Float, DenseMatrix_Complex_Float, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:)-2qlwo)

Solve the equation `Subfactor * X` = B for the matrix `X` of complex float values in place.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Double, DenseMatrix_Complex_Double, DenseMatrix_Complex_Double)`](/documentation/Accelerate/SparseSolve(_:_:_:)-2rk1c)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Double`
of A`,` in place.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Double, DenseMatrix_Complex_Double, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:)-34okt)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Double`
of `A`, in place, and without any internal memory allocations.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Float, DenseMatrix_Complex_Float, DenseMatrix_Complex_Float)`](/documentation/Accelerate/SparseSolve(_:_:_:)-48njk)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Float`
of A`,` in place.

[`func SparseSolve(SparseOpaqueSubfactor_Complex_Double, DenseMatrix_Complex_Double, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:)-6pudz)

Solve the equation `Subfactor * X` = B for the matrix `X` of complex double values in place.

[`func SparseSolve(SparseOpaqueSubfactor_Complex_Float, DenseMatrix_Complex_Float, DenseMatrix_Complex_Float)`](/documentation/Accelerate/SparseSolve(_:_:_:)-7krer)

Solve the equation `Subfactor * X = B` for the matrix `X` of complex float values, in place.

[`func SparseSolve(SparseOpaqueSubfactor_Complex_Double, DenseMatrix_Complex_Double, DenseMatrix_Complex_Double)`](/documentation/Accelerate/SparseSolve(_:_:_:)-7qdpl)

Solve the equation `Subfactor * X = B` for the matrix `X` of complex double values, in place.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Float, DenseMatrix_Complex_Float, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:)-8ikjb)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Float`
of `A`, in place, and without any internal memory allocations.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Double, DenseMatrix_Complex_Double, DenseMatrix_Complex_Double, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:_:)-5xn6p)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Double`
of `A`, and without any internal memory allocations.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Double, DenseVector_Complex_Double, DenseVector_Complex_Double, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:_:)-6demt)

Solves the system `Ax=b` for `x`, using the supplied `SparseOpaqueFactorization_Complex_Double`
of `A`, in place.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Float, DenseVector_Complex_Float, DenseVector_Complex_Float, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:_:)-6od6k)

Solves the system `Ax=b` for `x`, using the supplied `SparseOpaqueFactorization_Complex_Float`
of `A`, in place.

[`func SparseSolve(SparseOpaqueFactorization_Complex_Float, DenseMatrix_Complex_Float, DenseMatrix_Complex_Float, UnsafeMutableRawPointer)`](/documentation/Accelerate/SparseSolve(_:_:_:_:)-7mtyx)

Solves the system `AX=B` for `X`, using the supplied `SparseOpaqueFactorization_Complex_Float`
of `A`, and without any internal memory allocations.



---

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)