
Solves the linear system for the unknown vector from a symmetric positive definite matrix . Combines factorization and solve in one call. (Specification)
One-shot factorization and solve for SPD systems (wraps LAPACK POSV).
This interface computes both the Cholesky factorization and solves the linear system
in a single call. Use this for one-time solves. For repeated solves with the same
matrix but different RHS, use cholesky + solve_lower_chol/solve_upper_chol for
better performance.
Supported data types include real and complex.
By default, A is not overwritten. Set overwrite_a=.true. to allow in-place
factorization for better performance.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=sp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| complex(kind=sp), | intent(in) | :: | b(:,:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| complex(kind=sp), | intent(inout), | contiguous, target | :: | x(:,:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=sp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| complex(kind=sp), | intent(in) | :: | b(:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| complex(kind=sp), | intent(inout), | contiguous, target | :: | x(:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| real(kind=dp), | intent(in) | :: | b(:,:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| real(kind=dp), | intent(inout), | contiguous, target | :: | x(:,:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| real(kind=dp), | intent(in) | :: | b(:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| real(kind=dp), | intent(inout), | contiguous, target | :: | x(:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=sp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| real(kind=sp), | intent(in) | :: | b(:,:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| real(kind=sp), | intent(inout), | contiguous, target | :: | x(:,:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=sp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| real(kind=sp), | intent(in) | :: | b(:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| real(kind=sp), | intent(inout), | contiguous, target | :: | x(:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=dp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| complex(kind=dp), | intent(in) | :: | b(:,:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| complex(kind=dp), | intent(inout), | contiguous, target | :: | x(:,:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=dp), | intent(inout), | target | :: | a(:,:) |
Input SPD matrix a[n,n] |
|
| complex(kind=dp), | intent(in) | :: | b(:) |
Right hand side vector or array, b[n] or b[n,nrhs] |
||
| complex(kind=dp), | intent(inout), | contiguous, target | :: | x(:) |
Result array/matrix x[n] or x[n,nrhs] |
|
| logical(kind=lk), | intent(in), | optional | :: | lower |
[optional] Use lower triangular factorization? Default = .true. |
|
| logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[optional] Can A data be overwritten and destroyed? Default = .false. |
|
| type(linalg_state_type), | intent(out), | optional | :: | err |
[optional] state return flag. On error if not requested, the code will stop |