Performs a single iteration of the specified iterative method for double-precision matrices, applying a preconditioner.
- iOS 11+
- macOS 10.13+
- Mac Catalyst 13.0+Beta
- tvOS 11+
- watchOS 4+
The current iteration number, starting from
iteration<0, then the current iteration is finalized, and the value of
Xis updated (note that this may force some methods to restart, slowing convergence).
Convergence status of each right-hand-side.
converged[j] = trueindicates that the vector stored as column
Xhas converged, and it should be ignored in this iteration.
A pointer to a state-space of size
Sparse. It must not be altered by the user between iterations, but may be safely discarded after the final call to
Get State Size _Double(_: _: _: _: _:)
The apply operator block to run. The block takes the following parameters:
Indicates whether to perform
y += op(A)x(if
y = op(A)x(if
op(A)is the application of A if CblasNoTrans or Aᵀ if CblasTrans.
The vector to multiply.
The vector in which to accumulate or store the result.
The right-hand-sides to solve for.
Residual estimate. On entry with
iteration = 0, it must hold the residuals b-Ax (equal to
X = 0). On return from each call with
iteration >= 0, the first entries of each vector contain various estimates of norms to be used in convergence testing.
For CG and GMRES:
R(0,j)holds an estimate of ‖ b-Ax ‖₂ for the
R(0,j)holds an estimate of ‖ Aᵀ(b-Ax) ‖₂ for the
R(1,j)holds an estimate of ‖ b-Ax ‖₂ for the
R(2,j)holds an estimate of ‖ A ‖ꜰ, the Frobenius norm of A, estimated using calculations related to the
R(3,j)holds an estimate of cond(A), the condition number of A, estimated using calculations related to the
Other entries of
Rmay be used by the routine as a workspace. On return from a call with
iteration < 0, the exact residual vector b-Ax is returned.
The current estimate of the solution vectors
On entry with
iteration = 0, this should be an initial estimate for the solution. If no good estimate is available, use
X = 0.
Depending on the method used,
Xmay not be updated at each iteration. The user should make a call with
iteration < 0once convergence has been achieved to bring
Xup to date.
Preconditioner to apply.