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

# Preconditioners

Create preconditioners for iterative solves.

## Discussion

In many cases, applying a preconditioner to the coefficient matrix reduces the number of iterations necessary to solve the system. The Sparse Solvers library provides Jacobi and diagonal scaling preconditioners, and the functionality to create user-defined preconditioners.

## Topics

### Preconditioners

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

Constants that define the preconditioner type.

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

Represents a preconditioner for matrices of complex double values .

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

Represents a preconditioner for matrices of complex float values .

### Creating preconditioners

[`func SparseCreatePreconditioner(SparsePreconditioner_t, SparseMatrix_Double) -> SparseOpaquePreconditioner_Double`](/documentation/Accelerate/SparseCreatePreconditioner(_:_:)-4ysww)

Creates a preconditioner for the specified matrix of double-precision values.

[`func SparseCreatePreconditioner(SparsePreconditioner_t, SparseMatrix_Float) -> SparseOpaquePreconditioner_Float`](/documentation/Accelerate/SparseCreatePreconditioner(_:_:)-59ql5)

Creates a preconditioner for the specified matrix of single-precision values.

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

A structure that represents a double-precision preconditioner.

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

A structure that represents a single-precision preconditioner.

[`func SparseCreatePreconditioner(SparsePreconditioner_t, SparseMatrix_Complex_Double) -> SparseOpaquePreconditioner_Complex_Double`](/documentation/Accelerate/SparseCreatePreconditioner(_:_:)-1yp4n)

Create a preconditioner for the given matrix of complex double values.

[`func SparseCreatePreconditioner(SparsePreconditioner_t, SparseMatrix_Complex_Float) -> SparseOpaquePreconditioner_Complex_Float`](/documentation/Accelerate/SparseCreatePreconditioner(_:_:)-95u9p)

Create a preconditioner for the given matrix of complex float values.



---

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)