<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "tvOS: -",
    "visionOS: -",
    "watchOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/SparseOpaqueFactorization_Complex_Float",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Accelerate"
    ],
    "preciseIdentifier" : "c:@SA@SparseOpaqueFactorization_Complex_Float"
  },
  "title" : "SparseOpaqueFactorization_Complex_Float"
}
-->

# SparseOpaqueFactorization_Complex_Float

A semi-opaque type representing a matrix factorization in complex float.

```
struct SparseOpaqueFactorization_Complex_Float
```

## Overview

Use the `SparseCleanup` function to free resources held
by these objects.

The object can be in one of the following states:

1. Something went wrong with symbolic factorization, nothing is valid.
- indicated by `.symbolicFactorization.status < 0`
2. Symbolic factorization was good, but failed in numeric factorization
   initialization.
- indicated by `.symbolicFactorization.status >= 0 && .status < 0 && .numericFactorization == NULL`
- symbolic factorization may be used for future calls.
3. Symbolic factorization was good, factor allocated/initialized correctly,
   but numeric factorization failed
   e.g. a Cholesky factorization of an indefinite matrix was attempted.
- indicated by `.symbolicFactorization.status >= 0 && .status < 0 && .numericFactorization not NULL`
- user may pass this object to `SparseRefactor_Double` with a modified matrix
4. Symbolic and numeric factorizations are both good
- indicated by `.status >= 0`

- `status` :
  Indicates status of factorization object.
- `attributes` :
  Flags associated with this factorization object. In particular, transpose
  field indicates whether object is considered to be factorization of A or
  A^T.
- `symbolicFactorization` :
  Symbolic Factorization upon which this Numeric Factorization depends.
- `userFactorStorage` :
  Flag that indicates if user provided storage backing this object. If
  true, then factor storage must be freed by the user once all references
  are finished with (though any additional storage allocated due to pivoting
  will still be freed by `SparseCleanup`).
- `numericFactorization` :
  Pointer to private internal representation of numeric factor.
- `solveWorkspaceRequiredStatic` :
  The required size of workspace, in bytes, for a call to `SparseSolve` is
  `solveWorkspaceRequiredStatic + nrhs * solveWorkspaceRequiredPerRHS`
  where `nrhs` is the number of right-hand side vectors.
- `solveWorkspaceRequiredPerRHS` :
  The required size of workspace, in bytes, for a call to `SparseSolve` is
  `solveWorkspaceRequiredStatic + nrhs * solveWorkspaceRequiredPerRHS`
  where `nrhs` is the number of right-hand side vectors.

---

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)