---
title: "SparseSolve(_:_:_:)"
framework: accelerate
role: symbol
role_heading: Function
path: "accelerate/sparsesolve(_:_:_:)-666oh"
---

# SparseSolve(_:_:_:)

Solves the system Ax = b using the supplied single-precision factorization of A.

## Declaration

```swift
func SparseSolve(_ Factored: SparseOpaqueFactorization_Float, _ b: DenseVector_Float, _ x: DenseVector_Float)
```

## Parameters

- `Factored`: The factored matrix to solve.
- `b`: The vector b.
- `x`: The vector x.

## Discussion

Discussion Use this function to solve a system of linear equations using a factored coefficient matrix. The following figure shows a system of equations where the coefficient matrix is sparse:

The following code solves this system with a QR factorization of the coefficient matrix: /// Create the coefficient matrix _A_. let rowIndices: [Int32] =    [ 0,  1, 1,  2] let columnIndices: [Int32] = [ 2,  0, 2,  1] let aValues: [Float] =       [10, 20, 5, 50]

let A = SparseConvertFromCoordinate(3, 3,                                     4, 1,                                     SparseAttributes_t(),                                     rowIndices, columnIndices,                                     aValues)

/// Factorize _A_. let factorization = SparseFactor(SparseFactorizationQR, A)

defer {     SparseCleanup(A)     SparseCleanup(factorization) }

/// Create the right-hand-side vector, _b_. var bValues: [Float] = [30, 35, 100] let n = bValues.count

/// Solve the system. let xValues = [Float](unsafeUninitializedCapacity: n) {     buffer, count in          bValues.withUnsafeMutableBufferPointer { bPtr in                  let b = DenseVector_Float(count: 3,                                    data: bPtr.baseAddress!)         let x = DenseVector_Float(count: 3,                                    data: buffer.baseAddress!)                  SparseSolve(factorization, b, x)                  count = n     } } On return, xValues contains the values [1.0, 2.0, 3.0]. If the factorization is A = QR, the function returns the solution of minimum norm ‖ x ‖₂ for underdetermined systems. If the factorization is A = QR, the function returns the least squares solution minₓ ‖ AX - B ‖₂ for overdetermined systems. If the factorization is SparseFactorizationCholeskyAtA, the factorization is of AᵀA, and the solution that returns is for the system AᵀAX = B.

## See Also

### Out-of-place direct solving functions

- [SparseSolve(_:_:_:)](accelerate/sparsesolve(_:_:_:)-416bj.md)
